macOS System Extensions
Reading time: 6 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.
System Extensions / Endpoint Security Framework
Σε αντίθεση με τις Kernel Extensions, οι System Extensions εκτελούνται σε χώρο χρήστη αντί για χώρο πυρήνα, μειώνοντας τον κίνδυνο κατάρρευσης του συστήματος λόγω δυσλειτουργίας της επέκτασης.
.png)
Υπάρχουν τρεις τύποι συστημικών επεκτάσεων: DriverKit Extensions, Network Extensions και Endpoint Security Extensions.
DriverKit Extensions
Το DriverKit είναι μια αντικατάσταση για τις kernel extensions που παρέχουν υποστήριξη υλικού. Επιτρέπει στους οδηγούς συσκευών (όπως USB, Serial, NIC και HID drivers) να εκτελούνται σε χώρο χρήστη αντί για χώρο πυρήνα. Το πλαίσιο DriverKit περιλαμβάνει εκδόσεις χώρου χρήστη ορισμένων κλάσεων I/O Kit, και ο πυρήνας προωθεί κανονικά γεγονότα I/O Kit σε χώρο χρήστη, προσφέροντας ένα ασφαλέστερο περιβάλλον για αυτούς τους οδηγούς.
Network Extensions
Οι Network Extensions παρέχουν τη δυνατότητα προσαρμογής των συμπεριφορών δικτύου. Υπάρχουν αρκετοί τύποι Network Extensions:
- App Proxy: Αυτό χρησιμοποιείται για τη δημιουργία ενός VPN client που υλοποιεί ένα ροής-προσανατολισμένο, προσαρμοσμένο πρωτόκολλο VPN. Αυτό σημαίνει ότι διαχειρίζεται την κυκλοφορία δικτύου με βάση τις συνδέσεις (ή ροές) αντί για μεμονωμένα πακέτα.
- Packet Tunnel: Αυτό χρησιμοποιείται για τη δημιουργία ενός VPN client που υλοποιεί ένα πακέτο-προσανατολισμένο, προσαρμοσμένο πρωτόκολλο VPN. Αυτό σημαίνει ότι διαχειρίζεται την κυκλοφορία δικτύου με βάση μεμονωμένα πακέτα.
- Filter Data: Αυτό χρησιμοποιείται για την φιλτράρισμα "ροών" δικτύου. Μπορεί να παρακολουθεί ή να τροποποιεί τα δεδομένα δικτύου σε επίπεδο ροής.
- Filter Packet: Αυτό χρησιμοποιείται για την φιλτράρισμα μεμονωμένων πακέτων δικτύου. Μπορεί να παρακολουθεί ή να τροποποιεί τα δεδομένα δικτύου σε επίπεδο πακέτου.
- DNS Proxy: Αυτό χρησιμοποιείται για τη δημιουργία ενός προσαρμοσμένου παρόχου DNS. Μπορεί να χρησιμοποιηθεί για την παρακολούθηση ή την τροποποίηση των αιτημάτων και απαντήσεων DNS.
Endpoint Security Framework
Το Endpoint Security είναι ένα πλαίσιο που παρέχεται από την Apple στο macOS που προσφέρει μια σειρά από APIs για την ασφάλεια του συστήματος. Προορίζεται για χρήση από προμηθευτές ασφάλειας και προγραμματιστές για την κατασκευή προϊόντων που μπορούν να παρακολουθούν και να ελέγχουν τη δραστηριότητα του συστήματος για να εντοπίσουν και να προστατεύσουν από κακόβουλες δραστηριότητες.
Αυτό το πλαίσιο παρέχει μια συλλογή APIs για την παρακολούθηση και τον έλεγχο της δραστηριότητας του συστήματος, όπως εκτελέσεις διεργασιών, γεγονότα συστήματος αρχείων, γεγονότα δικτύου και πυρήνα.
Ο πυρήνας αυτού του πλαισίου είναι υλοποιημένος στον πυρήνα, ως Kernel Extension (KEXT) που βρίσκεται στο /System/Library/Extensions/EndpointSecurity.kext
. Αυτό το KEXT αποτελείται από αρκετά βασικά συστατικά:
- EndpointSecurityDriver: Αυτό λειτουργεί ως το "σημείο εισόδου" για την επέκταση πυρήνα. Είναι το κύριο σημείο αλληλεπίδρασης μεταξύ του OS και του πλαισίου Endpoint Security.
- EndpointSecurityEventManager: Αυτό το συστατικό είναι υπεύθυνο για την υλοποίηση kernel hooks. Οι kernel hooks επιτρέπουν στο πλαίσιο να παρακολουθεί γεγονότα του συστήματος παρεμβαίνοντας σε κλήσεις συστήματος.
- EndpointSecurityClientManager: Αυτό διαχειρίζεται την επικοινωνία με τους πελάτες χώρου χρήστη, παρακολουθώντας ποιες πελάτες είναι συνδεδεμένοι και χρειάζονται να λάβουν ειδοποιήσεις γεγονότων.
- EndpointSecurityMessageManager: Αυτό στέλνει μηνύματα και ειδοποιήσεις γεγονότων στους πελάτες χώρου χρήστη.
Τα γεγονότα που μπορεί να παρακολουθεί το πλαίσιο Endpoint Security κατηγοριοποιούνται σε:
- Γεγονότα αρχείων
- Γεγονότα διεργασιών
- Γεγονότα υποδοχών
- Γεγονότα πυρήνα (όπως η φόρτωση/εκφόρτωση μιας επέκτασης πυρήνα ή το άνοιγμα μιας συσκευής I/O Kit)
Αρχιτεκτονική Πλαισίου Endpoint Security
.png)
Η επικοινωνία χώρου χρήστη με το πλαίσιο Endpoint Security συμβαίνει μέσω της κλάσης IOUserClient. Χρησιμοποιούνται δύο διαφορετικές υποκλάσεις, ανάλογα με τον τύπο του καλούντος:
- EndpointSecurityDriverClient: Αυτό απαιτεί την άδεια
com.apple.private.endpoint-security.manager
, η οποία κατέχεται μόνο από τη διαδικασία συστήματοςendpointsecurityd
. - EndpointSecurityExternalClient: Αυτό απαιτεί την άδεια
com.apple.developer.endpoint-security.client
. Αυτό θα χρησιμοποιείται συνήθως από λογισμικό ασφάλειας τρίτων που χρειάζεται να αλληλεπιδράσει με το πλαίσιο Endpoint Security.
Οι Endpoint Security Extensions:libEndpointSecurity.dylib
είναι η C βιβλιοθήκη που χρησιμοποιούν οι συστημικές επεκτάσεις για να επικοινωνούν με τον πυρήνα. Αυτή η βιβλιοθήκη χρησιμοποιεί το I/O Kit (IOKit
) για να επικοινωνήσει με το KEXT Endpoint Security.
endpointsecurityd
είναι μια βασική υπηρεσία συστήματος που εμπλέκεται στη διαχείριση και εκκίνηση των συστημικών επεκτάσεων ασφάλειας, ιδιαίτερα κατά τη διάρκεια της πρώιμης διαδικασίας εκκίνησης. Μόνο οι συστημικές επεκτάσεις που έχουν σημειωθεί με NSEndpointSecurityEarlyBoot
στο αρχείο Info.plist
τους λαμβάνουν αυτή τη θεραπεία πρώιμης εκκίνησης.
Μια άλλη υπηρεσία συστήματος, sysextd
, επικυρώνει τις συστημικές επεκτάσεις και τις μεταφέρει στις κατάλληλες θέσεις του συστήματος. Στη συνέχεια, ζητά από την σχετική υπηρεσία να φορτώσει την επέκταση. Το SystemExtensions.framework
είναι υπεύθυνο για την ενεργοποίηση και απενεργοποίηση των συστημικών επεκτάσεων.
Bypassing ESF
Το ESF χρησιμοποιείται από εργαλεία ασφάλειας που θα προσπαθήσουν να ανιχνεύσουν έναν red teamer, οπότε οποιαδήποτε πληροφορία σχετικά με το πώς αυτό θα μπορούσε να αποφευχθεί ακούγεται ενδιαφέρουσα.
CVE-2021-30965
Το θέμα είναι ότι η εφαρμογή ασφάλειας πρέπει να έχει δικαιώματα πλήρους πρόσβασης δίσκου. Έτσι, αν ένας επιτιθέμενος μπορούσε να αφαιρέσει αυτό, θα μπορούσε να αποτρέψει τη λειτουργία του λογισμικού:
tccutil reset All
Για περισσότερες πληροφορίες σχετικά με αυτήν την παράκαμψη και σχετικές, ελέγξτε την ομιλία #OBTS v5.0: "The Achilles Heel of EndpointSecurity" - Fitzl Csaba
Στο τέλος, αυτό διορθώθηκε δίνοντας τη νέα άδεια kTCCServiceEndpointSecurityClient
στην εφαρμογή ασφαλείας που διαχειρίζεται το tccd
, έτσι ώστε το tccutil
να μην διαγράψει τις άδειές της, εμποδίζοντας την από το να εκτελείται.
Αναφορές
- OBTS v3.0: "Endpoint Security & Insecurity" - Scott Knight
- https://knight.sc/reverse%20engineering/2019/08/24/system-extension-internals.html
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.