macOS Dirty NIB
Last updated
Last updated
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Für weitere Details zur Technik siehe den Originalbeitrag von: https://blog.xpnsec.com/dirtynib/ und den folgenden Beitrag von https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/. Hier ist eine Zusammenfassung:
Nib (kurz für NeXT Interface Builder) Dateien, Teil von Apples Entwicklungsökosystem, sind dazu gedacht, UI-Elemente und deren Interaktionen in Anwendungen zu definieren. Sie umfassen serialisierte Objekte wie Fenster und Schaltflächen und werden zur Laufzeit geladen. Trotz ihrer fortwährenden Nutzung empfiehlt Apple jetzt Storyboards für eine umfassendere Visualisierung des UI-Flusses.
Die Haupt-Nib-Datei wird im Wert NSMainNibFile
innerhalb der Info.plist
-Datei der Anwendung referenziert und wird durch die Funktion NSApplicationMain
geladen, die in der main
-Funktion der Anwendung ausgeführt wird.
Erste Einrichtung:
Erstelle eine neue NIB-Datei mit XCode.
Füge ein Objekt zur Benutzeroberfläche hinzu und setze seine Klasse auf NSAppleScript
.
Konfiguriere die anfängliche source
-Eigenschaft über benutzerdefinierte Laufzeitattribute.
Codeausführungs-Gadget:
Die Einrichtung ermöglicht das Ausführen von AppleScript auf Abruf.
Integriere eine Schaltfläche, um das Apple Script
-Objekt zu aktivieren, das speziell den Selektor executeAndReturnError:
auslöst.
Testen:
Ein einfaches Apple Script zu Testzwecken:
Teste, indem du im XCode-Debugger ausführst und auf die Schaltfläche klickst.
Vorbereitung:
Kopiere die Zielanwendung (z. B. Pages) in ein separates Verzeichnis (z. B. /tmp/
).
Starte die Anwendung, um Gatekeeper-Probleme zu umgehen und sie zu cachen.
Überschreiben der NIB-Datei:
Ersetze eine vorhandene NIB-Datei (z. B. About Panel NIB) durch die erstellte DirtyNIB-Datei.
Ausführung:
Trigger die Ausführung, indem du mit der Anwendung interagierst (z. B. das Menüelement Über
auswählst).
Modifiziere das AppleScript, um auf Benutzerdaten zuzugreifen und diese zu extrahieren, wie z. B. Fotos, ohne die Zustimmung des Benutzers.
Greife auf und überprüfe eine Beispiel einer bösartigen .xib-Datei zu, die das Ausführen beliebigen Codes demonstriert.
Im Beitrag https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/ findest du ein Tutorial, wie man einen Dirty Nib erstellt.
Startbeschränkungen hindern die Ausführung von Apps aus unerwarteten Orten (z. B. /tmp
).
Es ist möglich, Apps zu identifizieren, die nicht durch Startbeschränkungen geschützt sind, und sie für die NIB-Datei-Injektion anzuvisieren.
Seit macOS Sonoma sind Änderungen innerhalb von App-Bundles eingeschränkt. Frühere Methoden umfassten:
Kopieren der App an einen anderen Ort (z. B. /tmp/
).
Umbenennen von Verzeichnissen innerhalb des App-Bundles, um anfängliche Schutzmaßnahmen zu umgehen.
Nach dem Ausführen der App, um sich bei Gatekeeper zu registrieren, das App-Bundle zu modifizieren (z. B. Ersetzen von MainMenu.nib durch Dirty.nib).
Umbenennen der Verzeichnisse zurück und erneutes Ausführen der App, um die injizierte NIB-Datei auszuführen.
Hinweis: Neuere macOS-Updates haben diesen Exploit gemildert, indem sie Dateiänderungen innerhalb von App-Bundles nach dem Caching durch Gatekeeper verhindern, wodurch der Exploit unwirksam wird.
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)