← Torna al blog

Rilevare l'attività di un ransomware nel journal USN

Anche quando il binario è sparito, un ransomware lascia un'impronta molto caratteristica in $UsnJrnl:$J. Una panoramica dei pattern da cercare con le combinazioni di codici di razionale corrispondenti.

4 min di lettura

Il ransomware è uno dei segnali più puliti nel journal USN. Qualunque altra cosa abbia fatto l'operatore — furto di credenziali, movimento laterale, persistenza — la fase di cifratura tocca il filesystem con un pattern uniforme e ad alto volume, che spicca anche mesi dopo. Questo articolo descrive com'è quel pattern e come trovarlo.

Si assume che tu abbia già estratto il $J e lo abbia parsato (il parser di questa pagina va bene; anche usnrs e altri). Per un ripasso del bitmask di razionale, il nostro articolo dedicato è il riferimento di campo.

Il pattern canonico

La maggior parte dei ransomware moderni (LockBit, BlackCat/ALPHV, Royal, Akira, le varianti post-Conti, ecc.) segue la stessa ricetta in tre passi per file:

  1. Apertura del file in lettura.
  2. Sovrascrittura del contenuto in loco — oppure scrittura di un nuovo file accanto e cancellazione dell'originale.
  3. Rinomina aggiungendo un'estensione marker (.locked, .lockbit, una stringa casuale di 8 caratteri, o nessuna per alcune famiglie).

Nel journal questo produce, per ciascun file:

DataOverwrite | Close
DataOverwrite | Close
…           ← ripetuto, uno per blocco scritto
RenameOldName | Close   (vecchio: document.docx)
RenameNewName | Close   (nuovo: document.docx.locked)

I due segnali distintivi:

  • Raffiche di DataOverwrite in una finestra breve su migliaia di file. L'attività normale produce raramente DataOverwrite continui su file non database.
  • RenameNewName di massa con suffissi di estensione identici. Il rapporto tra record di nuovo nome e file attivi esplode durante la cifratura.

Per il mapping a MITRE ATT&CK, questo corrisponde principalmente a T1486 Data Encrypted for Impact e ai comportamenti di rinomina associati.

Ricetta pratica di rilevamento

Lavorando su un journal parsato:

  1. Istogramma i DataOverwrite per minuto. Tracciare o semplicemente raggruppare per minuto e cercare il salto. Un host Windows normale mostra una baseline bassa costante (pochi al minuto), interrotta da raffiche applicative (salvataggio Office, cache Chrome). Un ransomware mostra un picco sostenuto 50-500× sopra quella baseline, che non si ferma finché l'host non rimane senza file.
  2. Clusterizza i RenameNewName. Raggruppare per estensione nuova o regex sul nuovo nome. Se l'80% delle rinomine di una finestra condivide lo stesso suffisso o lo stesso pattern .{8}, stai guardando un encryptor.
  3. Incrociare con FileDelete | Close. Alcune famiglie scrivono il cifrato in un nuovo file e cancellano l'originale. Da accoppiare con un FileCreate di stessa radice e diversa estensione emesso nello stesso secondo.
  4. Risalire al padre. I ransomware che cifrano ogni sottodirectory del profilo utente o ogni condivisione colpiscono Users\<user>\Documents, Users\<user>\Desktop, ogni radice di drive mappato. I percorsi completi risolti dal MFT lo rendono banale.

Il parser di questo sito espone il filtro per razionale direttamente — impostarlo su DataOverwrite per il passo 1 e RenameNewName per il passo 2.

Come si presentano i dati

Estratto redatto da un caso reale di LockBit 3.0:

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
…

Ogni file nella directory viene cifrato nello stesso secondo di orologio. La nuova estensione è una stringa casuale uniforme di 9 caratteri — forte segnale di cluster per il passo 2.

Oltre la fase di cifratura

Il journal cattura anche i comportamenti preparatori e di pulizia:

  • Cancellazione delle shadow copy: non realmente visibile in $J (vive in namespace gestiti da $WSC), ma un FileCreate di file temporanei lanciati da vssadmin.exe compare attimi prima della raffica di cifratura.
  • Scansioni di discovery: molte famiglie enumerano il volume per listing di directory, il che non produce voci di journal — ma se l'operatore ha lasciato strumenti come adfind.exe o PsExec.exe, vedrai i loro FileCreate.
  • Consegna della nota: ogni famiglia moderna scrive una nota di riscatto in ogni directory cifrata. Un FileCreate dello stesso nome file (README.txt, HOW_TO_DECRYPT.html, ecc.) in molte directory nello stesso minuto è la regex pigra che ne pesca la maggior parte.

Cosa il journal non ti dirà

Il journal USN registra cambiamenti al filesystem, non attori. Per legare un utente o un processo alla raffica di cifratura servono:

Per il playbook di risposta più ampio, la guida #StopRansomware della CISA è il riferimento di autorità.

Una nota sul rumore di fondo

Alcuni comportamenti legittimi sembrano superficialmente ransomware:

  • Distribuzione della cifratura disco (conversione iniziale di BitLocker) produce una raffica continua di DataOverwrite — ma non produce eventi RenameNewName. Falso positivo facile da scartare.
  • Software di backup come Veeam o Macrium può produrre raffiche di DataOverwrite sul volume di destinazione. Verificare sempre utente/percorso.
  • AutoSalvataggio di Office o rebuild di Visual Studio producono raffiche brevi. L'istogramma per minuto le rende ovvie — sono transitorie, il ransomware è monotono.

Se la tua logica di rilevamento non genera zero alert sulla baseline, è sotto-specificata. Il segnale che vuoi è la combinazione del tasso di DataOverwrite, del tasso di RenameNewName e del clustering di estensione — non uno di essi da solo.