.. | ||
enrolling-devices-in-other-organisations.md | ||
macos-serial-number.md | ||
README.md |
macOS MDM
{% hint style="success" %}
Μάθετε & εξασκηθείτε στο AWS Hacking:Εκπαίδευση HackTricks AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: Εκπαίδευση HackTricks GCP Red Team Expert (GRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα χάκερ υποβάλλοντας PRs στα αποθετήρια HackTricks και HackTricks Cloud στο GitHub.
Για να μάθετε για τα macOS MDMs ελέγξτε:
Βασικά
Επισκόπηση MDM (Mobile Device Management)
Το Mobile Device Management (MDM) χρησιμοποιείται για τη διαχείριση διαφόρων συσκευών τελικών χρηστών όπως smartphones, laptops και tablets. Ειδικά για τις πλατφόρμες της Apple (iOS, macOS, tvOS), περιλαμβάνει ένα σύνολο εξειδικευμένων χαρακτηριστικών, APIs και πρακτικές. Η λειτουργία του MDM εξαρτάται από ένα συμβατό MDM server, το οποίο είναι είτε εμπορικά διαθέσιμο είτε ανοικτού κώδικα, και πρέπει να υποστηρίζει το MDM Protocol. Τα κύρια σημεία περιλαμβάνουν:
- Κεντρικός έλεγχος των συσκευών.
- Εξάρτηση από ένα MDM server που συμμορφώνεται με το πρωτόκολλο MDM.
- Δυνατότητα του MDM server να αποστέλλει διάφορες εντολές στις συσκευές, για παράδειγμα απομάκρυνση δεδομένων ή εγκατάσταση ρυθμίσεων.
Βασικά του DEP (Device Enrollment Program)
Το Device Enrollment Program (DEP) που προσφέρει η Apple διευκολύνει την ενσωμάτωση του Mobile Device Management (MDM) με τη διευκόλυνση της αυτόματης διαμόρφωσης για συσκευές iOS, macOS και tvOS. Το DEP αυτοματοποιεί τη διαδικασία εγγραφής, επιτρέποντας στις συσκευές να είναι λειτουργικές αμέσως μετά τον αποσυσκευασμό, με ελάχιστη παρέμβαση χρήστη ή διαχειριστή. Τα βασικά στοιχεία περιλαμβάνουν:
- Επιτρέπει στις συσκευές να εγγράφονται αυτόνομα σε έναν προκαθορισμένο MDM server κατά την αρχική ενεργοποίηση.
- Χρήσιμο κυρίως για ολοκαίνουριες συσκευές, αλλά εφαρμόσιμο και για συσκευές που υποβάλλονται σε αναδιαμόρφωση.
- Διευκολύνει μια απλή εγκατάσταση, καθιστώντας τις συσκευές έτοιμες για οργανωτική χρήση γρήγορα.
Σκέψεις ασφαλείας
Είναι κρίσιμο να σημειωθεί ότι η ευκολία εγγραφής που παρέχει το DEP, ενώ είναι χρήσιμη, μπορεί επίσης να δημιουργήσει κινδύνους ασφαλείας. Αν δεν επιβάλλονται επαρκείς προστατευτικές μέτρησεις για την εγγραφή στο MDM, οι επιτιθέμενοι ενδέχεται να εκμεταλλευτούν αυτήν την απλοποιημένη διαδικασία για να εγγράψουν τη συσκευή τους στο MDM server του οργανισμού, παριστάνοντας μια εταιρική συσκευή.
{% hint style="danger" %} Ειδοποίηση Ασφαλείας: Η απλοποιημένη εγγραφή στο DEP θα μπορούσε πιθανόν να επιτρέψει τη μη εξουσιοδοτημένη εγγραφή συσκευών στο MDM server του οργανισμού εάν δεν υπάρχουν κατάλληλα μέτρα προστασίας. {% endhint %}
Τι είναι το SCEP (Simple Certificate Enrolment Protocol);
- Ένα σχετικά παλιό πρωτόκολλο, δημιουργημένο πριν από την ευρεία χρήση του TLS και του HTTPS.
- Δίνει στους πελάτες ένα τυποποιημένο τρόπο αποστολής ενός Certificate Signing Request (CSR) με σκοπό τη χορήγηση πιστοποιητικού. Ο πελάτης θα ζητήσει από τον διακομιστή να του δώσει ένα υπογεγραμμένο πιστοποιητικό.
Τι είναι τα Configuration Profiles (επίσης γνωστά ως mobileconfigs);
- Η επίσημη της Apple μέθοδος ορισμού/επιβολής των ρυθμίσεων του συστήματος.
- Μορφή αρχείου που μπορεί να περιέχει πολλαπλά φορτία.
- Βασίζεται σε λίστες ιδιοτήτων (του είδους XML).
- "μπορεί να υπογραφεί και να κρυπτογραφηθεί για την επικύρωση της προέλευσής τους, τη διασφάλιση της ακεραιότητάς τους και την προστασία του περιεχομένου τους." Βασικά — Σελίδα 70, Οδηγός Ασφαλείας iOS, Ιανουάριος 2018.
Πρωτόκολλα
MDM
- Συνδυασμός των APNs (Apple διακομιστές) + RESTful API (MDM διακομιστές προμηθευτών)
- Η επικοινωνία πραγματοποιείται μεταξύ μιας συσκευής και ενός διακομιστή που σχετίζεται με ένα προϊόν διαχείρισης συσκευών
- Οι εντολές παραδίδονται από το MDM στη συσκευή σε λεξικά κωδικοποιημένα σε plist
- Όλα μέσω HTTPS. Οι MDM διακομιστές μπορούν να είναι (και συνήθως είναι) πιναρισμένοι.
- Η Apple χορηγεί στον προμηθευτή MDM ένα πιστοποιητικό APNs για πιστοποίηση
DEP
- 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
Βήμα 4: Έλεγχος DEP - Λήψη της Εγγραφής Ενεργοποίησης
Αυτό το μέρος της διαδικασίας συμβαίνει όταν ένας χρήστης εκκινεί ένα Mac για πρώτη φορά (ή μετά από πλήρη επαναφορά)
ή όταν εκτελείται η εντολή sudo profiles show -type enrollment
- Καθορισμός εάν το συσκευή είναι ενεργοποιημένη για DEP
- Η Εγγραφή Ενεργοποίησης είναι το εσωτερικό όνομα για το DEP "προφίλ"
- Ξεκινά μόλις η συσκευή συνδεθεί στο Internet
- Καθορίζεται από το
CPFetchActivationRecord
- Υλοποιείται από το
cloudconfigurationd
μέσω XPC. Το "Βοηθός Ρύθμισης" (όταν η συσκευή εκκινείται για πρώτη φορά) ή η εντολήprofiles
θα επικοινωνήσει με αυτό το daemon για να ανακτήσει την εγγραφή ενεργοποίησης. - 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, χρησιμοποιούνται ενσωματωμένα πιστοποιητικά ρίζας
Η απάντηση είναι ένα JSON λεξικό με μερικά σημαντικά δεδομένα όπως:
- url: URL του κεντρικού οικοδεσπότη MDM για το προφίλ ενεργοποίησης
- anchor-certs: Πίνακας DER πιστοποιητικών που χρησιμοποιούνται ως αξιόπιστες ρίζες
Βήμα 5: Ανάκτηση Προφίλ
- Αίτημα αποστέλλεται στο url που παρέχεται στο προφίλ DEP.
- Τα πιστοποιητικά αγκύρωσης χρησιμοποιούνται για την αξιολόγηση της εμπιστοσύνης εάν παρέχονται.
- Υπενθύμιση: η ιδιότητα anchor_certs του προφίλ DEP
- Το αίτημα είναι ένα απλό .plist με αναγνώριση συσκευής
- Παραδείγματα: UDID, έκδοση OS.
- Υπογραμμένο με CMS, DER-κωδικοποιημένο
- Υπογράφεται χρησιμοποιώντας το πιστοποιητικό ταυτότητας συσκευής (από APNS)
- Η αλυσίδα πιστοποιητικών περιλαμβάνει ληγμένο Apple iPhone Device CA
Βήμα 6: Εγκατάσταση Προφίλ
- Μόλις ανακτηθεί, το προφίλ αποθηκεύεται στο σύστημα
- Αυτό το βήμα ξεκινά αυτόματα (εάν βρίσκεστε στο βοηθό ρύθμισης)
- Καθορίζεται από το
CPInstallActivationProfile
- Υλοποιείται από το mdmclient μέσω XPC
- LaunchDaemon (ως root) ή LaunchAgent (ως χρήστης), ανάλογα με το πλαίσιο
- Τα προφίλ ρυθμίσεων έχουν πολλαπλά φορτία για εγκατάσταση
- Το πλαίσιο έχει μια αρχιτεκτονική βασισμένη σε πρόσθετα για την εγκατάσταση προφίλ
- Κάθε τύπος φορτίου συσχετίζεται με ένα πρόσθετο
- Μπορεί να είναι XPC (στο πλαίσιο) ή κλασικό Cocoa (στο ManagedClient.app)
- Παράδειγμα:
- Τα φορτία Πιστοποιητικού χρησιμοποιούν το CertificateService.xpc
Συνήθως, το προφίλ ενεργοποίησης που παρέχεται από έναν πάροχο MDM θα περιλαμβάνει τα ακόλουθα φορτία:
com.apple.mdm
: για την εγγραφή της συσκευής στο MDMcom.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
Βήμα 7: Ακρόαση για εντολές MDM
- Αφού ολοκληρωθεί ο έλεγχος MDM, ο πάροχος μπορεί να εκδώσει ειδοποιήσεις push χρησιμοποιώντας το APNs
- Κατά τη λήψη, χειρίζεται από το
mdmclient
- Για να ελέγξει για εντολές MDM, αποστέλλεται αίτημα στο ServerURL
- Χρησιμοποιεί το προηγουμένως εγκατεστημένο φορτίο MDM:
ServerURLPinningCertificateUUIDs
για ανάθεση αιτήματοςIdentityCertificateUUID
για πιστοποίηση TLS πιστοποιητικού πελάτη
Επιθέσεις
Εγγραφή Συσκευών σε Άλλους Οργανισμούς
Όπως αναφέρθηκε προηγουμένως, για να προσπαθήσετε να εγγράψετε μια συσκευή σε έναν οργανισμό χρειάζεστε μόνο τον Αριθμό Σειριακού που ανήκει σε αυτόν τον Οργανισμό. Μόλις η συσκευή εγγραφεί, πολλοί οργανισμοί θα εγκαταστήσουν ευαίσθητα δεδομένα στη νέα συσκευή: πιστοποιητικά, εφαρμογές, κωδικοί WiFi, ρυθμίσεις VPN και άλλα.
Επομένως, αυτό θα μπορούσε