macOS MDM
Reading time: 8 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Da biste saznali više o macOS MDM-ima, proverite:
Osnovi
MDM (Upravljanje mobilnim uređajima) Pregled
Upravljanje mobilnim uređajima (MDM) se koristi za nadgledanje različitih uređaja krajnjih korisnika kao što su pametni telefoni, laptopovi i tableti. Posebno za Apple-ove platforme (iOS, macOS, tvOS), uključuje skup specijalizovanih funkcija, API-ja i praksi. Rad MDM-a zavisi od kompatibilnog MDM servera, koji može biti komercijalno dostupan ili otvorenog koda, i mora podržavati MDM protokol. Ključne tačke uključuju:
- Centralizovana kontrola nad uređajima.
- Zavist od MDM servera koji se pridržava MDM protokola.
- Sposobnost MDM servera da šalje različite komande uređajima, na primer, daljinsko brisanje podataka ili instalaciju konfiguracije.
Osnovi DEP (Program za registraciju uređaja)
Program za registraciju uređaja (DEP) koji nudi Apple pojednostavljuje integraciju upravljanja mobilnim uređajima (MDM) omogućavajući konfiguraciju bez dodira za iOS, macOS i tvOS uređaje. DEP automatizuje proces registracije, omogućavajući uređajima da budu operativni odmah po otvaranju pakovanja, uz minimalnu intervenciju korisnika ili administratora. Osnovni aspekti uključuju:
- Omogućava uređajima da se autonomno registruju sa unapred definisanim MDM serverom prilikom prve aktivacije.
- Prvenstveno korisno za potpuno nove uređaje, ali takođe primenljivo na uređaje koji prolaze kroz rekonfiguraciju.
- Olakšava jednostavnu postavku, čineći uređaje spremnim za organizacionu upotrebu brzo.
Razmatranje bezbednosti
Važno je napomenuti da lakoća registracije koju pruža DEP, iako korisna, može takođe predstavljati bezbednosne rizike. Ako zaštitne mere nisu adekvatno primenjene za MDM registraciju, napadači bi mogli iskoristiti ovaj pojednostavljeni proces da registruju svoj uređaj na MDM serveru organizacije, pretvarajući se da je korporativni uređaj.
caution
Bezbednosna upozorenje: Pojednostavljena DEP registracija mogla bi potencijalno omogućiti neovlašćenu registraciju uređaja na MDM serveru organizacije ako odgovarajuće zaštitne mere nisu na snazi.
Osnovi Šta je SCEP (Protokol za jednostavnu registraciju sertifikata)?
- Relativno stari protokol, stvoren pre nego što su TLS i HTTPS postali široko rasprostranjeni.
- Daje klijentima standardizovan način slanja Zahteva za potpisivanje sertifikata (CSR) u svrhu dobijanja sertifikata. Klijent će tražiti od servera da mu da potpisani sertifikat.
Šta su Konfiguracijski profili (aka mobileconfigs)?
- Apple-ov zvanični način postavljanja/primene sistemske konfiguracije.
- Format datoteke koji može sadržati više tereta.
- Zasnovan na listama svojstava (XML tip).
- “mogu biti potpisani i šifrovani kako bi se potvrdio njihov izvor, osigurala njihova celovitost i zaštitili njihovi sadržaji.” Osnovi — Strana 70, iOS Security Guide, januar 2018.
Protokoli
MDM
- Kombinacija APNs (Apple serveri) + RESTful API (MDM dobavljači serveri)
- Komunikacija se odvija između uređaja i servera povezanog sa proizvodom za upravljanje uređajima
- Komande se isporučuju sa MDM-a na uređaj u plist-encoded rečnicima
- Sve preko HTTPS. MDM serveri mogu biti (i obično su) pinovani.
- Apple dodeljuje MDM dobavljaču APNs sertifikat za autentifikaciju
DEP
- 3 API-ja: 1 za prodavce, 1 za MDM dobavljače, 1 za identitet uređaja (nedokumentovano):
- Takozvani DEP "cloud service" API. Ovo koriste MDM serveri da povežu DEP profile sa specifičnim uređajima.
- DEP API koji koriste Apple ovlašćeni prodavci za registraciju uređaja, proveru statusa registracije i proveru statusa transakcije.
- Nedokumentovani privatni DEP API. Ovo koriste Apple uređaji da zatraže svoj DEP profil. Na macOS-u,
cloudconfigurationd
binarni fajl je odgovoran za komunikaciju preko ovog API-ja. - Moderniji i JSON zasnovan (naspram plist)
- Apple dodeljuje OAuth token MDM dobavljaču
DEP "cloud service" API
- RESTful
- sinhronizuje zapise uređaja sa Apple-a na MDM server
- sinhronizuje “DEP profile” sa Apple-om sa MDM servera (isporučuje Apple uređaju kasnije)
- DEP “profil” sadrži:
- URL MDM dobavljača servera
- Dodatni pouzdani sertifikati za URL servera (opciono pinovanje)
- Dodatne postavke (npr. koje ekrane preskočiti u Setup Assistant)
Serijski broj
Apple uređaji proizvedeni nakon 2010. obično imaju 12-znamenkaste alfanumeričke serijske brojeve, pri čemu prva tri broja predstavljaju mesto proizvodnje, sledeća dva označavaju godinu i nedelju proizvodnje, sledeća tri broja daju jedinstveni identifikator, a poslednja četiri broja predstavljaju broj modela.
Koraci za registraciju i upravljanje
- Kreiranje zapisa uređaja (Prodavac, Apple): Zapis za novi uređaj se kreira
- Dodeljivanje zapisa uređaja (Kupac): Uređaj se dodeljuje MDM serveru
- Sinhronizacija zapisa uređaja (MDM dobavljač): MDM sinhronizuje zapise uređaja i šalje DEP profile Apple-u
- DEP prijava (Uređaj): Uređaj dobija svoj DEP profil
- Preuzimanje profila (Uređaj)
- Instalacija profila (Uređaj) a. uključuje MDM, SCEP i root CA terete
- Izdavanje MDM komande (Uređaj)
Datoteka /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/PrivateFrameworks/ConfigurationProfiles.framework/ConfigurationProfiles.tbd
izvozi funkcije koje se mogu smatrati visok nivo "koraka" procesa registracije.
Korak 4: DEP prijava - Dobijanje aktivacionog zapisa
Ovaj deo procesa se odvija kada korisnik prvi put pokrene Mac (ili nakon potpunog brisanja)
ili kada se izvršava sudo profiles show -type enrollment
- Utvrditi da li je uređaj DEP omogućen
- Aktivacioni zapis je interno ime za DEP “profil”
- Počinje čim se uređaj poveže na Internet
- Pokreće ga
CPFetchActivationRecord
- Implementira ga
cloudconfigurationd
putem XPC. "Setup Assistant" (kada se uređaj prvi put pokrene) iliprofiles
komanda će kontaktirati ovaj daemon da preuzme aktivacioni zapis. - LaunchDaemon (uvek se pokreće kao root)
Sledi nekoliko koraka da se dobije aktivacioni zapis koji obavlja MCTeslaConfigurationFetcher
. Ovaj proces koristi enkripciju nazvanu Absinthe
- Preuzmi sertifikat
- GET https://iprofiles.apple.com/resource/certificate.cer
- Inicijalizuj stanje iz sertifikata (
NACInit
) - Koristi razne podatke specifične za uređaj (tj. Serijski broj putem
IOKit
) - Preuzmi ključ sesije
- POST https://iprofiles.apple.com/session
- Uspostavi sesiju (
NACKeyEstablishment
) - Napravi zahtev
- POST na https://iprofiles.apple.com/macProfile šaljući podatke
{ "action": "RequestProfileConfiguration", "sn": "" }
- JSON teret je šifrovan koristeći Absinthe (
NACSign
) - Svi zahtevi preko HTTPs, korišćeni su ugrađeni root sertifikati
Odgovor je JSON rečnik sa nekim važnim podacima kao što su:
- url: URL domaćina MDM dobavljača za aktivacioni profil
- anchor-certs: Niz DER sertifikata korišćenih kao pouzdani sidri
Korak 5: Preuzimanje profila
- Zahtev poslat na url naveden u DEP profilu.
- Sidreni sertifikati se koriste za procenu poverenja ako su navedeni.
- Podsetnik: anchor_certs svojstvo DEP profila
- Zahtev je jednostavan .plist sa identifikacijom uređaja
- Primeri: UDID, verzija OS-a.
- CMS-potpisan, DER-enkodiran
- Potpisan koristeći sertifikat identiteta uređaja (iz APNS-a)
- Lanac sertifikata uključuje istekao Apple iPhone Device CA
Korak 6: Instalacija profila
- Kada se preuzme, profil se čuva na sistemu
- Ovaj korak počinje automatski (ako je u setup assistant)
- Pokreće ga
CPInstallActivationProfile
- Implementira ga mdmclient preko XPC
- LaunchDaemon (kao root) ili LaunchAgent (kao korisnik), u zavisnosti od konteksta
- Konfiguracijski profili imaju više tereta za instalaciju
- Okvir ima arhitekturu zasnovanu na plugin-ima za instalaciju profila
- Svaka vrsta tereta je povezana sa plugin-om
- Može biti XPC (u okviru) ili klasični Cocoa (u ManagedClient.app)
- Primer:
- Tereti sertifikata koriste CertificateService.xpc
Obično, aktivacioni profil koji pruža MDM dobavljač će uključivati sledeće terete:
com.apple.mdm
: da registruje uređaj u MDMcom.apple.security.scep
: da sigurno obezbedi sertifikat klijenta uređaju.com.apple.security.pem
: da instalira pouzdane CA sertifikate u sistemski ključan.- Instalacija MDM tereta ekvivalentna je MDM prijavi u dokumentaciji
- Teret sadrži ključne osobine:
-
- MDM Check-In URL (
CheckInURL
)
- MDM Check-In URL (
- MDM Command Polling URL (
ServerURL
) + APNs tema za aktivaciju - Da bi se instalirao MDM teret, zahtev se šalje na
CheckInURL
- Implementirano u
mdmclient
- MDM teret može zavisiti od drugih tereta
- Omogućava zahteve da budu pinovani na specifične sertifikate:
- Svojstvo:
CheckInURLPinningCertificateUUIDs
- Svojstvo:
ServerURLPinningCertificateUUIDs
- Isporučuje se putem PEM tereta
- Omogućava uređaju da bude dodeljen sertifikat identiteta:
- Svojstvo: IdentityCertificateUUID
- Isporučuje se putem SCEP tereta
Korak 7: Slušanje za MDM komande
- Nakon što je MDM prijava završena, dobavljač može izdati push obaveštenja koristeći APNs
- Po prijemu, obrađuje ih
mdmclient
- Da bi proverio MDM komande, zahtev se šalje na ServerURL
- Koristi prethodno instalirani MDM teret:
ServerURLPinningCertificateUUIDs
za pinovanje zahtevaIdentityCertificateUUID
za TLS sertifikat klijenta
Napadi
Registracija uređaja u drugim organizacijama
Kao što je ranije komentarisano, da bi pokušali da registruju uređaj u organizaciji potreban je samo Serijski broj koji pripada toj organizaciji. Kada se uređaj registruje, nekoliko organizacija će instalirati osetljive podatke na novi uređaj: sertifikate, aplikacije, WiFi lozinke, VPN konfiguracije i tako dalje.
Stoga, ovo bi moglo biti opasno mesto za napadače ako proces registracije nije pravilno zaštićen:
Enrolling Devices in Other Organisations
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.