Le $MFT est un instantané. Il décrit ce à quoi chaque fichier ressemble maintenant — ses métadonnées, l'emplacement de ses données, son état d'allocation. Ce qu'il n'enregistre pas, c'est la séquence des changements qui ont produit cet état. Pour cela, NTFS tient un second artefact : le Update Sequence Number Journal, $UsnJrnl.
Ce que $UsnJrnl enregistre
À chaque création, modification, renommage ou suppression de fichier, NTFS ajoute au $UsnJrnl un enregistrement de taille fixe décrivant l'événement. Les champs incluent :
- le USN (un entier 64 bits strictement croissant) ;
- le numéro d'enregistrement MFT du fichier modifié ;
- le numéro d'enregistrement du dossier parent ;
- un masque de raison :
FILE_CREATE,DATA_OVERWRITE,RENAME_OLD_NAME,CLOSE,FILE_DELETE, et bien d'autres ; - un horodatage.
Le résultat est un journal chronologique de tout événement significatif du système de fichiers depuis la création ou la dernière rotation du journal. Sur un système typique, cela couvre quelques jours à quelques semaines.
Où il se trouve
$UsnJrnl est un fichier NTFS ordinaire dont les données vivent dans le flux nommé $J. Il est placé dans le répertoire spécial $Extend, aux côtés d'autres fichiers système comme $LogFile et $Quota.
On l'extrait avec les mêmes outils que $MFT :
- la cible
MFTde KAPE inclut$UsnJrnl; - FTK Imager l'exporte depuis
[volume NTFS]/$Extend/$UsnJrnl:$J; - les outils d'image disque le lisent directement à partir des clusters bruts.
Comment il complète le $MFT
Croisez les deux et des motifs apparaissent qu'aucun ne montrerait seul :
- Un fichier introuvable sur disque mais présent dans
$UsnJrnl— créé et supprimé entre deux instantanés, mais conservé par le journal. - L'ordre exact des renommages pendant une attaque par ransomware —
OPEN,DATA_OVERWRITE,RENAME_OLD_NAME,RENAME_NEW_NAME,CLOSE. - Savoir si un fichier « modifié » a été réécrit ou seulement touché — les raisons
$UsnJrnldistinguent l'écrasement de données du changement de métadonnées.
Pour la reconstruction de chronologie, le flux typique est : parcourir le $MFT pour l'état présent, puis parcourir le $UsnJrnl pour l'historique des changements qui y mènent.
Les limites
Le $UsnJrnl tourne en circulaire. Par défaut, il fait 32 Mo, ce qui contient quelques jours d'activité sur un système chargé. Les vieux événements tombent. Si vous arrivez sur une enquête plus d'une semaine après les faits, attendez-vous à des trous — et appuyez-vous davantage sur le slack du $MFT et sur $LogFile.