macOS Files, Folders, Binaries & Memory
Structure de la hiérarchie des fichiers
/Applications: Les applications installées devraient être ici. Tous les utilisateurs pourront y accéder.
/bin: Binaires de ligne de commande
/cores: S'il existe, il est utilisé pour stocker les vidages de cœur
/dev: Tout est traité comme un fichier, vous pouvez donc voir des périphériques matériels stockés ici.
/etc: Fichiers de configuration
/Library: De nombreux sous-répertoires et fichiers liés aux préférences, caches et journaux peuvent être trouvés ici. Un dossier Library existe dans la racine et dans le répertoire de chaque utilisateur.
/private: Non documenté mais beaucoup des dossiers mentionnés sont des liens symboliques vers le répertoire privé.
/sbin: Binaires système essentiels (liés à l'administration)
/System: Fichier pour faire fonctionner OS X. Vous devriez trouver principalement des fichiers spécifiques à Apple ici (pas de tiers).
/tmp: Les fichiers sont supprimés après 3 jours (c'est un lien symbolique vers /private/tmp)
/Users: Répertoire personnel des utilisateurs.
/usr: Configuration et binaires système
/var: Fichiers journaux
/Volumes: Les lecteurs montés apparaîtront ici.
/.vol: En exécutant
stat a.txt
, vous obtenez quelque chose comme16777223 7545753 -rw-r--r-- 1 nom_utilisateur wheel ...
où le premier nombre est l'identifiant du volume où se trouve le fichier et le deuxième est le numéro d'inode. Vous pouvez accéder au contenu de ce fichier via /.vol/ avec ces informations en exécutantcat /.vol/16777223/7545753
Dossiers d'Applications
Les applications système sont situées sous
/System/Applications
Les applications installées sont généralement installées dans
/Applications
ou dans~/Applications
Les données de l'application peuvent être trouvées dans
/Library/Application Support
pour les applications s'exécutant en tant que root et~/Library/Application Support
pour les applications s'exécutant en tant qu'utilisateur.Les daemons d'applications tierces qui doivent s'exécuter en tant que root sont généralement situés dans
/Library/PrivilegedHelperTools/
Les applications sandboxed sont mappées dans le dossier
~/Library/Containers
. Chaque application a un dossier nommé selon l'ID de bundle de l'application (com.apple.Safari
).Le noyau est situé dans
/System/Library/Kernels/kernel
Les extensions de noyau d'Apple sont situées dans
/System/Library/Extensions
Les extensions de noyau tierces sont stockées dans
/Library/Extensions
Fichiers avec des Informations Sensibles
macOS stocke des informations telles que des mots de passe à plusieurs endroits:
macOS Sensitive LocationsInstallateurs pkg Vulnérables
macOS Installers AbuseExtensions Spécifiques à OS X
.dmg
: Les fichiers d'image disque Apple sont très fréquents pour les installateurs..kext
: Il doit suivre une structure spécifique et c'est la version OS X d'un pilote. (c'est un bundle).plist
: Aussi connu sous le nom de liste de propriétés, stocke des informations au format XML ou binaire.Peut être XML ou binaire. Les binaires peuvent être lus avec:
defaults read config.plist
/usr/libexec/PlistBuddy -c print config.plsit
plutil -p ~/Library/Preferences/com.apple.screensaver.plist
plutil -convert xml1 ~/Library/Preferences/com.apple.screensaver.plist -o -
plutil -convert json ~/Library/Preferences/com.apple.screensaver.plist -o -
.app
: Applications Apple qui suivent une structure de répertoire (c'est un bundle)..dylib
: Bibliothèques dynamiques (comme les fichiers DLL Windows).pkg
: Sont identiques à xar (format d'archive extensible). La commande installer peut être utilisée pour installer le contenu de ces fichiers..DS_Store
: Ce fichier est présent dans chaque répertoire, il enregistre les attributs et personnalisations du répertoire..Spotlight-V100
: Ce dossier apparaît à la racine de chaque volume du système..metadata_never_index
: Si ce fichier se trouve à la racine d'un volume, Spotlight n'indexera pas ce volume..noindex
: Les fichiers et dossiers avec cette extension ne seront pas indexés par Spotlight.
Bundles macOS
Un bundle est un répertoire qui ressemble à un objet dans Finder (un exemple de Bundle sont les fichiers *.app
).
Cache Partagé Dyld
Sur macOS (et iOS), toutes les bibliothèques système partagées, comme les frameworks et les dylibs, sont combinées dans un seul fichier, appelé le cache partagé dyld. Cela améliore les performances, car le code peut être chargé plus rapidement.
Tout comme le cache partagé dyld, le noyau et les extensions de noyau sont également compilés dans un cache de noyau, qui est chargé au démarrage.
Pour extraire les bibliothèques du fichier unique cache partagé dylib, il était possible d'utiliser le binaire dyld_shared_cache_util qui pourrait ne pas fonctionner de nos jours, mais vous pouvez également utiliser dyldextractor:
Dans les anciennes versions, vous pourriez trouver le cache partagé dans /System/Library/dyld/
.
Sur iOS, vous pouvez les trouver dans /System/Library/Caches/com.apple.dyld/
.
Notez que même si l'outil dyld_shared_cache_util
ne fonctionne pas, vous pouvez passer le binaire dyld partagé à Hopper et Hopper pourra identifier toutes les bibliothèques et vous permettre de sélectionner celle que vous souhaitez examiner :
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F2088318145-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252Frq9WIQinJaxpWMvakjIQ%252Fuploads%252Fgit-blob-bd35287e2d7c107553b724b17342fb777bb1d069%252Fimage%2520%28680%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=45e079bc&sv=1)
Autorisations de fichiers spéciales
Autorisations de dossier
Dans un dossier, lire permet de lister, écrire permet de supprimer et écrire des fichiers dessus, et exécuter permet de traverser le répertoire. Ainsi, par exemple, un utilisateur avec l'autorisation de lecture sur un fichier à l'intérieur d'un répertoire où il n'a pas l'autorisation d'exécution ne pourra pas lire le fichier.
Modificateurs de drapeaux
Certains drapeaux peuvent être définis dans les fichiers pour modifier leur comportement. Vous pouvez vérifier les drapeaux des fichiers à l'intérieur d'un répertoire avec ls -lO /chemin/répertoire
uchg
: Connu sous le nom de drapeau uchange empêchera toute action de changer ou de supprimer le fichier. Pour le définir :chflags uchg fichier.txt
L'utilisateur root pourrait supprimer le drapeau et modifier le fichier
restricted
: Ce drapeau fait en sorte que le fichier soit protégé par SIP (vous ne pouvez pas ajouter ce drapeau à un fichier).Bit collant
: Si un répertoire a un bit collant, seul le propriétaire des répertoires ou root peut renommer ou supprimer des fichiers. Typiquement, cela est défini sur le répertoire /tmp pour empêcher les utilisateurs ordinaires de supprimer ou déplacer les fichiers d'autres utilisateurs.
Tous les drapeaux peuvent être trouvés dans le fichier sys/stat.h
(trouvez-le en utilisant mdfind stat.h | grep stat.h
) et sont :
UF_SETTABLE
0x0000ffff : Masque des drapeaux modifiables par le propriétaire.UF_NODUMP
0x00000001 : Ne pas sauvegarder le fichier.UF_IMMUTABLE
0x00000002 : Le fichier ne peut pas être modifié.UF_APPEND
0x00000004 : Les écritures dans le fichier ne peuvent être que des ajouts.UF_OPAQUE
0x00000008 : Le répertoire est opaque par rapport à l'union.UF_COMPRESSED
0x00000020 : Le fichier est compressé (certains systèmes de fichiers).UF_TRACKED
0x00000040 : Pas de notifications pour les suppressions/renommages pour les fichiers avec cet ensemble.UF_DATAVAULT
0x00000080 : Autorisation requise pour la lecture et l'écriture.UF_HIDDEN
0x00008000 : Indique que cet élément ne doit pas être affiché dans une interface graphique.SF_SUPPORTED
0x009f0000 : Masque des drapeaux pris en charge par le superutilisateur.SF_SETTABLE
0x3fff0000 : Masque des drapeaux modifiables par le superutilisateur.SF_SYNTHETIC
0xc0000000 : Masque des drapeaux synthétiques en lecture seule du système.SF_ARCHIVED
0x00010000 : Le fichier est archivé.SF_IMMUTABLE
0x00020000 : Le fichier ne peut pas être modifié.SF_APPEND
0x00040000 : Les écritures dans le fichier ne peuvent être que des ajouts.SF_RESTRICTED
0x00080000 : Autorisation requise pour l'écriture.SF_NOUNLINK
0x00100000 : L'élément ne peut pas être supprimé, renommé ou monté.SF_FIRMLINK
0x00800000 : Le fichier est un lien ferme.SF_DATALESS
0x40000000 : Le fichier est un objet sans données.
Listes de contrôle d'accès aux fichiers (ACL)
Les ACL de fichiers contiennent des ACE (entrées de contrôle d'accès) où des autorisations plus granulaires peuvent être attribuées à différents utilisateurs.
Il est possible d'accorder à un répertoire ces autorisations : liste
, recherche
, ajouter_fichier
, ajouter_sous-répertoire
, supprimer_enfant
, supprimer_enfant
.
Et à un fichier : lire
, écrire
, ajouter
, exécuter
.
Lorsque le fichier contient des ACL, vous verrez un "+" lors de l'énumération des autorisations comme dans :
Vous pouvez lire les ACL du fichier avec :
Vous pouvez trouver tous les fichiers avec des ACL avec (c'est trèèès lent) :
Attributs étendus
Les attributs étendus ont un nom et une valeur souhaitée, et peuvent être visualisés en utilisant ls -@
et manipulés en utilisant la commande xattr
. Certains attributs étendus courants sont :
com.apple.resourceFork
: Compatibilité de la fourche de ressources. Visible également sous la formefilename/..namedfork/rsrc
com.apple.quarantine
: MacOS : Mécanisme de quarantaine de Gatekeeper (III/6)metadata:*
: MacOS : diverses métadonnées, telles que_backup_excludeItem
, oukMD*
com.apple.lastuseddate
(#PS) : Date d'utilisation du fichiercom.apple.FinderInfo
: MacOS : Informations du Finder (par ex., étiquettes de couleur)com.apple.TextEncoding
: Spécifie l'encodage de texte des fichiers texte ASCIIcom.apple.logd.metadata
: Utilisé par logd sur les fichiers dans/var/db/diagnostics
com.apple.genstore.*
: Stockage générationnel (/.DocumentRevisions-V100
à la racine du système de fichiers)com.apple.rootless
: MacOS : Utilisé par la Protection de l'intégrité du système pour étiqueter les fichiers (III/10)com.apple.uuidb.boot-uuid
: Marquages de logd des époques de démarrage avec UUID uniquecom.apple.decmpfs
: MacOS : Compression de fichiers transparente (II/7)com.apple.cprotect
: *OS : Données de chiffrement par fichier (III/11)com.apple.installd.*
: *OS : Métadonnées utilisées par installd, par ex.,installType
,uniqueInstallID
Fourches de ressources | ADS macOS
Il s'agit d'une manière d'obtenir des flux de données alternatifs sur les machines MacOS. Vous pouvez enregistrer du contenu à l'intérieur d'un attribut étendu appelé com.apple.ResourceFork à l'intérieur d'un fichier en l'enregistrant dans file/..namedfork/rsrc.
Vous pouvez trouver tous les fichiers contenant cet attribut étendu avec :
decmpfs
L'attribut étendu com.apple.decmpfs
indique que le fichier est stocké crypté, ls -l
rapportera une taille de 0 et les données compressées sont à l'intérieur de cet attribut. Chaque fois que le fichier est accédé, il sera déchiffré en mémoire.
Cet attribut peut être vu avec ls -lO
indiqué comme compressé car les fichiers compressés sont également marqués avec le drapeau UF_COMPRESSED
. Si un fichier compressé est supprimé avec ce drapeau chflags nocompressed </chemin/vers/fichier>
, le système ne saura pas que le fichier était compressé et donc il ne pourra pas le décompresser et accéder aux données (il pensera qu'il est en fait vide).
L'outil afscexpand peut être utilisé pour forcer la décompression d'un fichier.
Binaires universels & Format Mach-o
Les binaires Mac OS sont généralement compilés en tant que binaires universels. Un binaire universel peut prendre en charge plusieurs architectures dans le même fichier.
macOS Universal binaries & Mach-O FormatDumping de mémoire macOS
macOS Memory DumpingFichiers de catégorie de risque Mac OS
Le répertoire /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/System
est l'endroit où sont stockées les informations sur le risque associé aux différentes extensions de fichier. Ce répertoire catégorise les fichiers en différents niveaux de risque, influençant la manière dont Safari gère ces fichiers lors du téléchargement. Les catégories sont les suivantes :
LSRiskCategorySafe : Les fichiers de cette catégorie sont considérés comme complètement sûrs. Safari ouvrira automatiquement ces fichiers après leur téléchargement.
LSRiskCategoryNeutral : Ces fichiers ne comportent aucun avertissement et ne sont pas ouverts automatiquement par Safari.
LSRiskCategoryUnsafeExecutable : Les fichiers de cette catégorie déclenchent un avertissement indiquant que le fichier est une application. Cela sert de mesure de sécurité pour alerter l'utilisateur.
LSRiskCategoryMayContainUnsafeExecutable : Cette catégorie est destinée aux fichiers, tels que les archives, qui pourraient contenir un exécutable. Safari déclenchera un avertissement à moins qu'il puisse vérifier que tous les contenus sont sûrs ou neutres.
Fichiers journaux
$HOME/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2
: Contient des informations sur les fichiers téléchargés, comme l'URL à partir de laquelle ils ont été téléchargés./var/log/system.log
: Principal journal des systèmes OSX. com.apple.syslogd.plist est responsable de l'exécution du journalisation système (vous pouvez vérifier s'il est désactivé en recherchant "com.apple.syslogd" danslaunchctl list
./private/var/log/asl/*.asl
: Ce sont les journaux système Apple qui peuvent contenir des informations intéressantes.$HOME/Library/Preferences/com.apple.recentitems.plist
: Stocke les fichiers et applications récemment consultés via "Finder".$HOME/Library/Preferences/com.apple.loginitems.plsit
: Stocke les éléments à lancer au démarrage du système.$HOME/Library/Logs/DiskUtility.log
: Fichier journal de l'application DiskUtility (informations sur les lecteurs, y compris les clés USB)./Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist
: Données sur les points d'accès sans fil./private/var/db/launchd.db/com.apple.launchd/overrides.plist
: Liste des démons désactivés.
Last updated