Ein Großteil von "was passierte auf diesem Computer zwischen 14:00 und 16:00" kann direkt aus dem USN Journal beantwortet werden, ohne irgendein anderes Artefakt. Die Einträge sind kein Syscall-Log und sie sind nicht mit einem Benutzer getagt, aber sie sind etwas fast Ebenso Nützliches: ein hochfrequentes, Per-Operation-Aufzeichnen jeder Datei, die die Maschine berührt hat. Mit Mustererkennung, die ein paar Einsätze zum Aufbauen braucht, können Sie Verhalten auf der Granularität von Office-Save, Browser-Navigation, IDE-Rebuild, Mittagspause wiederherstellen.
Dieser Beitrag ist der Feldführer, um das Journal als Verhaltens-Timeline zu lesen.
Warum das überhaupt funktioniert
Die meisten benutzersichtbaren Aktionen auf einem Windows-Desktop produzieren eine erkennbare Dateisystem-Signatur. Klicken Sie Save in Word und Word schreibt eine Temp-Datei, benennt sie atomar um und BasicInfoChange | Closet das Ergebnis. Öffnen Sie einen neuen Tab in Chrome und der Disk-Cache hängt an. Führen Sie ein npm install aus und tausende von package.json-Dateien entstehen in Sekunden.
Diese Signaturen sind in keiner Microsoft-Referenz dokumentiert. Sie werden gelernt, indem man Journals von Hosts kontrollierter Experimente anschaut und sie mit bekannter Aktivität abgleicht. Unten ist ein Starter-Set, geordnet danach, wie oft ich jedes in Fällen sehe.
Office im Wildwuchs
Wenn ein Benutzer eine Word-, Excel- oder PowerPoint-Datei speichert, sehen Sie:
FileCreate | Close ~$<filename>.docx (Sperrdatei)
FileCreate | Close <filename>.tmp (atomares 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 ~$-Sperrdatei ist Offices Signal, dass ein Dokument offen ist. Ihr FileCreate und FileDelete umrahmen das Öffnen/Schließen-Fenster präzise. Die atomare Umbenennung .tmp zu .docx ist der Save selbst. Das BasicInfoChange am Ende ist die neue Datei, die beim Schließen ihre mtime gestempelt bekommt.
Ein Pivot-Trick, den ich bei jedem Einsatz verwende: Filtern Sie nach FileCreate-Einträgen, deren Dateiname mit ~$ beginnt. Das gibt Ihnen jedes Office-Dokument, das der Benutzer im Fenster geöffnet hat. Ziehen Sie FileDelete derselben Namen ab, und Sie haben alle Dokumente, die zum Erfassungszeitpunkt noch offen waren, was bei einer Live-Erfassung den Dokumenten entspricht, die der Benutzer offen hatte, als die Maschine abgebildet wurde. Dieser letzte Punkt ist in mehr als einen Bericht als die "was hat der Benutzer in dem Moment, als wir eintraten, tatsächlich getan"-Antwort eingegangen.
Browser-Aktivität
Moderne Browser unterhalten schwere Dateisystem-Caches. Chrome und Edge verwenden \Users\<u>\AppData\Local\<browser>\User Data\Default\Cache\Cache_Data\ (plus Code Cache\). Firefox verwendet \Users\<u>\AppData\Local\Mozilla\Firefox\Profiles\<id>\cache2\. Während des Browsens:
- Eine anhaltende niedrige Rate von
FileCreate | CloseundDataExtend | Closeim Cache-Verzeichnis. - Gelegentliches
FileDelete | Close, während der LRU alte Einträge ausgibt. - Alle paar Minuten
RenameNewNamevon Cache-Dateien, während der Index kompaktiert wird.
Bursts von Cache-Schreibvorgängen korrelieren mit dem Besuch medienlastiger oder Single-Page-Anwendungs-Sites. Ruhige Perioden korrelieren damit, dass der Benutzer weg ist oder auf einer langsam ladenden Seite. Aktive Videowiedergabe produziert eine andere Form — großes anhaltendes DataExtend auf einer einzelnen Cache-Datei statt vieler kleiner Creates.
Die Cache-Dateinamen kodieren keine URLs. Pivotieren Sie dafür zu den eigenen SQLite-Datenbanken des Browsers über das Browser-Historie-Forensik-Tooling. Der Beitrag des Journals ist die Kadenz — dass der Benutzer während eines bestimmten Fensters aktiv surfte — plus die expliziten FileCreate-Ereignisse in \Users\<u>\Downloads\ für absichtliche Downloads.
Code-Aktivität
Wenn der Benutzer ein Entwickler ist, produzieren IDE- und Build-Tool-Aktivitäten hochcharakteristische Bursts:
- Webpack, Vite, Turbopack — viele
FileCreateinnode_modules\.cache\,node_modules\.vite\,.next\unddist\. Hunderte pro Build. - Visual Studio C++ —
FileCreatevon.obj- und.pdb-Dateien inDebug\- oderRelease\-Unterbäumen. - Cargo (Rust) — Inkrementelle Builds berühren stark
target\debug\incremental\; vollständige Builds berühren auchtarget\debug\deps\. - Go — Kurze, intensive Bursts in
$GOPATH\pkg\und dem Build-Cache unter\Users\<u>\AppData\Local\go-build\. npm installundyarn install— Tausende vonFileCreate-Einträgen unternode_modules\in zehn Sekunden. Die lauteste einzelne Benutzeraktivität im Journal.
Ein fünfminütiger Burst von FileCreate in node_modules\, gefolgt von einem DataExtend-Schwarm auf dist\bundle.js, ist "lief den Build, dann lud ein Dev-Server neu". Lesen Sie den Ausschluss-Abschnitt unten — diese Bursts werden alles andere übertönen, wenn Sie sie nicht für Nicht-Entwicklungs-Analysen herausfiltern.
Downloads und Installationen
Ein direkter Download über Chrome:
FileCreate | Close \Users\<u>\Downloads\<file>.crdownload
DataExtend | Close \Users\<u>\Downloads\<file>.crdownload × N
RenameNewName | Close \Users\<u>\Downloads\<file>
BasicInfoChange | Close \Users\<u>\Downloads\<file>
Firefox verwendet .part, Edge verwendet .download. Die atomare Umbenennung am Ende lässt die Datei für Explorer und andere Reader "vollständig" erscheinen.
Die Installation eines neuen Programms folgt typischerweise: FileCreate eines Installers (.exe, .msi, .appx) in Downloads, dann ein Burst von FileCreate-Einträgen unter \Program Files\, \Program Files (x86)\ oder \Users\<u>\AppData\Local\Programs\. Das Per-Minute-Histogramm macht Installationen trivial identifizierbar. Querverweisen Sie mit AmCache und Prefetch für die Ausführungsseite.
Es zusammenfügen: das tägliche Timeline-Rezept
Das Rezept für einen "was hat der Benutzer heute getan"-Bericht:
- Ziehen Sie das geparste Journal des Benutzers für den Tag. Beschränken Sie auf Einträge, deren aufgelöster Pfad mit
\Users\<u>\(dem Zielbenutzer) beginnt. Das eliminiert Windows Update, System-Caches und OS-Rauschen, das sonst dominiert. - Berechnen Sie pro 10-Minuten-Bucket: Zählungen von
FileCreate,DataExtend,BasicInfoChange. - Plotten Sie die drei Serien. Die Form sagt Ihnen die grobe Aktivität:
- Hohe Creates plus Extend. Schreiben oder Speichern von Inhalten.
- Hohes
BasicInfoChangeallein. Browsen, Scrollen, leichtes Bearbeiten, wo Office oder der Editor die Datei ohne signifikante Schreibvorgänge berührt. - Hohes Extend mit niedrigem Create. Großer Download oder Medienwiedergabe.
- Anhaltende Creates in
Cache\-Pfaden. Browsen. - Anhaltende Creates in
node_modules\odertarget\oderDebug\. Coding.
- Annotieren Sie Spikes, indem Sie die Top-fünf-Dateinamen in jedem Bucket untersuchen. Office-Dateinamen und
~$-Sperrdateien sind großartige Anker. Cache-Dateinamen können Sie meist ignorieren.
Der Parser auf dieser Seite legt das Per-Minute-Histogramm auf seiner Timeline-Komponente offen. Das Klicken auf einen Balken filtert die Tabelle auf dieses Fenster, was der obige Workflow ohne Code schreiben ist.
Für Attribution — welcher Benutzer an der Tastatur war — paaren Sie die Journal-Timeline mit Security.evtx 4624-Interactive-Logons (LogonType=2) und 4647-benutzerinitiierten Logoffs aus dem EVTX-Parser. Das umrahmt die Sitzungsgrenzen und gibt Ihnen einen Namen, den Sie an die Aktivität setzen können.
Ausschlüsse und Stolperfallen
Backup- und AV-Scans produzieren volumeweite BasicInfoChange-Bursts, die oberflächlich wie Benutzeraktivität aussehen. Sie folgen geplanten Zeiten und besuchen jedes Verzeichnis, anstatt sich auf einen Unterbaum zu konzentrieren. Leicht durch Pfadabdeckung zu identifizieren und auszuschließen.
Sync-Agents (OneDrive, Dropbox, Google Drive Backup and Sync) erzeugen Journal-Traffic, der aussieht wie Benutzeraktivität, aber die eigene Arbeit des Agents ist. Filtern Sie auf Einträge außerhalb des Sync-Ordners für benutzerinitiierte Aktivität oder schauen Sie speziell innerhalb des Sync-Ordners nach dem Exfil-via-Cloud-Muster, das im Exfiltrations-Beitrag dokumentiert ist.
Hintergrund-Indexierer. SearchIndexer.exe berührt Dateien in \Users\<u>\AppData\Roaming\Microsoft\Windows\Recent\ und \ProgramData\Microsoft\Search\. MsMpEng.exe (Defender) produziert BasicInfoChange-Ereignisse, wenn er scannt. Beide sind leicht als System-Rauschen zu bucketten.
Chrome Software Reporter, Edge Updater, Windows Update. Alle produzieren vorhersehbare FileCreate- und DataExtend-Bursts in \Program Files\ und \Windows\SoftwareDistribution\. Nach Pfad filtern.
node_modules\ und andere Build-Outputs dominieren jede Timeline, die sie enthält. Für Nicht-Entwicklungs-Fälle schließen Sie node_modules\, target\, Debug\, Release\, obj\, bin\, .next\, dist\, build\ nach Pfadpräfix aus.
Was das Journal nicht rekonstruieren kann
- Die Identität des Benutzers. Korrelieren Sie Zeitstempel mit
Security.evtx4624-Logons. - Die vom Benutzer besuchten URLs. Browser-Historie-Datenbanken halten diese — das Journal kennt nur die Cache-Schreib-Kadenz.
- Den Inhalt irgendeiner Datei. Nur Metadaten.
- Alles außerhalb des Ringpuffer-Fensters. Ein 32 MB großes
$Jdeckt ein paar Tage auf einem Desktop ab. Alles Ältere ist aus diesem Artefakt verschwunden; ziehen Sie Shadow Copies und$LogFile, wenn Sie mehr Reichweite brauchen.
Für 80 % der "was hat der Benutzer zwischen X und Y getan"-Fragen beantworten $J und $MFT zusammen direkt. Die verbleibenden 20 % wollen Sysmon, EVTX, SRUM für Anwendungs-Level-Netzwerk und CPU-Nutzung und eine ordentliche Super-Timeline.
Weiterführende Literatur
- Plaso (
log2timeline) — das kanonische Super-Timeline-Tool nimmt geparste USN-Journals auf und mergt sie mit jedem anderen Windows-Timeline-Artefakt in eine sortierbare Ansicht. - SANS DFIR — das Windows Forensic Analysis Poster ist die Einseiten-Referenz dafür, welche Artefakte welche Benutzeraktivitätsfragen beantworten.
- Der Velociraptor Artefakt-Exchange — mehrere Community-Artefakte kombinieren USN-, MFT- und EVTX-Korrelationen wie die obigen.