macOS MDM
Tip
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)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al đŹ gruppo Discord o al gruppo telegram o seguici su Twitter đŚ @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
Per saperne di piĂš sugli MDM di macOS, controlla:
Fondamenti
Panoramica di MDM (Mobile Device Management)
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à specializzate, API e pratiche. Il funzionamento di MDM si basa su un server MDM compatibile, che è disponibile commercialmente o open-source, e deve supportare il MDM Protocol. 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 della configurazione.
Fondamenti del DEP (Device Enrollment Program)
Il Device Enrollment Program (DEP) offerto da Apple semplifica lâintegrazione del Mobile Device Management (MDM) facilitando la configurazione senza contatto per dispositivi iOS, macOS e tvOS. Il DEP automatizza il processo di registrazione, consentendo ai dispositivi di essere operativi subito dopo lâapertura della confezione, 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 utile 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.
Considerazione sulla Sicurezza
Ă fondamentale notare che la facilitĂ di registrazione fornita dal DEP, sebbene vantaggiosa, può anche comportare rischi per la sicurezza. Se le misure protettive 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, spacciandosi per un dispositivo aziendale.
Caution
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.
Fondamenti Cosâè SCEP (Simple Certificate Enrollment Protocol)?
- Un protocollo relativamente vecchio, creato prima che TLS e HTTPS fossero diffusi.
- Fornisce ai client un modo standardizzato per inviare una Certificate Signing Request (CSR) al fine di ottenere un certificato. Il client chiederĂ al server di fornirgli un certificato firmato.
Cosa sono i Profili di Configurazione (aka mobileconfigs)?
- 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.
Protocolli
MDM
- 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 dal 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
DEP
- 3 API: 1 per rivenditori, 1 per fornitori MDM, 1 per identitĂ del dispositivo (non documentata):
- La cosiddetta API âcloud serviceâ 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 privata DEP non documentata. Questa è utilizzata dai dispositivi Apple per richiedere il proprio 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 âcloud serviceâ DEP
- RESTful
- sincronizza i record dei dispositivi da Apple al server MDM
- sincronizza i âprofili DEPâ da Apple al server MDM (forniti da Apple al dispositivo in seguito)
- Un âprofiloâ DEP contiene:
- URL del server del fornitore MDM
- Certificati di fiducia aggiuntivi per lâURL del server (pinning opzionale)
- Impostazioni extra (ad es. quali schermate saltare nellâAssistente Configurazione)
Numero di Serie
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.
Passaggi 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 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)
.png)
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.
Passaggio 4: Check-in DEP - Ottenere il Record di Attivazione
Questa parte del processo si verifica quando un utente avvia un Mac per la prima volta (o dopo una cancellazione completa)
.png)
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
cloudconfigurationdtramite XPC. LââAssistente Configurazioneâ (quando il dispositivo viene avviato per la prima volta) o il comandoprofilescontatterĂ 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
- GET https://iprofiles.apple.com/resource/certificate.cer
- Inizializza lo stato dal certificato (
NACInit) - Utilizza vari dati specifici del dispositivo (cioè Numero di Serie tramite
IOKit) - Recupera chiave di sessione
- POST https://iprofiles.apple.com/session
- 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
 (1).png)
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
Passaggio 5: Recupero del Profilo
.png)
- 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
 (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) (2) (2).png)
Passaggio 6: Installazione del Profilo
- Una volta recuperato, il profilo è 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 MDMcom.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 Check-In MDM (
- 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
Passaggio 7: Ascoltare i comandi MDM
- 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:
ServerURLPinningCertificateUUIDsper la richiesta di pinningIdentityCertificateUUIDper il certificato client TLS
Attacchi
Registrazione di Dispositivi in Altre Organizzazioni
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 pericoloso punto di ingresso per gli attaccanti se il processo di registrazione non è correttamente protetto:
Enrolling Devices in Other Organisations
Tip
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)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al đŹ gruppo Discord o al gruppo telegram o seguici su Twitter đŚ @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
HackTricks

