← Retour au blog

Codes de raison USN — lire entre les bits

Parcours champ par champ du bitmask « reason » des enregistrements USN, et ce que chaque combinaison révèle du cycle de vie d'un fichier sur disque.

3 min de lecture

Si vous passez du temps en forensique Windows, le bitmask de raison USN va vite devenir un réflexe. C'est un champ 32 bits que NTFS positionne sur chaque enregistrement de journal pour résumer ce qui vient de changer sur un fichier. Les bits ne disent pas tout — ils sont additifs, pas exclusifs — mais lus ensemble ils dressent un tableau remarquablement précis du cycle de vie.

Les bits

DrapeauHexCe que ça signifie en pratique
DataOverwrite0x00000001Une zone du flux de données principal a été écrasée
DataExtend0x00000002Le flux de données principal a grandi
DataTruncation0x00000004Le flux de données principal a rétréci
NamedDataOverwrite / Extend / Truncation0x10 / 0x20 / 0x40Idem, mais sur un flux alternatif
FileCreate0x00000100Création d'un fichier ou d'un dossier
FileDelete0x00000200Fichier retiré de l'espace de noms
EaChange0x00000400Attributs étendus modifiés
SecurityChange0x00000800ACL/propriétaire modifiés
RenameOldName0x00001000Moitié « avant » d'un renommage
RenameNewName0x00002000Moitié « après » d'un renommage
IndexableChange0x00004000Drapeau indexable basculé
BasicInfoChange0x00008000Horodatages, attributs ou compression modifiés
HardLinkChange0x00010000Lien physique ajouté ou retiré
CompressionChange0x00020000Compression NTFS basculée
EncryptionChange0x00040000État EFS modifié
ObjectIdChange0x00080000Object ID posé ou effacé
ReparsePointChange0x00100000Point de réanalyse modifié
StreamChange0x00200000Flux de données alternatif ajouté/renommé/supprimé
Close0x80000000Le handle qui a produit le changement a été fermé

Close est particulier : NTFS coalesce les opérations successives sur un même handle et n'émet l'enregistrement final qu'une fois le handle fermé. Un enregistrement sans Close reflète un flush intermédiaire — utile, mais c'est l'enregistrement avec Close qui fait foi.

Motifs récurrents

Quelques motifs reviennent assez souvent pour qu'on les reconnaisse au premier coup d'œil :

  • Nouveau fichier écrit par une appli. FileCreate | DataExtendDataExtend | CloseBasicInfoChange | Close. Le dernier, c'est le fichier qui reçoit son mtime à la fermeture.
  • Renommage entre dossiers. Deux enregistrements sur le même FileReferenceNumber : RenameOldName | Close puis RenameNewName | Close. La référence parente diffère — c'est ainsi qu'on reconstruit le déplacement.
  • Save-by-rename atomique. Beaucoup d'éditeurs écrivent dans un fichier temporaire puis renomment sur la cible. On voit FileCreate sur le tmp, FileDelete | Close sur l'original, et RenameNewName | Close sur le tmp.
  • Ransomware chiffrer-puis-renommer. Des DataOverwrite couvrant des mégaoctets, suivis de RenameNewName | Close avec la nouvelle extension. Le compte et la cadence des DataOverwrite sont souvent les premiers signaux d'un échantillon sur disque.
  • Quarantaine antivirus. Un FileDelete | Close immédiatement après un FileCreate récent, sur la même entrée MFT. Le journal donne la preuve que l'AV a touché le fichier, même si le fichier lui-même a disparu.

Ce que les bits ne diront pas

Le bitmask de raison parle du fichier, pas de l'acteur. Pas d'utilisateur, pas de PID, pas de ligne de commande. Combinez le journal avec Security.evtx (4663 accès objet) ou avec Microsoft-Windows-Sysmon/Operational pour attacher un acteur à chaque opération. Le journal USN vous donne le quand et le quoi ; les autres journaux donnent le qui.

Recette de lecture pragmatique

À l'ouverture d'un journal parsé :

  1. Filtrez FileCreate pour repérer ce qui est réellement nouveau dans la fenêtre temporelle.
  2. Cherchez RenameNewName pour attraper les mouvements et les motifs « enregistrer sous ».
  3. Tracez le nombre de DataExtend dans le temps — les écritures massives (sauvegardes, chiffrement, staging d'exfiltration) sautent aux yeux.
  4. Lisez en priorité les enregistrements portant Close ; traitez les intermédiaires comme du contexte.

L'application web de ce site permet de filtrer par combinaison arbitraire de raisons, ce qui rend les étapes 1 à 3 quasi instantanées.