macOS MDM
Reading time: 8 minutes
tip
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
Aby dowiedzieć się o MDM macOS, sprawdź:
Podstawy
Przegląd MDM (Zarządzanie Urządzeniami Mobilnymi)
Zarządzanie Urządzeniami Mobilnymi (MDM) jest wykorzystywane do nadzorowania różnych urządzeń końcowych, takich jak smartfony, laptopy i tablety. Szczególnie dla platform Apple (iOS, macOS, tvOS) obejmuje zestaw specjalistycznych funkcji, interfejsów API i praktyk. Działanie MDM opiera się na kompatybilnym serwerze MDM, który jest dostępny komercyjnie lub jako open-source, i musi wspierać Protokół MDM. Kluczowe punkty obejmują:
- Centralne zarządzanie urządzeniami.
- Zależność od serwera MDM, który przestrzega protokołu MDM.
- Zdolność serwera MDM do wysyłania różnych poleceń do urządzeń, na przykład zdalnego usuwania danych lub instalacji konfiguracji.
Podstawy DEP (Program Rejestracji Urządzeń)
Program Rejestracji Urządzeń (DEP) oferowany przez Apple upraszcza integrację Zarządzania Urządzeniami Mobilnymi (MDM) poprzez umożliwienie konfiguracji bezdotykowej dla urządzeń iOS, macOS i tvOS. DEP automatyzuje proces rejestracji, pozwalając urządzeniom być operacyjnymi od razu po wyjęciu z pudełka, z minimalną interwencją użytkownika lub administratora. Kluczowe aspekty obejmują:
- Umożliwia urządzeniom autonomiczne rejestrowanie się z wcześniej zdefiniowanym serwerem MDM po pierwszej aktywacji.
- Głównie korzystne dla nowych urządzeń, ale również stosowane dla urządzeń poddawanych rekonfiguracji.
- Ułatwia prostą konfigurację, szybko przygotowując urządzenia do użytku w organizacji.
Rozważania dotyczące bezpieczeństwa
Ważne jest, aby zauważyć, że łatwość rejestracji zapewniana przez DEP, choć korzystna, może również stwarzać ryzyko bezpieczeństwa. Jeśli środki ochronne nie są odpowiednio egzekwowane dla rejestracji MDM, napastnicy mogą wykorzystać ten uproszczony proces do zarejestrowania swojego urządzenia na serwerze MDM organizacji, podszywając się pod urządzenie korporacyjne.
caution
Alert bezpieczeństwa: Uproszczona rejestracja DEP może potencjalnie umożliwić nieautoryzowaną rejestrację urządzenia na serwerze MDM organizacji, jeśli nie są wprowadzone odpowiednie zabezpieczenia.
Podstawy Czym jest SCEP (Protokół Prostej Rejestracji Certyfikatów)?
- Stosunkowo stary protokół, stworzony przed powszechnym wprowadzeniem TLS i HTTPS.
- Daje klientom ustandaryzowany sposób wysyłania Żądania Podpisania Certyfikatu (CSR) w celu uzyskania certyfikatu. Klient poprosi serwer o wydanie podpisanego certyfikatu.
Czym są Profile Konfiguracji (aka mobileconfigs)?
- Oficjalny sposób Apple na ustawianie/egzekwowanie konfiguracji systemu.
- Format pliku, który może zawierać wiele ładunków.
- Oparty na listach właściwości (w rodzaju XML).
- „może być podpisany i zaszyfrowany, aby zweryfikować ich pochodzenie, zapewnić integralność i chronić ich zawartość.” Podstawy — Strona 70, Przewodnik po Bezpieczeństwie iOS, styczeń 2018.
Protokoły
MDM
- Połączenie APNs (serwery Apple) + RESTful API (serwery dostawców MDM)
- Komunikacja zachodzi między urządzeniem a serwerem związanym z produktem zarządzania urządzeniami
- Polecenia dostarczane z MDM do urządzenia w słownikach zakodowanych w plist
- Całość przez HTTPS. Serwery MDM mogą być (i zazwyczaj są) przypinane.
- Apple przyznaje dostawcy MDM certyfikat APNs do uwierzytelniania
DEP
- 3 API: 1 dla sprzedawców, 1 dla dostawców MDM, 1 dla tożsamości urządzenia (nieudokumentowane):
- Tzw. API "usługi chmurowej" DEP. Jest używane przez serwery MDM do kojarzenia profili DEP z konkretnymi urządzeniami.
- API DEP używane przez autoryzowanych sprzedawców Apple do rejestracji urządzeń, sprawdzania statusu rejestracji i statusu transakcji.
- Nieudokumentowane prywatne API DEP. Jest używane przez urządzenia Apple do żądania swojego profilu DEP. Na macOS, binarny
cloudconfigurationd
jest odpowiedzialny za komunikację przez to API. - Bardziej nowoczesne i oparte na JSON (w porównaniu do plist)
- Apple przyznaje dostawcy MDM token OAuth
API "usługi chmurowej" DEP
- RESTful
- synchronizuje rekordy urządzeń z Apple do serwera MDM
- synchronizuje „profile DEP” do Apple z serwera MDM (dostarczane przez Apple do urządzenia później)
- Profil DEP zawiera:
- URL serwera dostawcy MDM
- Dodatkowe zaufane certyfikaty dla URL serwera (opcjonalne przypinanie)
- Dodatkowe ustawienia (np. które ekrany pominąć w Asystencie Konfiguracji)
Numer seryjny
Urządzenia Apple wyprodukowane po 2010 roku zazwyczaj mają 12-znakowe alfanumeryczne numery seryjne, z pierwszymi trzema cyframi reprezentującymi miejsce produkcji, następne dwie wskazujące rok i tydzień produkcji, następne trzy cyfry dostarczające unikalny identyfikator, a ostatnie cztery cyfry reprezentujące numer modelu.
Kroki rejestracji i zarządzania
- Tworzenie rekordu urządzenia (Sprzedawca, Apple): Rekord nowego urządzenia jest tworzony
- Przypisanie rekordu urządzenia (Klient): Urządzenie jest przypisane do serwera MDM
- Synchronizacja rekordu urządzenia (Dostawca MDM): MDM synchronizuje rekordy urządzeń i przesyła profile DEP do Apple
- Rejestracja DEP (Urządzenie): Urządzenie otrzymuje swój profil DEP
- Pobieranie profilu (Urządzenie)
- Instalacja profilu (Urządzenie) a. w tym ładunki MDM, SCEP i root CA
- Wydanie polecenia MDM (Urządzenie)
Plik /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/PrivateFrameworks/ConfigurationProfiles.framework/ConfigurationProfiles.tbd
eksportuje funkcje, które można uznać za wysokopoziomowe "kroki" procesu rejestracji.
Krok 4: Rejestracja DEP - Uzyskiwanie Rekordu Aktywacji
Ta część procesu zachodzi, gdy użytkownik uruchamia Maca po raz pierwszy (lub po całkowitym wyczyszczeniu)
lub podczas wykonywania sudo profiles show -type enrollment
- Określenie czy urządzenie jest włączone w DEP
- Rekord Aktywacji to wewnętrzna nazwa dla profilu DEP
- Rozpoczyna się, gdy urządzenie jest podłączone do Internetu
- Napędzane przez
CPFetchActivationRecord
- Zrealizowane przez
cloudconfigurationd
za pośrednictwem XPC. "Asystent Konfiguracji" (gdy urządzenie jest po raz pierwszy uruchamiane) lub polecenieprofiles
skontaktuje się z tym demonem, aby uzyskać rekord aktywacji. - LaunchDaemon (zawsze działa jako root)
Przechodzi przez kilka kroków, aby uzyskać Rekord Aktywacji, realizowanych przez MCTeslaConfigurationFetcher
. Proces ten wykorzystuje szyfrowanie zwane Absinthe
- Pobierz certyfikat
- GET https://iprofiles.apple.com/resource/certificate.cer
- Zainicjuj stan z certyfikatu (
NACInit
) - Używa różnych danych specyficznych dla urządzenia (tj. Numer Seryjny za pomocą
IOKit
) - Pobierz klucz sesji
- POST https://iprofiles.apple.com/session
- Ustanów sesję (
NACKeyEstablishment
) - Złóż żądanie
- POST do https://iprofiles.apple.com/macProfile wysyłając dane
{ "action": "RequestProfileConfiguration", "sn": "" }
- Ładunek JSON jest szyfrowany przy użyciu Absinthe (
NACSign
) - Wszystkie żądania przez HTTPs, używane są wbudowane certyfikaty root
Odpowiedź to słownik JSON z ważnymi danymi, takimi jak:
- url: URL hosta dostawcy MDM dla profilu aktywacji
- anchor-certs: Tablica certyfikatów DER używanych jako zaufane kotwice
Krok 5: Pobieranie profilu
- Żądanie wysłane do url podanego w profilu DEP.
- Certyfikaty kotwicy są używane do oceny zaufania, jeśli są podane.
- Przypomnienie: właściwość anchor_certs profilu DEP
- Żądanie to prosty .plist z identyfikacją urządzenia
- Przykłady: UDID, wersja OS.
- Podpisane CMS, zakodowane DER
- Podpisane za pomocą certyfikatu tożsamości urządzenia (z APNS)
- Łańcuch certyfikatów zawiera wygasły Apple iPhone Device CA
Krok 6: Instalacja profilu
- Po pobraniu, profil jest przechowywany w systemie
- Ten krok rozpoczyna się automatycznie (jeśli w asystencie konfiguracji)
- Napędzany przez
CPInstallActivationProfile
- Zrealizowane przez mdmclient za pośrednictwem XPC
- LaunchDaemon (jako root) lub LaunchAgent (jako użytkownik), w zależności od kontekstu
- Profile konfiguracji mają wiele ładunków do zainstalowania
- Framework ma architekturę opartą na wtyczkach do instalacji profili
- Każdy typ ładunku jest powiązany z wtyczką
- Może być XPC (w frameworku) lub klasyczny Cocoa (w ManagedClient.app)
- Przykład:
- Ładunki certyfikatów używają CertificateService.xpc
Typowo, profil aktywacji dostarczany przez dostawcę MDM będzie zawierał następujące ładunki:
com.apple.mdm
: aby zarejestrować urządzenie w MDMcom.apple.security.scep
: aby bezpiecznie dostarczyć certyfikat klienta do urządzenia.com.apple.security.pem
: aby zainstalować zaufane certyfikaty CA w systemowym Keychain urządzenia.- Instalacja ładunku MDM odpowiada rejestracji MDM w dokumentacji
- Ładunek zawiera kluczowe właściwości:
-
- URL rejestracji MDM (
CheckInURL
)
- URL rejestracji MDM (
- URL polling komend MDM (
ServerURL
) + temat APNs do jego wywołania - Aby zainstalować ładunek MDM, wysyłane jest żądanie do
CheckInURL
- Zrealizowane w
mdmclient
- Ładunek MDM może zależeć od innych ładunków
- Umożliwia przypinanie żądań do konkretnych certyfikatów:
- Właściwość:
CheckInURLPinningCertificateUUIDs
- Właściwość:
ServerURLPinningCertificateUUIDs
- Dostarczane przez ładunek PEM
- Umożliwia urządzeniu przypisanie certyfikatu tożsamości:
- Właściwość: IdentityCertificateUUID
- Dostarczane przez ładunek SCEP
Krok 7: Nasłuchiwanie poleceń MDM
- Po zakończeniu rejestracji MDM, dostawca może wysyłać powiadomienia push za pomocą APNs
- Po odebraniu, obsługiwane przez
mdmclient
- Aby sprawdzić polecenia MDM, wysyłane jest żądanie do ServerURL
- Wykorzystuje wcześniej zainstalowany ładunek MDM:
ServerURLPinningCertificateUUIDs
do przypinania żądaniaIdentityCertificateUUID
do certyfikatu klienta TLS
Ataki
Rejestracja urządzeń w innych organizacjach
Jak wcześniej wspomniano, aby spróbować zarejestrować urządzenie w organizacji, wystarczy tylko numer seryjny należący do tej organizacji. Gdy urządzenie jest zarejestrowane, wiele organizacji zainstaluje wrażliwe dane na nowym urządzeniu: certyfikaty, aplikacje, hasła WiFi, konfiguracje VPN i tak dalej.
Dlatego może to być niebezpieczny punkt wejścia dla napastników, jeśli proces rejestracji nie jest odpowiednio chroniony:
Enrolling Devices in Other Organisations
tip
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.