Base de connaissances
Tutoriels par OS, outils open source et ressources pour le numérique responsable.
Comprendre macOS : bases et environnement Apple
Évolution du nom et des versions du système d’exploitation d’Apple
| Caractéristique | Mac OS X (2001-2012) | OS X (2012-2016) | macOS (2016-) |
|---|---|---|---|
| Nom officiel | Mac OS X | OS X | macOS |
| Version initiale | Mac OS X 10.0 (Cheetah) | OS X 10.8 (Mountain Lion) | macOS 10.12 (Sierra) |
| Architecture | Unix (Mach Kernel + BSD) | Unification avec iOS | Optimisation pour Apple Silicon |
| Support matériel | Mac Intel (progressivement) | Mac Intel uniquement | Mac Intel + Apple Silicon (M1, M2, M3) |
| Changement majeur | Remplacement de Mac OS 9 | Plus d’intégration avec iOS et iCloud | Transition vers ARM (Apple Silicon) |
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
/Applicationsou dans~/Applications - Les données de l'application peuvent être trouvées dans
/Library/Application Supportpour les applications s'exécutant en tant que root et~/Library/Application Supportpour 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
Extensions 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.
defaults read config.plist/usr/libexec/PlistBuddy -c print config.plsitplutil -p ~/Library/Preferences/com.apple.screensaver.plistplutil -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.
Fichiers de catégorie de risque
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.
Composants essentiels d'un bundle
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.
À 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.
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.
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.
Informations de Base sur les Pkg
Un package d'installation macOS (également connu sous le nom de fichier .pkg) est un format de fichier utilisé par macOS pour distribuer des logiciels. Ces fichiers sont comme une boîte qui contient tout ce dont un logiciel a besoin pour s'installer et fonctionner correctement.
Le fichier du package est en fait une archive qui contient une hiérarchie de fichiers et de répertoires qui seront installés sur la cible. Il peut également inclure des scripts pour effectuer des tâches avant et après l'installation, comme la configuration des fichiers de configuration ou le nettoyage des anciennes versions du logiciel.
Hiérarchie
- Distribution (xml) : Personnalisations (titre, texte de bienvenue...) et scripts/vérifications d'installation
- PackageInfo (xml) : Infos, exigences d'installation, emplacement d'installation, chemins vers les scripts à exécuter
- Liste des éléments (bom) : Liste des fichiers à installer, mettre à jour ou supprimer avec les autorisations de fichier
- Charge utile (archive CPIO compressée gzip) : Fichiers à installer dans l'emplacement d'installation à partir de PackageInfo
- Scripts (archive CPIO compressée gzip) : Scripts d'installation pré et post et autres ressources extraites vers un répertoire temporaire pour l'exécution.
Décompression
Tool to directly get the files inside a package
pkgutil -expand "/path/to/package.pkg" "/path/to/out/dir"
Get the files ina. more manual way
mkdir -p "/path/to/out/dir"
cd "/path/to/out/dir"
xar -xf "/path/to/package.pkg"
Decompress also the CPIO gzip compressed ones
cat Scripts | gzip -dc | cpio -i
cpio -i < Scripts
Inspecter les fichiers .pkg
SuspiciousPackage est un outil utile pour inspecter les fichiers .pkg (installateurs) et voir ce qu'ils contiennent avant de les installer. Ces installateurs ont des scripts bash preinstall et postinstall que les auteurs de logiciels malveillants utilisent généralement pour persister le logiciel malveillant.Pour visualiser le contenu de l'installateur sans le décompresser manuellement, vous pouvez également utiliser l'outil gratuit Suspicious Package.
Suspicious Package https://mothersruin.com/software/SuspiciousPackage/
Informations de base sur les fichiers DMG
Les fichiers DMG, ou images disque Apple, sont un format de fichier utilisé par macOS d'Apple pour les images disque. Un fichier DMG est essentiellement une image disque montable (il contient son propre système de fichiers) qui contient des données de bloc brut généralement compressées et parfois chiffrées. Lorsque vous ouvrez un fichier DMG, macOS le monte comme s'il s'agissait d'un disque physique, vous permettant d'accéder à son contenu.
Hiérarchie
La hiérarchie d'un fichier DMG peut être différente en fonction du contenu. Cependant, pour les DMG d'applications, elle suit généralement cette structure :
- Niveau supérieur : C'est la racine de l'image disque. Il contient souvent l'application et éventuellement un lien vers le dossier Applications.
- Application (.app) : Il s'agit de l'application réelle. Dans macOS, une application est généralement un package qui contient de nombreux fichiers et dossiers individuels qui composent l'application.
- Lien d'applications : Il s'agit d'un raccourci vers le dossier Applications dans macOS. Le but de ceci est de faciliter l'installation de l'application. Vous pouvez faire glisser le fichier .app vers ce raccourci pour installer l'application.
Inspecter les fichiers .dmg
Cet outil permet de monter les images disque Apple (.dmg) pour les inspecter avant d'exécuter quoi que ce soit:
hdiutil attach ~/Downloads/Firefox 58.0.2.dmg
Il sera monté dans /Volumes