macOS Dirty NIB
Reading time: 4 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- VĂ©rifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépÎts github.
Pour plus de détails sur la technique, consultez le post original de : https://blog.xpnsec.com/dirtynib/ et le post suivant par https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/. Voici un résumé :
Qu'est-ce que les fichiers Nib
Les fichiers Nib (abrĂ©viation de NeXT Interface Builder), faisant partie de l'Ă©cosystĂšme de dĂ©veloppement d'Apple, sont destinĂ©s Ă dĂ©finir les Ă©lĂ©ments UI et leurs interactions dans les applications. Ils englobent des objets sĂ©rialisĂ©s tels que des fenĂȘtres et des boutons, et sont chargĂ©s Ă l'exĂ©cution. MalgrĂ© leur utilisation continue, Apple prĂ©conise dĂ©sormais les Storyboards pour une visualisation plus complĂšte du flux UI.
Le fichier Nib principal est référencé dans la valeur NSMainNibFile
à l'intérieur du fichier Info.plist
de l'application et est chargé par la fonction NSApplicationMain
exécutée dans la fonction main
de l'application.
Processus d'injection de Dirty Nib
Création et configuration d'un fichier NIB
- Configuration initiale :
- Créez un nouveau fichier NIB en utilisant XCode.
- Ajoutez un objet à l'interface, en définissant sa classe sur
NSAppleScript
. - Configurez la propriété
source
initiale via les attributs d'exécution définis par l'utilisateur.
- Gadget d'exécution de code :
- La configuration facilite l'exécution d'AppleScript à la demande.
- Intégrez un bouton pour activer l'objet
Apple Script
, déclenchant spécifiquement le sélecteurexecuteAndReturnError:
.
- Test :
- Un simple Apple Script Ă des fins de test :
set theDialogText to "PWND"
display dialog theDialogText
- Testez en exécutant dans le débogueur XCode et en cliquant sur le bouton.
Ciblage d'une application (Exemple : Pages)
- Préparation :
- Copiez l'application cible (par exemple, Pages) dans un répertoire séparé (par exemple,
/tmp/
). - Lancez l'application pour contourner les problĂšmes de Gatekeeper et la mettre en cache.
- Ăcrasement du fichier NIB :
- Remplacez un fichier NIB existant (par exemple, le NIB du panneau à propos) par le fichier DirtyNIB créé.
- Exécution :
- Déclenchez l'exécution en interagissant avec l'application (par exemple, en sélectionnant l'élément de menu
Ă propos
).
Preuve de concept : AccÚs aux données utilisateur
- Modifiez l'AppleScript pour accéder et extraire des données utilisateur, telles que des photos, sans le consentement de l'utilisateur.
Exemple de code : Fichier .xib malveillant
- Accédez et examinez un exemple de fichier .xib malveillant qui démontre l'exécution de code arbitraire.
Autre exemple
Dans le post https://sector7.computest.nl/post/2024-04-bringing-process-injection-into-view-exploiting-all-macos-apps-using-nib-files/ vous pouvez trouver un tutoriel sur la façon de créer un dirty nib.
Aborder les contraintes de lancement
- Les contraintes de lancement entravent l'exécution des applications depuis des emplacements inattendus (par exemple,
/tmp
). - Il est possible d'identifier les applications non protégées par des contraintes de lancement et de les cibler pour l'injection de fichiers NIB.
Protections supplémentaires de macOS
Depuis macOS Sonoma, les modifications à l'intérieur des bundles d'applications sont restreintes. Cependant, les méthodes antérieures impliquaient :
- Copier l'application dans un autre emplacement (par exemple,
/tmp/
). - Renommer des répertoires au sein du bundle de l'application pour contourner les protections initiales.
- AprÚs avoir exécuté l'application pour s'enregistrer auprÚs de Gatekeeper, modifier le bundle de l'application (par exemple, remplacer MainMenu.nib par Dirty.nib).
- Renommer les répertoires et relancer l'application pour exécuter le fichier NIB injecté.
Remarque : Les mises Ă jour rĂ©centes de macOS ont attĂ©nuĂ© cette exploitation en empĂȘchant les modifications de fichiers au sein des bundles d'applications aprĂšs la mise en cache de Gatekeeper, rendant l'exploitation inefficace.
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- VĂ©rifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépÎts github.