macOS Dirty NIB
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)
Για περισσότερες λεπτομέρειες σχετικά με την τεχνική, ελέγξτε την αρχική ανάρτηση από: https://blog.xpnsec.com/dirtynib/ και την ακόλουθη ανάρτηση από https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/. Ακολουθεί μια περίληψη:
Τα αρχεία Nib (συντομογραφία του NeXT Interface Builder), μέρος του οικοσυστήματος ανάπτυξης της Apple, προορίζονται για τον καθορισμό UI στοιχείων και των αλληλεπιδράσεών τους σε εφαρμογές. Περιλαμβάνουν σειριοποιημένα αντικείμενα όπως παράθυρα και κουμπιά, και φορτώνονται κατά την εκτέλεση. Παρά τη συνεχιζόμενη χρήση τους, η Apple τώρα προτείνει τα Storyboards για πιο ολοκληρωμένη οπτικοποίηση ροής UI.
Το κύριο αρχείο Nib αναφέρεται στην τιμή NSMainNibFile
μέσα στο αρχείο Info.plist
της εφαρμογής και φορτώνεται από τη λειτουργία NSApplicationMain
που εκτελείται στη λειτουργία main
της εφαρμογής.
Αρχική Ρύθμιση:
Δημιουργήστε ένα νέο αρχείο NIB χρησιμοποιώντας το XCode.
Προσθέστε ένα Αντικείμενο στην διεπαφή, ρυθμίζοντας την κλάση του σε NSAppleScript
.
Ρυθμίστε την αρχική ιδιότητα source
μέσω των Χαρακτηριστικών Χρόνου Εκτέλεσης που Ορίζονται από τον Χρήστη.
Gadget Εκτέλεσης Κώδικα:
Η ρύθμιση διευκολύνει την εκτέλεση AppleScript κατόπιν αιτήματος.
Ενσωματώστε ένα κουμπί για να ενεργοποιήσετε το αντικείμενο Apple Script
, ενεργοποιώντας συγκεκριμένα τον επιλεγέα executeAndReturnError:
.
Δοκιμή:
Ένα απλό Apple Script για δοκιμαστικούς σκοπούς:
Δοκιμάστε εκτελώντας το στον αποσφαλματωτή XCode και κάνοντας κλικ στο κουμπί.
Προετοιμασία:
Αντιγράψτε την στοχοθετημένη εφαρμογή (π.χ., Pages) σε έναν ξεχωριστό φάκελο (π.χ., /tmp/
).
Ξεκινήστε την εφαρμογή για να παρακάμψετε τα προβλήματα του Gatekeeper και να την αποθηκεύσετε στην κρυφή μνήμη.
Αντικατάσταση Αρχείου NIB:
Αντικαταστήστε ένα υπάρχον αρχείο NIB (π.χ., About Panel NIB) με το κατασκευασμένο αρχείο DirtyNIB.
Εκτέλεση:
Ενεργοποιήστε την εκτέλεση αλληλεπιδρώντας με την εφαρμογή (π.χ., επιλέγοντας το στοιχείο μενού About
).
Τροποποιήστε το AppleScript για να αποκτήσετε πρόσβαση και να εξάγετε δεδομένα χρήστη, όπως φωτογραφίες, χωρίς τη συγκατάθεση του χρήστη.
Πρόσβαση και ανασκόπηση ενός δείγματος κακόβουλου αρχείου .xib που δείχνει την εκτέλεση αυθαίρετου κώδικα.
Στην ανάρτηση https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/ μπορείτε να βρείτε οδηγίες για το πώς να δημιουργήσετε ένα dirty nib.
Οι Περιορισμοί Εκκίνησης εμποδίζουν την εκτέλεση εφαρμογών από απροσδόκητες τοποθεσίες (π.χ., /tmp
).
Είναι δυνατόν να εντοπιστούν εφαρμογές που δεν προστατεύονται από Περιορισμούς Εκκίνησης και να στοχοποιηθούν για εισαγωγή αρχείου NIB.
Από το macOS Sonoma και μετά, οι τροποποιήσεις μέσα σε πακέτα εφαρμογών είναι περιορισμένες. Ωστόσο, οι προηγούμενες μέθοδοι περιλάμβαναν:
Αντιγραφή της εφαρμογής σε διαφορετική τοποθεσία (π.χ., /tmp/
).
Μετονομασία φακέλων μέσα στο πακέτο εφαρμογής για να παρακαμφθούν οι αρχικές προστασίες.
Μετά την εκτέλεση της εφαρμογής για να εγγραφεί με τον Gatekeeper, τροποποίηση του πακέτου εφαρμογής (π.χ., αντικατάσταση του MainMenu.nib με το Dirty.nib).
Επαναφορά των φακέλων και επανεκτέλεση της εφαρμογής για να εκτελεστεί το εισαγόμενο αρχείο NIB.
Σημείωση: Οι πρόσφατες ενημερώσεις του macOS έχουν μετριάσει αυτήν την εκμετάλλευση αποτρέποντας τις τροποποιήσεις αρχείων εντός των πακέτων εφαρμογών μετά την αποθήκευση στην κρυφή μνήμη του Gatekeeper, καθιστώντας την εκμετάλλευση αναποτελεσματική.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)