Wer Zeit in der Windows-Forensik verbringt, hat die USN-Reason-Bitmaske irgendwann im Muskelgedächtnis. Es ist ein 32-Bit-Feld, das NTFS auf jedem Journal-Eintrag setzt, um zu summieren, was sich gerade an einer Datei geändert hat. Die Bits sagen nicht alles — sie sind additiv, nicht exklusiv —, aber zusammen ergeben sie ein bemerkenswert präzises Bild des Lebenszyklus.
Die Bits
| Flag | Hex | Was es in der Praxis bedeutet |
|---|---|---|
DataOverwrite | 0x00000001 | Ein Bereich des Haupt-Datenstroms wurde überschrieben |
DataExtend | 0x00000002 | Der Haupt-Datenstrom wuchs |
DataTruncation | 0x00000004 | Der Haupt-Datenstrom schrumpfte |
NamedDataOverwrite / Extend / Truncation | 0x10 / 0x20 / 0x40 | Dasselbe, aber auf einem alternativen Datenstrom |
FileCreate | 0x00000100 | Eine neue Datei oder ein Verzeichnis wurde angelegt |
FileDelete | 0x00000200 | Die Datei wurde aus dem Namensraum entfernt |
EaChange | 0x00000400 | Erweiterte Attribute geändert |
SecurityChange | 0x00000800 | ACLs/Eigentümer geändert |
RenameOldName | 0x00001000 | „Vorher"-Hälfte eines Umbenennens |
RenameNewName | 0x00002000 | „Nachher"-Hälfte eines Umbenennens |
IndexableChange | 0x00004000 | Indexierbar-Flag umgeschaltet |
BasicInfoChange | 0x00008000 | Zeitstempel, Attribute oder Kompression geändert |
HardLinkChange | 0x00010000 | Hardlink hinzugefügt oder entfernt |
CompressionChange | 0x00020000 | NTFS-Kompression umgeschaltet |
EncryptionChange | 0x00040000 | EFS-Status geändert |
ObjectIdChange | 0x00080000 | Object ID gesetzt oder gelöscht |
ReparsePointChange | 0x00100000 | Reparse-Point geändert |
StreamChange | 0x00200000 | Alternativer Datenstrom hinzugefügt/umbenannt/gelöscht |
Close | 0x80000000 | Das Handle, das die Änderung produziert hat, ist geschlossen |
Close ist besonders: NTFS bündelt aufeinanderfolgende Operationen unter demselben Handle und gibt erst nach dessen Schließen einen finalen Eintrag mit gesetztem Close aus. Ein Eintrag ohne Close zeigt das System beim Spülen von Zwischenständen — nützlich, aber der Close-Eintrag ist die autoritative Zusammenfassung.
Muster, die du in der Wildnis siehst
Einige Muster tauchen so oft auf, dass man sie sofort erkennen sollte:
- Neue Datei, von einer App geschrieben.
FileCreate | DataExtend→DataExtend | Close→BasicInfoChange | Close. Der letzte ist die Datei, die beim Schließen ihren mtime bekommt. - Umbenennen über Verzeichnisse hinweg. Zwei Einträge auf derselben
FileReferenceNumber:RenameOldName | Close, dannRenameNewName | Close. Die Eltern-Referenz unterscheidet sich zwischen den beiden — so rekonstruierst du den Move. - Atomares Speichern-per-Umbenennen. Viele Editoren schreiben in eine Tempdatei und benennen sie auf das Ziel um. Du siehst
FileCreateauf dem Temp,FileDelete | Closeauf dem Original undRenameNewName | Closeauf dem Temp. - Ransomware verschlüsseln-dann-umbenennen.
DataOverwrite-Einträge über Megabytes, gefolgt vonRenameNewName | Closemit neuer Endung. Anzahl und Timing derDataOverwritesind häufig der erste Anhaltspunkt für eine Probe auf der Platte. - Antivirus-Quarantäne.
FileDelete | Closeunmittelbar nach einem frischenFileCreate, alles unter derselben MFT-Entry. Das Journal liefert den Beweis, dass das AV die Datei angefasst hat — selbst nachdem die Datei selbst weg ist.
Was die Bits dir nicht verraten
Die Reason-Bitmaske spricht über die Datei, nicht über den Akteur. Kein Benutzer, keine Prozess-ID, keine Kommandozeile. Korrelier das Journal mit Security.evtx (4663 Objektzugriff) oder mit Microsoft-Windows-Sysmon/Operational, um jeder Operation einen Akteur zuzuordnen. Das USN liefert das Wann und Was; andere Logs liefern das Wer.
Pragmatisches Lese-Rezept
Beim Öffnen eines geparsten Journals:
- Filter nach
FileCreate, um zu sehen, was im Zeitfenster wirklich neu ist. - Such nach
RenameNewName, um Bewegungen und „Speichern unter"-Muster zu erwischen. - Trag die Anzahl von
DataExtendüber die Zeit auf — Massenschreibvorgänge (Backups, Verschlüsselung, Exfil-Staging) springen ins Auge. - Lies Einträge mit gesetztem
Closezuerst; behandle Zwischenstände als Stützbeweise.
Die Web-App auf dieser Seite erlaubt das Filtern nach beliebigen Kombinationen von Reason-Flags — was die Schritte 1–3 zur Ein-Klick-Übung macht.