Aller au contenu

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

Pré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 WindowsCheminRemarques
XP à 11 (volumes NTFS avec journal actif)<volume>\$Extend\$UsnJrnl:$JLes enregistrements ; flux nommé creux (sparse)
XP à 11<volume>\$Extend\$UsnJrnl:$MaxParamè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 DataExtend ou DataOverwrite, sans détail.

Champs clés

ChampSignification
UsnPosition de l'enregistrement dans le journal ; strictement croissant
TimeStampMoment d'écriture de l'enregistrement
FileReferenceNumberEntrée MFT et numéro de séquence du fichier
ParentFileReferenceNumberEntrée MFT et numéro de séquence du dossier parent
ReasonIndicateurs binaires cumulant les changements depuis l'ouverture du fichier
FileNameNom du fichier au moment de l'enregistrement (sans chemin)
FileAttributesAttributs : caché, système, dossier, archive…
SourceInfoRenseigné quand le changement vient d'un composant système ou de réplication et non de l'application de l'utilisateur
SecurityIdSecurity ID du fichier, qui pointe vers $Secure:$SDS
MajorVersionVersion : 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

HorodatagePositionné quandFormatPièges
TimeStampNTFS écrit l'enregistrementFILETIME, UTCLes indicateurs se cumulent tant que le fichier est ouvert ; l'enregistrement CLOSE peut suivre le premier changement de plusieurs secondes ou minutes
Paire de renommageDeux enregistrements : ancien nom avec l'ancien parent, nouveau nom avec le nouveau parentFILETIME, UTCUn déplacement entre dossiers est aussi un renommage ; comparez les références parent
Enregistrement BASIC_INFO_CHANGEUn horodatage ou un attribut a été modifiéFILETIME, UTCC'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 avec fsutil 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 $Max et via fsutil usn queryjournal. Un journal qui commence étrangement tard, ou un $UsnJrnl absent, 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 $J et $Max ; incluse aussi dans FileSystem)
  • 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. fsutil fournit 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:\out analyse les enregistrements et s'appuie sur la $MFT pour résoudre les chemins parents.
  • Velociraptor : Windows.Forensics.Usn analyse le journal en direct ou collecté, avec filtres sur le nom, le chemin et la date ; Windows.Carving.USN carve 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, $LogFile et $MFT dans SQLite pour des requêtes croisées.
  • Plaso : le parseur usnjrnl ajoute chaque enregistrement à une super-chronologie.

Conseils d'investigation

  • Filtrez FileCreate sur 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/RenameNewName qui changent l'extension (.txt vers .exe, fichiers en masse vers une extension de rançongiciel) ou qui déplacent des données vers un dossier de préparation avant un FileDelete.
  • Un BasicInfoChange sur un fichier dont les dates $SI ont plusieurs années signale un timestomping ; comparez avec l'indicateur SI<FN de 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 $J de chaque cliché instantané et dédupliquez sur Usn pour 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

Termes du glossaire

Guides

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