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

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

  1. 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.
  1. 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Ă©lecteur executeAndReturnError:.
  1. Test :
  • Un simple Apple Script Ă  des fins de test :
bash
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)

  1. 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.
  1. Écrasement du fichier NIB :
  • Remplacez un fichier NIB existant (par exemple, le NIB du panneau À propos) par le fichier DirtyNIB crĂ©Ă©.
  1. 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

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 :

  1. Copier l'application dans un autre emplacement (par exemple, /tmp/).
  2. Renommer des répertoires au sein du bundle de l'application pour contourner les protections initiales.
  3. 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).
  4. 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