Dopo il ransomware, la seconda domanda DFIR più frequente è «è uscito qualcosa da qui?». Il journal USN è uno dei posti più economici per rispondere. Registra ogni creazione, ogni rinomina, ogni estensione di dati — il che significa che l'esfil via USB, lo staging per la sync cloud e il classico «scaricare tutto in una cartella temp prima di zippare» appaiono molto distintivi su una timeline.
Questo articolo è il playbook per trovare quei pattern.
Le chiavette USB sono modalità facile
Quando un utente collega un volume rimovibile, Windows gli assegna una nuova lettera e il filesystem del dispositivo riceve il suo $UsnJrnl se è NTFS. Ma quando i file vengono copiati dal sistema in indagine alla USB, il journal del volume sorgente registra comunque il lato lettura come una serie di accessi — e, ancora più importante, il journal di destinazione (se hai l'immagine della USB) mostra le scritture.
Quello che tipicamente hai:
- Il journal del disco sorgente — mostra cosa è stato aperto/chiuso e i file temporanei.
- Le hive del registro —
SYSTEM\MountedDevices,NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2e gli event Setup hardware per identificare quale USB era connessa. - Il journal del volume di destinazione, se il dispositivo era NTFS e si può imageare — qui vedi i file reali.
Primo segnale lato sorgente: un cluster di aperture di file in una finestra ristretta che colpisce l'albero documents/desktop/downloads dell'utente. Le aperture non sempre producono record USN, ma le cache del filesystem e gli scan AV che le seguono spesso lo fanno (toccare gli attributi innesca BasicInfoChange | Close).
Un segnale più decisivo arriva se l'attaccante zippa prima: un FileCreate di un .7z, .zip, .rar o di un file con nome casuale in un percorso temp, seguito da record DataExtend | Close continui finché il file non raggiunge la dimensione finale.
Il classico pattern staging-poi-copia
Un pattern frequente, mappato su T1074 Data Staged di MITRE ATT&CK:
FileCreate | Close C:\Users\bob\AppData\Local\Temp\sales_q3\
FileCreate | Close C:\Users\bob\AppData\Local\Temp\sales_q3\report.xlsx
DataExtend | Close C:\Users\bob\AppData\Local\Temp\sales_q3\report.xlsx
FileCreate | Close C:\Users\bob\AppData\Local\Temp\sales_q3\customers.csv
DataExtend | Close ...
…
FileCreate | Close C:\Users\bob\AppData\Local\Temp\sales_q3.zip
DataExtend | Close ... ← tanti, il file cresce
FileDelete | Close C:\Users\bob\AppData\Local\Temp\sales_q3\* (pulizia)
Tre segnali insieme:
- Una raffica di
FileCreatein una singola directory di staging. DataExtendsuccessivi su un singolo archivio la cui dimensione finale approssima la somma dei file stagionati.- Uno spazzolamento di eliminazione della directory di staging poco dopo la creazione dell'archivio.
Filtrare FileCreate in \AppData\Local\Temp\, \Public\, \Downloads\ o altre posizioni scrivibili dell'albero utente, e cercare cluster temporali di >50 file in <60 secondi. È così che appaiono operazioni di furto interno o infostealer sul disco.
Staging via sync cloud
OneDrive, Dropbox, Google Drive — tutti mantengono una cartella di sync locale. Qualsiasi cosa scaricata lì viene caricata appena l'agente la nota. Due segnali:
RenameNewNamedi massa nella cartella di sync daDesktop\,Documents\oDownloads\. La metà rename ti dice il padre precedente; il nuovo padre è la cartella di sync.DataExtend | Closesu file dentro la cartella di sync senza unFileCreatecorrispondente di un'app utente. L'agente di sync stesso scrive questi — ossia sono download — ma le creazioni sono ciò che vuoi per gli upload.
Per un filtro per nome, le directory canoniche di sync su Windows sono \Users\<u>\OneDrive\, \Users\<u>\Dropbox\ e \Users\<u>\Google Drive\. Gli strumenti elencati nelle risorse insider threat TLP-WHITE di CISA hanno assunzioni di baseline simili.
Euristiche che davvero funzionano
Dopo diverse missioni, le euristiche che tendono a segnalare esfil reale sono:
- Raffica di create: più di N
FileCreatein una singola directory in T secondi. Calibrabile sulla baseline. Iniziamo con N=50, T=60. - Archivio dopo raffica: un singolo
FileCreatedi un file con estensione di archivio nota (.zip,.7z,.rar,.tar.gz) entro minuti da una raffica, conDataExtendsuccessivi che accumulano diversi MB. - Rinomina di massa che attraversa confini: record
RenameNewNameil cui nuovo padre è strutturalmente diverso dal vecchio (Documents→OneDrive,Desktop→Public, ecc.). Facile esprimere come regex sui percorsi completi risolti. - Raffiche fuori orario: una qualsiasi delle precedenti al di fuori delle ore lavorative di quell'utente. Da accoppiare con gli event di logon
Security.evtxper conferma.
Il parser di questo sito espone filtri per finestra temporale e per razionale che rendono 1–3 un clic ciascuno. Per (4), esportare in CSV e pivotare sull'ora del giorno.
Cosa non vedrai
Alcune tecniche di esfil reali producono nessun segnale USN utile:
- Upload diretto dalla memoria via browser o PowerShell — i dati non toccano mai il disco, quindi il journal non ha nulla.
- Lettura di una condivisione di rete — la sorgente è il filesystem dove vive la condivisione, spesso non il tuo.
- Cattura schermo come esfil — produce solo la creazione di uno o due file immagine.
- Stampa — lascia solo attività in
\Windows\System32\spool\PRINTERS\, che è un suo artefatto forense, non davvero un argomento USN.
Per una visione di threat model più ampia, la pagina Exfiltration di MITRE ATT&CK elenca ogni tecnica e dove lascia residui. USN copre direttamente forse un terzo; il resto richiede log eventi, catture di rete o cronologia browser.
Esempio operativo
Il tipo di CSV che si esporterebbe da una vera missione per dimostrare esfil:
| Ora | Razionali | Percorso | Note |
|---|---|---|---|
| 19:42:11 | FileCreate Close | \Users\b\Temp\q3\ | Nuova cartella |
| 19:42:13–14 | FileCreate × 84 | \Users\b\Temp\q3\*.xlsx | Raffica |
| 19:44:08 | FileCreate Close | \Users\b\Temp\q3.zip | Archivio |
| 19:44:08–22 | DataExtend × ~40 | \Users\b\Temp\q3.zip | Cresce a 187 MB |
| 19:44:45 | RenameNewName Close | \Users\b\OneDrive\q3.zip | Spostato in sync |
| 19:45:11 | FileDelete × 84 | \Users\b\Temp\q3\* | Pulizia |
Quella timeline è una prova schiacciante. Senza il journal, andrebbe ricostruita dal registro, da Prefetch e dalle shadow copy — cinque volte più lavoro, metà della fiducia.