<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
[Gerenciamento de Dispositivos Móveis](https://en.wikipedia.org/wiki/Mobile\_device\_management) (MDM) é uma tecnologia comumente usada para **administrar dispositivos de computação de usuários finais**, como telefones móveis, laptops, desktops e tablets. No caso de plataformas da Apple como iOS, macOS e tvOS, refere-se a um conjunto específico de recursos, APIs e técnicas usadas por administradores para gerenciar esses dispositivos. O gerenciamento de dispositivos via MDM requer um servidor MDM comercial ou de código aberto compatível que implemente suporte para o [Protocolo MDM](https://developer.apple.com/enterprise/documentation/MDM-Protocol-Reference.pdf).
* O servidor MDM pode **enviar comandos MDM**, como limpeza remota ou “instalar esta configuração”
### Básicos O que é DEP (Programa de Inscrição de Dispositivos)?
O [Programa de Inscrição de Dispositivos](https://www.apple.com/business/site/docs/DEP\_Guide.pdf) (DEP) é um serviço oferecido pela Apple que **simplifica** a inscrição no Gerenciamento de Dispositivos Móveis (MDM) oferecendo **configuração zero-touch** de dispositivos iOS, macOS e tvOS. Ao contrário dos métodos de implantação mais tradicionais, que exigem que o usuário final ou administrador tome medidas para configurar um dispositivo ou se inscreva manualmente em um servidor MDM, o DEP visa iniciar esse processo, **permitindo que o usuário desembale um novo dispositivo Apple e o tenha configurado para uso na organização quase imediatamente**.
Os administradores podem aproveitar o DEP para inscrever automaticamente dispositivos no servidor MDM de sua organização. Uma vez que um dispositivo está inscrito, **em muitos casos é tratado como um dispositivo "confiável"** de propriedade da organização e pode receber qualquer número de certificados, aplicativos, senhas de WiFi, configurações de VPN [e assim por diante](https://developer.apple.com/enterprise/documentation/Configuration-Profile-Reference.pdf).
* Permite que um dispositivo se inscreva automaticamente em um servidor MDM pré-configurado na **primeira vez que é ligado**
* Mais útil quando o **dispositivo** é **novo em folha**
* Também pode ser útil para fluxos de trabalho de **reprovisionamento** (**limpo** com instalação nova do SO)
{% hint style="danger" %}
Infelizmente, se uma organização não tomou medidas adicionais para **proteger sua inscrição no MDM**, um processo de inscrição simplificado para o usuário final através do DEP também pode significar um processo simplificado para **atacantes inscreverem um dispositivo de sua escolha no servidor MDM da organização**, assumindo a "identidade" de um dispositivo corporativo.
{% endhint %}
### Básicos O que é SCEP (Protocolo Simples de Inscrição de Certificados)?
* Um protocolo relativamente antigo, criado antes que o TLS e o HTTPS fossem amplamente utilizados.
* Fornece aos clientes uma maneira padronizada de enviar uma **Solicitação de Assinatura de Certificado** (CSR) com o objetivo de obter um certificado. O cliente pedirá ao servidor que lhe conceda um certificado assinado.
* A maneira oficial da Apple de **definir/aplicar a configuração do sistema.**
* Formato de arquivo que pode conter vários payloads.
* Baseado em listas de propriedades (do tipo XML).
* “podem ser assinados e criptografados para validar sua origem, garantir sua integridade e proteger seu conteúdo.” Básicos — Página 70, Guia de Segurança do iOS, Janeiro de 2018.
* **3 APIs**: 1 para revendedores, 1 para fornecedores MDM, 1 para identidade do dispositivo (não documentada):
* A chamada [API "serviço em nuvem" DEP](https://developer.apple.com/enterprise/documentation/MDM-Protocol-Reference.pdf). Esta é usada pelos servidores MDM para associar perfis DEP a dispositivos específicos.
* A [API DEP usada por Revendedores Autorizados Apple](https://applecareconnect.apple.com/api-docs/depuat/html/WSImpManual.html) para inscrever dispositivos, verificar o status da inscrição e verificar o status da transação.
* A API privada DEP não documentada. Esta é usada por Dispositivos Apple para solicitar seu perfil DEP. No macOS, o binário `cloudconfigurationd` é responsável por se comunicar através desta API.
* Mais moderna e baseada em **JSON** (em vez de plist)
* A Apple concede um **token OAuth** ao fornecedor MDM
**API "serviço em nuvem" DEP**
* RESTful
* sincroniza registros de dispositivos da Apple para o servidor MDM
* sincroniza “perfis DEP” para a Apple do servidor MDM (entregue pela Apple ao dispositivo mais tarde)
* Um perfil DEP contém:
* URL do servidor do fornecedor MDM
* Certificados confiáveis adicionais para URL do servidor (fixação opcional)
* Configurações extras (por exemplo, quais telas pular no Assistente de Configuração)
## Número de Série
Dispositivos Apple fabricados após 2010 geralmente têm números de série **alphanumericos de 12 caracteres**, com os **primeiros três dígitos representando o local de fabricação**, os dois seguintes indicando o **ano** e a **semana** de fabricação, os próximos **três** dígitos fornecendo um **identificador único**, e os **últimos quatro dígitos representando o número do modelo**.
O arquivo `/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/PrivateFrameworks/ConfigurationProfiles.framework/ConfigurationProfiles.tbd` exporta funções que podem ser consideradas **etapas "de alto nível"** do processo de inscrição.
Esta parte do processo ocorre quando um **usuário inicia um Mac pela primeira vez** (ou após uma limpeza completa)
![](<../../../.gitbook/assets/image(568).png>)
ou ao executar `sudo profiles show -type enrollment`
* Determinar **se o dispositivo está habilitado para DEP**
* Registro de Ativação é o nome interno para **perfil DEP**
* Começa assim que o dispositivo é conectado à Internet
* Impulsionado por **`CPFetchActivationRecord`**
* Implementado por **`cloudconfigurationd`** via XPC. O **"Assistente de Configuração"** (quando o dispositivo é inicializado pela primeira vez) ou o comando **`profiles`** irão **contatar este daemon** para recuperar o registro de ativação.
* LaunchDaemon (sempre executa como root)
Segue alguns passos para obter o Registro de Ativação realizados por **`MCTeslaConfigurationFetcher`**. Este processo usa uma criptografia chamada **Absinthe**
1. Recuperar **certificado**
1. GET [https://iprofiles.apple.com/resource/certificate.cer](https://iprofiles.apple.com/resource/certificate.cer)
2.**Inicializar** estado a partir do certificado (**`NACInit`**)
1. Usa vários dados específicos do dispositivo (ou seja, **Número de Série via `IOKit`**)
3. Recuperar **chave de sessão**
1. POST [https://iprofiles.apple.com/session](https://iprofiles.apple.com/session)
4. Estabelecer a sessão (**`NACKeyEstablishment`**)
5. Fazer a solicitação
1. POST para [https://iprofiles.apple.com/macProfile](https://iprofiles.apple.com/macProfile) enviando os dados `{ "action": "RequestProfileConfiguration", "sn": "" }`
2. O payload JSON é criptografado usando Absinthe (**`NACSign`**)
3. Todas as solicitações sobre HTTPs, certificados raiz embutidos são usados
![](<../../../.gitbook/assets/image(566).png>)
A resposta é um dicionário JSON com alguns dados importantes como:
* **url**: URL do host do fornecedor MDM para o perfil de ativação
* **anchor-certs**: Array de certificados DER usados como âncoras confiáveis
### **Etapa 5: Recuperação do Perfil**
![](<../../../.gitbook/assets/image(567).png>)
* Solicitação enviada para **url fornecida no perfil DEP**.
* **Certificados âncora** são usados para **avaliar a confiança** se fornecidos.
* Lembrete: a propriedade **anchor\_certs** do perfil DEP
* **Solicitação é um simples .plist** com identificação do dispositivo
* Exemplos: **UDID, versão do SO**.
* Assinado CMS, codificado DER
* Assinado usando o **certificado de identidade do dispositivo (de APNS)**
* **Cadeia de certificados** inclui expirado **Apple iPhone Device CA**