macOS Dirty NIB

Support HackTricks

Για περισσότερες λεπτομέρειες σχετικά με την τεχνική, ελέγξτε την αρχική ανάρτηση από: 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

Τα αρχεία Nib (συντομογραφία του NeXT Interface Builder), μέρος του οικοσυστήματος ανάπτυξης της Apple, προορίζονται για τον καθορισμό UI στοιχείων και των αλληλεπιδράσεών τους σε εφαρμογές. Περιλαμβάνουν σειριοποιημένα αντικείμενα όπως παράθυρα και κουμπιά, και φορτώνονται κατά την εκτέλεση. Παρά τη συνεχιζόμενη χρήση τους, η Apple τώρα προτείνει τα Storyboards για πιο ολοκληρωμένη οπτικοποίηση ροής UI.

Το κύριο αρχείο Nib αναφέρεται στην τιμή NSMainNibFile μέσα στο αρχείο Info.plist της εφαρμογής και φορτώνεται από τη λειτουργία NSApplicationMain που εκτελείται στη λειτουργία main της εφαρμογής.

Διαδικασία Εισαγωγής Dirty Nib

Δημιουργία και Ρύθμιση ενός Αρχείου NIB

  1. Αρχική Ρύθμιση:

  • Δημιουργήστε ένα νέο αρχείο NIB χρησιμοποιώντας το XCode.

  • Προσθέστε ένα Αντικείμενο στην διεπαφή, ρυθμίζοντας την κλάση του σε NSAppleScript.

  • Ρυθμίστε την αρχική ιδιότητα source μέσω των Χαρακτηριστικών Χρόνου Εκτέλεσης που Ορίστηκαν από τον Χρήστη.

  1. Gadget Εκτέλεσης Κώδικα:

  • Η ρύθμιση διευκολύνει την εκτέλεση AppleScript κατόπιν αιτήματος.

  • Ενσωματώστε ένα κουμπί για να ενεργοποιήσετε το αντικείμενο Apple Script, ενεργοποιώντας συγκεκριμένα τον επιλεγέα executeAndReturnError:.

  1. Δοκιμή:

  • Ένα απλό Apple Script για δοκιμαστικούς σκοπούς:

set theDialogText to "PWND"
display dialog theDialogText
  • Δοκιμάστε εκτελώντας το στον αποσφαλματωτή XCode και κάνοντας κλικ στο κουμπί.

Στοχοποίηση μιας Εφαρμογής (Παράδειγμα: Pages)

  1. Προετοιμασία:

  • Αντιγράψτε την στοχοθετημένη εφαρμογή (π.χ., Pages) σε έναν ξεχωριστό φάκελο (π.χ., /tmp/).

  • Ξεκινήστε την εφαρμογή για να παρακάμψετε τα ζητήματα του Gatekeeper και να την αποθηκεύσετε στην κρυφή μνήμη.

  1. Αντικατάσταση Αρχείου NIB:

  • Αντικαταστήστε ένα υπάρχον αρχείο NIB (π.χ., NIB Πίνακα Σχετικά) με το κατασκευασμένο αρχείο DirtyNIB.

  1. Εκτέλεση:

  • Ενεργοποιήστε την εκτέλεση αλληλεπιδρώντας με την εφαρμογή (π.χ., επιλέγοντας το στοιχείο μενού 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

Από το macOS Sonoma και μετά, οι τροποποιήσεις μέσα σε πακέτα εφαρμογών είναι περιορισμένες. Ωστόσο, οι προηγούμενες μέθοδοι περιλάμβαναν:

  1. Αντιγραφή της εφαρμογής σε διαφορετική τοποθεσία (π.χ., /tmp/).

  2. Μετονομασία φακέλων μέσα στο πακέτο εφαρμογής για να παρακαμφθούν οι αρχικές προστασίες.

  3. Μετά την εκτέλεση της εφαρμογής για να καταχωρηθεί με τον Gatekeeper, τροποποίηση του πακέτου εφαρμογής (π.χ., αντικατάσταση του MainMenu.nib με το Dirty.nib).

  4. Επαναφορά των φακέλων και επανεκτέλεση της εφαρμογής για να εκτελεστεί το εισαγόμενο αρχείο NIB.

Σημείωση: Οι πρόσφατες ενημερώσεις του macOS έχουν μετριάσει αυτήν την εκμετάλλευση αποτρέποντας τις τροποποιήσεις αρχείων εντός των πακέτων εφαρμογών μετά την αποθήκευση στην κρυφή μνήμη του Gatekeeper, καθιστώντας την εκμετάλλευση αναποτελεσματική.

Support HackTricks

Last updated