Accès aux fichiers
Table de fichiers maîtres ($MFT)
Fiche $MFT : enregistrements FILE, horodatages $SI et $FN, données résidentes, entrées supprimées, numéros de séquence, timestomping et MFTECmd.
- Emplacement
- C:\$MFT
- Prouve
- Un fichier ou dossier a existé à un chemin, avec tailles, dates et souvent suppression
- Horodatages
- $SI et $FN contiennent chacun quatre FILETIME (MACB), UTC, précision 100 ns ; heure d'accès parfois désactivée ou différée jusqu'à 1 heure
- Rétention
- Enregistrements libérés réutilisés : les métadonnées supprimées durent de quelques minutes (disque actif) à des années (volume calme) ; la table ne rétrécit pas
- Accès
- Administrateur ; impossible à ouvrir via l'API Windows : collecter via NTFS brut (KAPE, Velociraptor, FTK Imager) ou une image disque
- Type
- Fichier / système de fichiers
- Windows
- XPVista / 78 / 8.11011
- Cible KAPE
- $MFT
- Velociraptor
- Windows.Triage.Targets:$MFT
Outils
Comparer tous les outilsPrésentation
La table de fichiers maîtres est le fichier de métadonnées central de tout volume NTFS. Chaque fichier et dossier, y compris les fichiers système NTFS eux-mêmes, est décrit par au moins un enregistrement FILE, en principe de 1 024 octets. Un enregistrement contient un en-tête et une liste d'attributs : $STANDARD_INFORMATION ($SI), un ou plusieurs $FILE_NAME ($FN), $DATA et, pour les dossiers, les attributs d'index $I30. Comme elle décrit tout le volume, la $MFT est généralement le premier artefact du système de fichiers analysé dans un dossier, et la colonne vertébrale de toute chronologie.
Emplacement
| Version de Windows | Chemin | Remarques |
|---|---|---|
| XP à 11 (tout volume NTFS) | <racine du volume>\$MFT | Enregistrement 0 du volume ; caché, verrouillé par le système de fichiers |
| XP à 11 | <racine du volume>\$MFTMirr | Enregistrement 1 : copie des quatre premiers enregistrements seulement, pas une sauvegarde de la table |
Les premiers enregistrements sont fixes : 0 $MFT, 1 $MFTMirr, 2 $LogFile, 3 $Volume, 5 dossier racine, 6 $Bitmap, 7 $Boot, 9 $Secure, 11 $Extend (qui contient notamment $UsnJrnl). Chaque volume NTFS connecté, clés USB comprises, possède sa propre $MFT.
Ce que l'artefact prouve
- Existence et chemin : un fichier ou dossier a existé sous ce nom dans ce dossier parent, y compris s'il est supprimé, tant que l'enregistrement n'a pas été réutilisé.
- Chronologie : deux jeux de quatre horodatages par fichier (voir plus bas), plus les tailles et les attributs.
- Suppression : un enregistrement dont l'indicateur « en usage » est à zéro décrit un fichier supprimé ; les métadonnées restent lisibles jusqu'à sa réallocation.
- Contenu des petits fichiers : les données résidentes permettent de récupérer intégralement de petits fichiers (scripts, notes, flux
Zone.Identifier) directement dans l'enregistrement. - Manipulation d'horodatages : les écarts $SI/$FN et les fractions de seconde à zéro orientent vers du timestomping.
- Elle ne prouve pas une exécution, l'identité du créateur ni l'ouverture par un utilisateur. Le propriétaire se trouve dans $Secure:$SDS ; l'historique dans le journal USN.
Champs clés
| Champ | Signification |
|---|---|
| Signature | FILE pour un enregistrement valide (BAAD signale un enregistrement en échec de vérification) |
| Numéro d'entrée | Position dans la table ; avec le numéro de séquence, il forme la référence de fichier |
| Numéro de séquence | Incrémenté à chaque réutilisation ; s'il ne correspond pas à une référence stockée, le fichier d'origine a disparu |
| Indicateurs | 0x01 en usage, 0x02 dossier ; indicateur absent = enregistrement supprimé |
Numéro de séquence $LogFile (LSN) | Dernière transaction de $LogFile ayant touché l'enregistrement |
$STANDARD_INFORMATION | Quatre horodatages, attributs DOS, Security ID (index dans $Secure), USN de la dernière modification |
$FILE_NAME | Nom, référence du dossier parent, quatre horodatages, tailles ; plusieurs possibles (nom long, nom court 8.3, liens physiques) |
$DATA | Contenu résident (petits fichiers) ou liste de clusters ; les flux $DATA nommés sont des flux de données alternatifs |
Horodatages
$SI et $FN contiennent chacun quatre valeurs FILETIME en UTC, à 100 nanosecondes près : création, modification, modification de l'enregistrement, accès (MACB).
| Horodatage | Positionné quand | Format | Pièges |
|---|---|---|---|
| Création / modification / changement d'enregistrement $SI | Création, modification du contenu, modification des métadonnées | FILETIME, UTC | Modifiables en mode utilisateur via SetFileTime : cible privilégiée du timestomping |
| Accès $SI | Lecture | FILETIME, UTC | Désactivé par défaut de Vista à Windows 10 1709 (NtfsDisableLastAccessUpdate) ; depuis 1803, la valeur est « gérée par le système » et peut être active ou non. Même actif, NTFS peut différer l'écriture sur disque jusqu'à une heure |
| Horodatages $FN | Surtout à la création du nom : création, copie, déplacement vers un autre volume, certains renommages | FILETIME, UTC | Non synchronisés avec $SI ; ils peuvent avoir des heures de retard, un écart seul ne prouve donc pas une falsification |
| Fichier copié | La copie reçoit une nouvelle date de création mais garde la date de modification de la source | FILETIME, UTC | Modification antérieure à la création : normal pour une copie, pas une falsification |
Vérifiez le réglage des dates d'accès sous HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisableLastAccessUpdate : 1 signifie désactivé sur les anciennes versions ; 0x80000000 à 0x80000003 sont les nouvelles valeurs gérées par l'utilisateur ou le système (valeur impaire = désactivé).
Rétention et effacement
- La table grandit mais ne rétrécit pas. Les enregistrements libérés sont réutilisés pour de nouveaux fichiers : les métadonnées d'un fichier supprimé survivent donc une durée imprévisible, de quelques minutes sur un disque système chargé à des années sur un volume de données peu actif.
- À chaque réutilisation, le numéro de séquence augmente ; les références portant l'ancien numéro (slack
$I30, journal USN, fichiers LNK) désignent le fichier précédent. - Les outils d'effacement écrasent le contenu mais laissent souvent des enregistrements renommés ou remis à zéro ; des outils comme
sdeleterenomment le fichier plusieurs fois avant de le supprimer, ce qui produit des rafales de renommages dans le journal USN. - Le formatage crée une nouvelle
$MFT; d'anciens enregistrements peuvent encore être carvés dans l'espace non alloué.
Collecte
- Cible KAPE :
$MFT(également incluse dans la cible composéeFileSystem) - Velociraptor (
Windows.Triage.Targets) :$MFT - Commandes natives : la
$MFTne peut pas être ouverte via l'API Windows. Utilisez un outil d'accès NTFS brut (KAPE, Velociraptor, FTK Imager) ou une image disque. Les commandes natives ne donnent que le contexte :
fsutil fsinfo ntfsinfo C:
fsutil behavior query disablelastaccess
reg query "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v NtfsDisableLastAccessUpdate
fsutil fsinfo ntfsinfo indique la taille d'un enregistrement FILE et la taille actuelle de la $MFT.
Outils d'analyse
- MFTECmd (Eric Zimmerman) :
MFTECmd.exe -f E:\C\$MFT --csv E:\outproduit une ligne par enregistrement avec les dates $SI et $FN,InUse,SI<FN,uSecZeros,Copied,SecurityIdet le contenu résident desZone.Identifier.--de 5détaille un enregistrement ;--bodyproduit un bodyfile ;--rsrécupère des enregistrements dans le slack. - Velociraptor :
Windows.NTFS.MFTanalyse la table en direct ou hors ligne ;Windows.Timeline.MFTajoute des indicateurs d'anomalie ;Windows.NTFS.Recoverextrait un fichier supprimé par son numéro d'enregistrement. - dfir_ntfs (Maxim Suhanov, open source) :
ntfs_parser --mftexporte les enregistrements en CSV ;--all-mfttravaille sur une image brute. - The Sleuth Kit :
istat,fls -reticatinspectent les enregistrements et récupèrent des fichiers résidents ou non alloués depuis une image. - Plaso : le parseur
mftverse chaque horodatage $SI et $FN dans une super-chronologie.
Conseils d'investigation
- Filtrez sur
SI<FN= true etuSecZeros= true : une création $SI antérieure à la création $FN, avec des fractions.0000000, est le schéma classique du timestomping. Confirmez avec le journal USN (BasicInfoChange) et $LogFile avant de le rapporter. - Triez par chemin parent et date de création $FN pour retrouver tout ce qui a été déposé ensemble, par exemple un dossier d'outils extrait sous
\ProgramData\. - Exploitez les enregistrements supprimés (
InUse= false) et leur référence parent pour reconstituer le contenu d'un dossier de préparation avant nettoyage. - Lisez les flux
Zone.Identifierrésidents dans la sortie : ils révèlent l'URL d'origine d'un téléchargement même sans historique de navigation. Voir Zone.Identifier. - Analysez aussi le
$I30des dossiers clés : le slack d'index conserve des noms de fichiers dont l'enregistrement a déjà été réutilisé. - Relevez toujours la valeur de
NtfsDisableLastAccessUpdateavant d'interpréter les dates d'accès.
Artefacts liés
- Journal USN ($UsnJrnl:$J)Fiche journal USN : $UsnJrnl:$J et $Max, champs, indicateurs Reason, référence parent, taille par défaut, rotation, fsutil et analyse avec MFTECmd.
- $LogFile (journal de transactions NTFS)Fiche $LogFile : journal des métadonnées NTFS (enregistrement MFT 2), 64 Mo par défaut, opérations redo/undo, zone de redémarrage, rétention courte.
- Attributs d'index $I30Fiche $I30 : index de dossiers NTFS ($INDEX_ROOT, $INDEX_ALLOCATION), enregistrements INDX, horodatages, entrées de slack de fichiers supprimés.
- Descripteurs de sécurité $Secure:$SDSFiche $Secure:$SDS : magasin NTFS des descripteurs de sécurité, index $SDH et $SII, Security ID du $SI, SID propriétaire, ACL, collecte et MFTECmd.
- Zone.Identifier (Mark of the Web)Fiche Zone.Identifier : flux ADS Mark of the Web, ZoneId 0 à 4, ReferrerUrl et HostUrl selon le navigateur, pertes et contournements, collecte via la $MFT.
- CorbeilleFiche Corbeille : fichiers $I et $R de $Recycle.Bin, $I version 1 et 2, INFO2 sous XP, date de suppression, chemin d'origine, vidage et Maj+Suppr.
Termes du glossaire
- Master File Table (MFT)L'index de métadonnées NTFS, stocké dans `$MFT`, qui contient un enregistrement par fichier et répertoire d'un volume.
- $STANDARD_INFORMATION et $FILE_NAMELes deux attributs NTFS qui portent chacun un jeu d'horodatages MACB ; les comparer est une technique clé pour détecter le timestomping.
- TimestompingUne technique anti-forensique qui modifie les horodatages d'un fichier pour masquer sa date de création, de modification ou d'accès.
- Données résidentesContenu de fichier assez petit pour être stocké directement dans son enregistrement MFT NTFS, plutôt que dans des clusters séparés du volume.
- Numéro de référence de fichier MFTL'identifiant NTFS d'un fichier sur 64 bits : numéro d'entrée MFT sur 48 bits et numéro de séquence sur 16 bits, modifié à chaque réutilisation.