macOS System Extensions
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Σε αντίθεση με τις Kernel Extensions, οι System Extensions εκτελούνται σε χώρο χρήστη αντί για χώρο πυρήνα, μειώνοντας τον κίνδυνο συστήματος λόγω δυσλειτουργίας της επέκτασης.
Υπάρχουν τρεις τύποι συστημικών επεκτάσεων: DriverKit Extensions, Network Extensions και Endpoint Security Extensions.
Το DriverKit είναι μια αντικατάσταση για τις kernel extensions που παρέχουν υποστήριξη υλικού. Επιτρέπει στους οδηγούς συσκευών (όπως USB, Serial, NIC και HID drivers) να εκτελούνται σε χώρο χρήστη αντί για χώρο πυρήνα. Το πλαίσιο DriverKit περιλαμβάνει εκδόσεις χώρου χρήστη ορισμένων κλάσεων I/O Kit, και ο πυρήνας προωθεί κανονικά γεγονότα I/O Kit σε χώρο χρήστη, προσφέροντας ένα ασφαλέστερο περιβάλλον για αυτούς τους οδηγούς.
Οι Network Extensions παρέχουν τη δυνατότητα προσαρμογής των συμπεριφορών δικτύου. Υπάρχουν αρκετοί τύποι Network Extensions:
App Proxy: Αυτό χρησιμοποιείται για τη δημιουργία ενός VPN client που υλοποιεί ένα ροής-προσανατολισμένο, προσαρμοσμένο πρωτόκολλο VPN. Αυτό σημαίνει ότι διαχειρίζεται την κυκλοφορία δικτύου με βάση τις συνδέσεις (ή ροές) αντί για μεμονωμένα πακέτα.
Packet Tunnel: Αυτό χρησιμοποιείται για τη δημιουργία ενός VPN client που υλοποιεί ένα πακέτο-προσανατολισμένο, προσαρμοσμένο πρωτόκολλο VPN. Αυτό σημαίνει ότι διαχειρίζεται την κυκλοφορία δικτύου με βάση τα μεμονωμένα πακέτα.
Filter Data: Αυτό χρησιμοποιείται για την φιλτράρισμα των "ροών" δικτύου. Μπορεί να παρακολουθεί ή να τροποποιεί τα δεδομένα δικτύου σε επίπεδο ροής.
Filter Packet: Αυτό χρησιμοποιείται για την φιλτράρισμα μεμονωμένων πακέτων δικτύου. Μπορεί να παρακολουθεί ή να τροποποιεί τα δεδομένα δικτύου σε επίπεδο πακέτου.
DNS Proxy: Αυτό χρησιμοποιείται για τη δημιουργία ενός προσαρμοσμένου παρόχου DNS. Μπορεί να χρησιμοποιηθεί για την παρακολούθηση ή την τροποποίηση των αιτημάτων και απαντήσεων DNS.
Το 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 συμβαίνει μέσω της κλάσης 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
είναι υπεύθυνο για την ενεργοποίηση και απενεργοποίηση των συστημικών επεκτάσεων.
Το ESF χρησιμοποιείται από εργαλεία ασφάλειας που θα προσπαθήσουν να ανιχνεύσουν έναν red teamer, οπότε οποιαδήποτε πληροφορία σχετικά με το πώς αυτό θα μπορούσε να αποφευχθεί ακούγεται ενδιαφέρουσα.
Το θέμα είναι ότι η εφαρμογή ασφάλειας πρέπει να έχει δικαιώματα πλήρους πρόσβασης δίσκου. Έτσι, αν ένας επιτιθέμενος μπορούσε να αφαιρέσει αυτό, θα μπορούσε να αποτρέψει τη λειτουργία του λογισμικού:
Για περισσότερες πληροφορίες σχετικά με αυτήν την παράκαμψη και σχετικές, ελέγξτε την ομιλία #OBTS v5.0: "Η Αχίλλειος Πτέρνα της EndpointSecurity" - Fitzl Csaba
Στο τέλος, αυτό διορθώθηκε δίνοντας τη νέα άδεια kTCCServiceEndpointSecurityClient
στην εφαρμογή ασφαλείας που διαχειρίζεται το tccd
έτσι ώστε το tccutil
να μην διαγράψει τις άδειές της, εμποδίζοντας την από το να τρέξει.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)