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

5.7 KiB

Bundles macOS

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

Informations de base

Les bundles dans macOS servent de conteneurs pour une variété de ressources, y compris des applications, des bibliothèques et d'autres fichiers nécessaires, les faisant apparaître comme des objets uniques dans Finder, tels que les fichiers *.app familiers. Le bundle le plus couramment rencontré est le bundle .app, bien que d'autres types comme .framework, .systemextension et .kext soient également courants.

Composants essentiels d'un bundle

À l'intérieur d'un bundle, en particulier dans le répertoire <application>.app/Contents/, une variété de ressources importantes sont stockées :

  • _CodeSignature : Ce répertoire stocke des détails de signature de code essentiels pour vérifier l'intégrité de l'application. Vous pouvez inspecter les informations de signature de code en utilisant des commandes comme : %%%bash openssl dgst -binary -sha1 /Applications/Safari.app/Contents/Resources/Assets.car | openssl base64 %%%
  • MacOS : Contient le binaire exécutable de l'application qui s'exécute lors de l'interaction de l'utilisateur.
  • Resources : Un référentiel pour les composants de l'interface utilisateur de l'application, y compris des images, des documents et des descriptions d'interface (fichiers nib/xib).
  • Info.plist : Agit comme le fichier de configuration principal de l'application, crucial pour que le système reconnaisse et interagisse avec l'application de manière appropriée.

Clés importantes dans Info.plist

Le fichier Info.plist est un pilier pour la configuration de l'application, contenant des clés telles que :

  • CFBundleExecutable : Spécifie le nom du fichier exécutable principal situé dans le répertoire Contents/MacOS.
  • CFBundleIdentifier : Fournit un identifiant global pour l'application, largement utilisé par macOS pour la gestion des applications.
  • LSMinimumSystemVersion : Indique la version minimale de macOS requise pour que l'application s'exécute.

Exploration des bundles

Pour explorer le contenu d'un bundle, tel que Safari.app, la commande suivante peut être utilisée : bash ls -lR /Applications/Safari.app/Contents

Cette exploration révèle des répertoires tels que _CodeSignature, MacOS, Resources, et des fichiers comme Info.plist, chacun servant un but unique, de la sécurisation de l'application à la définition de son interface utilisateur et de ses paramètres opérationnels.

Répertoires de bundle supplémentaires

Au-delà des répertoires communs, les bundles peuvent également inclure :

  • Frameworks : Contient des frameworks regroupés utilisés par l'application. Les frameworks sont comme des dylibs avec des ressources supplémentaires.
  • PlugIns : Un répertoire pour les plug-ins et les extensions qui améliorent les capacités de l'application.
  • XPCServices : Contient des services XPC utilisés par l'application pour la communication hors processus.

Cette structure garantit que tous les composants nécessaires sont encapsulés dans le bundle, facilitant un environnement d'application modulaire et sécurisé.

Pour des informations plus détaillées sur les clés Info.plist et leur signification, la documentation des développeurs Apple fournit des ressources étendues : Référence des clés Info.plist Apple.

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :