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

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.

macOS Serial Number

Schritte zur Registrierung und Verwaltung

  1. Erstellung des GerĂ€teaufzeichnisses (WiederverkĂ€ufer, Apple): Der Datensatz fĂŒr das neue GerĂ€t wird erstellt
  2. Zuweisung des GerÀteaufzeichnisses (Kunde): Das GerÀt wird einem MDM-Server zugewiesen
  3. Synchronisierung des GerĂ€teaufzeichnisses (MDM-Anbieter): MDM synchronisiert die GerĂ€teaufzeichnungen und ĂŒbertrĂ€gt die DEP-Profile an Apple
  4. DEP-Check-in (GerÀt): GerÀt erhÀlt sein DEP-Profil
  5. Abruf des Profils (GerÀt)
  6. Installation des Profils (GerÀt) a. inkl. MDM, SCEP und Root-CA-Payloads
  7. Ausgabe des MDM-Befehls (GerÀt)

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)

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 der profiles-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

  1. Abrufen des Zertifikats
  2. GET https://iprofiles.apple.com/resource/certificate.cer
  3. Initialisieren des Zustands aus dem Zertifikat (NACInit)
  4. Verwendet verschiedene gerĂ€tespezifische Daten (d. h. Seriennummer ĂŒber IOKit)
  5. Abrufen des SitzungsschlĂŒssels
  6. POST https://iprofiles.apple.com/session
  7. Sitzung einrichten (NACKeyEstablishment)
  8. Anfrage stellen
  9. POST an https://iprofiles.apple.com/macProfile mit den Daten { "action": "RequestProfileConfiguration", "sn": "" }
  10. Die JSON-Payload ist mit Absinthe (NACSign) verschlĂŒsselt
  11. Alle Anfragen ĂŒber HTTPs, integrierte Root-Zertifikate werden verwendet

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

  • 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

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 registrieren
  • com.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-Befehlsabfrage-URL (ServerURL) + APNs-Thema, um es auszulösen
  • Um die MDM-Payload zu installieren, wird eine Anfrage an CheckInURL gesendet
  • 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 mdmclient verarbeitet
  • Um nach MDM-Befehlen zu fragen, wird eine Anfrage an ServerURL gesendet
  • Nutzt die zuvor installierte MDM-Payload:
  • ServerURLPinningCertificateUUIDs fĂŒr die Pinning-Anfrage
  • IdentityCertificateUUID fĂŒ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