Skip to content

NTFS-Transaktionsjournal · DFIR

NTFS $LogFile Parser

Kürzlich angelegte, umbenannte und gelöschte Dateien sowie Zeitstempeländerungen, rekonstruiert aus dem NTFS-Transaktionsjournal — jeder Roh-Logeintrag einen Klick entfernt. Im Browser mit WebAssembly analysiert — nichts wird hochgeladen.

  • $LogFile
  • $MFT
  • LSN
  • redo / undo
  • Rust → WASM

$LogFile (und die $MFT desselben Volumes) hier ablegen

Fügen Sie die $MFT hinzu, um MFT-Referenzen in vollständige Pfade aufzulösen. Ordner und ZIP-Triage-Sammlungen (KAPE, Velociraptor) funktionieren direkt — jede $LogFile wird mit der $MFT daneben gepaart.

Eine synthetische $LogFile und $MFT aus einem fiktiven Einbruch — keine echten Daten.

100 % clientseitig: Die Dateien werden per WebAssembly im Browser analysiert und nie hochgeladen.

So kommen Sie an Ihre Daten

Vollständige Anleitung zur Sicherung

$LogFile ist eine gesperrte NTFS-Metadatei: Explorer und copy können sie nicht lesen. Ein einziger Befehl sichert sie zusammen mit der $MFT, die ihre Dateien benennt.

  1. 1. $LogFile + $MFT sichern
  2. 2. Ordner oder ZIP hier ablegen
  3. 3. Alles bleibt in Ihrem Browser

KAPE, zwei TargetsEmpfohlen

Eingabeaufforderung als Administrator (cmd.exe; PowerShell würde $LogFile auflösen) · KAPE auf dem Host oder einem USB-Stick · E: = Ihr externes Laufwerk.

cmd · admin
kape.exe --tsource C: --target $LogFile,$MFT --tdest E:\triage

Erzeugt E:\triage\C\$LogFile und E:\triage\C\$MFT. Legen Sie den ganzen Ordner E:\triage hier ab. Für ein weiteres Volume erneut mit --tsource D: ausführen.

Stolperfallen

  • Eine normale Kopie schlägt fehl oder enthält nur Nullen, weil die Datei gesperrt ist. Nutzen Sie ein Tool mit Raw-Zugriff von oben; das Tool meldet mit Nullen gefüllte Kopien.
  • Das Log ist zirkulär: Auf einem aktiven Systemlaufwerk kann es in weniger als einer Stunde überschrieben sein. Sichern Sie es zuerst und schreiben Sie auf ein anderes Laufwerk, nicht auf C:.
  • Nehmen Sie die $MFT desselben Volumes im selben Lauf, und führen Sie auf dem Beweis-Volume nie chkdsk aus (es kann das Log zurücksetzen).

Was ist die NTFS-$LogFile?

$LogFile ist das Transaktionsjournal von NTFS (MFT-Eintrag 2). Bevor NTFS seine eigenen Metadaten ändert — einen FILE-Eintrag, einen Ordnerindex, eine Bitmap —, schreibt es einen Logeintrag, der die Änderung zweimal beschreibt: als Redo-Operation (wie sie angewendet wird) und als Undo-Operation (wie sie rückgängig gemacht wird). Nach einem Absturz spielt Windows diese Einträge nach oder macht sie rückgängig, damit das Volume konsistent bleibt.

Für Ermittler sind diese Redo- und Undo-Bytes Gold wert: Sie enthalten Dateinamen, Elternordner, MFT-Referenzen und Zeitstempel jeder Metadatenänderung, vorher und nachher. Daraus lassen sich Anlegen, Löschen, Umbenennen und das Überschreiben von Zeitstempeln rekonstruieren — selbst wenn das USN-Journal deaktiviert oder geleert wurde.

Wo sie gespeichert ist

  • \$LogFile im Stammverzeichnis jedes NTFS-Volumes (C:\$LogFile, D:\$LogFile…). Es ist eine versteckte Metadatendatei: Explorer und normales Kopieren kommen nicht heran — es braucht einen Raw-NTFS-Leser.
  • Standardgröße: 64 MiB auf aktuellen Windows-Versionen (änderbar mit chkdsk /L). Das Log ist zirkulär: Neue Einträge überschreiben die ältesten, auf einem ausgelasteten System deckt es meist Minuten bis wenige Stunden ab.
  • Aufbau: zwei Restart-Seiten (RSTR), dann 2 Tail-Seiten (Format 1.1, Windows XP bis 7 sowie Windows 8+ nach sauberem Herunterfahren) oder 32 Fast Pages (Format 2.0, Windows 8+ bei eingehängtem Volume), danach der zirkuläre Bereich der Eintragsseiten (RCRD), jede durch ein Update-Sequence-Array geschützt.

Warum sie für Ermittlungen wichtig ist

  • Anlegen von Dateien und Ordnern (InitializeFileRecordSegment + AddIndexEntry), Löschungen (DeleteIndexEntry + DeallocateFileRecordSegment) sowie Umbenennungen und Verschiebungen, mit MFT-Eintrag und Sequenznummer.
  • Timestomping: Ein UpdateResidentValue auf $STANDARD_INFORMATION enthält den alten und den neuen Zeitstempel — eine auf 2019 zurückgesetzte Erstellungszeit ist als solche sichtbar.
  • Inhalt kleiner Dateien, manchmal: Daten innerhalb des FILE-Eintrags (resident, bis ca. 700 Bytes) können in den Redo/Undo-Daten auftauchen — gelegentlich sogar von Notizen oder Skripten, die eine Minute später gelöscht wurden. Auf aktuellen Windows-Versionen protokollieren viele Änderungen nur, dass etwas geändert wurde: Wiederhergestellter Inhalt ist ein Bonus, keine Gewissheit.
  • Sie ergänzt $UsnJrnl:$J (längere Historie, aber nur Gründe und Namen) und die $MFT (nur der aktuelle Zustand): Die $LogFile liefert die Werte vorher / nachher.

Einschränkungen

  • Kurze Aufbewahrung: Das Log ist zirkulär, nur die jüngste Aktivität ist noch vorhanden. Früh sichern.
  • Logeinträge haben keine Uhrzeit. Angezeigte Zeiten stammen aus den $FILE_NAME- / $STANDARD_INFORMATION-Werten in den Daten; Ereignisse ohne Zeit übernehmen die des nächstgelegenen datierten Ereignisses und sind mit ≈ markiert.
  • Namen sind nur bekannt, wenn sie im Log vorkommen; ohne $MFT beginnen manche Pfade mit [MFT #n] oder fehlen.
  • Nicht residenter Dateiinhalt steht nie in der $LogFile (nur Metadaten). Gruppierung nach Transaktionen, das $UsnJrnl als Ergänzung und $I30-Slack werden noch nicht genutzt.
  • Der Parser ist mit synthetischen Logs validiert, die nach dem veröffentlichten Format (Linux ntfs3, libfsntfs) erzeugt wurden — wichtige Befunde mit einem zweiten Werkzeug prüfen.

So kommen Sie an die Dateien

  • KAPE: Die Targets $LogFile und $MFT (oder !SANS_Triage) sichern sie roh von jedem Volume. Velociraptor: Windows.Triage.Targets mit den Targets LogFile und MFT (früher Windows.KapeFiles.Targets) oder der NTFS-Accessor.
  • Aus einem Datenträgerabbild: FTK Imager (Export aus [root]) oder The Sleuth Kit: icat -f ntfs image.dd 2 > '$LogFile' und icat … 0 > '$MFT'.
  • $LogFile und $MFT desselben Volumes gleichzeitig sichern und die Ordnerstruktur (C/, D/…) beibehalten, damit jedes Log mit seiner eigenen $MFT gepaart wird.

FAQ

Wird meine $LogFile irgendwohin hochgeladen?

Nein. Der Parser ist in Rust geschrieben, nach WebAssembly kompiliert und läuft in einem Web Worker im Browser. Es gibt keinen Upload-Endpunkt; die $MFT wird blockweise gelesen, und nur Dateinamen und Elternordner werden behalten.

Warum die $MFT hinzufügen?

Logeinträge verweisen auf MFT-Einträge, und der Name einer Datei wird nur beim Anlegen, Umbenennen oder Löschen protokolliert. Die $MFT benennt alle anderen Einträge und alle Elternordner, sodass die Pfade vollständig werden (\Windows\System32\… statt [MFT #44]).

Wie erkennt es Timestomping?

Jede Aktualisierung von $STANDARD_INFORMATION im Log enthält den alten und den neuen Wert. Eine überschriebene Erstellungszeit, ein zurückgehender Zeitstempel, ein Wert auf volle Sekunden oder eine Erstellung vor der aus $FILE_NAME werden markiert — Hinweise zum Prüfen, keine Beweise.

Werden Logs von Windows 8, 10 und 11 unterstützt?

Ja: Format 2.0 (32 Fast Pages, bei eingehängtem Volume ab Windows 8) und 1.1 (ältere Windows-Versionen oder nach sauberem Herunterfahren). Die neueste Seite, bei Live-Sicherungen oft nur im Tail- / Fast-Page-Bereich vorhanden, wird verwendet, wenn sie neuer ist als ihre zirkuläre Kopie.

Was ist der Unterschied zu LogFileParser oder NTFS Log Tracker?

Dieselben Quelldaten, ohne Installation: Es läuft im Browser, zeigt jeden Roh-Logeintrag neben den rekonstruierten Ereignissen, löst Pfade mit der $MFT auf und exportiert CSV / JSON. Diese Werkzeuge sind ausgereifter — nutzen Sie sie, um zentrale Befunde zu bestätigen.