hacktricks/macos-hardening/macos-red-teaming/macos-mdm
2024-02-05 03:11:06 +00:00
..
enrolling-devices-in-other-organisations.md Translated ['exploiting/linux-exploiting-basic-esp/README.md', 'exploiti 2024-02-05 03:11:06 +00:00
macos-serial-number.md Translated ['linux-hardening/bypass-bash-restrictions/bypass-fs-protecti 2023-12-31 00:07:27 +00:00
README.md Translated ['linux-hardening/bypass-bash-restrictions/bypass-fs-protecti 2023-12-31 00:07:27 +00:00

macOS MDM

Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Básicos

O que é MDM (Gerenciamento de Dispositivos Móveis)?

Gerenciamento de Dispositivos Móveis (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.

  • Uma maneira de alcançar o gerenciamento centralizado de dispositivos
  • Requer um servidor MDM que implemente suporte para o protocolo MDM
  • 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 (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.

  • 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.

O que são Perfis de Configuração (também conhecidos como mobileconfigs)?

  • 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.

Protocolos

MDM

  • Combinação de APNs (servidores Apple) + API RESTful (servidores de fornecedores MDM)
  • 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 sobre HTTPS. Servidores MDM podem ser (e geralmente são) fixados.
  • A Apple concede ao fornecedor MDM um certificado APNs para autenticação

DEP

  • 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. Esta é usada pelos servidores MDM para associar perfis DEP a dispositivos específicos.
  • A API DEP usada por Revendedores Autorizados Apple 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.

{% content-ref url="macos-serial-number.md" %} macos-serial-number.md {% endcontent-ref %}

Etapas para inscrição e gerenciamento

  1. Criação do registro do dispositivo (Revendedor, Apple): O registro do novo dispositivo é criado
  2. Atribuição do registro do dispositivo (Cliente): O dispositivo é atribuído a um servidor MDM
  3. Sincronização do registro do dispositivo (fornecedor MDM): MDM sincroniza os registros dos dispositivos e empurra os perfis DEP para a Apple
  4. Check-in DEP (Dispositivo): Dispositivo obtém seu perfil DEP
  5. Recuperação do perfil (Dispositivo)
  6. Instalação do perfil (Dispositivo) a. incl. MDM, SCEP e cargas úteis da CA raiz
  7. 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.

Etapa 4: Check-in DEP - Obtendo o Registro de Ativação

Esta parte do processo ocorre quando um usuário inicia 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 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
  2. GET https://iprofiles.apple.com/resource/certificate.cer
  3. Inicializar estado a partir do certificado (NACInit)
  4. Usa vários dados específicos do dispositivo (ou seja, Número de Série via IOKit)
  5. Recuperar chave de sessão
  6. POST https://iprofiles.apple.com/session
  7. Estabelecer a sessão (NACKeyEstablishment)
  8. Fazer a solicitação
  9. POST para https://iprofiles.apple.com/macProfile enviando os dados { "action": "RequestProfileConfiguration", "sn": "" }
  10. O payload JSON é criptografado usando Absinthe (NACSign)
  11. Todas as solicitações sobre 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

Etapa 5: Recuperação do Perfil

  • 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

![](<../../../.gitbook/assets/image (567) (1) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1. (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1