← Zurück zum Blog

Datenexfiltration und USB-Kopien im USN-Journal erkennen

Massenkopien, USB-Drops und Staging-Verzeichnisse hinterlassen eine erkennbare Form in $UsnJrnl:$J. Die Muster zum Filtern, mit ausgearbeiteten Beispielen.

4 Min. Lesezeit

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-HivesSYSTEM\MountedDevices, NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2 und 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 FileCreate in einem einzelnen Staging-Verzeichnis.
  • Anschließende DataExtend auf 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 RenameNewName in den Sync-Ordner aus Desktop\, Documents\ oder Downloads\. Die Rename-Hälfte sagt dir den vorherigen Elternordner; der neue Elternordner ist der Sync-Ordner.
  • DataExtend | Close auf Dateien innerhalb des Sync-Ordners ohne zugehöriges FileCreate einer 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:

  1. Create-Burst: mehr als N FileCreate in einem einzigen Verzeichnis innerhalb von T Sekunden. An die Baseline anpassbar. Start bei N=50, T=60.
  2. Archiv nach Burst: ein einzelnes FileCreate einer Datei mit bekannter Archiv-Endung (.zip, .7z, .rar, .tar.gz) innerhalb von Minuten nach einem Create-Burst, mit folgenden DataExtend, die sich auf mehrere MB summieren.
  3. Massenumbenennen über Grenzen: RenameNewName-Einträge, deren neuer Elternpfad strukturell anders ist als der alte (DocumentsOneDrive, DesktopPublic usw.). Lässt sich als Regex über die aufgelösten Vollpfade ausdrücken.
  4. 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:

ZeitReasonsPfadBemerkung
19:42:11FileCreate Close\Users\b\Temp\q3\Neuer Ordner
19:42:13–14FileCreate × 84\Users\b\Temp\q3\*.xlsxBurst
19:44:08FileCreate Close\Users\b\Temp\q3.zipArchiv
19:44:08–22DataExtend × ~40\Users\b\Temp\q3.zipWächst auf 187 MB
19:44:45RenameNewName Close\Users\b\OneDrive\q3.zipNach Sync verschoben
19:45:11FileDelete × 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.