macOS MDM
Last updated
Last updated
Dowiedz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Dowiedz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aby dowiedzieć się więcej o macOS MDM, sprawdź:
Zarządzanie urządzeniami mobilnymi (MDM) jest wykorzystywane do zarządzania różnymi urządzeniami końcowymi, takimi 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 oprogramowanie open-source, i musi obsługiwać protokół MDM. Kluczowe punkty obejmują:
Centralna kontrola nad urządzeniami.
Zależność od serwera MDM, który przestrzega protokołu MDM.
Możliwość serwera MDM do wysyłania różnych poleceń do urządzeń, na przykład zdalne usuwanie danych lub instalację konfiguracji.
Program rejestracji urządzeń (DEP) oferowany przez Apple ułatwia integrację Mobile Device Management (MDM), umożliwiając konfigurację bez interakcji użytkownika lub administratora. DEP automatyzuje proces rejestracji, umożliwiając urządzeniom być gotowym do użycia od razu po wyjęciu z pudełka, z minimalną ingerencją użytkownika lub administratora. Istotne aspekty obejmują:
Umożliwia urządzeniom automatyczną rejestrację w predefiniowanym serwerze MDM podczas pierwszej aktywacji.
Przede wszystkim korzystne dla zupełnie nowych urządzeń, ale także stosowane do urządzeń poddawanych ponownej konfiguracji.
Ułatwia prostą konfigurację, sprawiając, że urządzenia są gotowe do użytku organizacyjnego szybko.
Należy zauważyć, że łatwość rejestracji zapewniana przez DEP, choć korzystna, może również stanowić ryzyko bezpieczeństwa. Jeśli odpowiednie środki ochronne nie są właściwie egzekwowane podczas rejestracji MDM, atakujący mogą wykorzystać ten uproszczony proces do zarejestrowania swojego urządzenia na serwerze MDM organizacji, podszywając się pod korporacyjne urządzenie.
Alert bezpieczeństwa: Uproszczona rejestracja DEP może potencjalnie umożliwić nieautoryzowaną rejestrację urządzenia na serwerze MDM organizacji, jeśli nie są wdrożone odpowiednie zabezpieczenia.
Relatywnie stary protokół, stworzony przed rozpowszechnieniem się TLS i HTTPS.
Zapewnia klientom standaryzowany sposób wysyłania żądania podpisania certyfikatu (CSR) w celu uzyskania certyfikatu. Klient prosi serwer o podpisanie certyfikatu.
Oficjalny sposób Apple na ustawianie/wymuszanie konfiguracji systemu.
Format pliku, który może zawierać wiele ładunków.
Oparte na listach właściwości (rodzaj XML).
"mogą być podpisane i zaszyfrowane w celu zweryfikowania ich pochodzenia, zapewnienia integralności i ochrony zawartości." Podstawy — Strona 70, Przewodnik po bezpieczeństwie iOS, styczeń 2018 r.
Kombinacja 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 formie słowników kodowanych w plist
Wszystko przez HTTPS. Serwery MDM mogą być (i zazwyczaj są) przypięte.
Apple przyznaje dostawcy MDM certyfikat APNs do uwierzytelniania
3 interfejsy API: 1 dla sprzedawców, 1 dla dostawców MDM, 1 dla tożsamości urządzenia (nieudokumentowany):
Tak zwane API "usługi chmury" DEP. Jest to używane przez serwery MDM do powiązania 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 to używane przez urządzenia Apple do żądania swojego profilu DEP. Na macOS, binarny cloudconfigurationd
jest odpowiedzialny za komunikację za pomocą tego API.
Bardziej nowoczesne i oparte na JSON (w przeciwieństwie do plist)
Apple przyznaje dostawcy MDM token OAuth
API "usługi chmury" DEP
RESTful
synchronizacja rekordów urządzeń z Apple do serwera MDM
synchronizacja "profili DEP" do Apple z serwera MDM (dostarczane przez Apple do urządzenia w późniejszym czasie)
Profil DEP zawiera:
URL serwera dostawcy MDM
Dodatkowe zaufane certyfikaty dla adresu URL serwera (opcjonalne przypięcie)
Dodatkowe ustawienia (np. które ekrany pominąć w Asystencie konfiguracji)
Urządzenia Apple wyprodukowane po 2010 roku zazwyczaj posiadają 12-znakowy alfanumeryczny numer seryjny, gdzie pierwsze trzy cyfry reprezentują lokalizację produkcji, kolejne dwie wskazują rok i tydzień produkcji, następne trzy cyfry zapewniają unikalny identyfikator, a ostatnie cztery cyfry reprezentują numer modelu.
macOS Serial NumberTworzenie rekordu urządzenia (Sprzedawca, Apple): Tworzony jest rekord dla nowego urządzenia
Przypisanie rekordu urządzenia (Klient): Urządzenie jest przypisywane do serwera MDM
Synchronizacja rekordu urządzenia (Dostawca MDM): MDM synchronizuje rekordy urządzenia i przesyła profile DEP do Apple
Sprawdzenie DEP (Urządzenie): Urządzenie otrzymuje swój profil DEP
Pobranie 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.
Ten etap procesu zachodzi, gdy użytkownik uruchamia Maca po raz pierwszy (lub po pełnym wymazaniu)
lub podczas wykonywania sudo profiles show -type enrollment
Określenie, czy urządzenie jest włączone do DEP
Rekord Aktywacji to wewnętrzna nazwa dla profilu DEP
Rozpoczyna się od razu po podłączeniu urządzenia do Internetu
Sterowane przez CPFetchActivationRecord
Wdrożone przez cloudconfigurationd
za pośrednictwem XPC. "Asystent konfiguracji" (gdy urządzenie jest uruchamiane po raz pierwszy) lub polecenie profiles
będzie kontaktować się z tym demonem w celu pobrania rekordu aktywacji.
LaunchDaemon (zawsze działa jako root)
Następuje kilka kroków w celu uzyskania Rekordu Aktywacji wykonywanych przez MCTeslaConfigurationFetcher
. Ten proces wykorzystuje szyfrowanie o nazwie Absinthe
Pobierz certyfikat
Zainicjuj stan z certyfikatu (NACInit
)
Wykorzystuje różne dane specyficzne dla urządzenia (np. Numer seryjny za pośrednictwem IOKit
)
Pobierz klucz sesji
Ustanów sesję (NACKeyEstablishment
)
Wyślij żądanie
POST do https://iprofiles.apple.com/macProfile wysyłając dane { "action": "RequestProfileConfiguration", "sn": "" }
Łańcuch JSON jest szyfrowany za pomocą Absinthe (NACSign
)
Wszystkie żądania są przesyłane 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
Żądanie wysłane do url podanego w profilu DEP.
Certyfikaty kotwicowe są używane do oceny zaufania, jeśli są dostarczone.
Przypomnienie: właściwość anchor_certs profilu DEP
Żądanie to prosty plik .plist z identyfikacją urządzenia
Przykłady: UDID, wersja OS.
Podpisany CMS, zakodowany DER
Podpisany za pomocą certyfikatu tożsamości urządzenia (z APNS)
Łańcuch certyfikatów zawiera wygasły Apple iPhone Device CA
Po pobraniu, profil jest przechowywany w systemie
Ten krok rozpoczyna się automatycznie (jeśli w asystencie konfiguracji)
Sterowane przez CPInstallActivationProfile
Wdrożone 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 instalowania profili
Każdy typ ładunku jest powiązany z wtyczką
Może być XPC (w ramach) lub klasyczne Cocoa (w ManagedClient.app)
Przykład:
Ładunki certyfikatów używają CertificateService.xpc
Zazwyczaj profil aktywacji dostarczony przez dostawcę MDM będzie zawierał następujące ładunki:
com.apple.mdm
: do zarejestrowania urządzenia w MDM
com.apple.security.scep
: do bezpiecznego dostarczenia certyfikatu klienta do urządzenia.
com.apple.security.pem
: do zainstalowania zaufanych certyfikatów CA w Systemowym Keychain urządzenia.
Instalowanie ładunku MDM równoważne z kontrolą MDM w dokumentacji
Ładunek zawiera kluczowe właściwości:
URL MDM Check-In (CheckInURL
)
URL odpytywania poleceń MDM (ServerURL
) + temat APNs do jego wywołania
Aby zainstalować ładunek MDM, żądanie jest wysyłane do CheckInURL
Wdrożone w mdmclient
Ładunek MDM może zależeć od innych ładunków
Pozwala na przypięcie żądań do konkretnych certyfikatów:
Właściwość: CheckInURLPinningCertificateUUIDs
Właściwość: ServerURLPinningCertificateUUIDs
Dostarczone za pomocą ładunku PEM
Pozwala na przypisanie urządzenia certyfikatem tożsamości:
Właściwość: IdentityCertificateUUID
Dostarczone za pomocą ładunku SCEP
Po zakończeniu sprawdzania MDM, dostawca może wysyłać powiadomienia push za pomocą APNs
Po otrzymaniu, obsługiwane przez mdmclient
Aby odpytywać o polecenia MDM, żądanie jest wysyłane do ServerURL
Wykorzystuje wcześniej zainstalowany ładunek MDM:
ServerURLPinningCertificateUUIDs
do przypięcia żądania
IdentityCertificateUUID
do certyfikatu klienta TLS
Jak wcześniej wspomniano, aby spróbować zarejestrować urządzenie w organizacji, wystarczy numer seryjny należący do tej Organizacji. Gdy urządzenie zostanie zarejestrowane, kilka organizacji zainstaluje wrażliwe dane na nowym urządzeniu: certyfikaty, aplikacje, hasła WiFi, konfiguracje VPN i inne. Dlatego może to być niebezpieczne wejście dla atakujących, jeśli proces rejestracji nie jest odpowiednio chroniony:
Enrolling Devices in Other OrganisationsDowiedz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Dowiedz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)