← Retour au blog

Détecter l'activité d'un ransomware dans le journal USN

Même quand le binaire a disparu, un ransomware laisse une empreinte très caractéristique dans $UsnJrnl:$J. Tour d'horizon des patterns à chercher et des combinaisons de codes de raison correspondantes.

5 min de lecture

Le ransomware est l'un des signaux les plus nets dans le journal USN. Peu importe ce que l'opérateur a fait par ailleurs — vol d'identifiants, déplacement latéral, persistance — la phase de chiffrement touche le système de fichiers avec un pattern uniforme et à fort débit, qui ressort même des mois plus tard. Cet article décrit ce pattern et comment le trouver.

L'hypothèse est que vous avez déjà extrait le $J et que vous l'avez parsé (le parseur de cette page convient ; usnrs et d'autres aussi). Pour un rappel sur le bitmask de raison, notre article dédié sert de référence.

Le pattern canonique

La plupart des ransomwares modernes (LockBit, BlackCat/ALPHV, Royal, Akira, les variantes post-Conti, etc.) suivent la même recette à trois temps par fichier :

  1. Ouvrir le fichier en lecture.
  2. Écraser le contenu en place — ou écrire un nouveau fichier à côté et supprimer l'original.
  3. Renommer pour ajouter une extension marqueur (.locked, .lockbit, une chaîne aléatoire de 8 caractères, ou parfois aucune extension pour certaines familles).

Dans le journal, cela produit, pour chaque fichier :

DataOverwrite | Close
DataOverwrite | Close
…           ← répété, un par bloc d'écriture
RenameOldName | Close   (ancien : document.docx)
RenameNewName | Close   (nouveau : document.docx.locked)

Les deux signaux distinctifs :

  • Salves de DataOverwrite dans une fenêtre courte sur des milliers de fichiers. L'activité normale produit rarement des DataOverwrite continus sur des fichiers non-base-de-données.
  • RenameNewName massifs avec des suffixes d'extension identiques. Le ratio de nouveaux noms par fichier actif explose pendant le chiffrement.

Côté MITRE ATT&CK, cela correspond principalement à T1486 Data Encrypted for Impact et au renommage associé.

Recette de détection pratique

Sur un journal parsé :

  1. Histogrammer les DataOverwrite par minute. Tracer ou simplement bucketer par minute et chercher la falaise. Un poste Windows normal montre une baseline basse régulière (quelques par minute), interrompue par des salves applicatives (sauvegarde Office, cache Chrome). Un ransomware produit un pic soutenu de 50 à 500× au-dessus de cette baseline, qui ne s'arrête qu'à court de fichiers.
  2. Clusteriser les RenameNewName. Grouper par extension nouvelle ou par regex sur le nouveau nom. Si 80% des renommages d'une fenêtre partagent le même suffixe ou la même structure .{8}, c'est un chiffreur.
  3. Recouper avec FileDelete | Close. Certaines familles écrivent le chiffré dans un nouveau fichier et suppriment l'original. À coupler avec un FileCreate de même racine et d'extension différente émis dans la même seconde.
  4. Remonter le dossier parent. Les ransomwares qui chiffrent tous les sous-dossiers du profil utilisateur ou tous les partages frappent Users\<user>\Documents, Users\<user>\Desktop, chaque racine de lecteur mappé. Les chemins complets résolus par le MFT rendent cela trivial.

Le parseur de ce site expose le filtre par raison directement — positionner sur DataOverwrite pour l'étape 1, RenameNewName pour l'étape 2.

Ce à quoi les données ressemblent

Extrait anonymisé d'un cas LockBit 3.0 réel :

2024-04-12T03:14:08Z  DataOverwrite Close   C:\Users\ana\Desktop\notes.docx
2024-04-12T03:14:08Z  DataOverwrite Close   C:\Users\ana\Desktop\notes.docx
2024-04-12T03:14:08Z  DataOverwrite Close   C:\Users\ana\Desktop\notes.docx
2024-04-12T03:14:08Z  RenameOldName Close   C:\Users\ana\Desktop\notes.docx
2024-04-12T03:14:08Z  RenameNewName Close   C:\Users\ana\Desktop\notes.docx.HLJkNskOq
2024-04-12T03:14:08Z  DataOverwrite Close   C:\Users\ana\Desktop\quarterly.xlsx
…

Tous les fichiers du dossier sont chiffrés dans la même seconde d'horloge. La nouvelle extension est une chaîne aléatoire uniforme de 9 caractères — signal de cluster fort pour l'étape 2.

Au-delà de la phase de chiffrement

Le journal capture aussi les comportements de préparation et de nettoyage :

  • Suppression des shadow copies : pas réellement visible dans $J (vit dans des espaces de noms gérés par $WSC), mais un FileCreate de fichiers temporaires lancés par vssadmin.exe apparaît juste avant la salve de chiffrement.
  • Scans de découverte : beaucoup de familles énumèrent le volume par listing de dossiers, ce qui ne produit pas d'entrée journal — mais si l'opérateur a déposé des outils comme adfind.exe ou PsExec.exe, on voit leur FileCreate.
  • Dépôt de la note de rançon : toute famille moderne écrit une note dans chaque dossier chiffré. Un FileCreate du même nom de fichier (README.txt, HOW_TO_DECRYPT.html, etc.) sur plusieurs dossiers dans la même minute est la regex paresseuse qui en attrape la plupart.

Ce que le journal ne dira pas

Le journal USN enregistre les changements sur le système de fichiers, pas les acteurs. Pour rattacher un utilisateur ou un processus à la salve de chiffrement, il faut :

Pour le playbook de réponse plus large, le guide #StopRansomware de la CISA est la référence faisant autorité.

Note sur le bruit de fond

Quelques comportements légitimes ressemblent superficiellement à du ransomware :

  • Déploiement de chiffrement disque (conversion initiale BitLocker) produit une salve continue de DataOverwrite — mais pas de RenameNewName. Faux positif facile à éliminer.
  • Logiciels de sauvegarde comme Veeam ou Macrium peuvent produire des salves de DataOverwrite sur le volume de destination. Toujours vérifier l'utilisateur/le chemin.
  • L'autosave d'Office ou les rebuilds Visual Studio font des salves courtes. L'histogramme par minute les rend évidents — ils sont transitoires, le ransomware est monotone.

Si votre logique de détection ne produit aucune alerte sur la baseline, c'est qu'elle est sous-spécifiée. Le signal recherché est la combinaison du taux de DataOverwrite, du taux de RenameNewName et du clustering d'extension — pas l'un d'eux pris isolément.