<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
* **/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 comme `16777223 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écutant `cat /.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 **sandbox** 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`).
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.
Pour extraire les bibliothèques du fichier unique cache partagé dylib, il était possible d'utiliser le binaire [dyld\_shared\_cache\_util](https://www.mbsplugins.de/files/dyld\_shared\_cache\_util-dyld-733.8.zip) qui pourrait ne pas fonctionner de nos jours, mais vous pouvez également utiliser [**dyldextractor**](https://github.com/arandomdev/dyldextractor):
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 :
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.
Il existe des drapeaux qui peuvent être définis dans les fichiers et qui feront que le fichier se comportera différemment. 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`
* **`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.
Les **ACL** de fichiers contiennent des **ACE** (entrées de contrôle d'accès) où des permissions 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`.
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 :
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**.
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é, ce drapeau avec `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).
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**.
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.
* **`$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`** : Journal principal des systèmes OSX. com.apple.syslogd.plist est responsable de l'exécution du journal système (vous pouvez vérifier s'il est désactivé en recherchant "com.apple.syslogd" dans `launchctl list`.