Skip to content

Windows-ShellBags-Forensik

ShellBags Parser

Jeder Ordner, den ein Benutzer im Explorer geöffnet hat — lokal, USB, Netzwerkfreigaben, in ZIP-Dateien, sogar nicht mehr existierende Ordner. Im Browser per WebAssembly ausgewertet — nichts wird hochgeladen.

  • NTUSER.DAT
  • UsrClass.dat
  • BagMRU
  • Rust → WebAssembly

UsrClass.dat oder NTUSER.DAT hier ablegen

Ab Windows 7 liegen die meisten ShellBags in UsrClass.dat; legen Sie auch NTUSER.DAT ab. Ordner und ZIP-Triage-Sammlungen (KAPE, Velociraptor) funktionieren direkt, ein Hive-Paar pro Benutzer.

Synthetische Hives eines fiktiven Einbruchs — keine echten Daten. So sammeln Sie ↓

100 % clientseitig: Hives werden per WebAssembly in Ihrem Browser ausgewertet und nie hochgeladen.

So kommen Sie an Ihre Daten

UsrClass.dat + NTUSER.DAT

Sie brauchen beide Hives jedes Benutzers, am besten mit ihren .LOG1/.LOG2-Dateien. Windows sperrt sie im laufenden Betrieb, daher ist eine Rohkopie nötig: Die erste Methode ist ein einziges Einfügen.

  1. SammelnBeide Hives jedes Benutzers samt Logs kopieren.
  2. AblegenDen Ordner C:\triage oder das ZIP oben in das Feld ziehen.
  3. Bleibt im BrowserLokal per WebAssembly ausgewertet. Nichts wird hochgeladen.

Empfohlen · in Windows enthalten

Windows 10/11 oder Server 2016+. In eine PowerShell einfügen, die mit „Als Administrator ausführen“ geöffnet wurde. Kopiert Hives und Logs aller Profile über eine Schattenkopie (esentutl /vss); keine Installation nötig.

PowerShell · als Administrator
$out = 'C:\triage'
Get-ChildItem C:\Users -Directory | ForEach-Object {
  foreach ($rel in 'NTUSER.DAT', 'NTUSER.DAT.LOG1', 'NTUSER.DAT.LOG2',
      'AppData\Local\Microsoft\Windows\UsrClass.dat',
      'AppData\Local\Microsoft\Windows\UsrClass.dat.LOG1',
      'AppData\Local\Microsoft\Windows\UsrClass.dat.LOG2') {
    $src = Join-Path $_.FullName $rel
    if (Test-Path -LiteralPath $src) {
      $dst = Join-Path "$out\Users\$($_.Name)" $rel
      New-Item -ItemType Directory -Force -Path (Split-Path $dst) | Out-Null
      esentutl.exe /y $src /vss /d $dst
    }
  }
}
attrib -h -s "$out\*" /s /d

Ergebnis: C:\triage\Users\<Name>\… pro Konto. Den Ordner C:\triage hier ablegen, oder ihn zippen und das ZIP ablegen.

Stolperfallen

  • Eine normale Kopie eines geöffneten Hives schlägt fehl oder liefert eine Datei voller Nullen (das Tool meldet das). Eine der Rohkopie-Methoden oben verwenden.
  • Warnung „dirty Hive“? Die .LOG1/.LOG2 mit rla.exe von Eric Zimmerman oder mit Registry Explorer einspielen und den bereinigten Hive ablegen.
  • Alle Profile sammeln, auch Dienst- und Admin-Konten, und die Ordner Users\<Name>\ beibehalten: Umbenannte Einzeldateien lassen sich evtl. nur per SID zuordnen.

Was sind ShellBags?

ShellBags sind Registrierungsschlüssel, in denen der Windows-Explorer sich merkt, wie jeder Ordner angezeigt wurde — Ansicht, Symbolgröße, Fensterposition. Dazu speichert er pro Benutzer einen Eintrag für jeden geöffneten Ordner, in einem Baum, der die Ordnerhierarchie abbildet.

Da Windows diese Einträge lange nach dem Verschwinden des Ordners behält, belegen ShellBags, dass ein Benutzer einen Ort durchsucht hat: ein abgezogenes USB-Laufwerk, eine Netzwerkfreigabe, das Innere einer ZIP-Datei oder einen später gelöschten Ordner.

Wo ShellBags gespeichert sind

  • Windows 7 und neuer: UsrClass.dat (C:\Users\<Benutzer>\AppData\Local\Microsoft\Windows\UsrClass.dat) unter Local Settings\Software\Microsoft\Windows\Shell\BagMRU und Bags.
  • Außerdem NTUSER.DAT (C:\Users\<Benutzer>\NTUSER.DAT) unter Software\Microsoft\Windows\Shell\BagMRU — vor allem Desktop und Netzwerk.
  • Windows XP: NTUSER.DAT, Software\Microsoft\Windows\ShellNoRoam\BagMRU.
  • Jeder BagMRU-Schlüssel enthält nummerierte Werte — ein Shell-Item pro Unterordner — sowie MRUListEx (zuletzt verwendete Reihenfolge) und NodeSlot (Verweis auf die Ansichtseinstellungen unter Bags).

Warum das für Ermittlungen wichtig ist

  • Zeigt Ordner, die ein bestimmter Benutzer geöffnet hat, auch auf Wechseldatenträgern oder entfernten Freigaben, die nicht mehr verbunden sind.
  • Shell-Items enthalten den MFT-Eintrag und die Sequenznummer des Ordners sowie dessen Erstellungs-, Änderungs- und Zugriffszeiten zum Zeitpunkt des Durchsuchens.
  • Das Durchsuchen von ZIP-Dateien und Netzwerkfreigaben deckt oft Datensammlung und Exfiltration auf.

Einschränkungen

  • Schlüsselzeitstempel zeigen nur die letzte Änderung; die „letzte Interaktion“ lässt sich nur für das zuletzt verwendete Kind jedes Ordners ableiten.
  • Zeiten in Shell-Items nutzen das FAT-Format: 2 Sekunden Auflösung.
  • Ein ShellBag belegt, dass der Ordner im Explorer durchsucht wurde, nicht dass Dateien darin geöffnet wurden.
  • Aus der Registry gelöschte Einträge (nicht zugeordnete Zellen) werden noch nicht wiederhergestellt.

So sichern Sie die Hives

  • Beide Hives sind gesperrt, solange der Benutzer angemeldet ist: sichern Sie sie mit KAPE (Target RegistryHivesUser), Velociraptor, FTK Imager oder aus einem Datenträgerabbild.
  • Bewahren Sie die .LOG1- und .LOG2-Dateien neben jedem Hive auf: einem Dirty Hive können neuere Schreibvorgänge fehlen.
  • Benennen Sie jedes Paar nach Benutzer (oder behalten Sie die Struktur Users\<Name>\), damit das Werkzeug die Konten unterscheiden kann.

FAQ

Wird mein Hive irgendwohin hochgeladen?

Nein. Der Parser ist in Rust geschrieben, nach WebAssembly kompiliert und läuft in einem Web Worker in Ihrem Browser. Es gibt keinen Upload-Endpunkt; nach dem Laden funktioniert die Seite auch offline.

UsrClass.dat oder NTUSER.DAT?

Beide. Ab Windows 7 liegen die meisten ShellBags in UsrClass.dat; NTUSER.DAT enthält einen kleineren BagMRU (Desktop, einige Netzwerkeinträge). Legen Sie beide zusammen ab, um alles für einen Benutzer zu sehen.

Was bedeutet „letzte Interaktion“?

Wenn sich die Reihenfolge der Unterordner eines Ordners ändert, schreibt Windows dessen Schlüssel neu. Der Unterordner an erster Stelle von MRUListEx wurde also beim letzten Schreiben des übergeordneten Schlüssels verwendet — diese Zeit wird als seine letzte Interaktion angezeigt.

Können ShellBags gelöschte Ordner zeigen?

Ja. Die Einträge bleiben nach dem Löschen des Ordners erhalten; ein Ordner, der nicht mehr auf dem Datenträger existiert, kann hier also weiterhin mit MFT-Eintrag und Zeitstempeln erscheinen.

Ist das dasselbe wie SBECmd / ShellBags Explorer?

Es deckt dieselben Kernfelder ab (absoluter Pfad, Shell-Typ, MRU-Position, NodeSlot, MFT-Referenz, Zeitstempel) und exportiert CSV, läuft aber ohne Installation im Browser.