Ein großer Teil der Frage „Was geschah auf diesem Rechner zwischen 14:00 und 16:00?" lässt sich direkt aus dem USN-Journal beantworten. Die Einträge sind kein Syscall-Log und nicht mit einem Benutzer versehen — aber sie haben etwas fast genauso Nützliches: ein hochfrequentes, operationsscharfes Protokoll jeder Datei, die die Maschine angefasst hat. Mit etwas Musterwissen kann man das Verhalten des Nutzers in der Granularität Office-Speichern, Browser-Navigation, IDE-Rebuild, Mittagspause rekonstruieren.
Dieser Beitrag ist der Feldleitfaden, das Journal als Verhaltens-Timeline zu lesen.
Warum das funktioniert
Das USN-Journal hält fest, welche Datei sich änderte, wann und wie — und die meisten sichtbaren Aktionen eines Nutzers auf einem Desktop erzeugen eine erkennbare Datei-Aktivitäts-Signatur. Der Nutzer klickt in Word auf Speichern; Word schreibt eine Temp-Datei, benennt atomar um und macht BasicInfoChange | Close auf das Ergebnis. Chrome öffnet einen neuen Tab; der Plattencache wächst. Das IDE baut neu; tausend Object-Dateien tauchen auf.
Diese Signaturen sind offiziell nirgends dokumentiert — sie werden gelernt. Hier ein Starter-Set, plus die Parser-Steuerungen, die sie handhabbar machen.
Office in freier Wildbahn
Wenn ein Nutzer eine Word-, Excel- oder PowerPoint-Datei speichert, sieht man:
FileCreate | Close ~$<filename>.docx (Lock-Datei)
FileCreate | Close <filename>.tmp (atomare Temp)
DataExtend | Close <filename>.tmp × N
RenameOldName | Close <filename>.docx
FileDelete | Close <filename>.docx
RenameNewName | Close <filename>.docx (war <filename>.tmp)
FileDelete | Close ~$<filename>.docx
BasicInfoChange | Close <filename>.docx
Die ~$-Lock-Datei ist Offices Signal, dass ein Dokument offen ist; ihre FileCreate- und FileDelete-Einträge geben den Öffnungs-/Schließmoment des Dokuments an. Das atomare Rename .tmp → .docx ist das Speichern selbst. Die führenden ~$-Dateien sind überraschend nützlich, weil sie nur existieren, solange das Dokument geöffnet ist.
Pivot-Trick: nach FileCreate-Einträgen filtern, deren Dateiname mit ~$ beginnt, um alle vom Nutzer im Fenster geöffneten Office-Dokumente aufzuzählen. FileDelete derselben Namen abziehen, um die zum Aufnahmezeitpunkt noch offenen zu finden (ein forensisches Image einer laufenden Box kann Lock-Dateien für Dokumente enthalten, die nie sauber geschlossen wurden).
Browser-Aktivität
Moderne Browser pflegen schwergewichtige Dateisystem-Caches. Chrome und Edge nutzen \Users\<u>\AppData\Local\<browser>\User Data\Default\Cache\Cache_Data\ (oder Code Cache\); Firefox nutzt \Users\<u>\AppData\Local\Mozilla\Firefox\Profiles\<id>\cache2\.
Was man beim Surfen sieht:
- Eine anhaltende, niedrige Rate von
FileCreate | CloseundDataExtend | Closeim Cache-Verzeichnis. - Gelegentliche
FileDelete | Close, wenn LRU alte Einträge verdrängt. - Alle paar Minuten
RenameNewNamevon Cache-Dateien, wenn der Index verdichtet wird.
Bursts von Cache-Schreibvorgängen korrelieren gut mit dem Besuch medienlastiger Sites oder SPAs. Ruhige Phasen korrelieren mit Abwesenheit oder einer lange ladenden Seite.
Die Cache-Dateinamen verraten nicht, welche URLs besucht wurden (das steht in der Browser-eigenen DB), aber die Kadenz des Cache-I/O verrät, dass der Nutzer surfte. Mit FileCreate-Events des Journals im Downloads\ des Nutzers kombinieren, um bewusste Downloads zu identifizieren.
Code-Aktivität
Ist der Nutzer Entwickler, erzeugen IDE-Rebuilds sehr charakteristische Bursts:
- Webpack/Vite/Turbopack — viele
FileCreateinnode_modules\.cache\unddist\, oft hunderte pro Build. - Visual Studio C++ —
FileCreatevon.obj- und.pdb-Dateien inDebug\- oderRelease\-Teilbäumen. - Cargo (Rust) — inkrementelle Builds berühren
target\debug\incremental\stark; volle Builds berührentarget\debug\deps\.
Ein 5-minütiger Burst von FileCreate in node_modules\, gefolgt von einem DataExtend-Schwarm auf einem dist\bundle.js, ist „Build gefahren, dann hat der Dev-Server neu geladen".
Downloads und Installationen
Ein direkter Download erzeugt:
FileCreate | Close \Users\<u>\Downloads\<file>.crdownload (Chrome)
DataExtend | Close \Users\<u>\Downloads\<file>.crdownload × N
RenameNewName | Close \Users\<u>\Downloads\<file>
BasicInfoChange | Close \Users\<u>\Downloads\<file>
Die Endungen .crdownload, .part, .download sind Chrome, Firefox, Edge. Das atomare Rename am Ende lässt die Datei „vollständig" wirken.
Die Installation eines neuen Programms folgt typischerweise: FileCreate eines Installers .exe/.msi in Downloads, dann ein Burst von FileCreate in \Program Files\ oder \Program Files (x86)\ oder \Users\<u>\AppData\Local\Programs\. Das Minuten-Histogramm macht Installationen trivial identifizierbar.
Alles zusammen: eine Tages-Timeline
Das Rezept für einen „Was hat der Nutzer heute gemacht"-Bericht:
- Das geparste Journal des Nutzers für den Tag herausziehen. Auf Einträge unter
\Users\<u>\einschränken, um System-Rauschen zu entfernen. - Pro 10-Minuten-Bucket berechnen: Zahl der
FileCreate,DataExtend,BasicInfoChange. - Die drei Serien plotten. Die Form sagt die grobe Aktivität:
- Viele Creates + Extend: Inhalte schreiben/speichern.
- Viel
BasicInfoChangeallein: Surfen, Scrollen, leichte Bearbeitung. - Viel Extend mit wenig Create: große Downloads oder Medienwiedergabe.
- Anhaltende Creates in
Cache\-Verzeichnissen: Surfen. - Anhaltende Creates in
node_modules\/Debug\/target\: Programmieren.
- Spitzen annotieren, indem man die Top-Dateinamen im jeweiligen Bucket inspiziert. Office-Dateinamen sind großartige Anker; Cache-Namen lassen sich meist ignorieren.
Der Parser dieser Seite legt das Minuten-Histogramm in seiner Timeline-Komponente offen — ein Klick auf einen Balken filtert die Tabelle auf dieses Fenster, was dem obigen Workflow ohne Codezeile entspricht.
Stolperfallen
- Backups und AV-Scans erzeugen volumenweite
BasicInfoChange-Bursts, die oberflächlich wie Nutzeraktivität aussehen. Sie folgen meist Zeitplänen und besuchen alle Verzeichnisse, nicht nur die des Nutzers, was sie leicht erkennbar macht. - Sync-Agenten (OneDrive, Dropbox) erzeugen Journal-Verkehr, der aussieht wie Nutzeraktivität, aber Arbeit des Agenten ist. Auf Einträge filtern, deren Pfad außerhalb des Sync-Ordners liegt, um sich auf nutzerinitiierte Arbeit zu konzentrieren.
- Hintergrund-Indexer (
SearchIndexer.exe) berühren Dateien in\Users\<u>\AppData\Roaming\Microsoft\Windows\Recent\und\ProgramData\Microsoft\Search\— leicht als System-Rauschen einzusortieren.
Wohin als nächstes
- Die Microsoft-Learn-Referenz für Windows-Events, um Journal-Aktivität mit Security/Sysmon-Events zu paaren.
- Das Velociraptor-Artefakt-Pack — viele Community-Artefakte nutzen Journal-+-MFT-Korrelationen wie oben.
- Für eine Timeline im Produktionsmaßstab kann Plaso (
log2timeline) ein geparstes Journal aufnehmen und mit allen anderen Windows-Timeline-Artefakten zu einer Super-Timeline verschmelzen.
Das Journal allein ersetzt keine ordentliche Super-Timeline. Aber für 80 % der Untersuchungen ist „Was hat der Nutzer zwischen 14:00 und 16:00 getan?" allein mit $J und $MFT beantwortbar — in der Zeit, die das Ziehen auf diese Seite dauert.