Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
macos_app_structure — Plongée pédagogique en profondeur dans les bundles d'applications macOS, les fichiers plist et le comportement des processus launchd, avec des notes de sécurité offensive sur l'empaquetage de payloads sous forme de fichiers .app et le contournement de la surveillance de l'arborescence des processus. | Kitploit
Outils/GitHubGitHub/yo-yo-yo-jbo/macos_app_structure
Mécanismes de PersistanceÉvasion IDS/IPSApprentissage et ÉducationRed TeamingDéveloppement de Charges Utiles
GitHubyo-yo-yo-jbo/macos_app_structure

macos_app_structure

Voir le dépôt

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
47218il y a 2 moisVérifié par Kitploit

À propos

Plongée pédagogique en profondeur dans les bundles d'applications macOS, les fichiers plist et le comportement des processus launchd, avec des notes de sécurité offensive sur l'empaquetage de payloads sous forme de fichiers .app et le contournement de la surveillance de l'arborescence des processus.

Partager

Introduction à macOS - Structure des applications macOS

Passer de Linux ou Windows à macOS peut donner l'impression de débarquer dans un nouveau monde inconnu. Linux étant open-source et Windows étant bien documenté et très populaire (et macOS n'étant ni l'un ni l'autre, exactement), macOS peut être parfois difficile à appréhender. Dans cet article, j'ai l'intention d'aborder certaines des premières choses que vous pourriez remarquer sur macOS - des Apps, des Apps partout !

Apps vs. processus (tâches ?)

Venant d'un environnement Windows ou Linux, le concept d'Apps peut sembler étrange. Nous savons tous que les threads sont des « unités d'exécution » et que les processus sont des conteneurs de threads avec leur propre espace d'adressage -- quoi de plus à comprendre ? Eh bien, les processus sont rarement déployés dans un seul fichier. Sur Windows comme sur Linux, le code peut avoir besoin de nombreuses choses pour fonctionner, parmi lesquelles :

  • Des modules chargeables (.dll, .so). Par exemple, la bibliothèque d'exécution C (msvcr<version>.dll sur Windows, libc-<version>.so) ainsi que d'autres dépendances.
  • Des ressources. Par exemple, sur Windows, les exécutables se présentent dans un format appelé PE, qui possède des répertoires - l'un d'eux est le répertoire de ressources (même partiellement documenté ici) qui peut contenir des ressources (images, chaînes de caractères, etc.). Les ressources peuvent également être chargées dynamiquement depuis le disque, bien évidemment.
  • Des signatures numériques. Celles-ci sont moins courantes sur Linux (bien qu'elles existent sous une certaine forme - par exemple, dans les paquets Debian) mais elles sont importantes. Sur Windows, elles peuvent être présentes dans le fichier PE lui-même (lisez ici) ou dans des fichiers de catalogue (c'est-à-dire, en externe).
  • La configuration. Sur Linux, ce sont des fichiers (comme vos fiables fichiers .bashrc), et sur Windows, elle se répartit entre des fichiers (par exemple, xml, ini, json) et la base de registre Windows.
  • D'autres exécutables.

Eh bien, macOS met fortement l'accent sur les Application Bundles. L'idée est d'empaqueter (presque) tout ce qui est nécessaire au fonctionnement du programme dans une structure de répertoires - y compris les ressources, les informations de localisation, etc. Bien sûr, tout ne peut pas être joliment empaqueté (comme la bibliothèque d'exécution C, par exemple) - mais cela signifie tout de même que les éléments sont regroupés proprement - pas besoin de naviguer dans une énorme base de registre ni de lire des pages de manuel pour trouver des emplacements de fichiers de configuration obscurs. Les application bundles sont simplement des répertoires se terminant par .app - même si l'interface utilisateur masque l'extension .app (et le fait qu'il s'agisse d'un répertoire). Du point de vue d'un attaquant, c'est intéressant - puisqu'une Application Bundle peut avoir des icônes arbitraires et masque l'extension .app - la livraison de malware pourrait être réalisée en trompant un utilisateur peu méfiant pour qu'il clique sur une telle app. Par exemple, pensez à un fichier Resume.app avec une icône de PDF.

La structure de répertoires d'une Application Bundle peut être facilement examinée, évidemment avec l'application Calculator intégrée :

jbo@McJbo ~ % cd /System/Applications/Calculator.app
jbo@McJbo Calculator.app % ll
total 0
drwxr-xr-x   3 root  wheel    96 Mar 17 21:34 .
drwxr-xr-x  43 root  wheel  1376 Mar 17 21:34 ..
drwxr-xr-x   9 root  wheel   288 Mar 17 21:34 Contents
jbo@McJbo Calculator.app % cd Contents
jbo@McJbo Contents % ll
total 16
drwxr-xr-x    9 root  wheel   288 Mar 17 21:34 .
drwxr-xr-x    3 root  wheel    96 Mar 17 21:34 ..
-rw-r--r--    1 root  wheel  2147 Mar 17 21:34 Info.plist
drwxr-xr-x    3 root  wheel    96 Mar 17 21:34 MacOS
-rw-r--r--  204 root  wheel     8 Mar 17 21:34 PkgInfo
drwxr-xr-x    4 root  wheel   128 Mar 17 21:34 PlugIns
drwxr-xr-x   54 root  wheel  1728 Mar 17 21:34 Resources
drwxr-xr-x    3 root  wheel    96 Mar 17 21:34 _CodeSignature
-rw-r--r--    1 root  wheel   461 Mar 17 21:34 version.plist
jbo@McJbo Contents % cd MacOS
jbo@McJbo MacOS % ll
total 344
drwxr-xr-x  3 root  wheel      96 Mar 17 21:34 .
drwxr-xr-x  9 root  wheel     288 Mar 17 21:34 ..
-rwxr-xr-x  1 root  wheel  540912 Mar 17 21:34 Calculator
jbo@McJbo MacOS %

Comme vous pouvez le voir, Calculator.app est un répertoire. Sous celui-ci se trouve un seul élément - un autre répertoire appelé Contents. Sous Contents se trouvent plusieurs éléments :

  • Info.plist - contient les métadonnées de l'App. Plus de détails à ce sujet plus loin.
  • MacOS - contient l'exécutable principal de l'App (comme on peut le voir dans la 3ème liste de répertoires).
  • PkgInfo - non obligatoire. Un fichier binaire contenant des informations sur le paquet.
  • PlugIns - non obligatoire. Un répertoire pouvant contenir des plugins pour l'App. Calculator en a deux - un pour « Basic and Scientific » et un pour « Hexadecimal » (je ne sais vraiment pas pourquoi ils ont fait cette séparation, et je m'en fiche).
  • Resources - non obligatoire. Comme son nom l'indique, contient des ressources. On peut y trouver plusieurs éléments, notamment un fichier .icns contenant les icônes, ainsi que des répertoires avec le suffixe .lprroj liés à la localisation.
  • _CodeSignature - non obligatoire. Comme son nom l'indique - contient les informations de signature de code.
  • version.plist - non obligatoire, contient des informations de version.

Remarquez qu'il y a très peu d'éléments officiellement requis. En fait, nous pouvons créer notre propre première App sans même compiler quoi que ce soit ! Mais il faut d'abord aborder ce fichier Info.plist.

Les fichiers Property list

Plus vous regardez macOS, plus vous trouverez ces fichiers étranges. Ce ne sont rien de plus que des fichiers de configuration améliorés. Ils ont toujours une extension .plist, qui n'est qu'un raccourci pour leur nom formel : les fichiers Property list. Malheureusement, il existe 3 formats plist différents maintenus par Apple :

  • Un format xml, lisible par les humains.
  • Un format json, peu utilisé.
  • Un format binaire, généralement reconnaissable à la chaîne de caractères bplist comme signature magique.

Heureusement, il existe un utilitaire appelé plutil qui prend en charge tous les formats. Pour afficher un fichier plist, utilisez simplement plutil -p. Par exemple :

jbo@McJbo Contents % plutil -p Info.plist | head -n 20
{
  "BuildMachineOSBuild" => "22A380007"
  "CFBundleDevelopmentRegion" => "English"
  "CFBundleExecutable" => "Calculator"
  "CFBundleGetInfoString" => "10.14, Copyright © 2000-2018, Apple Inc."
  "CFBundleHelpBookFolder" => "Calculator.help"
  "CFBundleHelpBookName" => "com.apple.Calculator.help"
  "CFBundleIconFile" => "AppIcon"
  "CFBundleIconName" => "AppIcon"
  "CFBundleIdentifier" => "com.apple.calculator"
  "CFBundleInfoDictionaryVersion" => "6.0"
  "CFBundleName" => "Calculator"
  "CFBundlePackageType" => "APPL"
  "CFBundleShortVersionString" => "10.16"
  "CFBundleSignature" => "????"
  "CFBundleSupportedPlatforms" => [
    0 => "MacOSX"
  ]
  "CFBundleVersion" => "223"
  "CTIgnoreUserFonts" => 1
jbo@McJbo Contents %
Télécharger l’outil