macOS MDM
Last updated
Last updated
Aprenda e pratique Hacking AWS:Treinamento HackTricks AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: Treinamento HackTricks GCP Red Team Expert (GRTE)
Para aprender sobre macOS MDMs, confira:
Gerenciamento de Dispositivos Móveis (MDM) é utilizado para gerenciar vários dispositivos de usuários finais, como smartphones, laptops e tablets. Especificamente para as plataformas da Apple (iOS, macOS, tvOS), envolve um conjunto de recursos especializados, APIs e práticas. A operação do MDM depende de um servidor MDM compatível, que pode ser comercial ou de código aberto, e deve suportar o Protocolo MDM. Pontos-chave incluem:
Controle centralizado sobre os dispositivos.
Dependência de um servidor MDM que siga o protocolo MDM.
Capacidade do servidor MDM de enviar vários comandos para os dispositivos, como apagamento remoto de dados ou instalação de configurações.
O Programa de Inscrição de Dispositivos (DEP) oferecido pela Apple simplifica a integração do Gerenciamento de Dispositivos Móveis (MDM) ao facilitar a configuração sem intervenção para dispositivos iOS, macOS e tvOS. O DEP automatiza o processo de inscrição, permitindo que os dispositivos estejam operacionais imediatamente, com intervenção mínima do usuário ou administrativa. Aspectos essenciais incluem:
Permite que os dispositivos se registrem autonomamente em um servidor MDM pré-definido durante a ativação inicial.
Principalmente benéfico para dispositivos novos, mas também aplicável a dispositivos em reconfiguração.
Facilita uma configuração simples, tornando os dispositivos prontos para uso organizacional rapidamente.
É crucial observar que a facilidade de inscrição fornecida pelo DEP, embora benéfica, também pode representar riscos de segurança. Se as medidas de proteção não forem adequadamente aplicadas para a inscrição no MDM, os atacantes podem explorar esse processo simplificado para registrar seu dispositivo no servidor MDM da organização, se passando por um dispositivo corporativo.
Alerta de Segurança: A inscrição simplificada no DEP pode potencialmente permitir o registro de dispositivos não autorizados no servidor MDM da organização se as salvaguardas adequadas não estiverem em vigor.
Um protocolo relativamente antigo, criado antes da disseminação do TLS e HTTPS.
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 solicitará ao servidor um certificado assinado.
Forma oficial da Apple de definir/impor configurações 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." Conceitos Básicos — Página 70, Guia de Segurança do iOS, Janeiro de 2018.
Combinação de APNs (servidores da Apple) + API RESTful (servidores de fornecedores de MDM)
A comunicação ocorre entre um dispositivo e um servidor associado a um produto de gerenciamento de dispositivos
Comandos entregues do MDM para o dispositivo em dicionários codificados em plist
Tudo via HTTPS. Servidores MDM podem ser (e geralmente são) fixados.
A Apple concede ao fornecedor de MDM um certificado APNs para autenticação
3 APIs: 1 para revendedores, 1 para fornecedores de MDM, 1 para identidade de dispositivo (não documentado):
O chamado API de "serviço em nuvem" do DEP. Isso é usado por servidores MDM para associar perfis DEP a dispositivos específicos.
A API DEP usada por Revendedores Autorizados da Apple para inscrever dispositivos, verificar o status de inscrição e verificar o status da transação.
A API DEP privada não documentada. Isso é usado por Dispositivos Apple para solicitar seu perfil DEP. No macOS, o binário cloudconfigurationd
é responsável por se comunicar por essa API.
Mais moderno e baseado em JSON (em vez de plist)
A Apple concede um token OAuth ao fornecedor de MDM
API de "serviço em nuvem" do DEP
RESTful
sincroniza registros de dispositivos da Apple para o servidor MDM
sincroniza perfis DEP para a Apple a partir do servidor MDM (entregue pela Apple para o dispositivo posteriormente)
Um "perfil" DEP contém:
URL do servidor do fornecedor de MDM
Certificados adicionais confiáveis para URL do servidor (ponteiro opcional)
Configurações adicionais (por exemplo, quais telas pular no Assistente de Configuração)
Dispositivos Apple fabricados após 2010 geralmente possuem números de série alfanuméricos de 12 caracteres, com os três primeiros dígitos representando o local de fabricação, os **dois seguintes indicando o ano e a semana de fabricação, os três dígitos seguintes fornecendo um identificador único, e os últimos quatro dígitos representando o número do modelo.
macOS Serial NumberCriação de registro do dispositivo (Revendedor, Apple): O registro do novo dispositivo é criado
Atribuição de registro do dispositivo (Cliente): O dispositivo é atribuído a um servidor MDM
Sincronização de registro do dispositivo (Fornecedor de MDM): O MDM sincroniza os registros do dispositivo e envia os perfis DEP para a Apple
Check-in DEP (Dispositivo): O dispositivo obtém seu perfil DEP
Recuperação de perfil (Dispositivo)
Instalação de perfil (Dispositivo) a. incl. payloads MDM, SCEP e root CA
Emissão de comando MDM (Dispositivo)
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 inicializa um Mac pela primeira vez (ou após uma limpeza completa)
ou ao executar sudo profiles show -type enrollment
Determinar se o dispositivo está habilitado para DEP
Registro de Ativação é o nome interno para o "perfil" DEP
Começa assim que o dispositivo é conectado à Internet
Conduzido 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 esse daemon para recuperar o registro de ativação.
LaunchDaemon (sempre em execução como root)
Segue alguns passos para obter o Registro de Ativação realizado por MCTeslaConfigurationFetcher
. Este processo utiliza uma criptografia chamada Absinthe
Recuperar certificado
Inicializar estado a partir do certificado (NACInit
)
Usa vários dados específicos do dispositivo (por exemplo, Número de Série via IOKit
)
Recuperar chave de sessão
Estabelecer a sessão (NACKeyEstablishment
)
Fazer a solicitação
POST para https://iprofiles.apple.com/macProfile enviando os dados { "action": "RequestProfileConfiguration", "sn": "" }
A carga JSON é criptografada usando Absinthe (NACSign
)
Todas as solicitações são feitas via HTTPs, certificados raiz embutidos são usados
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
Solicitação enviada para url fornecido 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 .plist simples com identificação do dispositivo
Exemplos: UDID, versão do SO.
Assinado por CMS, codificado em DER
Assinado usando o certificado de identidade do dispositivo (do APNS)
Cadeia de certificados inclui o expirado Apple iPhone Device CA
Uma vez recuperado, o perfil é armazenado no sistema
Este passo começa automaticamente (se estiver no assistente de configuração)
Conduzido por CPInstallActivationProfile
Implementado pelo mdmclient via XPC
LaunchDaemon (como root) ou LaunchAgent (como usuário), dependendo do contexto
Os perfis de configuração têm vários payloads para instalar
O framework tem uma arquitetura baseada em plugins para instalar perfis
Cada tipo de payload está associado a um plugin
Pode ser XPC (no framework) ou Cocoa clássico (no ManagedClient.app)
Exemplo:
Os payloads de Certificado usam CertificateService.xpc
Tipicamente, o perfil de ativação fornecido por um fornecedor MDM irá incluir os seguintes payloads:
com.apple.mdm
: para inscrever o dispositivo no MDM
com.apple.security.scep
: para fornecer de forma segura um certificado de cliente ao dispositivo.
com.apple.security.pem
: para instalar certificados CA confiáveis no Cadeado do Sistema do dispositivo.
Instalando o payload MDM equivalente ao check-in MDM na documentação
Payload contém propriedades-chave:
URL de Check-In MDM (CheckInURL
)
URL de Polling de Comando MDM (ServerURL
) + tópico APNs para ativá-lo
Para instalar o payload MDM, a solicitação é enviada para CheckInURL
Implementado em mdmclient
O payload MDM pode depender de outros payloads
Permite solicitações serem fixadas em certificados específicos:
Propriedade: CheckInURLPinningCertificateUUIDs
Propriedade: ServerURLPinningCertificateUUIDs
Entregue via payload PEM
Permite que o dispositivo seja atribuído com um certificado de identidade:
Propriedade: IdentityCertificateUUID
Entregue via payload SCEP
Após o check-in MDM ser concluído, o fornecedor pode emitir notificações push usando APNs
Ao receber, tratado por mdmclient
Para consultar comandos MDM, a solicitação é enviada para ServerURL
Faz uso do payload MDM previamente instalado:
ServerURLPinningCertificateUUIDs
para fixar a solicitação
IdentityCertificateUUID
para certificado de cliente TLS
Como mencionado anteriormente, para tentar inscrever um dispositivo em uma organização é necessário apenas um Número de Série pertencente a essa Organização. Uma vez que o dispositivo é inscrito, várias organizações irão instalar dados sensíveis no novo dispositivo: certificados, aplicativos, senhas de WiFi, configurações de VPN e assim por diante. Portanto, este poderia ser um ponto de entrada perigoso para os atacantes se o processo de inscrição não estiver corretamente protegido:
Enrolling Devices in Other OrganisationsAprenda e pratique Hacking em AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking em GCP: HackTricks Training GCP Red Team Expert (GRTE)