macOS MDM
Last updated
Last updated
Μάθετε & εξασκηθείτε στο AWS Hacking:Εκπαίδευση HackTricks AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: Εκπαίδευση HackTricks GCP Red Team Expert (GRTE)
Για να μάθετε για τα macOS MDMs ελέγξτε:
Το Mobile Device Management (MDM) χρησιμοποιείται για τη διαχείριση διαφόρων συσκευών τελικών χρηστών όπως smartphones, laptops και tablets. Ειδικά για τις πλατφόρμες της Apple (iOS, macOS, tvOS), περιλαμβάνει ένα σύνολο εξειδικευμένων χαρακτηριστικών, APIs και πρακτικές. Η λειτουργία του MDM εξαρτάται από ένα συμβατό MDM server, το οποίο είναι είτε εμπορικά διαθέσιμο είτε ανοικτού κώδικα, και πρέπει να υποστηρίζει το MDM Protocol. Τα κύρια σημεία περιλαμβάνουν:
Κεντρικός έλεγχος των συσκευών.
Εξάρτηση από ένα MDM server που συμμορφώνεται με το πρωτόκολλο MDM.
Δυνατότητα του MDM server να αποστέλλει διάφορες εντολές στις συσκευές, για παράδειγμα απομάκρυνση δεδομένων ή εγκατάσταση ρυθμίσεων.
Το Device Enrollment Program (DEP) που προσφέρει η Apple διευκολύνει την ενσωμάτωση του Mobile Device Management (MDM) με τη διευκόλυνση της αυτόματης διαμόρφωσης για συσκευές iOS, macOS και tvOS. Το DEP αυτοματοποιεί τη διαδικασία εγγραφής, επιτρέποντας στις συσκευές να είναι λειτουργικές αμέσως μετά τον αποσυσκευασμό, με ελάχιστη παρέμβαση χρήστη ή διαχειριστή. Τα βασικά στοιχεία περιλαμβάνουν:
Επιτρέπει στις συσκευές να εγγράφονται αυτόνομα σε έναν προκαθορισμένο MDM server κατά την αρχική ενεργοποίηση.
Χρήσιμο κυρίως για ολοκαίνουριες συσκευές, αλλά εφαρμόσιμο και για συσκευές που υποβάλλονται σε αναδιαμόρφωση.
Διευκολύνει μια απλή εγκατάσταση, καθιστώντας τις συσκευές έτοιμες για οργανωτική χρήση γρήγορα.
Είναι κρίσιμο να σημειωθεί ότι η ευκολία εγγραφής που παρέχει το DEP, ενώ είναι χρήσιμη, μπορεί επίσης να δημιουργήσει κινδύνους ασφαλείας. Αν δεν επιβάλλονται επαρκείς προστατευτικές μέτρησεις για την εγγραφή στο MDM, οι επιτιθέμενοι ενδέχεται να εκμεταλλευτούν αυτήν την απλοποιημένη διαδικασία για να εγγράψουν τη συσκευή τους στο MDM server του οργανισμού, παριστάνοντας μια εταιρική συσκευή.
Ειδοποίηση Ασφαλείας: Η απλοποιημένη εγγραφή στο DEP θα μπορούσε πιθανόν να επιτρέψει τη μη εξουσιοδοτημένη εγγραφή συσκευών στο MDM server του οργανισμού εάν δεν υπάρχουν κατάλληλα μέτρα προστασίας.
Ένα σχετικά παλιό πρωτόκολλο, δημιουργημένο πριν από την ευρεία χρήση του TLS και του HTTPS.
Δίνει στους πελάτες ένα τυποποιημένο τρόπο αποστολής ενός Certificate Signing Request (CSR) με σκοπό τη χορήγηση πιστοποιητικού. Ο πελάτης θα ζητήσει από τον διακομιστή να του δώσει ένα υπογεγραμμένο πιστοποιητικό.
Η επίσημη της Apple μέθοδος ορισμού/επιβολής των ρυθμίσεων του συστήματος.
Μορφή αρχείου που μπορεί να περιέχει πολλαπλά φορτία.
Βασίζεται σε λίστες ιδιοτήτων (του είδους XML).
"μπορεί να υπογραφεί και να κρυπτογραφηθεί για την επικύρωση της προέλευσής τους, τη διασφάλιση της ακεραιότητάς τους και την προστασία του περιεχομένου τους." Βασικά — Σελίδα 70, Οδηγός Ασφαλείας iOS, Ιανουάριος 2018.
Συνδυασμός των APNs (Apple διακομιστές) + RESTful API (MDM διακομιστές προμηθευτών)
Η επικοινωνία πραγματοποιείται μεταξύ μιας συσκευής και ενός διακομιστή που σχετίζεται με ένα προϊόν διαχείρισης συσκευών
Οι εντολές παραδίδονται από το MDM στη συσκευή σε λεξικά κωδικοποιημένα σε plist
Όλα μέσω HTTPS. Οι MDM διακομιστές μπορούν να είναι (και συνήθως είναι) πιναρισμένοι.
Η Apple χορηγεί στον προμηθευτή MDM ένα πιστοποιητικό APNs για πιστοποίηση
3 APIs: 1 για αντιπροσώπους, 1 για προμηθευτές MDM, 1 για ταυτότητα συσκευών (μη τεκμηριωμένο):
Το ονομαζόμενο DEP "cloud service" API. Χρησιμοποιείται από τους MDM διακομιστές για τη συσχέτιση των προφίλ DEP με συγκεκριμένες συσκευές.
Το API DEP που χρησιμοποιείται από τους Εξουσιοδοτημένους Αντιπροσώπους της Apple για την εγγραφή συσκευών, τον έλεγχο της κατάστασης εγγραφής και την έλεγχο της κατάστασης συναλλαγής.
Το μη τεκμηριωμένο ιδιωτικό API DEP. Χρησιμοποιείται από τις Συσκευές Apple για να ζητήσουν το προφίλ DEP τους. Στο macOS, το δυαδικό cloudconfigurationd
είναι υπεύθυνο για την επικοινωνία μέσω αυτού του API.
Πιο σύγχρονο και βασισμένο σε JSON (έναντι του plist)
Η Apple χορηγεί ένα OAuth token στον προμηθευτή MDM
DEP "cloud service" API
RESTful
συγχρονίζει εγγραφές συσκευών από την Apple στον MDM server
συγχρονίζει τα "προφίλ DE
Αυτό το μέρος της διαδικασίας συμβαίνει όταν ένας χρήστης εκκινεί ένα Mac για πρώτη φορά (ή μετά από πλήρη επαναφορά)
ή όταν εκτελείται η εντολή sudo profiles show -type enrollment
Καθορισμός εάν το συσκευή είναι ενεργοποιημένη για DEP
Η Εγγραφή Ενεργοποίησης είναι το εσωτερικό όνομα για το DEP "προφίλ"
Ξεκινά μόλις η συσκευή συνδεθεί στο Internet
Καθορίζεται από το CPFetchActivationRecord
Υλοποιείται από το cloudconfigurationd
μέσω XPC. Το "Βοηθός Ρύθμισης" (όταν η συσκευή εκκινείται για πρώτη φορά) ή η εντολή profiles
θα επικοινωνήσει με αυτό το daemon για να ανακτήσει την εγγραφή ενεργοποίησης.
LaunchDaemon (τρέχει πάντα ως root)
Ακολουθεί μερικά βήματα για τη λήψη της Εγγραφής Ενεργοποίησης που εκτελείται από το MCTeslaConfigurationFetcher
. Αυτή η διαδικασία χρησιμοποιεί έναν κρυπτογράφηση που ονομάζεται Absinthe
Ανάκτηση πιστοποιητικού
Αρχικοποίηση κατάστασης από το πιστοποιητικό (NACInit
)
Χρησιμοποιεί διάφορα δεδομένα που είναι συσκευή-ειδικά (π.χ. Αριθμός Σειριακού μέσω IOKit
)
Ανάκτηση κλειδιού συνεδρίας
Δημιουργία της συνεδρίας (NACKeyEstablishment
)
Αποστολή του αιτήματος
POST στο https://iprofiles.apple.com/macProfile αποστέλλοντας τα δεδομένα { "action": "RequestProfileConfiguration", "sn": "" }
Το JSON payload κρυπτογραφείται χρησιμοποιώντας το Absinthe (NACSign
)
Όλα τα αιτήματα γίνονται μέσω HTTPs, χρησιμοποιούνται ενσωματωμένα πιστοποιητικά ρίζας
Η απάντηση είναι ένα JSON λεξικό με μερικά σημαντικά δεδομένα όπως:
url: URL του κεντρικού οικοδεσπότη MDM για το προφίλ ενεργοποίησης
anchor-certs: Πίνακας DER πιστοποιητικών που χρησιμοποιούνται ως αξιόπιστες ρίζες
Αίτημα αποστέλλεται στο url που παρέχεται στο προφίλ DEP.
Τα πιστοποιητικά αγκύρωσης χρησιμοποιούνται για την αξιολόγηση της εμπιστοσύνης εάν παρέχονται.
Υπενθύμιση: η ιδιότητα anchor_certs του προφίλ DEP
Το αίτημα είναι ένα απλό .plist με αναγνώριση συσκευής
Παραδείγματα: UDID, έκδοση OS.
Υπογραμμένο με CMS, DER-κωδικοποιημένο
Υπογράφεται χρησιμοποιώντας το πιστοποιητικό ταυτότητας συσκευής (από APNS)
Η αλυσίδα πιστοποιητικών περιλαμβάνει ληγμένο Apple iPhone Device CA
Μόλις ανακτηθεί, το προφίλ αποθηκεύεται στο σύστημα
Αυτό το βήμα ξεκινά αυτόματα (εάν βρίσκεστε στο βοηθό ρύθμισης)
Καθορίζεται από το CPInstallActivationProfile
Υλοποιείται από το mdmclient μέσω XPC
LaunchDaemon (ως root) ή LaunchAgent (ως χρήστης), ανάλογα με το πλαίσιο
Τα προφίλ ρυθμίσεων έχουν πολλαπλά φορτία για εγκατάσταση
Το πλαίσιο έχει μια αρχιτεκτονική βασισμένη σε πρόσθετα για την εγκατάσταση προφίλ
Κάθε τύπος φορτίου συσχετίζεται με ένα πρόσθετο
Μπορεί να είναι XPC (στο πλαίσιο) ή κλασικό Cocoa (στο ManagedClient.app)
Παράδειγμα:
Τα φορτία Πιστοποιητικού χρησιμοποιούν το CertificateService.xpc
Συνήθως, το προφίλ ενεργοποίησης που παρέχεται από έναν πάροχο MDM θα περιλαμβάνει τα ακόλουθα φορτία:
com.apple.mdm
: για την εγγραφή της συσκευής στο MDM
com.apple.security.scep
: για την ασφαλή παροχή ενός πιστοποιητικού πελάτη στη συσκευή.
com.apple.security.pem
: για την εγκατάσταση αξιόπιστων πιστοποιητικών CA στο Κλειδί Συστήματος της συσκευής.
Η εγκατάσταση του φορτίου MDM ισοδυναμεί με το έλεγχο MDM στην τεκμηρίωση
Το φορτίο περιέχει βασικές ιδιότητες:
Διεύθυνση URL Έλεγχου MDM (CheckInURL
)
Διεύθυνση URL Ερωτημάτων MDM (ServerURL
) + θέμα APNs για να το ενεργοποιήσει
Για την εγκατάσταση του φορτίου MDM, αποστέλλεται αίτημα στο CheckInURL
Υλοποιείται στο mdmclient
Το φορτίο MDM μπορεί να εξαρτάται από άλλα φορτία
Επιτρέπει την ανάθεση αιτημάτων σε συγκεκριμένα πιστοποιητικά:
Ιδιότητα: CheckInURLPinningCertificateUUIDs
Ιδιότητα: ServerURLPinningCertificateUUIDs
Παραδίδεται μέσω φορτίου PEM
Επιτρέπει στη συσκευή να αναθέσει ένα πιστοποιητικό ταυτότητας:
Ιδιότητα: IdentityCertificateUUID
Παραδίδεται μέσω φορτίου SCEP
Αφού ολοκληρωθεί ο έλεγχος MDM, ο πάροχος μπορεί να εκδώσει ειδοποιήσεις push χρησιμοποιώντας το APNs
Κατά τη λήψη, χειρίζεται από το mdmclient
Για να ελέγξει για εντολές MDM, αποστέλλεται αίτημα στο ServerURL
Χρησιμοποιεί το προηγουμένως εγκατεστημένο φορτίο MDM:
ServerURLPinningCertificateUUIDs
για ανάθεση αιτήματος
IdentityCertificateUUID
για πιστοποίηση TLS πιστοποιητικού πελάτη
Όπως αναφέρθηκε προηγουμένως, για να προσπαθήσετε να εγγράψετε μια συσκευή σε έναν οργανισμό χρειάζεστε μόνο τον Αριθμό Σειριακού που ανήκει σε αυτόν τον Οργανισμό. Μόλις η συσκευή εγγραφεί, πολλοί οργανισμοί θα εγκαταστήσουν ευαίσθητα δεδομένα στη νέα συσκευή: πιστοποιητικά, εφαρμογές, κωδικοί WiFi, ρυθμίσεις VPN και άλλα. Επομένως, αυτό θα μπορούσε