macOS MDM
Reading time: 10 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Για να μάθετε για τα macOS MDMs, ελέγξτε:
Βασικά
Επισκόπηση MDM (Διαχείριση Κινητών Συσκευών)
Διαχείριση Κινητών Συσκευών (MDM) χρησιμοποιείται για την εποπτεία διαφόρων συσκευών τελικού χρήστη όπως smartphones, laptops και tablets. Ιδιαίτερα για τις πλατφόρμες της Apple (iOS, macOS, tvOS), περιλαμβάνει ένα σύνολο εξειδικευμένων χαρακτηριστικών, APIs και πρακτικών. Η λειτουργία του MDM εξαρτάται από έναν συμβατό διακομιστή MDM, ο οποίος είναι είτε εμπορικά διαθέσιμος είτε ανοιχτού κώδικα, και πρέπει να υποστηρίζει το Πρωτόκολλο MDM. Κύρια σημεία περιλαμβάνουν:
- Κεντρικός έλεγχος των συσκευών.
- Εξάρτηση από έναν διακομιστή MDM που συμμορφώνεται με το πρωτόκολλο MDM.
- Ικανότητα του διακομιστή MDM να αποστέλλει διάφορες εντολές στις συσκευές, για παράδειγμα, απομακρυσμένη διαγραφή δεδομένων ή εγκατάσταση ρυθμίσεων.
Βασικά του DEP (Πρόγραμμα Εγγραφής Συσκευών)
Το Πρόγραμμα Εγγραφής Συσκευών (DEP) που προσφέρει η Apple απλοποιεί την ενσωμάτωση της Διαχείρισης Κινητών Συσκευών (MDM) διευκολύνοντας τη ρύθμιση χωρίς επαφή για συσκευές iOS, macOS και tvOS. Το DEP αυτοματοποιεί τη διαδικασία εγγραφής, επιτρέποντας στις συσκευές να είναι λειτουργικές αμέσως μόλις ανοίξουν, με ελάχιστη παρέμβαση από τον χρήστη ή τον διαχειριστή. Βασικά στοιχεία περιλαμβάνουν:
- Δίνει τη δυνατότητα στις συσκευές να εγγράφονται αυτόματα σε έναν προκαθορισμένο διακομιστή MDM κατά την αρχική ενεργοποίηση.
- Κυρίως ωφέλιμο για καινούργιες συσκευές, αλλά εφαρμόσιμο και για συσκευές που επαναρυθμίζονται.
- Διευκολύνει μια απλή ρύθμιση, κάνοντάς τις συσκευές έτοιμες για οργανωτική χρήση γρήγορα.
Σκέψεις Ασφαλείας
Είναι κρίσιμο να σημειωθεί ότι η ευκολία εγγραφής που παρέχει το DEP, ενώ είναι ωφέλιμη, μπορεί επίσης να θέσει σε κίνδυνο την ασφάλεια. Εάν τα προστατευτικά μέτρα δεν επιβληθούν επαρκώς για την εγγραφή MDM, οι επιτιθέμενοι μπορεί να εκμεταλλευτούν αυτή τη διαδικασία για να εγγραφούν στη συσκευή τους στον διακομιστή MDM της οργάνωσης, προσποιούμενοι ότι είναι εταιρική συσκευή.
caution
Ειδοποίηση Ασφαλείας: Η απλοποιημένη εγγραφή DEP θα μπορούσε ενδεχομένως να επιτρέψει την μη εξουσιοδοτημένη εγγραφή συσκευών στον διακομιστή MDM της οργάνωσης εάν δεν υπάρχουν κατάλληλες προστασίες.
Βασικά Τι είναι το SCEP (Πρωτόκολλο Απλής Εγγραφής Πιστοποιητικών);
- Ένα σχετικά παλιό πρωτόκολλο, που δημιουργήθηκε πριν γίνουν ευρέως διαδεδομένα τα TLS και HTTPS.
- Δίνει στους πελάτες έναν τυποποιημένο τρόπο αποστολής ενός Αιτήματος Υπογραφής Πιστοποιητικού (CSR) με σκοπό την απόκτηση ενός πιστοποιητικού. Ο πελάτης θα ζητήσει από τον διακομιστή να του δώσει ένα υπογεγραμμένο πιστοποιητικό.
Τι είναι τα Προφίλ Ρυθμίσεων (aka mobileconfigs);
- Ο επίσημος τρόπος της Apple για ρύθμιση/επιβολή συστήματος ρυθμίσεων.
- Μορφή αρχείου που μπορεί να περιέχει πολλαπλά payloads.
- Βασισμένο σε λίστες ιδιοτήτων (του XML τύπου).
- “μπορεί να υπογραφεί και να κρυπτογραφηθεί για να επιβεβαιώσει την προέλευσή τους, να διασφαλίσει την ακεραιότητά τους και να προστατεύσει το περιεχόμενό τους.” Βασικά — Σελίδα 70, Οδηγός Ασφαλείας iOS, Ιανουάριος 2018.
Πρωτόκολλα
MDM
- Συνδυασμός APNs (Apple servers) + RESTful API (MDM vendor servers)
- Επικοινωνία συμβαίνει μεταξύ μιας συσκευής και ενός διακομιστή που σχετίζεται με ένα προϊόν διαχείρισης συσκευών
- Εντολές παραδίδονται από το MDM στη συσκευή σε plist-encoded dictionaries
- Όλα μέσω HTTPS. Οι διακομιστές MDM μπορούν να είναι (και συνήθως είναι) pinned.
- Η Apple παρέχει στον προμηθευτή MDM ένα πιστοποιητικό APNs για αυθεντικοποίηση
DEP
- 3 APIs: 1 για μεταπωλητές, 1 για προμηθευτές MDM, 1 για ταυτότητα συσκευής (μη τεκμηριωμένο):
- Ο λεγόμενος DEP "cloud service" API. Αυτό χρησιμοποιείται από τους διακομιστές MDM για να συσχετίσουν τα προφίλ DEP με συγκεκριμένες συσκευές.
- Το DEP API που χρησιμοποιείται από τους Εξουσιοδοτημένους Μεταπωλητές της Apple για να εγγράψουν συσκευές, να ελέγξουν την κατάσταση εγγραφής και να ελέγξουν την κατάσταση συναλλαγής.
- Το μη τεκμηριωμένο ιδιωτικό DEP API. Αυτό χρησιμοποιείται από τις Συσκευές Apple για να ζητήσουν το προφίλ DEP τους. Στο macOS, το δυαδικό
cloudconfigurationd
είναι υπεύθυνο για την επικοινωνία μέσω αυτού του API. - Πιο σύγχρονο και JSON βασισμένο (σε σχέση με plist)
- Η Apple παρέχει ένα OAuth token στον προμηθευτή MDM
DEP "cloud service" API
- RESTful
- συγχρονίζει τις εγγραφές συσκευών από την Apple στον διακομιστή MDM
- συγχρονίζει τα “DEP profiles” στην Apple από τον διακομιστή MDM (παραδίδεται από την Apple στη συσκευή αργότερα)
- Ένα DEP “profile” περιέχει:
- URL διακομιστή προμηθευτή MDM
- Πρόσθετα αξιόπιστα πιστοποιητικά για το URL του διακομιστή (προαιρετική pinning)
- Πρόσθετες ρυθμίσεις (π.χ. ποιες οθόνες να παραλειφθούν στον Βοηθό Ρύθμισης)
Αριθμός Σειράς
Οι συσκευές Apple που κατασκευάστηκαν μετά το 2010 έχουν γενικά 12-χαρακτήρων αλφαριθμητικούς αριθμούς σειράς, με τα πρώτα τρία ψηφία να αντιπροσωπεύουν την τοποθεσία κατασκευής, τα επόμενα δύο να υποδεικνύουν το έτος και την εβδομάδα κατασκευής, τα επόμενα τρία ψηφία να παρέχουν έναν μοναδικό αναγνωριστικό, και τα τελευταία τέσσερα ψηφία να αντιπροσωπεύουν τον αριθμό μοντέλου.
Βήματα για εγγραφή και διαχείριση
- Δημιουργία εγγραφής συσκευής (Μεταπωλητής, Apple): Δημιουργείται η εγγραφή για τη νέα συσκευή
- Ανάθεση εγγραφής συσκευής (Πελάτης): Η συσκευή ανατίθεται σε έναν διακομιστή MDM
- Συγχρονισμός εγγραφής συσκευής (Προμηθευτής MDM): Ο MDM συγχρονίζει τις εγγραφές συσκευών και στέλνει τα προφίλ DEP στην Apple
- Έλεγχος DEP (Συσκευή): Η συσκευή αποκτά το προφίλ DEP της
- Ανάκτηση προφίλ (Συσκευή)
- Εγκατάσταση προφίλ (Συσκευή) α. συμπεριλαμβανομένων των payloads MDM, SCEP και root CA
- Έκδοση εντολής MDM (Συσκευή)
Το αρχείο /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/PrivateFrameworks/ConfigurationProfiles.framework/ConfigurationProfiles.tbd
εξάγει λειτουργίες που μπορούν να θεωρηθούν υψηλού επιπέδου "βήματα" της διαδικασίας εγγραφής.
Βήμα 4: Έλεγχος DEP - Λήψη του Ενεργοποιητικού Εγγράφου
Αυτό το μέρος της διαδικασίας συμβαίνει όταν ένας χρήστης εκκινεί ένα Mac για πρώτη φορά (ή μετά από πλήρη διαγραφή)
ή όταν εκτελείται sudo profiles show -type enrollment
- Προσδιορίστε αν η συσκευή είναι ενεργοποιημένη για DEP
- Το Ενεργοποιητικό Έγγραφο είναι το εσωτερικό όνομα για το DEP “profile”
- Ξεκινά μόλις η συσκευή συνδεθεί στο Διαδίκτυο
- Οδηγείται από
CPFetchActivationRecord
- Υλοποιείται από
cloudconfigurationd
μέσω XPC. Ο "Βοηθός Ρύθμισης" (όταν η συσκευή εκκινείται για πρώτη φορά) ή η εντολήprofiles
θα επικοινωνήσει με αυτή τη διεργασία για να ανακτήσει το ενεργοποιητικό έγγραφο. - LaunchDaemon (τρέχει πάντα ως root)
Ακολουθεί μερικά βήματα για να αποκτήσει το Ενεργοποιητικό Έγγραφο που εκτελείται από MCTeslaConfigurationFetcher
. Αυτή η διαδικασία χρησιμοποιεί μια κρυπτογράφηση που ονομάζεται Absinthe
- Ανάκτηση πιστοποιητικού
- GET https://iprofiles.apple.com/resource/certificate.cer
- Αρχικοποίηση κατάστασης από το πιστοποιητικό (
NACInit
) - Χρησιμοποιεί διάφορα δεδομένα που σχετίζονται με τη συσκευή (δηλαδή Αριθμός Σειράς μέσω
IOKit
) - Ανάκτηση κλειδιού συνεδρίας
- POST https://iprofiles.apple.com/session
- Δημιουργία της συνεδρίας (
NACKeyEstablishment
) - Υποβολή αιτήματος
- POST στο https://iprofiles.apple.com/macProfile στέλνοντας τα δεδομένα
{ "action": "RequestProfileConfiguration", "sn": "" }
- Το JSON payload κρυπτογραφείται χρησιμοποιώντας Absinthe (
NACSign
) - Όλα τα αιτήματα μέσω HTTPs, χρησιμοποιούνται ενσωματωμένα root πιστοποιητικά
Η απάντηση είναι ένα JSON λεξικό με ορισμένα σημαντικά δεδομένα όπως:
- url: URL του διακομιστή προμηθευτή MDM για το ενεργοποιητικό προφίλ
- anchor-certs: Πίνακας DER πιστοποιητικών που χρησιμοποιούνται ως αξιόπιστοι άγκυρες
Βήμα 5: Ανάκτηση Προφίλ
- Αίτημα που αποστέλλεται στο url που παρέχεται στο DEP profile.
- Πιστοποιητικά άγκυρας χρησιμοποιούνται για αξιολόγηση εμπιστοσύνης εάν παρέχονται.
- Υπενθύμιση: η property anchor_certs του DEP profile
- Το αίτημα είναι ένα απλό .plist με αναγνώριση συσκευής
- Παραδείγματα: UDID, έκδοση OS.
- CMS-υπογεγραμμένο, DER-κωδικοποιημένο
- Υπογεγραμμένο χρησιμοποιώντας το πιστοποιητικό ταυτότητας συσκευής (από APNS)
- Η αλυσίδα πιστοποιητικών περιλαμβάνει ληγμένο Apple iPhone Device CA
Βήμα 6: Εγκατάσταση Προφίλ
- Μόλις ανακτηθεί, το προφίλ αποθηκεύεται στο σύστημα
- Αυτό το βήμα ξεκινά αυτόματα (εάν είναι στον βοηθό ρύθμισης)
- Οδηγείται από
CPInstallActivationProfile
- Υλοποιείται από το mdmclient μέσω XPC
- LaunchDaemon (ως root) ή LaunchAgent (ως χρήστης), ανάλογα με το πλαίσιο
- Τα προφίλ ρυθμίσεων έχουν πολλαπλά payloads προς εγκατάσταση
- Το πλαίσιο έχει αρχιτεκτονική βασισμένη σε plugins για την εγκατάσταση προφίλ
- Κάθε τύπος payload σχετίζεται με ένα plugin
- Μπορεί να είναι XPC (στο πλαίσιο) ή κλασικό Cocoa (στο ManagedClient.app)
- Παράδειγμα:
- Τα Payloads Πιστοποιητικών χρησιμοποιούν CertificateService.xpc
Συνήθως, το ενεργοποιητικό προφίλ που παρέχεται από έναν προμηθευτή MDM θα περιλαμβάνει τα εξής payloads:
com.apple.mdm
: για εγγραφή της συσκευής στο MDMcom.apple.security.scep
: για την ασφαλή παροχή ενός πιστοποιητικού πελάτη στη συσκευή.com.apple.security.pem
: για εγκατάσταση αξιόπιστων CA πιστοποιητικών στο Keychain του Συστήματος της συσκευής.- Η εγκατάσταση του payload MDM ισοδυναμεί με έλεγχο MDM στην τεκμηρίωση
- Το payload περιέχει βασικές ιδιότητες:
-
- URL Ελέγχου MDM (
CheckInURL
)
- URL Ελέγχου MDM (
- URL Ελέγχου Εντολών MDM (
ServerURL
) + θέμα APNs για την ενεργοποίησή του - Για να εγκαταστήσετε το payload MDM, το αίτημα αποστέλλεται στο
CheckInURL
- Υλοποιείται στο
mdmclient
- Το payload MDM μπορεί να εξαρτάται από άλλα payloads
- Επιτρέπει αιτήματα να είναι pinned σε συγκεκριμένα πιστοποιητικά:
- Ιδιότητα:
CheckInURLPinningCertificateUUIDs
- Ιδιότητα:
ServerURLPinningCertificateUUIDs
- Παρέχεται μέσω payload PEM
- Επιτρέπει στη συσκευή να αποδοθεί με ένα πιστοποιητικό ταυτότητας:
- Ιδιότητα: IdentityCertificateUUID
- Παρέχεται μέσω payload SCEP
Βήμα 7: Ακρόαση για εντολές MDM
- Αφού ολοκληρωθεί ο έλεγχος MDM, ο προμηθευτής μπορεί να εκδώσει ειδοποιήσεις push χρησιμοποιώντας APNs
- Κατά την παραλαβή, διαχειρίζεται από το
mdmclient
- Για να ελέγξει τις εντολές MDM, το αίτημα αποστέλλεται στο ServerURL
- Χρησιμοποιεί το προηγουμένως εγκατεστημένο payload MDM:
ServerURLPinningCertificateUUIDs
για pinning του αιτήματοςIdentityCertificateUUID
για το πιστοποιητικό πελάτη TLS
Επιθέσεις
Εγγραφή Συσκευών σε Άλλες Οργανώσεις
Όπως έχει σχολιαστεί προηγουμένως, για να προσπαθήσετε να εγγραφείτε μια συσκευή σε μια οργάνωση χρειάζεται μόνο ένας Αριθμός Σειράς που ανήκει σε αυτή την Οργάνωση. Μόλις η συσκευή εγγραφεί, πολλές οργανώσεις θα εγκαταστήσουν ευαίσθητα δεδομένα στη νέα συσκευή: πιστοποιητικά, εφαρμογές, κωδικούς πρόσβασης WiFi, ρυθμίσεις VPN και ούτω καθεξής.
Επομένως, αυτό θα μπορούσε να είναι ένα επικίνδυνο σημείο εισόδου για τους επιτιθέμενους εάν η διαδικασία εγγραφής δεν προστατεύεται σωστά:
Enrolling Devices in Other Organisations
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.