macOS Kernel Extensions
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Basic Information
Οι επεκτάσεις πυρήνα (Kexts) είναι πακέτα με κατάληξη .kext
που φορτώνονται απευθείας στον χώρο του πυρήνα macOS, παρέχοντας επιπλέον λειτουργικότητα στο κύριο λειτουργικό σύστημα.
Requirements
Προφανώς, αυτό είναι τόσο ισχυρό που είναι περίπλοκο να φορτωθεί μια επέκταση πυρήνα. Αυτές είναι οι απαιτήσεις που πρέπει να πληροί μια επέκταση πυρήνα για να φορτωθεί:
Όταν μπαίνετε σε λειτουργία ανάκτησης, οι επεκτάσεις πυρήνα πρέπει να επιτρέπεται να φορτωθούν:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F916570657-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Fr3Cb8nKOYrlGZdSyjbAy%252Fuploads%252Fgit-blob-eb7611c98db8c5b2047719eeb3f450eee5194812%252Fimage%2520%28327%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=bc5b1218&sv=1)
Η επέκταση πυρήνα πρέπει να είναι υπογεγραμμένη με πιστοποιητικό υπογραφής κώδικα πυρήνα, το οποίο μπορεί να χορηγηθεί μόνο από την Apple. Ποιος θα εξετάσει λεπτομερώς την εταιρεία και τους λόγους για τους οποίους είναι απαραίτητο.
Η επέκταση πυρήνα πρέπει επίσης να είναι notarized, η Apple θα μπορεί να την ελέγξει για κακόβουλο λογισμικό.
Στη συνέχεια, ο χρήστης root είναι αυτός που μπορεί να φορτώσει την επέκταση πυρήνα και τα αρχεία μέσα στο πακέτο πρέπει να ανήκουν στον root.
Κατά τη διαδικασία φόρτωσης, το πακέτο πρέπει να είναι προετοιμασμένο σε μια προστατευμένη τοποθεσία μη root:
/Library/StagedExtensions
(απαιτεί την χορήγησηcom.apple.rootless.storage.KernelExtensionManagement
).Τέλος, όταν προσπαθεί να το φορτώσει, ο χρήστης θα λάβει ένα αίτημα επιβεβαίωσης και, αν γίνει αποδεκτό, ο υπολογιστής πρέπει να επανεκκινήσει για να το φορτώσει.
Loading process
Στο Catalina ήταν έτσι: Είναι ενδιαφέρον να σημειωθεί ότι η διαδικασία επαλήθευσης συμβαίνει σε userland. Ωστόσο, μόνο οι εφαρμογές με την χορήγηση com.apple.private.security.kext-management
μπορούν να ζητήσουν από τον πυρήνα να φορτώσει μια επέκταση: kextcache
, kextload
, kextutil
, kextd
, syspolicyd
kextutil
cli ξεκινά τη διαδικασία επικύρωσης για τη φόρτωση μιας επέκτασης
Θα επικοινωνήσει με
kextd
στέλνοντας χρησιμοποιώντας μια υπηρεσία Mach.
kextd
θα ελέγξει διάφορα πράγματα, όπως την υπογραφή
Θα επικοινωνήσει με
syspolicyd
για να ελέγξει αν η επέκταση μπορεί να φορτωθεί.
syspolicyd
θα ζητήσει από τον χρήστη αν η επέκταση δεν έχει φορτωθεί προηγουμένως.
syspolicyd
θα αναφέρει το αποτέλεσμα στονkextd
kextd
θα είναι τελικά σε θέση να πεί στον πυρήνα να φορτώσει την επέκταση
Αν kextd
δεν είναι διαθέσιμο, kextutil
μπορεί να εκτελέσει τους ίδιους ελέγχους.
Referencias
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated