macOS MDM
Last updated
Last updated
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Per saperne di più sugli MDM macOS controlla:
Mobile Device Management (MDM) è utilizzato per supervisionare vari dispositivi finali come smartphone, laptop e tablet. In particolare per le piattaforme Apple (iOS, macOS, tvOS), coinvolge un insieme di funzionalità, API e pratiche specializzate. Il funzionamento dell'MDM si basa su un server MDM compatibile, che è disponibile commercialmente o open-source, e deve supportare il Protocollo MDM. I punti chiave includono:
Controllo centralizzato sui dispositivi.
Dipendenza da un server MDM che aderisca al protocollo MDM.
Capacità del server MDM di inviare vari comandi ai dispositivi, ad esempio, cancellazione remota dei dati o installazione di configurazioni.
Il Device Enrollment Program (DEP) offerto da Apple semplifica l'integrazione del Mobile Device Management (MDM) facilitando la configurazione zero-touch per dispositivi iOS, macOS e tvOS. Il DEP automatizza il processo di registrazione, consentendo ai dispositivi di essere operativi subito fuori dalla scatola, con un intervento minimo da parte dell'utente o dell'amministratore. Gli aspetti essenziali includono:
Consente ai dispositivi di registrarsi autonomamente con un server MDM predefinito al momento dell'attivazione iniziale.
Principalmente vantaggioso per dispositivi nuovi, ma applicabile anche a dispositivi in fase di riconfigurazione.
Facilita una configurazione semplice, rendendo i dispositivi pronti per l'uso organizzativo rapidamente.
È fondamentale notare che la facilità di registrazione fornita dal DEP, sebbene vantaggiosa, può anche comportare rischi per la sicurezza. Se le misure protettive non sono adeguatamente applicate per la registrazione MDM, gli attaccanti potrebbero sfruttare questo processo semplificato per registrare il proprio dispositivo sul server MDM dell'organizzazione, spacciandosi per un dispositivo aziendale.
Avviso di Sicurezza: La registrazione semplificata del DEP potrebbe consentire la registrazione non autorizzata di dispositivi sul server MDM dell'organizzazione se non sono in atto le giuste misure di protezione.
Un protocollo relativamente vecchio, creato prima che TLS e HTTPS fossero diffusi.
Fornisce ai client un modo standardizzato per inviare una Richiesta di Firma del Certificato (CSR) al fine di ottenere un certificato. Il client chiederà al server di fornirgli un certificato firmato.
Il modo ufficiale di Apple per impostare/applicare la configurazione di sistema.
Formato di file che può contenere più payload.
Basato su elenchi di proprietà (il tipo XML).
“può essere firmato e crittografato per convalidare la loro origine, garantire la loro integrità e proteggere i loro contenuti.” Fondamenti — Pagina 70, iOS Security Guide, gennaio 2018.
Combinazione di APNs (server Apple) + API RESTful (server fornitori MDM)
La comunicazione avviene tra un dispositivo e un server associato a un prodotto di gestione dei dispositivi
Comandi inviati dall'MDM al dispositivo in dizionari codificati plist
Tutto su HTTPS. I server MDM possono essere (e di solito sono) pinati.
Apple concede al fornitore MDM un certificato APNs per l'autenticazione
3 API: 1 per i rivenditori, 1 per i fornitori MDM, 1 per l'identità del dispositivo (non documentata):
La cosiddetta API "servizio cloud" DEP. Questa è utilizzata dai server MDM per associare i profili DEP a dispositivi specifici.
L'API DEP utilizzata dai Rivenditori Autorizzati Apple per registrare dispositivi, controllare lo stato di registrazione e controllare lo stato delle transazioni.
L'API DEP privata non documentata. Questa è utilizzata dai dispositivi Apple per richiedere il loro profilo DEP. Su macOS, il binario cloudconfigurationd
è responsabile della comunicazione su questa API.
Più moderna e basata su JSON (rispetto a plist)
Apple concede un token OAuth al fornitore MDM
API "servizio cloud" DEP
RESTful
sincronizza i record dei dispositivi da Apple al server MDM
sincronizza i “profili DEP” ad Apple dal server MDM (forniti da Apple al dispositivo in seguito)
Un “profilo” DEP contiene:
URL del server del fornitore MDM
Certificati aggiuntivi di fiducia per l'URL del server (pinning opzionale)
Impostazioni extra (ad es. quali schermate saltare nell'Assistente Configurazione)
I dispositivi Apple prodotti dopo il 2010 hanno generalmente numeri di serie alfanumerici di 12 caratteri, con le prime tre cifre che rappresentano il luogo di produzione, le successive due che indicano l'anno e la settimana di produzione, le successive tre cifre forniscono un identificatore unico, e le ultime quattro cifre rappresentano il numero di modello.
Creazione del record del dispositivo (Rivenditore, Apple): Viene creato il record per il nuovo dispositivo
Assegnazione del record del dispositivo (Cliente): Il dispositivo viene assegnato a un server MDM
Sincronizzazione del record del dispositivo (fornitore MDM): MDM sincronizza i record dei dispositivi e invia i profili DEP ad Apple
Check-in DEP (Dispositivo): Il dispositivo ottiene il suo profilo DEP
Recupero del profilo (Dispositivo)
Installazione del profilo (Dispositivo) a. incl. payload MDM, SCEP e root CA
Emissione del comando MDM (Dispositivo)
Il file /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/PrivateFrameworks/ConfigurationProfiles.framework/ConfigurationProfiles.tbd
esporta funzioni che possono essere considerate "passaggi" di alto livello del processo di registrazione.
Questa parte del processo si verifica quando un utente avvia un Mac per la prima volta (o dopo una cancellazione completa)
o quando si esegue sudo profiles show -type enrollment
Determina se il dispositivo è abilitato per DEP
Il Record di Attivazione è il nome interno per il “profilo” DEP
Inizia non appena il dispositivo è connesso a Internet
Guidato da CPFetchActivationRecord
Implementato da cloudconfigurationd
tramite XPC. L'"Assistente Configurazione" (quando il dispositivo viene avviato per la prima volta) o il comando profiles
contatteranno questo demone per recuperare il record di attivazione.
LaunchDaemon (gira sempre come root)
Segue alcuni passaggi per ottenere il Record di Attivazione eseguiti da MCTeslaConfigurationFetcher
. Questo processo utilizza una crittografia chiamata Absinthe
Recupera certificato
Inizializza lo stato dal certificato (NACInit
)
Utilizza vari dati specifici del dispositivo (cioè Numero di Serie tramite IOKit
)
Recupera chiave di sessione
Stabilisce la sessione (NACKeyEstablishment
)
Effettua la richiesta
POST a https://iprofiles.apple.com/macProfile inviando i dati { "action": "RequestProfileConfiguration", "sn": "" }
Il payload JSON è crittografato utilizzando Absinthe (NACSign
)
Tutte le richieste su HTTPs, vengono utilizzati certificati root integrati
La risposta è un dizionario JSON con alcuni dati importanti come:
url: URL dell'host del fornitore MDM per il profilo di attivazione
anchor-certs: Array di certificati DER utilizzati come ancore fidate
Richiesta inviata all'url fornito nel profilo DEP.
Certificati ancorati sono utilizzati per valutare la fiducia se forniti.
Promemoria: la proprietà anchor_certs del profilo DEP
La richiesta è un semplice .plist con identificazione del dispositivo
Esempi: UDID, versione OS.
Firmato CMS, codificato DER
Firmato utilizzando il certificato di identità del dispositivo (da APNS)
La catena di certificati include un Apple iPhone Device CA scaduto
Una volta recuperato, il profilo viene memorizzato nel sistema
Questo passaggio inizia automaticamente (se nell'assistente di configurazione)
Guidato da CPInstallActivationProfile
Implementato da mdmclient tramite XPC
LaunchDaemon (come root) o LaunchAgent (come utente), a seconda del contesto
I profili di configurazione hanno più payload da installare
Il framework ha un'architettura basata su plugin per l'installazione dei profili
Ogni tipo di payload è associato a un plugin
Può essere XPC (nel framework) o Cocoa classico (in ManagedClient.app)
Esempio:
I payload dei certificati utilizzano CertificateService.xpc
Tipicamente, il profilo di attivazione fornito da un fornitore MDM includerà i seguenti payload:
com.apple.mdm
: per registrare il dispositivo in MDM
com.apple.security.scep
: per fornire in modo sicuro un certificato client al dispositivo.
com.apple.security.pem
: per installare certificati CA fidati nel portachiavi di sistema del dispositivo.
L'installazione del payload MDM è equivalente al check-in MDM nella documentazione
Il payload contiene proprietà chiave:
URL di Check-In MDM (CheckInURL
)
URL di polling dei comandi MDM (ServerURL
) + argomento APNs per attivarlo
Per installare il payload MDM, viene inviata una richiesta a CheckInURL
Implementato in mdmclient
Il payload MDM può dipendere da altri payload
Consente richieste di essere pinati a certificati specifici:
Proprietà: CheckInURLPinningCertificateUUIDs
Proprietà: ServerURLPinningCertificateUUIDs
Fornito tramite payload PEM
Consente al dispositivo di essere attribuito con un certificato di identità:
Proprietà: IdentityCertificateUUID
Fornito tramite payload SCEP
Dopo che il check-in MDM è completo, il fornitore può emissione notifiche push utilizzando APNs
Al ricevimento, gestito da mdmclient
Per interrogare i comandi MDM, viene inviata una richiesta a ServerURL
Utilizza il payload MDM precedentemente installato:
ServerURLPinningCertificateUUIDs
per la richiesta di pinning
IdentityCertificateUUID
per il certificato client TLS
Come commentato in precedenza, per cercare di registrare un dispositivo in un'organizzazione è necessario solo un Numero di Serie appartenente a quell'Organizzazione. Una volta che il dispositivo è registrato, diverse organizzazioni installeranno dati sensibili sul nuovo dispositivo: certificati, applicazioni, password WiFi, configurazioni VPN e così via. Pertanto, questo potrebbe essere un punto di ingresso pericoloso per gli attaccanti se il processo di registrazione non è correttamente protetto:
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)