macOS MDM
Impara e pratica l'hacking di AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'hacking di GCP:
HackTricks Training GCP Red Team Expert (GRTE)
Per saperne di più sui macOS MDM, controlla:
Concetti di base
Panoramica di MDM (Mobile Device Management)
Mobile Device Management (MDM) è utilizzato per gestire vari dispositivi per utenti finali come smartphone, laptop e tablet. In particolare per le piattaforme Apple (iOS, macOS, tvOS), coinvolge un insieme di funzionalità specializzate, API e pratiche. Il funzionamento di MDM si basa su un server MDM compatibile, che può essere commerciale o open-source, e deve supportare il Protocollo MDM. I punti chiave includono:
Controllo centralizzato sui dispositivi.
Dipendenza da un server MDM che rispetti il protocollo MDM.
Capacità del server MDM di inviare vari comandi ai dispositivi, ad esempio cancellazione remota dei dati o installazione di configurazioni.
Fondamenti di DEP (Device Enrollment Program)
Il Device Enrollment Program (DEP) offerto da Apple semplifica l'integrazione del Mobile Device Management (MDM) facilitando la configurazione senza intervento per i dispositivi iOS, macOS e tvOS. DEP automatizza il processo di registrazione, consentendo ai dispositivi di essere operativi immediatamente, con minima intervento dell'utente o amministrativo. Aspetti essenziali includono:
Consente ai dispositivi di registrarsi autonomamente con un server MDM predefinito durante l'attivazione iniziale.
Principalmente utile per i dispositivi nuovi di zecca, ma applicabile anche ai dispositivi in fase di riconfigurazione.
Agevola una configurazione semplice, rendendo i dispositivi pronti per l'uso organizzativo rapidamente.
Considerazioni sulla sicurezza
È fondamentale notare che la facilità di registrazione fornita da DEP, sebbene vantaggiosa, può anche comportare rischi per la sicurezza. Se le misure di protezione non vengono adeguatamente applicate per la registrazione MDM, gli attaccanti potrebbero sfruttare questo processo semplificato per registrare il proprio dispositivo sul server MDM dell'organizzazione, fingendo di essere un dispositivo aziendale.
Avviso di sicurezza: La registrazione semplificata di DEP potrebbe potenzialmente consentire la registrazione non autorizzata di dispositivi sul server MDM dell'organizzazione se non sono in atto adeguate misure di sicurezza.
Cosa è SCEP (Simple Certificate Enrolment Protocol)?
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) allo scopo di ottenere un certificato. Il client chiederà al server di fornirgli un certificato firmato.
Cosa sono i Profili di Configurazione (noti anche come mobileconfigs)?
Modo ufficiale di impostare/imporre la configurazione di sistema di Apple.
Formato file che può contenere più carichi.
Basato su elenchi di proprietà (quelli di tipo XML).
"possono essere firmati e crittografati per convalidare la loro origine, garantire la loro integrità e proteggere i loro contenuti." Fondamenti - Pagina 70, Guida alla sicurezza di iOS, gennaio 2018.
Protocolli
MDM
Combinazione di APNs (server Apple) + API RESTful (server fornitore MDM)
La comunicazione avviene tra un dispositivo e un server associato a un prodotto di gestione dei dispositivi
I comandi vengono inviati dall'MDM al dispositivo in dizionari codificati in plist
Tutto su HTTPS. I server MDM possono essere (e di solito sono) pinnati.
Apple concede al fornitore MDM un certificato APNs per l'autenticazione
DEP
3 API: 1 per i rivenditori, 1 per i fornitori MDM, 1 per l'identità del dispositivo (non documentata):
La cosiddetta API del "servizio cloud" DEP. Questa viene 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 della registrazione e lo stato della transazione.
L'API DEP privata non documentata. Questa viene utilizzata dai dispositivi Apple per richiedere il proprio profilo DEP. Su macOS, il binario
cloudconfigurationd
è responsabile della comunicazione su questa API.Più moderno e basato su JSON (rispetto a plist)
Apple concede un token OAuth al fornitore MDM
API del "servizio cloud" DEP
RESTful
sincronizza i record dei dispositivi da Apple al server MDM
sincronizza i "profili DEP" da Apple al server MDM (consegnati da Apple al dispositivo in seguito)
Un "profilo" DEP contiene:
URL del server del fornitore MDM
Certificati aggiuntivi fidati per l'URL del server (pinnaggio opzionale)
Impostazioni aggiuntive (ad es. quali schermate saltare nell'Assistente di configurazione)
Numero di serie
I dispositivi Apple prodotti dopo il 2010 hanno generalmente numeri di serie alfanumerici di 12 caratteri, con i primi tre cifre che rappresentano il luogo di produzione, le due seguenti che indicano l'anno e la settimana di produzione, le tre cifre successive che forniscono un identificatore univoco, e gli ultimi quattro cifre che rappresentano il numero di modello.
macOS Serial NumberPassaggi per la registrazione e la gestione
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 riceve il suo profilo DEP
Recupero del profilo (Dispositivo)
Installazione del profilo (Dispositivo) a. incl. carichi MDM, SCEP e root CA
Emissione di comandi MDM (Dispositivo)
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F197708944-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FE5VfhVAq0qYsgU9deMR8%252Fuploads%252Fgit-blob-e74dcc48a706455140f68598a7994c7bb5eda1d5%252Fimage%2520%28694%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=d995fe1b&sv=1)
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.
Passo 4: Controllo DEP - Ottenere il Record di Attivazione
Questa parte del processo avviene quando un utente avvia un Mac per la prima volta (o dopo un wipe completo)
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F197708944-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FE5VfhVAq0qYsgU9deMR8%252Fuploads%252Fgit-blob-aa8b9f9727f0b4276ff9361ccdbcb51d63f8ddbb%252Fimage%2520%281044%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=b4815941&sv=1)
o eseguendo sudo profiles show -type enrollment
Determinare se il dispositivo è abilitato al DEP
Il Record di Attivazione è il nome interno del "profilo" DEP
Inizia non appena il dispositivo è connesso a Internet
Gestito da
CPFetchActivationRecord
Implementato da
cloudconfigurationd
tramite XPC. Il "Setup Assistant" (quando il dispositivo viene avviato per la prima volta) o il comandoprofiles
contatteranno questo demone per recuperare il record di attivazione.LaunchDaemon (eseguito sempre come root)
Segue alcuni passaggi per ottenere il Record di Attivazione eseguito da MCTeslaConfigurationFetcher
. Questo processo utilizza una crittografia chiamata Absinthe
Recupera il certificato
Inizializza lo stato dal certificato (
NACInit
)Utilizza vari dati specifici del dispositivo (ad esempio il Numero di Serie tramite
IOKit
)Recupera la 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 sono su HTTPs, vengono utilizzati certificati radice incorporati
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F197708944-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FE5VfhVAq0qYsgU9deMR8%252Fuploads%252Fgit-blob-dbe8992c382bc3999300ec963b57cd8bc87b4e82%252Fimage%2520%28566%29%2520%281%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=2057b5e3&sv=1)
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 anchor fidati
Passo 5: Recupero del Profilo
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F197708944-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FE5VfhVAq0qYsgU9deMR8%252Fuploads%252Fgit-blob-a8b26dc889064fd7ed552a69198a9179923d9a17%252Fimage%2520%28444%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=f2ce71a4&sv=1)
Richiesta inviata all'URL fornito nel profilo DEP.
I certificati anchor vengono utilizzati per valutare la fiducia se forniti.
Promemoria: la proprietà anchor_certs del profilo DEP
La richiesta è un semplice .plist con l'identificazione del dispositivo
Esempi: UDID, versione del SO.
Firmato CMS, codificato DER
Firmato utilizzando il certificato di identità del dispositivo (da APNS)
La catena di certificati include il certificato scaduto Apple iPhone Device CA
Passo 6: Installazione del Profilo
Una volta recuperato, il profilo viene memorizzato nel sistema
Questo passaggio inizia automaticamente (se nel setup assistant)
Gestito 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 MDMcom.apple.security.scep
: per fornire in modo sicuro un certificato client al dispositivo.com.apple.security.pem
: per installare certificati CA fidati nella System Keychain del dispositivo.Installando il 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 attivarloPer installare il payload MDM, viene inviata una richiesta a
CheckInURL
Implementato in
mdmclient
Il payload MDM può dipendere da altri payload
Consente di vincolare le richieste a certificati specifici:
Proprietà:
CheckInURLPinningCertificateUUIDs
Proprietà:
ServerURLPinningCertificateUUIDs
Consegnato tramite payload PEM
Consente al dispositivo di essere attribuito con un certificato di identità:
Proprietà: IdentityCertificateUUID
Consegnato tramite payload SCEP
Passo 7: Ascolto dei Comandi MDM
Dopo che il check-in MDM è completato, il fornitore può emettere notifiche push utilizzando APNs
Alla ricezione, gestito da
mdmclient
Per interrogare i comandi MDM, viene inviata una richiesta a ServerURL
Utilizza il payload MDM precedentemente installato:
ServerURLPinningCertificateUUIDs
per vincolare la richiestaIdentityCertificateUUID
per il certificato client TLS
Attacchi
Registrazione di Dispositivi in Altre Organizzazioni
Come già commentato, per cercare di registrare un dispositivo in un'organizzazione è necessario solo un Numero di Serie appartenente a quella 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:
Enrolling Devices in Other OrganisationsImpara e pratica l'Hacking su AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking su GCP:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated