204 lines
12 KiB
Markdown

# macOS MDM
{{#include ../../../banners/hacktricks-training.md}}
**Om meer oor macOS MDM's te leer, kyk:**
- [https://www.youtube.com/watch?v=ku8jZe-MHUU](https://www.youtube.com/watch?v=ku8jZe-MHUU)
- [https://duo.com/labs/research/mdm-me-maybe](https://duo.com/labs/research/mdm-me-maybe)
## Basiese beginsels
### **MDM (Mobiele Toestelbestuur) Oorsig**
[Mobiele Toestelbestuur](https://en.wikipedia.org/wiki/Mobile_device_management) (MDM) word gebruik om verskeie eindgebruikertoestelle soos slimfone, skootrekenaars en tablette te bestuur. Veral vir Apple se platforms (iOS, macOS, tvOS), dit behels 'n stel gespesialiseerde kenmerke, API's en praktyke. Die werking van MDM hang af van 'n kompatible MDM-bediener, wat kommersieel beskikbaar of oopbron kan wees, en moet die [MDM-protokol](https://developer.apple.com/enterprise/documentation/MDM-Protocol-Reference.pdf) ondersteun. Sleutelpunte sluit in:
- Gekonsolideerde beheer oor toestelle.
- Afhangend van 'n MDM-bediener wat aan die MDM-protokol voldoen.
- Vermoë van die MDM-bediener om verskeie opdragte na toestelle te stuur, byvoorbeeld, afstandsdata-uitwissing of konfigurasie-installasie.
### **Basiese beginsels van DEP (Toestelregistrasieprogram)**
Die [Toestelregistrasieprogram](https://www.apple.com/business/site/docs/DEP_Guide.pdf) (DEP) wat deur Apple aangebied word, stroomlyn die integrasie van Mobiele Toestelbestuur (MDM) deur nul-aanraakintegrasie vir iOS, macOS en tvOS toestelle te fasiliteer. DEP outomatiseer die registrasieproses, wat toestelle in staat stel om reg uit die boks te funksioneer, met minimale gebruikers- of administratiewe ingryping. Essensiële aspekte sluit in:
- Stel toestelle in staat om outonoom te registreer met 'n vooraf gedefinieerde MDM-bediener by die eerste aktivering.
- Primêr voordelig vir splinternuwe toestelle, maar ook van toepassing op toestelle wat herkonfigureer word.
- Fasiliteer 'n eenvoudige opstelling, wat toestelle vinnig gereed maak vir organisatoriese gebruik.
### **Sekuriteits oorweging**
Dit is belangrik om daarop te let dat die gemak van registrasie wat deur DEP verskaf word, terwyl dit voordelig is, ook sekuriteitsrisiko's kan inhou. As beskermingsmaatreëls nie voldoende afgedwing word vir MDM-registrasie nie, kan aanvallers hierdie gestroomlynde proses benut om hul toestel op die organisasie se MDM-bediener te registreer, terwyl hulle as 'n korporatiewe toestel voorgee.
> [!CAUTION]
> **Sekuriteitswaarskuwing**: Vereenvoudigde DEP-registrasie kan moontlik ongeoorloofde toestelregistrasie op die organisasie se MDM-bediener toelaat as behoorlike beskermingsmaatreëls nie in plek is nie.
### Wat is SCEP (Eenvoudige Sertifikaatregistrasieprotokol)?
- 'n Relatief ou protokol, geskep voordat TLS en HTTPS algemeen was.
- Gee kliënte 'n gestandaardiseerde manier om 'n **Sertifikaatondertekeningsversoek** (CSR) te stuur ten einde 'n sertifikaat te verkry. Die kliënt sal die bediener vra om vir hom 'n ondertekende sertifikaat te gee.
### Wat is Konfigurasieprofiele (ook bekend as mobileconfigs)?
- Apple se amptelike manier om **stelselskonfigurasie in te stel/af te dwing.**
- Lêerformaat wat verskeie payloads kan bevat.
- Gebaseer op eiendomslyste (die XML-tipe).
- “kan onderteken en geënkripteer word om hul oorsprong te valideer, hul integriteit te verseker, en hul inhoud te beskerm.” Basiese beginsels — Bladsy 70, iOS Sekuriteitsgids, Januarie 2018.
## Protokolle
### MDM
- Kombinasie van APNs (**Apple bediener**s) + RESTful API (**MDM** **verkoper** bedieners)
- **Kommunikasie** vind plaas tussen 'n **toestel** en 'n bediener wat met 'n **toestel** **bestuur** **produk** geassosieer is
- **Opdragte** gelewer van die MDM na die toestel in **plist-gecodeerde woordeboeke**
- Oral oor **HTTPS**. MDM-bedieners kan (en is gewoonlik) ge-pin.
- Apple gee die MDM-verkoper 'n **APNs sertifikaat** vir verifikasie
### DEP
- **3 API's**: 1 vir herverkopers, 1 vir MDM-verkopers, 1 vir toestelidentiteit (nie gedokumenteer nie):
- Die sogenaamde [DEP "cloud service" API](https://developer.apple.com/enterprise/documentation/MDM-Protocol-Reference.pdf). Dit word deur MDM-bedieners gebruik om DEP-profiele met spesifieke toestelle te assosieer.
- Die [DEP API wat deur Apple Geautoriseerde Herverkopers gebruik word](https://applecareconnect.apple.com/api-docs/depuat/html/WSImpManual.html) om toestelle te registreer, registrasiestatus te kontroleer, en transaksies te kontroleer.
- Die nie-gedokumenteerde private DEP API. Dit word deur Apple Toestelle gebruik om hul DEP-profiel aan te vra. Op macOS is die `cloudconfigurationd` binêre verantwoordelik vir kommunikasie oor hierdie API.
- Meer modern en **JSON** gebaseer (teenoor plist)
- Apple gee 'n **OAuth-token** aan die MDM-verkoper
**DEP "cloud service" API**
- RESTful
- sinkroniseer toestelrekords van Apple na die MDM-bediener
- sinkroniseer “DEP-profiele” na Apple van die MDM-bediener (later aan die toestel gelewer deur Apple)
- 'n DEP “profiel” bevat:
- MDM-verkoper bediener URL
- Bykomende vertroude sertifikate vir bediener URL (opsionele pinning)
- Ekstra instellings (bv. watter skerms om in die Setup Assistant oor te slaan)
## Serienommer
Apple-toestelle wat na 2010 vervaardig is, het oor die algemeen **12-karakter alfanumeriese** serienommers, met die **eerste drie syfers wat die vervaardigingsplek verteenwoordig**, die volgende **twee** wat die **jaar** en **week** van vervaardiging aandui, die volgende **drie** syfers wat 'n **unieke** **identifiseerder** verskaf, en die **laaste** **vier** syfers wat die **modelnommer** verteenwoordig.
{{#ref}}
macos-serial-number.md
{{#endref}}
## Stappe vir registrasie en bestuur
1. Toestelrekord skep (Herverkoper, Apple): Die rekord vir die nuwe toestel word geskep
2. Toestelrekord toewys (Kliënt): Die toestel word aan 'n MDM-bediener toegeken
3. Toestelrekord sinkroniseer (MDM-verkoper): MDM sinkroniseer die toestelrekords en druk die DEP-profiele na Apple
4. DEP inligting (Toestel): Toestel kry sy DEP-profiel
5. Profielherwinning (Toestel)
6. Profielinstallasie (Toestel) a. insluitend MDM, SCEP en wortel CA payloads
7. MDM-opdrag uitreiking (Toestel)
![](<../../../images/image (694).png>)
Die lêer `/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/PrivateFrameworks/ConfigurationProfiles.framework/ConfigurationProfiles.tbd` voer funksies uit wat as **hoëvlak "stappe"** van die registrasieproses beskou kan word.
### Stap 4: DEP inligting - Verkryging van die Aktiveringsrekord
Hierdie deel van die proses vind plaas wanneer 'n **gebruiker 'n Mac vir die eerste keer opstart** (of na 'n volledige skoonmaak)
![](<../../../images/image (1044).png>)
of wanneer `sudo profiles show -type enrollment` uitgevoer word
- Bepaal **of toestel DEP geaktiveer is**
- Aktiveringsrekord is die interne naam vir **DEP “profiel”**
- Begin sodra die toestel aan die internet gekoppel is
- Gedryf deur **`CPFetchActivationRecord`**
- Geïmplementeer deur **`cloudconfigurationd`** via XPC. Die **"Setup Assistant"** (wanneer die toestel vir die eerste keer opgestart word) of die **`profiles`** opdrag sal **hierdie daemon** kontak om die aktiveringsrekord te verkry.
- LaunchDaemon (loop altyd as root)
Dit volg 'n paar stappe om die Aktiveringsrekord te verkry wat deur **`MCTeslaConfigurationFetcher`** uitgevoer word. Hierdie proses gebruik 'n enkripsie genaamd **Absinthe**
1. Verkry **sertifikaat**
1. GET [https://iprofiles.apple.com/resource/certificate.cer](https://iprofiles.apple.com/resource/certificate.cer)
2. **Begin** toestand vanaf sertifikaat (**`NACInit`**)
1. Gebruik verskeie toestelspesifieke data (d.w.s. **Serienommer via `IOKit`**)
3. Verkry **sessiesleutel**
1. POST [https://iprofiles.apple.com/session](https://iprofiles.apple.com/session)
4. Vestig die sessie (**`NACKeyEstablishment`**)
5. Maak die versoek
1. POST na [https://iprofiles.apple.com/macProfile](https://iprofiles.apple.com/macProfile) en stuur die data `{ "action": "RequestProfileConfiguration", "sn": "" }`
2. Die JSON payload is geënkripteer met Absinthe (**`NACSign`**)
3. Alle versoeke oor HTTPs, ingeboude wortelsertifikate word gebruik
![](<../../../images/image (566) (1).png>)
Die antwoord is 'n JSON-woordeboek met belangrike data soos:
- **url**: URL van die MDM-verkoper gasheer vir die aktiveringsprofiel
- **anchor-certs**: Array van DER-sertifikate wat as vertroude ankers gebruik word
### **Stap 5: Profielherwinning**
![](<../../../images/image (444).png>)
- Versoek gestuur na **url verskaf in DEP-profiel**.
- **Anchor-sertifikate** word gebruik om **vertroue te evalueer** indien verskaf.
- Herinnering: die **anchor_certs** eienskap van die DEP-profiel
- **Versoek is 'n eenvoudige .plist** met toestelidentifikasie
- Voorbeelde: **UDID, OS weergawe**.
- CMS-onderteken, DER-gecodeer
- Onderteken met die **toestelidentiteitssertifikaat (van APNS)**
- **Sertifikaatchain** sluit vervalle **Apple iPhone Device CA** in
![](<../../../images/image (567) (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) (1) (1) (1) (1) (2) (2).png>)
### Stap 6: Profielinstallasie
- Sodra verkry, **word profiel op die stelsel gestoor**
- Hierdie stap begin outomaties (indien in **setup assistant**)
- Gedryf deur **`CPInstallActivationProfile`**
- Geïmplementeer deur mdmclient oor XPC
- LaunchDaemon (as root) of LaunchAgent (as gebruiker), afhangende van konteks
- Konfigurasieprofiele het verskeie payloads om te installeer
- Raamwerk het 'n plugin-gebaseerde argitektuur vir die installering van profiele
- Elke payload tipe is geassosieer met 'n plugin
- Kan XPC (in raamwerk) of klassieke Cocoa (in ManagedClient.app) wees
- Voorbeeld:
- Sertifikaatpayloads gebruik CertificateService.xpc
Tipies, **aktiveringsprofiel** wat deur 'n MDM-verkoper verskaf word, sal **die volgende payloads insluit**:
- `com.apple.mdm`: om die toestel in MDM te **registreer**
- `com.apple.security.scep`: om 'n **kliëntsertifikaat** veilig aan die toestel te verskaf.
- `com.apple.security.pem`: om **vertroude CA-sertifikate** aan die toestel se Stelselsleutelhouer te installeer.
- Die installering van die MDM-payload is gelyk aan **MDM inligting in die dokumentasie**
- Payload **bevat sleutel eienskappe**:
- - MDM Inligting URL (**`CheckInURL`**)
- MDM Opdrag Polling URL (**`ServerURL`**) + APNs onderwerp om dit te aktiveer
- Om MDM-payload te installeer, word 'n versoek na **`CheckInURL`** gestuur
- Geïmplementeer in **`mdmclient`**
- MDM-payload kan op ander payloads afhanklik wees
- Laat **versoeke toe om aan spesifieke sertifikate ge-pin te word**:
- Eienskap: **`CheckInURLPinningCertificateUUIDs`**
- Eienskap: **`ServerURLPinningCertificateUUIDs`**
- Gelewer via PEM payload
- Laat toestel toe om met 'n identiteitssertifikaat toegeskryf te word:
- Eienskap: IdentityCertificateUUID
- Gelewer via SCEP payload
### **Stap 7: Luister vir MDM-opdragte**
- Nadat MDM-inligting voltooi is, kan verkoper **stoot kennisgewings gebruik maak van APNs**
- By ontvangs, hanteer deur **`mdmclient`**
- Om vir MDM-opdragte te poll, word 'n versoek na ServerURL gestuur
- Maak gebruik van die voorheen geïnstalleerde MDM-payload:
- **`ServerURLPinningCertificateUUIDs`** vir pinning versoek
- **`IdentityCertificateUUID`** vir TLS kliëntsertifikaat
## Aanvalle
### Registrasie van Toestelle in Ander Organisasies
Soos voorheen opgemerk, om 'n toestel in 'n organisasie te probeer registreer, **is slegs 'n Serienommer wat aan daardie Organisasie behoort, nodig**. Sodra die toestel geregistreer is, sal verskeie organisasies sensitiewe data op die nuwe toestel installeer: sertifikate, toepassings, WiFi-wagwoorde, VPN-konfigurasies [en so aan](https://developer.apple.com/enterprise/documentation/Configuration-Profile-Reference.pdf).\
Daarom kan dit 'n gevaarlike toegangspunt vir aanvallers wees as die registrasieproses nie korrek beskerm word nie:
{{#ref}}
enrolling-devices-in-other-organisations.md
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}