Aller au contenu

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

Pré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 WindowsCheminRemarques
XP à 11 (tout volume NTFS)<racine du volume>\$MFTEnregistrement 0 du volume ; caché, verrouillé par le système de fichiers
XP à 11<racine du volume>\$MFTMirrEnregistrement 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

ChampSignification
SignatureFILE pour un enregistrement valide (BAAD signale un enregistrement en échec de vérification)
Numéro d'entréePosition dans la table ; avec le numéro de séquence, il forme la référence de fichier
Numéro de séquenceIncrémenté à chaque réutilisation ; s'il ne correspond pas à une référence stockée, le fichier d'origine a disparu
Indicateurs0x01 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_INFORMATIONQuatre horodatages, attributs DOS, Security ID (index dans $Secure), USN de la dernière modification
$FILE_NAMENom, référence du dossier parent, quatre horodatages, tailles ; plusieurs possibles (nom long, nom court 8.3, liens physiques)
$DATAContenu 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).

HorodatagePositionné quandFormatPièges
Création / modification / changement d'enregistrement $SICréation, modification du contenu, modification des métadonnéesFILETIME, UTCModifiables en mode utilisateur via SetFileTime : cible privilégiée du timestomping
Accès $SILectureFILETIME, UTCDé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 $FNSurtout à la création du nom : création, copie, déplacement vers un autre volume, certains renommagesFILETIME, UTCNon 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 sourceFILETIME, UTCModification 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 sdelete renomment 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ée FileSystem)
  • Velociraptor (Windows.Triage.Targets) : $MFT
  • Commandes natives : la $MFT ne 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:\out produit une ligne par enregistrement avec les dates $SI et $FN, InUse, SI<FN, uSecZeros, Copied, SecurityId et le contenu résident des Zone.Identifier. --de 5 détaille un enregistrement ; --body produit un bodyfile ; --rs récupère des enregistrements dans le slack.
  • Velociraptor : Windows.NTFS.MFT analyse la table en direct ou hors ligne ; Windows.Timeline.MFT ajoute des indicateurs d'anomalie ; Windows.NTFS.Recover extrait un fichier supprimé par son numéro d'enregistrement.
  • dfir_ntfs (Maxim Suhanov, open source) : ntfs_parser --mft exporte les enregistrements en CSV ; --all-mft travaille sur une image brute.
  • The Sleuth Kit : istat, fls -r et icat inspectent les enregistrements et récupèrent des fichiers résidents ou non alloués depuis une image.
  • Plaso : le parseur mft verse chaque horodatage $SI et $FN dans une super-chronologie.

Conseils d'investigation

  • Filtrez sur SI<FN = true et uSecZeros = 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.Identifier ré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 $I30 des 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 NtfsDisableLastAccessUpdate avant d'interpréter les dates d'accès.

Artefacts liés

Termes du glossaire

Guides

Tous les artefacts sur une page : aide-mémoire