macOS MDM
Pour en savoir plus sur les MDM macOS, consultez :
Fondamentaux
Aperçu de MDM (Gestion des appareils mobiles)
La Gestion des appareils mobiles (MDM) est utilisée pour gérer différents appareils utilisateurs tels que les smartphones, les ordinateurs portables et les tablettes. Particulièrement pour les plateformes d'Apple (iOS, macOS, tvOS), cela implique un ensemble de fonctionnalités spécialisées, d'API et de pratiques. Le fonctionnement de MDM repose sur un serveur MDM compatible, qui est soit disponible commercialement, soit open-source, et doit prendre en charge le Protocole MDM. Les points clés incluent :
Contrôle centralisé des appareils.
Dépendance à un serveur MDM qui respecte le protocole MDM.
Capacité du serveur MDM à envoyer diverses commandes aux appareils, par exemple, effacement à distance des données ou installation de configurations.
Fondamentaux du DEP (Programme d'enrôlement des appareils)
Le Programme d'enrôlement des appareils (DEP) proposé par Apple simplifie l'intégration de la Gestion des appareils mobiles (MDM) en facilitant la configuration sans intervention pour les appareils iOS, macOS et tvOS. Le 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. Les aspects essentiels incluent :
Permet aux appareils de s'enregistrer automatiquement auprès d'un serveur MDM prédéfini lors de l'activation initiale.
Principalement bénéfique pour les appareils neufs, mais également applicable aux appareils en cours de reconfiguration.
Facilite une configuration simple, rendant les appareils prêts à être utilisés par l'organisation rapidement.
Considération de sécurité
Il est crucial de noter que la facilité d'enrôlement fournie par le DEP, bien que bénéfique, peut également présenter des risques de sécurité. Si des mesures de protection ne sont pas correctement appliquées pour l'enrôlement MDM, les attaquants pourraient exploiter ce processus simplifié pour enregistrer leur appareil sur le serveur MDM de l'organisation, se faisant passer pour un appareil d'entreprise.
Alerte de sécurité : L'enrôlement simplifié du DEP pourrait potentiellement permettre l'enregistrement d'appareils non autorisés sur le serveur MDM de l'organisation si des mesures de sécurité adéquates ne sont pas en place.
Fondamentaux Qu'est-ce que SCEP (Simple Certificate Enrolment Protocol) ?
Un protocole relativement ancien, créé avant que TLS et HTTPS ne soient répandus.
Donne aux clients un moyen standardisé d'envoyer une demande de signature de certificat (CSR) dans le but d'obtenir un certificat. Le client demandera au serveur de lui fournir un certificat signé.
Quels sont les profils de configuration (également appelés mobileconfigs) ?
Méthode officielle d'établissement/imposition de la configuration système par Apple.
Format de fichier pouvant contenir plusieurs charges utiles.
Basé sur des listes de propriétés (le type XML).
"peut être signé et chiffré pour valider leur origine, garantir leur intégrité et protéger leur contenu." Fondamentaux — Page 70, Guide de sécurité iOS, janvier 2018.
Protocoles
MDM
Combinaison d'APNs (serveurs Apple) + API RESTful (serveurs de fournisseurs MDM)
La communication se fait entre un appareil et un serveur associé à un produit de gestion des appareils
Les commandes sont envoyées du MDM à l'appareil sous forme de dictionnaires encodés en plist
Tout se fait via HTTPS. Les serveurs MDM peuvent être (et sont généralement) épinglés.
Apple accorde au fournisseur MDM un certificat APNs pour l'authentification
DEP
3 API : 1 pour les revendeurs, 1 pour les fournisseurs MDM, 1 pour l'identité des appareils (non documenté) :
Le soi-disant API de "service cloud" DEP. Cela est utilisé par les serveurs MDM pour associer des profils DEP à des appareils spécifiques.
L'API DEP utilisée par les revendeurs agréés Apple pour enregistrer des appareils, vérifier l'état de l'enrôlement et vérifier l'état de la transaction.
L'API DEP privée non documentée. Celle-ci est utilisée par les appareils Apple pour demander leur profil DEP. Sur macOS, le binaire
cloudconfigurationd
est responsable de la communication via cette API.Plus moderne et basé sur JSON (par rapport à plist)
Apple accorde un jeton OAuth au fournisseur MDM
API de "service cloud" DEP
RESTful
synchronise les enregistrements d'appareils d'Apple vers le serveur MDM
synchronise les "profils DEP" vers Apple depuis le serveur MDM (fournis par Apple à l'appareil ultérieurement)
Un "profil" DEP contient :
URL du serveur du fournisseur MDM
Certificats de confiance supplémentaires pour l'URL du serveur (épinglage facultatif)
Paramètres supplémentaires (par exemple, quels écrans sauter dans l'Assistant de configuration)
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, les trois premiers chiffres représentant le lieu de fabrication, les deux suivants indiquant l'année et la semaine de fabrication, les trois chiffres suivants fournissant un identifiant unique, et les quatre derniers chiffres représentant le numéro de modèle.
macOS Serial NumberÉtapes d'enrôlement et de gestion
Création de l'enregistrement de l'appareil (Revendeur, Apple) : L'enregistrement du nouvel appareil est créé
Attribution de l'enregistrement de l'appareil (Client) : L'appareil est attribué à un serveur MDM
Synchronisation de l'enregistrement de l'appareil (Fournisseur MDM) : Le MDM synchronise les enregistrements de l'appareil et pousse les profils DEP vers Apple
Vérification DEP (Appareil) : L'appareil obtient son profil DEP
Récupération du profil (Appareil)
Installation du profil (Appareil) a. incl. charges utiles MDM, SCEP et CA racine
Émission de commandes MDM (Appareil)
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2088318145-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Frq9WIQinJaxpWMvakjIQ%252Fuploads%252Fgit-blob-e74dcc48a706455140f68598a7994c7bb5eda1d5%252Fimage%2520%28564%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=76e1e8d9&sv=1)
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 "haut niveau" du processus d'enrôlement.
Étape 4 : Vérification DEP - Obtention de l'enregistrement d'activation
Cette partie du processus se produit lorsque un utilisateur démarre un Mac pour la première fois (ou après une réinitialisation complète)
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2088318145-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Frq9WIQinJaxpWMvakjIQ%252Fuploads%252Fgit-blob-aa8b9f9727f0b4276ff9361ccdbcb51d63f8ddbb%252Fimage%2520%28568%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=d8d45083&sv=1)
ou en exécutant sudo profiles show -type enrollment
Déterminer si l'appareil est activé pour le DEP
L'enregistrement d'activation est le nom interne du profil DEP
Commence dès que l'appareil est connecté à Internet
Piloté par
CPFetchActivationRecord
Implémenté par
cloudconfigurationd
via XPC. L'"Assistant de configuration" (lors du premier démarrage de l'appareil) ou la commandeprofiles
contacteront ce démon pour récupérer l'enregistrement d'activation.LaunchDaemon (toujours en cours en tant que root)
Il suit quelques étapes pour obtenir l'enregistrement d'activation effectué par MCTeslaConfigurationFetcher
. Ce processus utilise un chiffrement appelé Absinthe
Récupérer le certificat
Initialiser l'état à partir du certificat (
NACInit
)Utilise diverses données spécifiques à l'appareil (par exemple, numéro de série via
IOKit
)Récupérer la clé de session
Établir la session (
NACKeyEstablishment
)Effectuer la demande
POST à https://iprofiles.apple.com/macProfile en envoyant les données
{ "action": "RequestProfileConfiguration", "sn": "" }
La charge utile JSON est chiffrée en utilisant Absinthe (
NACSign
)Toutes les demandes sont effectuées via HTTPS, des certificats racine intégrés sont utilisés
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2088318145-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Frq9WIQinJaxpWMvakjIQ%252Fuploads%252Fgit-blob-dbe8992c382bc3999300ec963b57cd8bc87b4e82%252Fimage%2520%28566%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=84eb2880&sv=1)
La réponse est un dictionnaire JSON avec des données importantes telles que :
url : URL de l'hôte du fournisseur MDM pour le profil d'activation
anchor-certs : Tableau de certificats DER utilisés comme ancres de confiance
Étape 5 : Récupération du profil
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2088318145-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Frq9WIQinJaxpWMvakjIQ%252Fuploads%252Fgit-blob-a8b26dc889064fd7ed552a69198a9179923d9a17%252Fimage%2520%28567%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=673a0b30&sv=1)
Demande envoyée à l'URL fournie dans le profil DEP.
Les certificats d'ancrage sont utilisés pour évaluer la confiance s'ils sont fournis.
Rappel : la propriété anchor_certs du profil DEP
La demande est un simple fichier .plist avec l'identification de l'appareil
Exemples : UDID, version du système d'exploitation.
Signé CMS, encodé en DER
Signé en utilisant le certificat d'identité de l'appareil (de APNS)
La chaîne de certificats inclut le certificat expiré Apple iPhone Device CA
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2088318145-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Frq9WIQinJaxpWMvakjIQ%252Fuploads%252Fgit-blob-98efc7f5c3c2b2ba517f70551ad5bd11211f37fa%252Fimage%2520%28567%29%2520%281%29%2520%282%29%2520%282%29%2520%282%29%2520%282%29%2520%282%29%2520%282%29%2520%282%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%281%29%2520%287%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=cf8c42c4&sv=1)
Étape 6 : Installation du profil
Une fois récupéré, le profil est stocké sur le système
Cette étape démarre automatiquement (si dans l'assistant de configuration)
Piloté par
CPInstallActivationProfile
Implémenté par mdmclient via XPC
LaunchDaemon (en tant que root) ou LaunchAgent (en tant qu'utilisateur), selon le contexte
Les profils de configuration ont plusieurs charges utiles à installer
Le framework a une architecture basée sur des plugins pour l'installation des profils
Chaque type de charge utile est associé à un plugin
Peut être XPC (dans le framework) ou Cocoa classique (dans ManagedClient.app)
Exemple :
Les charges utiles de certificat utilisent CertificateService.xpc
Typiquement, le profil d'activation fourni par un fournisseur MDM inclura les charges utiles suivantes :
com.apple.mdm
: pour enrôler l'appareil dans le MDMcom.apple.security.scep
: pour fournir de manière sécurisée un certificat client à l'appareil.com.apple.security.pem
: pour installer des certificats CA de confiance dans le trousseau système de l'appareil.L'installation de la charge utile MDM équivalente à l'enregistrement MDM dans la documentation
La charge utile contient des propriétés clés :
URL de vérification MDM (
CheckInURL
)URL de sondage des commandes MDM (
ServerURL
) + sujet APNs pour le déclencher
Pour installer la charge utile MDM, une demande est envoyée à
CheckInURL
Implémenté dans
mdmclient
La charge utile MDM peut dépendre d'autres charges utiles
Permet aux demandes d'être épinglées à des certificats spécifiques :
Propriété :
CheckInURLPinningCertificateUUIDs
Propriété :
ServerURLPinningCertificateUUIDs
Livré via la charge utile PEM
Permet à l'appareil d'être attribué avec un certificat d'identité :
Propriété : IdentityCertificateUUID
Livré via la charge utile SCEP
Étape 7 : Écoute des commandes MDM
Après l'enregistrement MDM, le fournisseur peut émettre des notifications push en utilisant APNs
À la réception, géré par
mdmclient
Pour interroger les commandes MDM, une demande est envoyée à ServerURL
Utilise la charge utile MDM précédemment installée :
ServerURLPinningCertificateUUIDs
pour épingler la demandeIdentityCertificateUUID
pour le certificat client TLS
Attaques
Enrôler des appareils dans d'autres organisations
Comme mentionné précédemment, pour essayer d'enrôler un appareil dans une organisation, seul un numéro de série appartenant à cette organisation est nécessaire. Une fois l'appareil enregistré, plusieurs organisations installeront des données sensibles sur le nouvel appareil : certificats, applications, mots de passe WiFi, configurations VPN et ainsi de suite. Par conséquent, cela pourrait être un point d'entrée dangereux pour les attaquants si le
Last updated