ShellBags online auswerten mit einem Browser-Parser
Schritt für Schritt: UsrClass.dat und NTUSER.DAT im Browser auswerten, Baum und Zeitachse lesen, markierte Ordner sichten und als CSV oder JSON exportieren.
TL;DR. Öffnen Sie den ShellBags Parser, legen Sie UsrClass.dat und NTUSER.DAT ab (oder ein komplettes KAPE-/Velociraptor-ZIP), und Sie erhalten jeden besuchten Ordner als Baum pro Konto und als Zeitachse, mit Triage-Hinweisen für andere Laufwerke, Netzwerkfreigaben, Archive und vom Benutzer beschreibbare Ordner sowie CSV-/JSON-Export. Der Parser ist in Rust geschrieben, nach WebAssembly kompiliert und läuft in einem Web Worker: Die Hives verlassen Ihren Rechner nie. Transaktionsprotokolle spielt er noch nicht ein, bereinigen Sie dirty Hives also vorher.
Man sucht nach „ShellBags Explorer online“, weil die Referenzwerkzeuge Windows-Programme sind und ein Großteil der ersten Triage auf einem Mac, einer Linux-Analysemaschine oder einem abgeriegelten Firmen-Laptop stattfindet, auf dem die Installation von .NET-Werkzeugen ein Ticket erfordert. Diese Anleitung führt durch eine vollständige Sitzung mit dem synthetischen Sample der Website, sodass Sie ohne echte Daten folgen können.
Vorab: die richtigen Dateien sichern
Pro Benutzer benötigen Sie:
| Datei | Ort | Warum |
|---|---|---|
UsrClass.dat | C:\Users\<user>\AppData\Local\Microsoft\Windows\ | Haupt-ShellBags-Baum ab Vista |
NTUSER.DAT | C:\Users\<user>\ | Zweiter BagMRU-Baum und der Benutzername |
.LOG1 / .LOG2 zu jedem Hive | Neben jedem Hive | Ausstehende Schreibvorgänge eines dirty Hives |
Beide Hives sind gesperrt, solange der Benutzer angemeldet ist. Nutzen Sie das KAPE-Target RegistryHivesUser, Velociraptor, FTK Imager oder ein Datenträgerabbild. Details und Fallstricke unter Speicherort der ShellBags und Sicherung.
Ist ein Hive dirty, spielen Sie zuerst seine Protokolle mit rla.exe oder Registry Explorer ein (Eric Zimmermans Tools). Der Parser erkennt dirty Hives und meldet sie, liest die Primärdatei aber so, wie sie ist.
Schritt 1: die Hives laden
Öffnen Sie die Startseite. Sie können:
- einzelne Dateien ablegen (
UsrClass.dat,NTUSER.DAT; umbenannte Kopien funktionieren), - einen Ordner wählen (zum Beispiel ein KAPE-Ausgabeverzeichnis),
- eine ZIP-Triage-Sammlung aus KAPE oder Velociraptor ablegen.
Oder klicken Sie auf Beispiel testen, um zwei synthetische Hives aus einem fiktiven Einbruch zu laden: Das Konto svc_backup entpackt ein Toolkit, durchsucht eine Finanzfreigabe und kopiert Daten auf ein USB-Laufwerk.
Die Auswertung läuft in einem Web Worker. Es gibt keinen Upload-Endpunkt; ist die Seite einmal geladen, funktioniert sie offline.
Schritt 2: den Eingangsbericht lesen
Bevor Sie Ergebnisse lesen, prüfen Sie, was nicht ausgewertet wurde. Das Tool listet jede übersprungene Datei mit einem Grund:
- Nur Nullen: Der Hive war beim Kopieren gesperrt, und das Kopierwerkzeug hat ein leeres Abbild erzeugt. Sichern Sie erneut per Rohkopie.
- Transaktionsprotokoll: neben dem Hive aufbewahren und einspielen; es wird nicht allein ausgewertet.
- Ein anderer Hive (SYSTEM, SOFTWARE, Amcache...): ShellBags liegen nur in NTUSER.DAT und UsrClass.dat. Für die anderen Hives siehe den Registry-Parser oder den Amcache-Parser.
- Kein Registry-Hive: Die ersten Bytes werden angezeigt.
Parser-Warnungen (unlesbare Werte, dirty Hive) erscheinen in einem eigenen Bereich. Eine Dirty-Warnung bedeutet, dass jüngste ShellBags fehlen können.
Schritt 3: die Konten zuordnen
Jeder Hive wird einem Konto zugeordnet: der SID aus dem UsrClass-Wurzelschlüssel (S-1-5-21-..._Classes), dem Benutzernamen aus den Shell Folders-Werten in NTUSER oder dem Ordner Users\<name>\ im abgelegten Pfad. Bei einer vollständigen Triage-Sammlung erhalten Sie eine Gruppe pro Benutzer. Im Sample gehören beide Hives zu svc_backup.
Schritt 4: den Baum durchgehen
Die Ansicht Baum folgt der BagMRU-Hierarchie, gruppiert nach Konto und Hive. Spalten: Ordner, Shell-Item-Typ, letzte Interaktion, letzter Schreibzugriff des Schlüssels, erstellt, Zugriff, MFT, Hinweise.
Ein Klick auf eine Zeile öffnet den Detailbereich:
| Feld | Bedeutung |
|---|---|
| Name / 8.3-Name | Langer Name aus dem Erweiterungsblock, Kurzname aus dem Item-Kopf |
| Shell-Item-Typ | Root, Volume, Verzeichnis, Netzwerk, Delegate, Systemsteuerung, URI, variabel |
| BagMRU-Schlüssel | Zum Beispiel BagMRU\0\1\0\0, um ihn in Registry Explorer wiederzufinden |
| MRU-Position | Position in der MRUListEx des Elternschlüssels (0 = zuletzt genutzt) |
| NodeSlot | Verweis auf den Einstellungsschlüssel unter Bags |
| Unterordner | Anzahl der Unterschlüssel |
| Geändert (Shell-Item) | FAT-Änderungszeit aus dem Item-Kopf |
| Version des Erweiterungsblocks | 3, 7, 8 oder 9: Hinweis auf die Windows-Version, die ihn geschrieben hat |
| GUID | Für Root- und Known-Folder-Items |
| Rohes Shell-Item | Hex, für alles, was der Parser nicht dekodiert |
Klappen Sie im Sample My Computer\E: auf, um exfil\finance_2026 zu finden, und Network, um \\FILESRV01\Finance mit Payroll und Board zu sehen.
Schritt 5: mit Hinweisen und Filtern sichten
Aktivieren Sie Nur markierte. Die Hinweise sind einfache, dokumentierte Heuristiken:
- Anderes Laufwerk (USB?): ein anderer Laufwerksbuchstabe als C: unter Arbeitsplatz.
- Netzwerkort: ein UNC-Pfad oder ein Netzwerk-Item.
- In einem Archiv: ein Pfad durch
.zip,.7z,.rar,.cab,.iso,.tar,.gz,.vhd(x)und Ähnliche. - Vom Benutzer beschreibbarer Ordner:
AppData,Users\Public,ProgramData,Windows\Temp,$Recycle.Bin,PerfLogs,Temp.
Sie weisen hin, sie beweisen nicht. Ein Laufwerk D: kann eine zweite interne Platte sein, ein Unterordner von ProgramData ein legitimes Herstellerverzeichnis. Das Filterfeld akzeptiert Pfade, Daten und MFT-Eintragsnummern; so springen Sie von einem im USN-Journal gesehenen MFT-Eintrag zurück zum Ordner.
Schritt 6: zur Zeitachse wechseln
Die Ansicht Zeitachse sortiert nach der besten verfügbaren Zeit: „Letzte Interaktion“, wenn der Eintrag in der MRUListEx seines Elternschlüssels an erster Stelle stand, sonst „Letzter Schreibzugriff des Schlüssels“. Achten Sie darauf, welche Sie sehen: Die Spalte zeigt es an. Die Logik dahinter steht in ShellBags-Zeitstempel erklärt. Wechseln Sie mit dem Umschalter zwischen UTC und Ortszeit; berichten Sie in UTC.
Für das Sample liest sich die Geschichte so: tools.zip\x64 gegen 10:07 durchsucht, ProgramData\Intel um 10:09, \\FILESRV01\Finance ab 10:31, Board um 10:36, E:\exfil\finance_2026 um 10:45, der Papierkorb um 10:50 (alles am 2026-09-14 in UTC, fiktiv). Das Ermittlungsbeispiel interpretiert sie.
Schritt 7: exportieren und bestätigen
Exportieren Sie als CSV oder JSON. Exporte enthalten die aktuell angezeigten Zeilen; filtern Sie also vorher, wenn Sie eine gezielte Tabelle möchten. CSV-Zellen, die wie eine Tabellenkalkulationsformel beginnen, werden entschärft, weil Ordnernamen vom Angreifer kontrolliert werden können.
Anschließend bestätigen: LNK-Dateien und Jump Lists für in diesen Ordnern geöffnete Dateien, Ereignisprotokolle (EVTX-Parser) für Anmeldungen und USB-Verbindungen und das USN-Journal für das Anlegen und Löschen von Dateien.
Was das Tool (noch) nicht kann
.LOG1/.LOG2-Transaktionsprotokolle einspielen.- Gelöschte BagMRU-Schlüssel aus nicht zugeordneten Hive-Zellen wiederherstellen.
- MTP-Geräte-, ZIP-Inhalts- (
0x52) und Suchergebnis-Items vollständig dekodieren (sie bleiben als Näherungsname plus Hex erhalten).
Dafür nutzen Sie ergänzend ShellBags Explorer / SBECmd und Registry Explorer.