Accès aux fichiers
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.
- Emplacement
- C:\$Extend\$UsnJrnl:$J
- Prouve
- Quand un fichier a été créé, renommé, écrit, supprimé ou a vu ses attributs modifiés
- Horodatages
- TimeStamp de chaque enregistrement en FILETIME, UTC ; les enregistrements BASIC_INFO_CHANGE donnent l'heure réelle d'un timestomping
- Rétention
- Limité par sa taille max (souvent 32 Mo sur le volume système), anciens enregistrements purgés : d'heures à semaines d'activité ; supprimable via fsutil
- Accès
- Administrateur ; illisible par les API fichier classiques : copie NTFS brute de $J et $Max (KAPE $J) avec le $MFT
- Type
- Fichier / système de fichiers
- Windows
- XPVista / 78 / 8.11011
- Cible KAPE
- $J
- Velociraptor
- Windows.Triage.Targets:$J
Outils
Comparer tous les outilsPrésentation
Le journal des modifications USN (Update Sequence Number) est une fonction NTFS qui ajoute un enregistrement chaque fois qu'un fichier ou un dossier change sur un volume. Des composants Windows comme l'indexeur de recherche, ainsi que les logiciels de sauvegarde ou de réplication, s'en servent pour repérer les fichiers modifiés sans rescanner le disque. Pour l'enquêteur, c'est un journal compact et ordonné dans le temps des créations, renommages, écritures et suppressions, qui couvre souvent des jours ou des semaines et conserve le nom de fichiers disparus depuis longtemps.
Emplacement
| Version de Windows | Chemin | Remarques |
|---|---|---|
| XP à 11 (volumes NTFS avec journal actif) | <volume>\$Extend\$UsnJrnl:$J | Les enregistrements ; flux nommé creux (sparse) |
| XP à 11 | <volume>\$Extend\$UsnJrnl:$Max | Paramètres du journal : taille maximale, delta d'allocation, identifiant du journal |
$J est un fichier creux : quand les anciens enregistrements sont purgés, leurs clusters sont libérés et se relisent comme des zéros. La taille logique de $J peut atteindre plusieurs gigaoctets alors que seules les dernières dizaines de mégaoctets contiennent des données. Sur les versions actuelles de Windows, le volume système a un journal actif ; les volumes secondaires ou amovibles pas forcément.
Ce que l'artefact prouve
- Activité sur les fichiers, horodatée : création, suppression, renommage (ancien et nouveau nom), écriture, troncature, changement d'attributs ou d'horodatages, changement de sécurité et de flux de données alternatifs.
- Existence de fichiers supprimés : le nom et la référence de fichier restent dans le journal même après réutilisation de l'enregistrement MFT.
- Emplacement : la référence du dossier parent permet de reconstruire le chemin complet par jointure avec la $MFT.
- Anti-forensique : changements d'horodatages (
BasicInfoChange), renommages en masse avant suppression, trous ou journal recréé. - Il ne dit pas qui a fait la modification, quel processus l'a faite, ni le contenu du fichier. Une écriture apparaît comme
DataExtendouDataOverwrite, sans détail.
Champs clés
| Champ | Signification |
|---|---|
Usn | Position de l'enregistrement dans le journal ; strictement croissant |
TimeStamp | Moment d'écriture de l'enregistrement |
FileReferenceNumber | Entrée MFT et numéro de séquence du fichier |
ParentFileReferenceNumber | Entrée MFT et numéro de séquence du dossier parent |
Reason | Indicateurs binaires cumulant les changements depuis l'ouverture du fichier |
FileName | Nom du fichier au moment de l'enregistrement (sans chemin) |
FileAttributes | Attributs : caché, système, dossier, archive… |
SourceInfo | Renseigné quand le changement vient d'un composant système ou de réplication et non de l'application de l'utilisateur |
SecurityId | Security ID du fichier, qui pointe vers $Secure:$SDS |
MajorVersion | Version : 2 est l'enregistrement NTFS habituel (références 64 bits) ; 3 utilise des identifiants 128 bits ; 4 n'apparaît que si le suivi de plages (range tracking) est activé |
Indicateurs Reason courants : DATA_OVERWRITE (0x1), DATA_EXTEND (0x2), DATA_TRUNCATION (0x4), NAMED_DATA_* (0x10 à 0x40, flux alternatifs), FILE_CREATE (0x100), FILE_DELETE (0x200), SECURITY_CHANGE (0x800), RENAME_OLD_NAME (0x1000), RENAME_NEW_NAME (0x2000), BASIC_INFO_CHANGE (0x8000), HARD_LINK_CHANGE (0x10000), STREAM_CHANGE (0x200000), CLOSE (0x80000000).
Horodatages
| Horodatage | Positionné quand | Format | Pièges |
|---|---|---|---|
TimeStamp | NTFS écrit l'enregistrement | FILETIME, UTC | Les indicateurs se cumulent tant que le fichier est ouvert ; l'enregistrement CLOSE peut suivre le premier changement de plusieurs secondes ou minutes |
| Paire de renommage | Deux enregistrements : ancien nom avec l'ancien parent, nouveau nom avec le nouveau parent | FILETIME, UTC | Un déplacement entre dossiers est aussi un renommage ; comparez les références parent |
Enregistrement BASIC_INFO_CHANGE | Un horodatage ou un attribut a été modifié | FILETIME, UTC | C'est l'heure réelle d'un timestomping, même si $SI affiche désormais une autre date |
Rétention et effacement
- Le journal est limité par sa taille maximale plus un delta d'allocation. Au-delà, NTFS purge les enregistrements les plus anciens au point de contrôle suivant. Sur les volumes système de Windows 10/11, la taille maximale est couramment de 32 Mo (
0x2000000) avec un delta de 8 Mo ; vérifiez avecfsutil usn queryjournal. La rétention se mesure donc en activité et non en jours : quelques heures sur un serveur de compilation, des semaines sur un portable peu utilisé. - Les enregistrements purgés peuvent survivre ailleurs : dans les clichés instantanés, dans l'espace non alloué (carving) et dans $LogFile pour les changements très récents.
fsutil usn deletejournal /d C:désactive et supprime le journal. Windows ou une application peut le recréer ensuite avec un nouvel identifiant, visible dans$Maxet viafsutil usn queryjournal. Un journal qui commence étrangement tard, ou un$UsnJrnlabsent, est une piste d'anti-forensique.- Un attaquant peut aussi agrandir ou réduire le journal avec
fsutil usn createjournal m=<taille> a=<delta> C:.
Collecte
- Cible KAPE :
$J(collecte$Jet$Max; incluse aussi dansFileSystem) - Velociraptor (
Windows.Triage.Targets) :$J - Commandes natives : le flux n'est pas lisible par les API de fichiers classiques, copiez-le avec un outil d'accès NTFS brut.
fsutilfournit des informations en direct et sait lire les enregistrements :
fsutil usn queryjournal C:
fsutil usn readdata C:\Users\Public\payload.exe
fsutil usn readjournal C: > E:\case\usn_live.txt
Collectez $J avec la $MFT du même volume, au même moment, afin de pouvoir résoudre les chemins parents.
Outils d'analyse
- MFTECmd (Eric Zimmerman) :
MFTECmd.exe -f E:\C\$Extend\$J -m E:\C\$MFT --csv E:\outanalyse les enregistrements et s'appuie sur la$MFTpour résoudre les chemins parents. - Velociraptor :
Windows.Forensics.Usnanalyse le journal en direct ou collecté, avec filtres sur le nom, le chemin et la date ;Windows.Carving.USNcarve d'anciens enregistrements sur le disque brut. - dfir_ntfs (Maxim Suhanov) :
ntfs_parser --usn <$MFT> <$J> out.csv, avec reconstruction des chemins. - NTFS Log Tracker (Junghoon Oh, gratuit) : charge
$UsnJrnl,$LogFileet$MFTdans SQLite pour des requêtes croisées. - Plaso : le parseur
usnjrnlajoute chaque enregistrement à une super-chronologie.
Conseils d'investigation
- Filtrez
FileCreatesur les exécutables, scripts et archives dans des chemins accessibles en écriture, puis vérifiez si un fichier Prefetch correspondant apparaît quelques secondes après : une séquence d'exécution solide. - Cherchez les paires
RenameOldName/RenameNewNamequi changent l'extension (.txtvers.exe, fichiers en masse vers une extension de rançongiciel) ou qui déplacent des données vers un dossier de préparation avant unFileDelete. - Un
BasicInfoChangesur un fichier dont les dates $SI ont plusieurs années signale un timestomping ; comparez avec l'indicateurSI<FNde la $MFT. - Recherchez les noms d'outils supprimés (
mimikatz,rclone,procdump) : le journal les conserve souvent après réutilisation des enregistrements de la $MFT. - Analysez le
$Jde chaque cliché instantané et dédupliquez surUsnpour remonter plus loin dans le temps. - Examinez
SourceInfo: les enregistrements issus de la réplication ou de la gestion des données sont de l'activité de fond, pas des actions de l'utilisateur.
Artefacts liés
- 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.
- $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.
- Fichiers Prefetch (.pf)Fiche Prefetch Windows : emplacement des .pf par version, nombre d'exécutions, huit dernières dates, fichiers référencés, rétention et analyse.
- Clichés instantanés de volume (VSS)Fiche clichés instantanés VSS : fichiers de stockage dans System Volume Information, copie sur écriture, suppression par rançongiciel, montage et analyse.
Termes du glossaire
- NTFSNTFS est le système de fichiers par défaut de Windows ; ses fichiers de métadonnées ($MFT, $LogFile, $UsnJrnl) sont des sources forensiques centrales.
- 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.
- FILETIMELe format d'horodatage Windows sur 64 bits qui compte les intervalles de 100 nanosecondes depuis le 1er janvier 1601 UTC.
- TimestompingUne technique anti-forensique qui modifie les horodatages d'un fichier pour masquer sa date de création, de modification ou d'accès.
- Anti-forensiqueTechniques visant à détruire, cacher ou falsifier des preuves : effacement de journaux, timestomping, wiping, suppression des clichés ou du journal USN.