Dans un précédent article, nous avons décortiqué le fonctionnement et les particularités du système de fichier NTFS puis nous nous sommes intéressés en détail au métafichier $MFT, son fonctionnement interne, ses entrées ($MFT entries) et les attributs composant ces entrées. Dans cet article, nous allons aborder l’extraction, le parsing et l’analyse du métafichier $MFT.

Avant de nous attarder sur l’extraction et l’analyse du métafichier $MFT, nous allons commencer par aborder les types et formats d’image disque.

L’image disque contenant le métafichier $MFT que nous allons analyser dans cet article est issu du challenge Pwn-DC) de la plateforme d’apprentissage et de Capture The Flag CyberDefenders.

Image disque de type physique et de type logique

Une image disque n’est pas seulement une copie des fichiers résidant sur un disque complet ou dans une partition, mais une copie conforme d’un ou de plusieurs secteurs bit par bit en du premier au dernier secteur.

Le terme image disque peut désigner une image disque de type physique ou de type logique. Une image disque de type physique désigne une réplique précise bit par bit d’un disque complet alors qu’une image disque de type logique est une réplique bits par bit d’une certaine partition seulement d’un disque complet.

La différence réside dans le fait qu’une image disque de type physique donne accès à toutes les partitions y compris les espaces non alloués de la totalité du disque alors qu’une image disque de type logique donne accès uniquement à une certaine partition du disque complet.

L’image disque contenant le métafichier $MFT que nous allons analyser dans cet article a été capturée sur une machine Windows server 2016 en utilisant l’outil FTK Imager. Cette image ne représente pas une capture du disque complet de la machine, mais uniquement celle de la partition contenant le volume dans lequel se trouve le système de fichier NTFS du système d’exploitation Windows server 2016, ce qui en fait une image disque de type logique. La capture d’une image disque en utilisant l’outil FTK Imager s’accompagne en plus du fichier contenant l’image disque capturé, d’un fichier de log journalisant des informations concernant l’image disque.

Dans le fichier de log accompagnant l’image disque que nous allons analyser dans cet article, nous retrouvons l’information confirmant le type logique de l’image disque.

Avant toute action sur l’image disque, nous allons vérifier que l’image disque en notre possession est bien l’image disque qui est prétendu nous être fourni. Pour s’assurer de cela, nous allons calculer l’empreinte cryptographique de l’image disque dont nous sommes en possession et le comparer à l’empreinte cryptographique indiquée dans le fichier de journalisation qui a été fourni avec l’image disque.

L’empreinte cryptographique calculée correspond bien à celle présente dans le fichier de journalisation accompagnant l’image disque. Cela prouve que nous sommes bien en possession de l’image disque dont nous prétendons être en possession et nous pouvons maintenant commencer à réaliser des actions sur l’image disque.

Formats d’image disque

Le fichier contenant une image disque capturée peut être de différents formats selon les formats supportés par l’outil utilisé pour réaliser la capture de l’image disque.

Le format RAW

Une image disque au format RAW est un tas de données acquises d’une source de preuve et ne contenant pas de métadonnées supplémentaires outre les informations concernant le fichier contenant l’image acquise comme le nom, la taille, l’horodatage et des informations concernant les inodes/secteurs de l’image.

Les formats “forensic” ou conteneurs de preuve

Plusieurs manques avec le format d’image RAW ont mené à la création des formats d’image appelés “forensic formats”. En réalisant une acquisition d’une source de preuve pour investigation, il existe des métadonnées sur l’investigation comme l’identité de l’investigateur, les détails concernant la source de preuve, l’empreinte cryptographique de l’image… qui sont utiles à stocker. En complément de ces informations, il peut y avoir besoin de compresser ou de chiffrer l’image acquise. Les formats d’image disque “forensic” ont été créés pour répondre à ces besoins et faciliter l’implémentation de ces fonctionnalités. Ces formats que l’on peut aussi qualifier de conteneurs de preuve sont des structures de données stockant en supplément de l’image disque acquise, des métadonnées comme des informations sur le contexte de l’acquisition, le temps et la durée de l’acquisition, la taille de l’image acquise, les probables erreurs rencontrées durant l’acquisition, l’empreinte cryptographique de l’image…

Le format EWF (Expert Witness Format - ASR Data Format (ASR02))

Le format EWF (Expert Witness Format) est un format aspirant à être un format standard du domaine de l’acquisition d’image disque ayant été développé à l’origine par ASRDATA pour son outil d’investigation numérique SMART qui est maintenant commercialisé sous le nom Encase.

Le format Encase EWF-E01 ou Expert Witness Compression Format (fichiers .E0x)

Opentext, anciennement Guidance Software, éditeur de la suite d’outils Encase forensic, a créé en collaboration avec ASRDATA, le format propriétaire Encase EWF supportant le stockage des métadonnées, la compression, le chiffrement, la génération d’empreintes cryptographique des images disque et le fractionnement des fichiers d’images disque volumineux en plusieurs fichiers de tailles moins conséquentes. Plusieurs déclinaisons de ce format apportant des lots de fonctionnalités supplémentaires ont ensuite vu le jour. Un travail de rétro-ingénierie a été réalisé sur ce format et a permis la création de l’outil/librairie libewf en 2006 par Joachim Metz permettant la lecture et l’écriture des fichiers au format Encase EWF et de certaines de ces déclinaisons.

Le format SMART EWF-S01 ou ASR Data Smart Format (fichiers .s01)

Le format propriétaire EWF-S01 se basant aussi sur le format standard EWF ASR02 dispose des mêmes fonctionnalités que le format EWF-E01 et était initialement utilisé par l’utilitaire d’acquisition d’image disque SMART for linux. Une implémentation propriétaire de ce format portant le nom FTK Smart est faite dans l’outil FTK Imager.

Le format AFF (Advanced Forensic Format)

Le format d’image ouvert AFF a été développé pour disposer d’une alternative aux formats propriétaire. En complément des fonctionnalités offertes par les formats d’images disque “forensic”, ce format apporte le bénéfice de permettre un stockage étendu des métadonnées, la signature des images disque en utilisant des certificats au format standard X.509 et une moindre occupation d’espace disque des images disque. Sa version 4 (AFF4), se base sur le modèle RDF et s’apparente plus à un système complet de gestion de preuves qu’a un format d’image disque.

Les formats d’image disque les plus courants sont les formats RAW et Encase EWF.

Disclaimer

Dans le cadre d’une investigation, les images disque constituent des éléments de preuve devant rester intacts. Pour préserver la preuve, il ne faut donc JAMAIS accéder au contenu ou monter l’image disque en mode lecture-écriture au risque d’altérer la preuve, ce qui aura pour conséquence de fausser les analyses et rendre la preuve et les rapports d’investigation irrecevable devant une cour de justice par exemple.

Il convient d’accéder au contenu de l’élément de preuve au travers d’un bloqueur d’écriture physique ou en le montant en mode lecture seule grâce à solution logicielle. Dans le cas où un accès en lecture et écriture à l’élément de preuve serait nécessaire, il convient de réaliser une seconde copie de l’élément de preuve sur laquelle les opérations seront réalisées sans risquer d’altérer l’élément de preuve original.

L’analyse d’image disque sous UNIX/Linux

Virtual File System

Les noyaux Unix et Linux implémentent la fonctionnalité VFS (Virtual File Sytem), une couche logicielle permettant la coexistence de plusieurs systèmes de fichiers d’une manière transparente pour les processus utilisateurs. Cette fonctionnalité, unifie les ressources contenues dans les différents périphériques de stockage dans une seule arborescence quel que soit le système de fichiers présent sur ces périphériques. Grâce à cette fonctionnalité, différents systèmes de fichiers comme NTFS, FAT*, EXT*, encryptfs … venant de périphériques de stockage ou d’images disque, peuvent être montés sous des répertoires permettant l’accès à leurs contenus.

Les outils d’analyse sous systèmes UNIX

Dans les systèmes UNIX, différents outils peuvent permettre l’accès et l’analyse du contenu d’une image disque.

La suite d’outils SleuthKIT / Autopsy

La suite d’outils The Sleuth Kit ou TSK, est une collection d’outils Open Source d’analyse de système de fichiers et de volumes en ligne de commande dans les systèmes UNIX. Autopsy est une interface graphique pour les outils d’analyse de la suite TSK utilisable dans les systèmes Windows/Linux/Mac. Ensemble, TSK et Autopsy permettent de disposer d’un outil avec un grand nombre des mêmes fonctionnalités que celles proposé par les outils commerciaux d’analyse des systèmes de fichiers.

Montage des images disque au format Encase EWF et RAW sous UNIX

Différentes méthodes et outils permettent le montage et l’accès au contenu d’une image disque au format EWF Encase ou RAW sous UNIX.

Ewftools

Issue du projet libewf, la suite d’outils ewftools offre plusieurs outils permettant de recueillir des informations et d’agir sur les fichiers au format EWF.

La commande ewfinfo permet d’acquérir des informations sur une image disque au format EWF de la façon suivante :

Nous retrouvons la même information concernant le format de l’image disque en utilisant la commande hexedit dont le résultat nous indique un Magic Number en hexadécimal 45 56 46 [EVF](Encase Virtual Format) correspond au format d’image disque EWF.

De la même manière, la commande img_stat de la suite d’outils TSK permet d’obtenir des informations sur une image disque comme suit :

La commande ewfmount permet le montage de l’image disque au format EWF vers le format RAW en créant un système de fichiers FUSE contenant une image disque au format RAW représentant un volume NTFS comme suit :

L’image disque au format EWF a donc été rendu accessible comme volume NTFS dans le dossier content et est bien présent dans la liste des éléments montés sur la machine.

Les outils ne supportant pas directement le format d’image disque EWF peuvent maintenant être exécutés sur le volume NTFS. Par exemple, nous pouvons utiliser les outils de la catégorie " File System" de TSK pour recueillir des informations sur le volume NTFS.

La commande fsstat permet l’affichage d’informations globales sur le système de fichiers du volume.

La commande fls permet l’affichage des fichiers/répertoires présents à la racine du système de fichiers. Nous retrouvons dans le résultat de la commande, les différents métafichiers du système de fichier comme $MFT, $LOGFILE, $BOOT…

En montant l’image disque au format RAW représentant le volume NTFS contenu dans l’image disque, les commandes de la catégorie “File System” de FTK, capables d’agir sur et d’accéder au contenu d’un fichier RAW ont permis de recueillir des informations sur le volume NTFS.

L’utilisation d’outils d’analyse, investigation autre que les outils de la suite d’outils TSK, peuvent nécessiter l’accès à l’image disque de la même manière qu’un disque physique ou à son contenu dans un répertoire du système de fichiers de la machine d’analyse UNIX.

Différents moyens permettent de monter un fichier RAW représentant un volume NTFS dans un répertoire du système de fichiers de la machine d’analyse UNIX ou de le rendre accessible de la même manière qu’un disque physique.

Loop devices, Losetup & Mount

Losetup est un utilitaire permettant la mise en place et la gestion de loop devices sous UNIX.

Les loop devices sont des pseudos-devices permettant de rendre accessible une image disque accessible en tant que block-devices (disque physique). En procédant comme suit, nous rendons l’image disque au format RAW accessible en lecture seule pour les outils permettant d’accéder et d’agir sur les disques physiques grâce au loop device /dev/loop6 :

Le contenu de l’image disque peut maintenant être accédé de la même manière que le contenu d’un disque physique en le montant pour rendre accessible son contenu dans un répertoire du système de fichiers de la machine UNIX d’analyse de la manière suivante :

mount -t ntfs-3g -o ro,show_sys_files,stream_interface=windows content/ewf1 dcontent/

Les différents arguments de la commande mount disposent des significations suivantes :

streams_interface : permet l’accès aux ADS (Alternate Data Streams) des entrées $MFT

show_sys_files: permet l’accès aux fichiers et dossiers du système de fichiers qui sont par défaut cachés

ro (read only) : permet un montage du disque en mode lecture seule

Le fichier /proc/filesystems recensant les systèmes de fichier supportés par le noyau de la machine permet au système d’essayer de deviner le système de fichiers du disque à monter quand il n’est pas fourni avec l’option -t au moment de l’exécution de la commande mount.

Les informations suivantes confirment un montage du disque dans le répertoire dcontent du système de fichiers de la machine d’analyse :

kpartx & mmls

Dans l’exemple précédent, dans un premier temps, nous avons rendu l’image disque au format EWF accessible au format RAW, puis accessible de la même manière qu’un disque physique en utilisant un pseudo device et nous avons finis par monter ce pseudo-disque pour rendre accessible son contenu dans un répertoire du système de fichiers de la machine d’analyse.

La démarche est identique pour l’accès au contenu d’une image disque disposant d’un format original RAW, outre la première étape consistant à utiliser la commande ewfmount pour rendre l’image disque au format EWF accessible au format RAW.

Dans le cas d’une image disque de type physique contenant la capture d’un disque complet et donc de plusieurs partitions, l’outil kpartx permet la lecture de la table de partition de l’image disque, l’identification des différentes partitions contenues dans l’image disque, la création d’un loop device et la création de mapper device rendant accessible chaque partition de l’image disque. De la même manière, la commande mmls de la suite d’outils TheSleuthKIT permet une visualisation de la table de partition d’une image disque de type physique contenant la capture d’un disque physique entier.

Extraction du métafichier $MFT d’une image disque

Disposant de l’image disque et pouvant accéder à son contenu, des fichiers peuvent en être extrait et analysés dans le cadre de l’investigation.

L’outil icat de la suite d’outils TSK permet l’affichage du contenu d’un fichier contenu dans l’image disque en fournissant son adresse de type meta data structure address. Meta data structure address est un terme générique utilisé par les outils de la suite TSK pour désigner les structures de données stockant les métadonnées liées aux fichiers dans différents systèmes de fichiers. Cette adresse est visible en deuxième colonne du résultat de la commande fls.

En fournissant l’adresse de type meta data structure du métafichier $MFT du volume NTFS, son contenu peut être accédé et redirigé dans un fichier comme suit :

icat content/ewf1 0-128-6 > MFT

À l’aide d’un éditeur hexadécimal, nous pouvons confirmer que le fichier dans lequel le contenu du métafichier $MFT a été redirigé avec la commande icat est bien un fichier contenant les entrées $MFT du volume NTFS. Le fichier commence par FILE0 représentant la signature d’une entrée $MFT

Sans utiliser les outils de la suite TSK, l’image disque étant montée et son contenu accessible dans le répertoire dcontent de la machine d’analyse, les outils natifs sous UNIX peuvent servir à accéder au contenu des fichiers ou à réaliser des copies des fichiers.

Nous remarquons, en listant le contenu du dossier dcontent, la présence des fichiers réguliers et des fichiers qui sont cachés par défaut, mais le métafichier $MFT est absent du listing.

Cela s’explique par un dysfonctionnement connu se traduisant par la non-présence du métafichier $MFT du volume NTFS quand un listing du répertoire contenant le contenu de l’image disque est réalisé. Les détails concernant ce dysfonctionnement sont disponibles dans cette discussion.

Malgré ce dysfonctionnement, le métafichier $MFT est tout de même présent et peut être copié de la manière suivante :

Après copie du métafichier $MFT malgré le fait qu’il ne soit pas visible quand un listing des fichiers du répertoire est réalisé, à l’aide d’un éditeur hexadécimal, nous remarquons la présence de la signature FILE dans l’entête du fichier ayant été copié. Ce qui confirme la copie d’un fichier contenant des entrées $MFT

Montage d’un disque au format VMDK sous UNIX

Comme une image disque au format Encase EWF ou Raw, le fichier disque au format vmdk d’une machine virtuelle peut être accédé et son contenu peut être analysé sous UNIX. Nous disposons du fichier disque au format vmdk d’une machine virtuelle Windows 7 que nous allons monter de la façon suivante :

Dans un premier temps, des informations sur le fichier disque peuvent être collectées avec la commande vmdkinfo issue de la librairie libvmdk

En visualisant le fichier avec un éditeur hexadécimal, le Magic number 4B 44 4D [KDM] du fichier nous confirme qu’il s’agit bien d’un fichier vmdk

Le disque au format vmdk peut alors être rendu accessible au format RAW avec la commande vmdkmount comme suit :

De ce fait, il peut être monté et rendu accessible de la même manière qu’un disque physique avec la commande losetup créant un pseudo device

Rendu accessible de la même manière qu’un disque physique, la commande mmls permet la lecture de la table de partition de ce pseudo disque physique

On remarque alors la présence de plusieurs partitions, dont 2 (offset 2048 et offset 206848) contenant un volume NTFS.

Finalement, des device mapper permettant l’accès au contenu de chaque partition du disque peuvent être créés avec kpartx

Les 2 partitions du pseudo disque contenant un volume NTFS sont maintenant accessible grâce aux device mapper /dev/mapper/loop6p1 et /dev/mapper/loop6p2

Ces device mapper peuvent ensuite être montés pour permettre l’accès à leurs contenus dans des répertoires du système de fichiers de la machine d’analyse

mount /dev/mapper/loop6p2 Win7Content/ -o ro,loop,show_sys_files,streams_interfaces=windows

L’analyse d’image disque sous Windows

Les outils d’analyse sous Windows

FTK (Forensic Toolkit) Imager

FTK Imager édité par Exterro, anciennement Access Data est un outil en interface graphique gratuit permettant l’acquisition d’image disque/mémoire RAM, leur montage en tant que source de preuve et leur analyse

Arsenal Image Mounter

Arsenal Image Mounter est un outil en interface graphique sous mode de licence Freemium permettant le montage en tant que disque physique sous Windows de divers formats d’image disque contenant des volumes de différents systèmes de fichiers.

Montage d’image disque et extraction du métafichier $MFT

FTK Imager permet le montage et l’accès au contenu des images disque dans les formats RAW, EWF, VMDK et AFF en opérant de la manière suivante :

Parsing du métafichier $MFT

Après extraction du métafichier $MFT, différents outils peuvent servir à parser son contenu.

MFTECmd

MFTECmd est un parser de métafichiers du système de fichiers NTFS de la suite d’outil Zimmerman’sTools et faisant partie des modules de l’outil de collecte d’artefacts Kroll Artifact Parser and Extractor (KAPE). La documentation détaillée sur le fonctionnement de l’outil MFTECmd est disponible ici et là.

Cet outil est capable de parser les métafichiers suivants :

  • $MFT
  • $Boot
  • $J
  • $SDS
  • $l30
  • $LogFile

Et s’utilise ainsi dans les systèmes Windows pour parser le métafichier $MFT :

Le parsing du métafichier $MFT fournis en sortie, un fichier csv contenant les différentes entrées du métafichier $MFT et les informations présentes dans leurs attributs. Tout outil permettant la lecture de fichiers csv peut être utilisé pour analyser le contenu de ce fichier csv et donc, par conséquent du métafichier $MFT.

AnalyzeMFT

AnalyzeMFT est un outil écrit en python permettant, en fournissant un métafichier $MFT, d’en parser les différentes entrées et de fournir un fichier csv ou bodyfile en sortie permettant une analyse du contenu du métafichier $MFT. Cet outil peut être utilisé comme suit pour parser un métafichier $MFT :

python3 analyzeMFT.py -f MFT -o ParsedMFT.csv

En affichant les premières lignes du fichier csv , nous remarquons la présence des premières entrées d’un métafichier $MFT qui sont réservées aux métafichiers du système de fichiers ($MFT, $MFTMirr, $ LogFile, $Volume …)

Mft2Csv

Mft2Csv est un outil AutoIT permettant de parser et journaliser des informations dans un fichier csv en prenant en entrée, différents éléments pouvant contenir un métafichier $MFT :

  • Une image disque de type physique ou logique au format RAW
  • Un métafichier $MFT déja extrait
  • Un partage réseau
  • Un système actif
  • Des clichés instantanés Shadow copies
  • Une capture mémoire

L’outil s’utilise donc comme suit en ligne de commande ou en interface graphique :

.\Mft2Csv.exe /MftFile:C:\Users\JUNIOR\Desktop\MFT

En fin d’exécution, plusieurs fichiers sont générés, dont des fichiers csv contenant des détails sur les différentes entrées $MFT

Log2timeline

Log2timeline est un composant de la suite d’outils plaso permettant la création de “super timeline”. Le terme “super timeline” désigne chronologie étendue des actions survenues sur une machine et comprenant des événements horodatés (Logs, historique/cache de navigateur, $UsnJrnl:$J, prefetch, $MFT, fichiers .lnk ….).

Dans notre cas, nous générons une chronologie des actions survenues aux entrées du métafichier $MFT de la sorte :

sudo docker run -v ./data/:/data log2timeline/plaso log2timeline --storage-file /data/evidences.plaso /data/MFT

Le résultat de l’exécution de log2timeline est le fichier evidences.plaso, un objet de stockage de type plaso qui est en réalité une base de données SQLite3 contenant les informations permettant d’établir la chronologie étendue

La chronologie est ensuite générée en extrayant les informations de l’objet de stockage plaso à l’aide de la commande psort dans différents format (csv, json, base opensearch, xlsx..)

Ici, une chronologie au format csv est généré et peut être analysé en utilisant un outil de lecture de fichier csv

sudo docker run -v ./data/:/data log2timeline/plaso psort -w /data/mfttimeline.csv /data/evidences.plaso

Analyse du métafichier $MFT

Dépendamment de l’outil de parsing utilisé, le fichier résultant contenant les entrées du métafichier $MFT à analyser peut être de différents formats (csv, json, bodytime…). Dans cette section, différents outils permettant l’analyse du fichier résultant dans différents formats seront utilisés.

Dans le cas d’un fichier résultant au format csv, tout outil permettant la lecture de fichier au format csv peut servir à analyser le contenu du fichier résultant.

Microsoft Excel, LibreOffice Calc

Le contenu peut être analysé de la manière suivante en important le fichier csv :

TimeLineExplorer

En complément des outils classiques permettant la lecture de fichiers csv, TimelineExplorer est un outil de la suite d’outil Zimmerman’sTools permettant la lecture des fichiers au format csv, xsl(x) et disposant de fonctionnalités permettant de filtrer, trier et regrouper les données.

MFTExplorer

MFExplorer est un programme disposant d’une interface graphique permettant de naviguer dans le contenu du métafichier $MFT de la manière qu’avec l’explorateur de fichier Windows.

Bodyfile & Mactime

En disposant d’un fichier résultant au format body, l’outil mactime permet la génération d’une chronologique ASCII de l’activité sur le système de fichiers.

De la manière suivante, un résultat de l’activité sur le système de fichiers au format bodyfile peut être généré avec l’outil fls puis, une chronologie de l’activité sur le système de fichiers peut être généré avec mactime à partir du fichier bodyfile.

fls -r -m ewf1 ewf1 > ewf1.body
mactime -b ewf1.body > ewf1.timeline

Le résultat de l’exécution de la commande mactime est un fichier texte disposant du format suivant permettant d’identifier le type d’activité au format MACB (Création, Accès, Modification…) et la date à laquelle cette activité a eu lieu sur les fichiers/répertoires du système de fichiers.

Mactime output example, wiki.sleuthkit.orgMAC Meaning by File System, wiki.sleuthkit.org

En accédant au fichier ewf1.timeline résultant de la commande mactime, nous remarquons ainsi que le fichier jinan.s@cyberdefenders.org.pst et son entrée correspondant dans le métafichier $MFT ont été modifiés le 20/11/2021 à 19:28:32 UTC(activités M et C)

Pandas & python

La bibliothèque Python d’analyse et de manipulation de données Pandas permet l’analyse du contenu d’un métafichier $MFT en convertissant les différentes entrées $MFT en dataframe. Cette méthode est détaillée dans l’article disponible dans ce lien.

Conclusion

Dans cet article, nous nous sommes intéressé aux types et aux formats d’image disque puis, nous avons monté des images disque permettant l’accès à leurs contenus, l’extraction du métafichier $MFT, son parsing et son analyse en utilisant divers outils. Dans le cadre d’une investigation numérique, une image disque acquise peut être accédé et analysée de la sorte avec une machine d’analyse sous UNIX ou Windows.

Dans un prochain article, nous réaliserons une analyse approfondie spécifique aux entrées $MFT.

Références

https://wiki.sleuthkit.org/

https://wiki.harvard.edu/confluence/download/attachments/204385887/DiskImageFormatMatrixSummary.pdf?

https://www.packtpub.com/product/windows-forensics-cookbook/9781784390495

https://nostarch.com/forensicimaging

https://plaso.readthedocs.io/