hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-bundles.md

5.7 KiB

Bundles macOS

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Informations de base

Fondamentalement, un bundle est une structure de répertoire dans le système de fichiers. De manière intéressante, par défaut, ce répertoire ressemble à un seul objet dans Finder.

Le bundle le plus courant que nous rencontrerons est le bundle .app, mais de nombreux autres exécutables sont également empaquetés sous forme de bundles, tels que les bundles .framework et .systemextension ou .kext.

Les types de ressources contenues dans un bundle peuvent comprendre des applications, des bibliothèques, des images, de la documentation, des fichiers d'en-tête, etc. Tous ces fichiers se trouvent dans <application>.app/Contents/.

ls -lR /Applications/Safari.app/Contents
  • Contents/_CodeSignature -> Contient des informations de signature de code sur l'application (c'est-à-dire des hachages, etc.).

  • openssl dgst -binary -sha1 /Applications/Safari.app/Contents/Resources/Assets.car | openssl base64

  • Contents/MacOS -> Contient le binaire de l'application (qui est exécuté lorsque l'utilisateur double-clique sur l'icône de l'application dans l'interface utilisateur).

  • Contents/Resources -> Contient les éléments de l'interface utilisateur de l'application, tels que des images, des documents et des fichiers nib/xib (qui décrivent diverses interfaces utilisateur).

  • Contents/Info.plist -> Le fichier de configuration principal de l'application. Apple note que "le système se base sur la présence de ce fichier pour identifier les informations pertinentes sur l'application et les fichiers associés".

  • Les fichiers Plist contiennent des informations de configuration. Vous pouvez trouver des informations sur la signification des clés plist à l'adresse https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Introduction/Introduction.html

  • Les paires qui peuvent être intéressantes lors de l'analyse d'une application incluent :

  • CFBundleExecutable

Contient le nom du binaire de l'application (trouvé dans Contents/MacOS).

  • CFBundleIdentifier

Contient l'identifiant de bundle de l'application (souvent utilisé par le système pour identifier globalement l'application).

  • LSMinimumSystemVersion

Contient la plus ancienne version de macOS avec laquelle l'application est compatible.

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥