La démocratisation de l’écosystème Apple s'est réalisée à tous les niveaux (informatique de gestion, téléphone portable, wearables...) et cela n'a pas été sans éveiller l'intérêt des développeurs de logiciels malveillants. Les équipes de réponse à incident ont donc dû s'adapter afin de pouvoir apporter leur expertise dans les meilleures conditions.
L'objectif de ce document est de présenter une méthodologie permettant de répondre aux besoins inhérents à toute investigation numérique au sein de l'univers macOS.
L'analyse se basera sur des données provenant d'un système de fichiers sous macOS 10.13 et s'effectuera à partir des outils proposés par la distribution Kali.
1. Acquisition de l'image
Il existe plusieurs méthodes permettant d'obtenir une image du système de fichiers : acquisition physique ou logique.
Acquisition physique : Cette acquisition nécessite que le système soit éteint. Si le matériel le permet, il s'agit de la méthode la plus simple et efficace.
Pour cela, il faut démonter le périphérique de stockage et utiliser des outils de type « Copieur/Bloqueur » afin d'en générer une image bit à bit (au format RAW, ou Encase). Cette étape s'effectue sans altérer la preuve, ce qui est le plus important dans une investigation. Voici un bloqueur reconnu dans le domaine : https://www.guidancesoftware.com/tableau/hardware.
Une fois le disque démonté, il est également possible de le connecter à une machine d'analyse et d'utiliser les outils traditionnels tels que FTK Imager ou la commande dd. J'attire votre attention sur le fait que l'accès aux disques durs est de plus en plus difficile, ceux-ci étant souvent soudés.
Si tel est le cas, il est possible d'effectuer une acquisition physique grâce au « Target Disk Mode ». Ce mode permet d'accéder aux données d'une machine reliée par un câble Firewire, Thunderbolt 2, USB-C ou Thunderbolt 3. Il faut juste, au préalable, que la machine cible soit en mode « Target », il faut pour cela appuyer sur la touche [T] durant le démarrage. Il est également nécessaire que le démon « Disk Arbitration » soit désactivé sur la machine de l'analyste. Ce service monte automatiquement les périphériques connectés au système macOS. Il se désactive par la commande :
Une fois cela fait, l'analyste peut connecter la machine à analyser puis effectuer une acquisition du disque visé avec les outils précédemment cités.
Acquisition logique : cette acquisition, moins poussée que la précédente, permet d'effectuer une copie des données présentes sur le système de fichiers. Cette méthode est plus rapide, mais n'offre pas la possibilité de retrouver d'éventuels fichiers supprimés. Celle-ci peut être réalisée grâce aux outils : Carbon Copy Cloner, SuperDuper ou Clonezilla. Le seul prérequis nécessaire étant d’être détenteur des privilèges administrateurs.
2. Analyse des données collectées
Nous ne présenterons que des outils disponibles en source ouverte sur GitHub et fonctionnels au sein d'un environnement Linux.
Comme d’autres éditeurs de système d’exploitation, Apple développe ses propres systèmes de fichiers. Créé en 1985, le système de fichiers HFS a évolué au fil des années pour devenir en 1998 le système de fichiers HFS+. Apple intègre en 2017 un nouveau venu l’APFS qui vise à faire évoluer le système de fichiers historique HFS+ tout en corrigeant les problèmes connus. Seul l’HFS+ encore très largement utilisé sera abordé dans la suite de l’article. Néanmoins, toute acquisition comportant un système de fichiers APFS peut être analysée via le driver « apfs-fuse » disponible sur GitHub : https://github.com/sgan81/apfs-fuse.git.
2.1 Accéder à un système de fichiers HFS+
Le système de fichiers propriétaire de macOS n'est pas pris en charge nativement par les systèmes d'exploitation tels que GNU/Linux ou Windows.
La commande file permet de vérifier le type du système de fichiers de l'image à monter. La commande fsstat de la suite d’outils Sleuthkit peut également être utilisée.
Ensuite, il faut s’assurer d'avoir installé l'outil hfsplus.
Une fois l'installation faite, l'utilitaire mount avec l'argument -t hfsplus permet de monter (de préférence en lecture seulement) le système de fichiers sur notre système GNU/Linux et l'explorer avec vos outils habituels.
2.2 Accéder aux données d'un système de fichiers HFS+ chiffré avec FileVault2
L'analyste peut être confronté à un système de fichiers chiffré à l'aide de FileVault2. La procédure d'accès aux données reste pratiquement identique à celle vue précédemment. Il est nécessaire d'identifier la partition que l'on souhaite analyser ainsi que son secteur de démarrage.
Il faut que l'outil fvdemount soit installé sur votre système GNU/ Linux.
Utilisez-le avec la clé de chiffrement ou le mot de passe pour déchiffrer le volume.
Il suffit de préciser le début de la partition. Dans l'exemple, la partition evidence_HDD.raw1 débute au secteur 40. Chaque secteur occupant 512 octets, l'analyste devra indiquer le déplacement $((40*512)).
L'erreur affichée confirme que nous sommes en présence d'un système de fichiers HFS+ chiffré. L'option -k de fvdemount permet d'indiquer une clé de déchiffrement, l'option -p un mot de passe.
Que faire si vous ne disposez ni de la clé ni du mot de passe ? Ne vous inquiétez pas, tout n'est pas perdu pour autant. La clé peut être extraite à partir d'un dump mémoire effectué par l’outil OSXPMem provenant de la suite Rekall. Ce sujet complexe mériterait d’être abordé au sein d’un article. En utilisant l'outil Volatility, grâce au plugin mac_filevault2, il va être possible de retrouver la clé de chiffrement utilisée. Seul prérequis, le système de fichiers chiffré devait être monté durant la phase de collecte de la mémoire vive, pour que sa clé soit en mémoire.
Une fois la clé retrouvée, celle-ci sera passée en argument à l'outil fvdemount.
Un fichier nommé fvde1, correspondant à la partition HFS+, apparaît sous le point de montage, ici /media/hfs/.
L'accès aux données de cette partition sera possible après avoir connecté le fichier fvde1 sur un nouveau point de montage.
Il est désormais possible d'investiguer les fichiers système et utilisateurs afin d'identifier tout élément anormal.
2.3 Les outils d'investigation
Il n'existe pas d'outil parfait pour mener une analyse ou investigation numérique. Il est donc important de disposer d'une boite à outils, comprenant plusieurs logiciels, et ce même s'ils ont la même vocation. Quelques projets très intéressants, dédiés au forensic de données macOS, ont vu le jour. Le premier, apollo, a été développé par Sarah Edwards de Mac4n6. Elle dispense également des formations de Forensic macOS au sein du SANS Institute.
Fonctionnant sous Python3, apollo analyse les bases de données et fichiers du système afin de fournir un rapport précis de l'utilisation du système.
Le seul prérequis constaté est la présence du module python simplekml.
L'exécution s'effectue de la manière suivante :
Quelques paramètres indispensables sont à fournir :
- le type de sortie désirée par l'analyste ;
- le type de périphérique analysé ;
- la version majeure de la version du système analysé ;
- le chemin du répertoire contenant les modules d'apollo ;
- et enfin la racine du système de fichiers à analyser.
Une fois tous les éléments identifiés, il ne reste plus qu'à exécuter l'outil.
Comme indiqué par l'outil, le rapport de l'analyse se trouve dans le fichier apollo.csv. Attention, les événements présents ne sont pas classés par date d'exécution. Il sera nécessaire d'effectuer le tri avec l'outil sort pour obtenir une chronologie ordonnée. Vous trouverez ci-dessous quelques exemples de données d'utilisation des applications ical, ichat extraites d'un rapport apollo.
Le module Application Usage fournit une journalisation des applications exécutées sur le système.
Le module Application In Focus, permet quant à lui de visualiser, seconde par seconde, les applications utilisées par l'utilisateur. Voici les événements enregistrés alors que je rédigeais ce document. Vous pouvez constater que je me sers de Safari, et que j'affiche le rapport apollo avec iterm2.
Si vous souhaitez aller plus loin, une présentation de cet outil est disponible à l'adresse : https://github.com/mac4n6/Presentations/blob/master/LaunchingAPOLLO/LaunchingAPOLLO.pdf.
Un autre outil spécialisé dans l'investigation numérique de système macOS, mac_apt pour « macOs Artifact Processing Tool » est téléchargeable sur : https://github.com/ydkhatri/mac_apt/releases.
Fonctionnant comme apollo, mac_apt parcourt l’arborescence du système de fichiers afin d'analyser les données présentes et d'en extraire les artefacts. L'annexe contient une liste non exhaustive de ces artefacts. Le rapport final peut être généré au format XLSX, CSV ou bien stocké dans une base de données SQLite.
Conclusion
J'espère avoir réussi, au travers de cet article, à démystifier les différentes étapes permettant de préparer une investigation numérique sur un système macOS.
Pour plus de détails sur chacune des étapes, je vous invite à lire le livre : « OS X Incident Response: Scripting and Analysis De Jaron Bradley ».
Annexe
Vous trouverez ci-dessous une liste succincte d'emplacements de fichiers donnant accès à des données primordiales lors d'une investigation numérique :
- /var/db/.AppleSetupDone : ce fichier est vide par défaut ; sa date de création correspond à la date d'installation du système ;
- /System/Library/CoreServices/SystemVersion.plist : fichier stockant la version du système d'exploitation installée ;
- /etc/localtime (ex. : -> /var/db/timezone/zoneinfo/Europe/Paris) : fichier permettant de déterminer le fuseau horaire utilisé sur le système ;
- /private/var/networkd/netusage.sqlite : base stockant les données relatives à l'usage du réseau ;
- ~/Library/Keychains et /Library/Keychains/ : emplacements stockant les keychains du système et des utilisateurs.
Et pour finir, voici quelques emplacements référençant les applications exécutées lors du démarrage ou lors de la connexion d'un utilisateur :
- /System/Library/LaunchAgents/, ~/Library/LaunchAgents/ et /Library/LaunchAgents/ ;
-
/System/Library/LaunchDaemons/ et /Library/LaunchDaemons/ ;
- /System/Library/StartupItems/ et /Library/StartupItems/.
Une liste plus exhaustive de ces artefacts est disponible sur GitHub : https://github.com/pstirparo/mac4n6.
Remerciements
Je voudrais remercier Alain Menelet pour ses précieux conseils, et avoir su magnifier cet article, ainsi que mon épouse pour ses relectures et encouragements.