macOS MDM

Reading time: 10 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

To learn about macOS MDMs check:

Notions de base

MDM (Mobile Device Management) Overview

Mobile Device Management (MDM) est utilisé pour superviser différents appareils utilisateurs finaux tels que smartphones, laptops et tablettes. Pour les plateformes Apple (iOS, macOS, tvOS), cela implique un ensemble de fonctionnalités, d'APIs et de pratiques spécifiques. Le fonctionnement de MDM repose sur un serveur MDM compatible, commercial ou open-source, qui doit implémenter le MDM Protocol. Points clés :

  • ContrĂŽle centralisĂ© des appareils.
  • DĂ©pendance Ă  un serveur MDM conforme au MDM protocol.
  • Le serveur MDM peut envoyer diverses commandes aux appareils, par exemple effacement Ă  distance des donnĂ©es ou installation de configurations.

Notions de base de DEP (Device Enrollment Program)

Le Device Enrollment Program (DEP) proposĂ© par Apple facilite l'intĂ©gration de Mobile Device Management (MDM) en permettant une configuration zero-touch pour les appareils iOS, macOS et tvOS. DEP automatise le processus d'enrĂŽlement, permettant aux appareils d'ĂȘtre opĂ©rationnels dĂšs la sortie de la boĂźte, avec une intervention minimale de l'utilisateur ou de l'administrateur. Aspects essentiels :

  • Permet aux appareils de s'enregistrer automatiquement auprĂšs d'un serveur MDM prĂ©dĂ©fini lors de la premiĂšre activation.
  • Principalement bĂ©nĂ©fique pour les appareils neufs, mais applicable aussi lors de reconfigurations.
  • Simplifie la configuration, rendant les appareils rapidement prĂȘts pour un usage organisationnel.

Considérations de sécurité

Il est crucial de noter que la facilité d'enrÎlement offerte par DEP, bien qu'avantageuse, peut aussi présenter des risques de sécurité. Si des mesures de protection ne sont pas correctement appliquées pour l'enrÎlement MDM, des attaquants pourraient exploiter ce processus simplifié pour enregistrer leur appareil sur le serveur MDM de l'organisation, en se faisant passer pour un appareil d'entreprise.

caution

Alerte de sécurité : L'enrÎlement DEP simplifié pourrait permettre l'enregistrement non autorisé d'un appareil sur le serveur MDM de l'organisation si des protections appropriées ne sont pas en place.

Notions de base — Qu'est-ce que SCEP (Simple Certificate Enrolment Protocol) ?

  • Un protocole relativement ancien, créé avant la gĂ©nĂ©ralisation de TLS et HTTPS.
  • Fournit aux clients une mĂ©thode standardisĂ©e pour envoyer une Certificate Signing Request (CSR) afin d'obtenir un certificat signĂ©. Le client demande au serveur de lui dĂ©livrer un certificat signĂ©.

Que sont les Configuration Profiles (aka mobileconfigs) ?

  • La mĂ©thode officielle d'Apple pour configurer/forcer des paramĂštres systĂšme.
  • Format de fichier pouvant contenir plusieurs payloads.
  • BasĂ©s sur des property lists (le format XML).
  • “can be signed and encrypted to validate their origin, ensure their integrity, and protect their contents.” Basics — Page 70, iOS Security Guide, January 2018.

Protocoles

MDM

  • Combinaison de APNs (Apple servers) + RESTful API (MDM vendor servers)
  • La communication se fait entre un device et un serveur associĂ© Ă  un produit de device management
  • Les commands sont envoyĂ©es du MDM vers l'appareil sous forme de plist-encoded dictionaries
  • Tout passe par HTTPS. Les serveurs MDM peuvent ĂȘtre (et sont gĂ©nĂ©ralement) pinned.
  • Apple fournit au MDM vendor un APNs certificate pour l'authentification

DEP

  • 3 APIs : 1 pour les resellers, 1 pour les MDM vendors, 1 pour l'identitĂ© des devices (non documentĂ©e) :
  • Le soi-disant DEP "cloud service" API. UtilisĂ© par les serveurs MDM pour associer des DEP profiles Ă  des appareils spĂ©cifiques.
  • L'DEP API used by Apple Authorized Resellers pour enregistrer des appareils, vĂ©rifier le statut d'enrĂŽlement, et vĂ©rifier le statut des transactions.
  • L'API DEP privĂ©e non documentĂ©e. UtilisĂ©e par les Apple Devices pour demander leur DEP profile. Sur macOS, le binaire cloudconfigurationd est responsable de la communication via cette API.
  • Plus moderne et basĂ© sur JSON (vs. plist)
  • Apple fournit un OAuth token au MDM vendor

DEP "cloud service" API

  • RESTful
  • synchronise les device records d'Apple vers le serveur MDM
  • synchronise les “DEP profiles” vers Apple depuis le serveur MDM (livrĂ©s plus tard Ă  l'appareil)
  • Un DEP “profile” contient :
  • MDM vendor server URL
  • Certificats de confiance additionnels pour le server URL (pinning optionnel)
  • ParamĂštres supplĂ©mentaires (ex. quelles Ă©crans ignorer dans Setup Assistant)

Numéro de série

Les appareils Apple fabriquĂ©s aprĂšs 2010 ont gĂ©nĂ©ralement des numĂ©ros de sĂ©rie alphanumĂ©riques de 12 caractĂšres, oĂč les trois premiers chiffres reprĂ©sentent le lieu de fabrication, les deux suivants indiquent l'annĂ©e et la semaine de fabrication, les trois suivants fournissent un identifiant unique, et les quatre derniers chiffres reprĂ©sentent le numĂ©ro de modĂšle.

macOS Serial Number

Étapes d'enrîlement et de gestion

  1. Création du device record (Reseller, Apple) : L'enregistrement du nouvel appareil est créé
  2. Affectation du device record (Customer) : L'appareil est assigné à un serveur MDM
  3. Synchronisation des device records (MDM vendor) : le MDM synchronise les device records et pousse les DEP profiles vers Apple
  4. DEP check-in (Device) : L'appareil récupÚre son DEP profile
  5. Récupération du profile (Device)
  6. Installation du profile (Device) a. incl. payloads MDM, SCEP et root CA
  7. Émission de commandes MDM (Device)

Le fichier /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/PrivateFrameworks/ConfigurationProfiles.framework/ConfigurationProfiles.tbd exporte des fonctions qui peuvent ĂȘtre considĂ©rĂ©es comme des "Ă©tapes" de haut niveau du processus d'enrĂŽlement.

Étape 4 : DEP check-in — Obtention de l'Activation Record

Cette partie du processus se produit lorsqu'un utilisateur démarre un Mac pour la premiÚre fois (ou aprÚs un effacement complet)

ou lors de l'exécution de sudo profiles show -type enrollment

  • DĂ©terminer si l'appareil est DEP enabled
  • Activation Record est le nom interne du DEP “profile”
  • Commence dĂšs que l'appareil est connectĂ© Ă  Internet
  • PilotĂ© par CPFetchActivationRecord
  • ImplĂ©mentĂ© par cloudconfigurationd via XPC. Le "Setup Assistant" (lors du premier dĂ©marrage de l'appareil) ou la commande profiles contacteront ce daemon pour rĂ©cupĂ©rer l'activation record.
  • LaunchDaemon (toujours lancĂ© en root)

La récupération de l'Activation Record suit quelques étapes réalisées par MCTeslaConfigurationFetcher. Ce processus utilise un chiffrement appelé Absinthe

  1. Récupérer le certificate
  2. GET https://iprofiles.apple.com/resource/certificate.cer
  3. Initialiser l'état à partir du certificate (NACInit)
  4. Utilise diverses données spécifiques à l'appareil (p.ex. Serial Number via IOKit)
  5. Récupérer la session key
  6. POST https://iprofiles.apple.com/session
  7. Établir la session (NACKeyEstablishment)
  8. Faire la requĂȘte
  9. POST vers https://iprofiles.apple.com/macProfile en envoyant les données { "action": "RequestProfileConfiguration", "sn": "" }
  10. Le payload JSON est chiffré en utilisant Absinthe (NACSign)
  11. Toutes les requĂȘtes passent par HTTPs, les certificats racines intĂ©grĂ©s sont utilisĂ©s

La réponse est un dictionnaire JSON contenant des données importantes comme :

  • url : URL de l'hĂŽte du MDM vendor pour le activation profile
  • anchor-certs : Tableau de certificats DER utilisĂ©s comme ancres de confiance

Étape 5 : RĂ©cupĂ©ration du Profile

  • RequĂȘte envoyĂ©e Ă  l'url fournie dans le DEP profile.
  • Les anchor certificates sont utilisĂ©s pour Ă©valuer la confiance si fournis.
  • Rappel : la propriĂ©tĂ© anchor_certs du DEP profile
  • La requĂȘte est un simple .plist contenant l'identification de l'appareil
  • Exemples : UDID, OS version.
  • CMS-signed, DER-encoded
  • SignĂ© en utilisant le device identity certificate (from APNS)
  • La chaĂźne de certificats inclut le Apple iPhone Device CA expirĂ©

Étape 6 : Installation du Profile

  • Une fois rĂ©cupĂ©rĂ©, le profile est stockĂ© sur le systĂšme
  • Cette Ă©tape commence automatiquement (si dans le setup assistant)
  • PilotĂ©e par CPInstallActivationProfile
  • ImplĂ©mentĂ©e par mdmclient via XPC
  • LaunchDaemon (en root) ou LaunchAgent (en utilisateur), selon le contexte
  • Les configuration profiles contiennent plusieurs payloads Ă  installer
  • Le framework a une architecture basĂ©e sur des plugins pour l'installation des profiles
  • Chaque type de payload est associĂ© Ă  un plugin
  • Peut ĂȘtre XPC (dans le framework) ou Cocoa classique (dans ManagedClient.app)
  • Exemple :
  • Les Certificate Payloads utilisent CertificateService.xpc

Typiquement, un activation profile fourni par un MDM vendor inclura les payloads suivants :

  • com.apple.mdm : pour enrĂŽler l'appareil dans le MDM
  • com.apple.security.scep : pour fournir de maniĂšre sĂ©curisĂ©e un client certificate Ă  l'appareil.
  • com.apple.security.pem : pour installer des CA de confiance dans le System Keychain de l'appareil.
  • Installer le MDM payload Ă©quivaut Ă  MDM check-in dans la documentation
  • Le payload contient des propriĂ©tĂ©s clĂ©s :
    • MDM Check-In URL (CheckInURL)
  • MDM Command Polling URL (ServerURL) + APNs topic pour le dĂ©clencher
  • Pour installer le MDM payload, une requĂȘte est envoyĂ©e Ă  CheckInURL
  • ImplĂ©mentĂ© dans mdmclient
  • Le MDM payload peut dĂ©pendre d'autres payloads
  • Permet de pinner des requĂȘtes Ă  des certificats spĂ©cifiques :
  • PropriĂ©tĂ© : CheckInURLPinningCertificateUUIDs
  • PropriĂ©tĂ© : ServerURLPinningCertificateUUIDs
  • LivrĂ© via un payload PEM
  • Permet d'attribuer Ă  l'appareil un certificat d'identitĂ© :
  • PropriĂ©tĂ© : IdentityCertificateUUID
  • LivrĂ© via un payload SCEP

Étape 7 : Écoute des commandes MDM

  • AprĂšs le MDM check-in, le vendor peut envoyer des push notifications via APNs
  • À la rĂ©ception, gĂ©rĂ© par mdmclient
  • Pour interroger les commandes MDM, une requĂȘte est envoyĂ©e au ServerURL
  • Utilise le MDM payload installĂ© prĂ©cĂ©demment :
  • ServerURLPinningCertificateUUIDs pour le pinning des requĂȘtes
  • IdentityCertificateUUID pour le certificat client TLS

Attaques

EnrĂŽler des appareils dans d'autres organisations

Comme mentionné précédemment, pour tenter d'enrÎler un appareil dans une organisation, il suffit d'un Serial Number appartenant à cette organisation. Une fois l'appareil enrÎlé, de nombreuses organisations installeront des données sensibles sur le nouvel appareil : certificats, applications, mots de passe WiFi, configurations VPN and so on.
Par conséquent, cela peut constituer un point d'entrée dangereux pour des attaquants si le processus d'enrÎlement n'est pas correctement protégé :

Enrolling Devices in Other Organisations

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks