Nach Ransomware ist die zweithäufigste DFIR-Frage „Ist hier etwas rausspaziert?". Das USN-Journal ist einer der billigsten Orte, um sie zu beantworten. Es zeichnet jedes Anlegen, jedes Umbenennen, jedes Data-Extend auf — was bedeutet, dass USB-Exfil, Cloud-Sync-Staging und das klassische „alles in einen Temp-Ordner werfen, bevor man zippt" auf einer Zeitlinie alle sehr charakteristisch aussehen.
Dieser Beitrag ist das Playbook, um diese Muster zu finden.
USB-Sticks sind der einfache Modus
Schließt ein Nutzer einen Wechseldatenträger an, vergibt Windows einen neuen Laufwerksbuchstaben und das Dateisystem auf dem Gerät bekommt sein eigenes $UsnJrnl, wenn es NTFS ist. Wenn aber Dateien vom untersuchten System zum USB kopiert werden, hält das Journal des Quell-Volumes die Leseseite trotzdem als Folge von Zugriffen fest — und wichtiger: das Ziel-Journal (falls man das USB-Image hat) zeigt die Schreibvorgänge.
Was man typischerweise hat:
- Das Journal der Quellplatte — zeigt, was geöffnet/geschlossen wurde, und temporäre Dateien.
- Die Registry-Hives —
SYSTEM\MountedDevices,NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2und Setup-Hardware-Events, um zu identifizieren, welcher USB-Stick eingesteckt war. - Das Journal des Ziel-Volumes, wenn das Gerät NTFS war und du es imagen kannst — dort siehst du die tatsächlichen Dateien.
Erstes Signal auf Quellseite: ein Cluster von Datei-Öffnungen in einem engen Zeitfenster, das den Documents/Desktop/Downloads-Baum des Nutzers angreift. Öffnungen erzeugen nicht immer USN-Einträge, aber die Filesystem-Caches und AV-Scans danach tun es oft (Attribute anfassen triggert BasicInfoChange | Close).
Ein entschiedeneres Signal kommt, wenn der Angreifer die Daten erst zippt: ein FileCreate einer .7z, .zip, .rar oder einer zufällig benannten Datei in einem Temp-Pfad, gefolgt von anhaltenden DataExtend | Close-Einträgen, bis die Datei ihre Endgröße erreicht.
Das klassische Staging-dann-Kopieren-Muster
Ein verbreitetes Muster, gemappt auf T1074 Data Staged in 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 ... ← viele davon, Datei wächst groß
FileDelete | Close C:\Users\bob\AppData\Local\Temp\sales_q3\* (Aufräumen)
Drei Signale zusammen:
- Ein Burst von
FileCreatein einem einzelnen Staging-Verzeichnis. - Anschließende
DataExtendauf einer einzelnen Archivdatei, deren Endgröße ungefähr die Summe der gestageten Dateien ist. - Ein Löschdurchlauf des Staging-Verzeichnisses kurz nach Erstellung des Archivs.
Filtere nach FileCreate in \AppData\Local\Temp\, \Public\, \Downloads\ oder anderen beschreibbaren Stellen des Nutzerbaums und suche zeitliche Cluster von >50 Dateien in <60 Sekunden. So sehen Insider-Diebstahl und Infostealer-Aktionen auf der Platte aus.
Cloud-Sync-Staging
OneDrive, Dropbox, Google Drive — jeder hält einen lokalen Sync-Ordner. Was hineingelegt wird, wird hochgeladen, sobald der Agent es bemerkt. Zwei Signale:
- Massenhafte
RenameNewNamein den Sync-Ordner ausDesktop\,Documents\oderDownloads\. Die Rename-Hälfte sagt dir den vorherigen Elternordner; der neue Elternordner ist der Sync-Ordner. DataExtend | Closeauf Dateien innerhalb des Sync-Ordners ohne zugehörigesFileCreateeiner Nutzer-App. Der Sync-Agent selbst schreibt diese — also sind das Downloads — aber die Creates willst du für Uploads.
Wenn du einen namensbasierten Filter willst, sind die kanonischen Sync-Verzeichnisse unter Windows \Users\<u>\OneDrive\, \Users\<u>\Dropbox\ und \Users\<u>\Google Drive\. Werkzeuge aus den CISA TLP-WHITE Insider-Threat-Ressourcen machen ähnliche Baseline-Annahmen.
Heuristiken, die tatsächlich funktionieren
Nach mehreren Einsätzen sind die Heuristiken, die echte Exfil markieren:
- Create-Burst: mehr als N
FileCreatein einem einzigen Verzeichnis innerhalb von T Sekunden. An die Baseline anpassbar. Start bei N=50, T=60. - Archiv nach Burst: ein einzelnes
FileCreateeiner Datei mit bekannter Archiv-Endung (.zip,.7z,.rar,.tar.gz) innerhalb von Minuten nach einem Create-Burst, mit folgendenDataExtend, die sich auf mehrere MB summieren. - Massenumbenennen über Grenzen:
RenameNewName-Einträge, deren neuer Elternpfad strukturell anders ist als der alte (Documents→OneDrive,Desktop→Publicusw.). Lässt sich als Regex über die aufgelösten Vollpfade ausdrücken. - Bursts außerhalb der Arbeitszeit: einer der obigen Fälle außerhalb der Arbeitszeit des Nutzers. Mit
Security.evtx-Anmeldeereignissen für Bestätigung paaren.
Der Parser dieser Seite stellt Zeitfenster-Filter und Pro-Reason-Filter bereit, die 1–3 auf je einen Klick reduzieren. Für (4) nach CSV exportieren und nach Stunde des Tages pivotieren.
Was du nicht sehen wirst
Einige reale Exfil-Techniken erzeugen kein nützliches USN-Signal:
- Direkter Upload aus dem Speicher via Browser oder PowerShell — die Daten landen nie auf der Platte, das Journal hat nichts.
- Lesen einer Netzwerkfreigabe — die Quelle ist das Dateisystem, auf dem die Freigabe liegt, oft nicht deins.
- Screen-Capture als Exfil — erzeugt nur die Erstellung einer oder zweier Bilddateien.
- Drucken — hinterlässt nur Aktivität in
\Windows\System32\spool\PRINTERS\, was sein eigenes forensisches Artefakt ist und nicht wirklich ein USN-Thema.
Für eine umfassendere Threat-Model-Sicht listet die MITRE-Exfiltration-Tactic-Seite jede Technik und wo sie Spuren hinterlässt. USN deckt direkt vielleicht ein Drittel ab; den Rest brauchen Event-Logs, Netzwerk-Captures oder Browser-Historie.
Beispielfall
Die Art von CSV, die man aus einem echten Einsatz exportieren würde, um Exfil zu demonstrieren:
| Zeit | Reasons | Pfad | Bemerkung |
|---|---|---|---|
| 19:42:11 | FileCreate Close | \Users\b\Temp\q3\ | Neuer Ordner |
| 19:42:13–14 | FileCreate × 84 | \Users\b\Temp\q3\*.xlsx | Burst |
| 19:44:08 | FileCreate Close | \Users\b\Temp\q3.zip | Archiv |
| 19:44:08–22 | DataExtend × ~40 | \Users\b\Temp\q3.zip | Wächst auf 187 MB |
| 19:44:45 | RenameNewName Close | \Users\b\OneDrive\q3.zip | Nach Sync verschoben |
| 19:45:11 | FileDelete × 84 | \Users\b\Temp\q3\* | Aufräumen |
Diese Zeitlinie ist ein rauchender Colt. Ohne das Journal müsste man sie aus Registry, Prefetch und Shadow Copies zusammensetzen — fünfmal so viel Arbeit, halb so viel Vertrauen.