macOS MDM
Tip
Lernen & ĂŒben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & ĂŒben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & ĂŒben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
UnterstĂŒtzen Sie HackTricks
- ĂberprĂŒfen Sie die AbonnementplĂ€ne!
- Treten Sie der đŹ Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter đŠ @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Um mehr ĂŒber macOS MDMs zu erfahren, siehe:
Grundlagen
MDM (Mobile Device Management) Ăbersicht
Mobile Device Management (MDM) wird verwendet, um verschiedene EndbenutzergerĂ€te wie Smartphones, Laptops und Tablets zu verwalten. Insbesondere fĂŒr Apples Plattformen (iOS, macOS, tvOS) umfasst es eine Reihe spezialisierter Funktionen, APIs und Praktiken. Der Betrieb von MDM hĂ€ngt von einem kompatiblen MDM-Server ab, der entweder kommerziell erhĂ€ltlich oder Open Source ist und das MDM-Protokoll unterstĂŒtzen muss. Wichtige Punkte sind:
- Zentralisierte Kontrolle ĂŒber GerĂ€te.
- AbhÀngigkeit von einem MDM-Server, der dem MDM-Protokoll entspricht.
- FÀhigkeit des MDM-Servers, verschiedene Befehle an GerÀte zu senden, z. B. zur Fernlöschung von Daten oder zur Installation von Konfigurationen.
Grundlagen des DEP (Device Enrollment Program)
Das Device Enrollment Program (DEP), das von Apple angeboten wird, vereinfacht die Integration von Mobile Device Management (MDM), indem es eine Zero-Touch-Konfiguration fĂŒr iOS-, macOS- und tvOS-GerĂ€te ermöglicht. DEP automatisiert den Registrierungsprozess, sodass GerĂ€te sofort einsatzbereit sind, mit minimalem Benutzer- oder Verwaltungsaufwand. Wesentliche Aspekte sind:
- Ermöglicht es GerÀten, sich autonom bei einem vordefinierten MDM-Server bei der ersten Aktivierung zu registrieren.
- PrimĂ€r vorteilhaft fĂŒr brandneue GerĂ€te, aber auch anwendbar fĂŒr GerĂ€te, die neu konfiguriert werden.
- Erleichtert eine unkomplizierte Einrichtung, sodass GerĂ€te schnell fĂŒr die organisatorische Nutzung bereit sind.
SicherheitsĂŒberlegung
Es ist wichtig zu beachten, dass die durch DEP gebotene einfache Registrierung, obwohl vorteilhaft, auch Sicherheitsrisiken mit sich bringen kann. Wenn SchutzmaĂnahmen fĂŒr die MDM-Registrierung nicht ausreichend durchgesetzt werden, könnten Angreifer diesen vereinfachten Prozess ausnutzen, um ihr GerĂ€t auf dem MDM-Server der Organisation zu registrieren und sich als UnternehmensgerĂ€t auszugeben.
Caution
Sicherheitswarnung: Eine vereinfachte DEP-Registrierung könnte potenziell die unbefugte Registrierung von GerÀten auf dem MDM-Server der Organisation ermöglichen, wenn keine angemessenen Sicherheitsvorkehrungen getroffen werden.
Grundlagen Was ist SCEP (Simple Certificate Enrollment Protocol)?
- Ein relativ altes Protokoll, das vor der weit verbreiteten Nutzung von TLS und HTTPS erstellt wurde.
- Bietet Clients eine standardisierte Möglichkeit, eine Zertifikatsanforderung (CSR) zu senden, um ein Zertifikat zu erhalten. Der Client wird den Server bitten, ihm ein signiertes Zertifikat zu geben.
Was sind Konfigurationsprofile (auch mobileconfigs)?
- Apples offizielle Methode zur Festlegung/Durchsetzung von Systemkonfigurationen.
- Dateiformat, das mehrere Payloads enthalten kann.
- Basierend auf Property-Listen (der XML-Art).
- âkann signiert und verschlĂŒsselt werden, um ihre Herkunft zu validieren, ihre IntegritĂ€t sicherzustellen und ihren Inhalt zu schĂŒtzen.â Grundlagen â Seite 70, iOS Security Guide, Januar 2018.
Protokolle
MDM
- Kombination aus APNs (Apple-Servern) + RESTful API (MDM Anbieter-Server)
- Kommunikation erfolgt zwischen einem GerÀt und einem Server, der mit einem GerÀteverwaltungsprodukt verbunden ist
- Befehle werden vom MDM an das GerĂ€t in plist-kodierten Dictionaries ĂŒbermittelt
- Ăberall ĂŒber HTTPS. MDM-Server können (und sind normalerweise) gepinnt.
- Apple gewÀhrt dem MDM-Anbieter ein APNs-Zertifikat zur Authentifizierung
DEP
- 3 APIs: 1 fĂŒr WiederverkĂ€ufer, 1 fĂŒr MDM-Anbieter, 1 fĂŒr GerĂ€teidentitĂ€t (nicht dokumentiert):
- Die sogenannte DEP âCloud-Serviceâ-API. Diese wird von MDM-Servern verwendet, um DEP-Profile mit bestimmten GerĂ€ten zu verknĂŒpfen.
- Die DEP-API, die von autorisierten Apple-WiederverkĂ€ufern verwendet wird, um GerĂ€te zu registrieren, den Registrierungsstatus zu ĂŒberprĂŒfen und den Transaktionsstatus zu ĂŒberprĂŒfen.
- Die nicht dokumentierte private DEP-API. Diese wird von Apple-GerÀten verwendet, um ihr DEP-Profil anzufordern. Unter macOS ist das
cloudconfigurationd-Binary fĂŒr die Kommunikation ĂŒber diese API verantwortlich. - Moderner und JSON-basiert (im Vergleich zu plist)
- Apple gewÀhrt dem MDM-Anbieter ein OAuth-Token
DEP âCloud-Serviceâ-API
- RESTful
- synchronisiert GerÀteaufzeichnungen von Apple zum MDM-Server
- synchronisiert âDEP-Profileâ von MDM-Server zu Apple (spĂ€ter an das GerĂ€t geliefert)
- Ein DEP âProfilâ enthĂ€lt:
- URL des MDM-Anbieter-Servers fĂŒr das Aktivierungsprofil
- ZusĂ€tzliche vertrauenswĂŒrdige Zertifikate fĂŒr die Server-URL (optionales Pinning)
- ZusĂ€tzliche Einstellungen (z. B. welche Bildschirme im Setup-Assistenten ĂŒbersprungen werden sollen)
Seriennummer
Apple-GerÀte, die nach 2010 hergestellt wurden, haben in der Regel 12-stellige alphanumerische Seriennummern, wobei die ersten drei Ziffern den Herstellungsort darstellen, die folgenden zwei das Jahr und die Woche der Herstellung angeben, die nÀchsten drei Ziffern eine eindeutige Kennung bereitstellen und die letzten vier Ziffern die Modellnummer darstellen.
Schritte zur Registrierung und Verwaltung
- Erstellung des GerĂ€teaufzeichnisses (WiederverkĂ€ufer, Apple): Der Datensatz fĂŒr das neue GerĂ€t wird erstellt
- Zuweisung des GerÀteaufzeichnisses (Kunde): Das GerÀt wird einem MDM-Server zugewiesen
- Synchronisierung des GerĂ€teaufzeichnisses (MDM-Anbieter): MDM synchronisiert die GerĂ€teaufzeichnungen und ĂŒbertrĂ€gt die DEP-Profile an Apple
- DEP-Check-in (GerÀt): GerÀt erhÀlt sein DEP-Profil
- Abruf des Profils (GerÀt)
- Installation des Profils (GerÀt) a. inkl. MDM, SCEP und Root-CA-Payloads
- Ausgabe des MDM-Befehls (GerÀt)
.png)
Die Datei /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/PrivateFrameworks/ConfigurationProfiles.framework/ConfigurationProfiles.tbd exportiert Funktionen, die als hochgradige âSchritteâ des Registrierungsprozesses betrachtet werden können.
Schritt 4: DEP-Check-in - Abrufen des Aktivierungsdatensatzes
Dieser Teil des Prozesses tritt auf, wenn ein Benutzer einen Mac zum ersten Mal bootet (oder nach einer vollstÀndigen Löschung)
.png)
oder beim AusfĂŒhren von sudo profiles show -type enrollment
- Bestimmen, ob das GerÀt DEP-fÀhig ist
- Aktivierungsdatensatz ist der interne Name fĂŒr DEP âProfilâ
- Beginnt, sobald das GerÀt mit dem Internet verbunden ist
- Angetrieben von
CPFetchActivationRecord - Implementiert durch
cloudconfigurationdĂŒber XPC. Der âSetup-Assistentâ (wenn das GerĂ€t zum ersten Mal gebootet wird) oder derprofiles-Befehl wird diesem Daemon kontaktieren, um den Aktivierungsdatensatz abzurufen. - LaunchDaemon (lĂ€uft immer als root)
Es folgen einige Schritte, um den Aktivierungsdatensatz durch MCTeslaConfigurationFetcher abzurufen. Dieser Prozess verwendet eine VerschlĂŒsselung namens Absinthe
- Abrufen des Zertifikats
- GET https://iprofiles.apple.com/resource/certificate.cer
- Initialisieren des Zustands aus dem Zertifikat (
NACInit) - Verwendet verschiedene gerĂ€tespezifische Daten (d. h. Seriennummer ĂŒber
IOKit) - Abrufen des SitzungsschlĂŒssels
- POST https://iprofiles.apple.com/session
- Sitzung einrichten (
NACKeyEstablishment) - Anfrage stellen
- POST an https://iprofiles.apple.com/macProfile mit den Daten
{ "action": "RequestProfileConfiguration", "sn": "" } - Die JSON-Payload ist mit Absinthe (
NACSign) verschlĂŒsselt - Alle Anfragen ĂŒber HTTPs, integrierte Root-Zertifikate werden verwendet
 (1).png)
Die Antwort ist ein JSON-Dictionary mit einigen wichtigen Daten wie:
- url: URL des MDM-Anbieter-Hosts fĂŒr das Aktivierungsprofil
- anchor-certs: Array von DER-Zertifikaten, die als vertrauenswĂŒrdige Anker verwendet werden
Schritt 5: Abruf des Profils
.png)
- Anfrage wird an url gesendet, die im DEP-Profil angegeben ist.
- Ankerzertifikate werden verwendet, um Vertrauen zu bewerten, falls bereitgestellt.
- Erinnerung: die anchor_certs-Eigenschaft des DEP-Profils
- Anfrage ist ein einfaches .plist mit GerÀteidentifikation
- Beispiele: UDID, OS-Version.
- CMS-signiert, DER-kodiert
- Signiert mit dem GerÀteidentitÀtszertifikat (von APNS)
- Zertifikatkette umfasst abgelaufene Apple iPhone Device CA
 (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) (2) (2).png)
Schritt 6: Installation des Profils
- Nach dem Abruf wird das Profil im System gespeichert
- Dieser Schritt beginnt automatisch (wenn im Setup-Assistenten)
- Angetrieben von
CPInstallActivationProfile - Implementiert durch mdmclient ĂŒber XPC
- LaunchDaemon (als root) oder LaunchAgent (als Benutzer), je nach Kontext
- Konfigurationsprofile haben mehrere Payloads zur Installation
- Das Framework hat eine pluginbasierte Architektur zur Installation von Profilen
- Jeder Payload-Typ ist mit einem Plugin verbunden
- Kann XPC (im Framework) oder klassisches Cocoa (in ManagedClient.app) sein
- Beispiel:
- Zertifikat-Payloads verwenden CertificateService.xpc
Typischerweise wird das Aktivierungsprofil, das von einem MDM-Anbieter bereitgestellt wird, die folgenden Payloads enthalten:
com.apple.mdm: um das GerĂ€t in MDM zu registrierencom.apple.security.scep: um dem GerĂ€t ein Client-Zertifikat sicher bereitzustellen.com.apple.security.pem: um vertrauenswĂŒrdige CA-Zertifikate im System-SchlĂŒsselbund des GerĂ€ts zu installieren.- Die Installation der MDM-Payload entspricht dem MDM-Check-in in der Dokumentation
- Die Payload enthÀlt wichtige Eigenschaften:
-
- MDM-Check-In-URL (
CheckInURL)
- MDM-Check-In-URL (
- MDM-Befehlsabfrage-URL (
ServerURL) + APNs-Thema, um es auszulösen - Um die MDM-Payload zu installieren, wird eine Anfrage an
CheckInURLgesendet - Implementiert in
mdmclient - MDM-Payload kann von anderen Payloads abhÀngen
- Ermöglicht Anfragen, die an bestimmte Zertifikate gebunden sind:
- Eigenschaft:
CheckInURLPinningCertificateUUIDs - Eigenschaft:
ServerURLPinningCertificateUUIDs - Bereitgestellt ĂŒber PEM-Payload
- Ermöglicht es dem GerÀt, mit einem IdentitÀtszertifikat attribuiert zu werden:
- Eigenschaft: IdentityCertificateUUID
- Bereitgestellt ĂŒber SCEP-Payload
Schritt 7: Warten auf MDM-Befehle
- Nachdem der MDM-Check-in abgeschlossen ist, kann der Anbieter Push-Benachrichtigungen ĂŒber APNs ausgeben
- Bei Empfang wird dies von
mdmclientverarbeitet - Um nach MDM-Befehlen zu fragen, wird eine Anfrage an ServerURL gesendet
- Nutzt die zuvor installierte MDM-Payload:
ServerURLPinningCertificateUUIDsfĂŒr die Pinning-AnfrageIdentityCertificateUUIDfĂŒr das TLS-Client-Zertifikat
Angriffe
GerÀte in anderen Organisationen registrieren
Wie bereits erwÀhnt, um zu versuchen, ein GerÀt in eine Organisation zu registrieren, wird nur eine Seriennummer benötigt, die zu dieser Organisation gehört. Sobald das GerÀt registriert ist, werden mehrere Organisationen sensible Daten auf dem neuen GerÀt installieren: Zertifikate, Anwendungen, WLAN-Passwörter, VPN-Konfigurationen und so weiter.
Daher könnte dies ein gefĂ€hrlicher Einstiegspunkt fĂŒr Angreifer sein, wenn der Registrierungsprozess nicht korrekt geschĂŒtzt ist:
Enrolling Devices in Other Organisations
Tip
Lernen & ĂŒben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & ĂŒben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & ĂŒben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
UnterstĂŒtzen Sie HackTricks
- ĂberprĂŒfen Sie die AbonnementplĂ€ne!
- Treten Sie der đŹ Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter đŠ @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.


