macOS Dirty NIB

Reading time: 4 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

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

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