Was dieses Tool rekonstruiert
Windows erfasst ein Wechselmedium an einem Dutzend Stellen, keine davon vollständig. Der SYSTEM-Hive kennt das Gerät (USBSTOR, USB, WPDBUSENUM), seinen Laufwerksbuchstaben und seine Volume-GUID (MountedDevices) sowie vier Eigenschafts-Zeitstempel: Erstinstallation, letzte Installation, letztes Anschließen und letztes Entfernen. setupapi.dev.log datiert die Erstinstallation. Die Ereignisprotokolle datieren jedes Anschließen und Entfernen, und Partition/Diagnostic 1006 enthält sogar den Volume Boot Record und damit die Volume-Seriennummer. Hive, Verknüpfungen, Jump Lists und ShellBags jedes Benutzers zeigen, wer das Volume gemountet hat und was darauf geöffnet wurde.
USB Forensics liest all diese Quellen in Ihrem Browser und verknüpft sie pro physischem Gerät — über Seriennummer / Instanz-ID, dann Volume-GUID, dann Volume-Seriennummer — zu einer Gerätekarte und einer Zeitleiste. Jede Angabe trägt Beleg-Chips mit der Datei und dem Schlüssel, Datensatz oder der Zeile, aus der sie stammt, und wo sich Quellen widersprechen, sagt das Tool es, statt stillschweigend eine auszuwählen.
Gelesene Artefakte
- SYSTEM: Enum\USBSTOR (Hersteller, Produkt, Revision, Seriennummer, FriendlyName, ContainerID und die Zeitstempel unter Properties\{83da6326-97a6-4088-9453-a1923f573b29}: 0064 Installationsdatum, 0065 Erstinstallationsdatum, 0066 letztes Anschließen, 0067 letztes Entfernen), Enum\USB (VID/PID), Enum\SWD\WPDBUSENUM, MountedDevices, TimeZoneInformation.
- SOFTWARE: Microsoft\Windows Portable Devices\Devices (Volume-Labels), Windows NT\CurrentVersion\EMDMgmt (Label + Volume-Seriennummer), ProfileList (SID → Konto).
- C:\Windows\INF\setupapi.dev.log: Abschnitte zur Geräteinstallation, aus Ortszeit mit der SYSTEM-Zeitzone umgerechnet.
- Ereignisprotokolle: Partition/Diagnostic 1006, Kernel-PnP/Configuration 400/410/420/430, DriverFrameworks-UserMode 2003/2100/2101/2102, Security 6416 und 4663, System UserPnp 20001/20003.
- Pro Benutzer: NTUSER.DAT MountPoints2, UsrClass.dat ShellBags, Recent\*.lnk, Jump Lists in AutomaticDestinations / CustomDestinations.
Welche Fragen es beantwortet
- Welche USB-Speichergeräte jemals angeschlossen waren, mit Hersteller, Modell, Seriennummer (und ob Windows die Seriennummer erzeugt hat).
- Wann jedes Gerät erstmals installiert wurde, und jedes Anschließen und Entfernen, das noch irgendeine Quelle verzeichnet.
- Welche Laufwerksbuchstaben, Volume-Labels und Volume-Seriennummern es im Lauf der Zeit hatte und welche Konten es gemountet haben.
- Welche Dateien und Ordner darauf geöffnet, geschrieben oder gelesen wurden, und von wem.
- Befunde für die Triage: ein während des Vorfallszeitfensters angeschlossenes Gerät, ein erst kürzlich aufgetauchtes Speichergerät, auf Wechselmedien kopierte oder davon geöffnete Dateien, ein von einem unerwarteten Konto genutztes Gerät.
Grenzen
- Transaktionsprotokolle der Registry (.LOG1/.LOG2) werden nicht eingespielt: Ein „dirty“ Hive wird markiert, und die neuesten Änderungen können fehlen.
- Nur das aktuelle Control Set wird gelesen. Gelöschte Schlüssel und Slack Space werden nicht wiederhergestellt.
- setupapi.dev.log wird mit den Zeitzonenregeln aus SYSTEM umgerechnet; jahresspezifische Dynamic-DST-Regeln werden nicht angewendet, und das setupapi.log-Format von Windows XP wird nicht unterstützt.
- ShellBags und Security 4663 nennen das Gerät nicht: Sie werden ihm über Laufwerksbuchstabe oder Volume-Nummer und zeitliche Überschneidung zugeordnet und als „abgeleitet“ markiert.
- Einzelne Verknüpfungsdateien werden über ihre Änderungszeit aus der Sammlung datiert; hat die Kopie sie nicht erhalten, stützen Sie sich auf die Jump List und die in den Belegen angezeigten Zielzeiten.
- Die Engine wurde mit synthetischen Daten und handgefertigten Grenzfällen validiert; vergleichen Sie die Ergebnisse mit etablierten Tools, bevor Sie sich vor Gericht darauf stützen.
So sammeln Sie
- Am schnellsten: der PowerShell-Block mit Administratorrechten oben (reg save + wevtutil + robocopy) — oder das KAPE-Target USBDetective.
- Velociraptor: Windows.Triage.Targets mit dem Target USBDetective, dann das Sammlungs-ZIP unverändert ablegen.
- Datenträgerabbilder: schreibgeschützt einbinden und die aufgeführten Dateien mit ihren Pfaden kopieren, oder einen FTK-Imager-Export ablegen.
FAQ
Werden meine Dateien hochgeladen?
Nein. Der Parser ist in Rust geschrieben, nach WebAssembly kompiliert und läuft in einem Web Worker in Ihrem Browser-Tab. Die Dateien werden lokal gelesen, und nichts wird irgendwohin gesendet.
Warum enthält eine Seriennummer ein „&“?
Ist das zweite Zeichen einer USBSTOR-Instanz-ID ein „&“, hat das Gerät keine verwendbare Seriennummer gemeldet, und Windows hat eine erzeugt (zum Beispiel 7&1f2e3d4c&0). Sie ist nur auf diesem Computer eindeutig und nicht die echte Seriennummer des Geräts; gleichen Sie ein solches Gerät daher über Hersteller, Produkt, Volume-Seriennummer und Zeitpunkte ab.
Welcher Zeitstempel zeigt, wann ein USB-Stick angeschlossen wurde?
Mehrere: Die Eigenschaft 0066 „letztes Anschließen“ im SYSTEM-Hive liefert den jüngsten, die Ereignisse Partition/Diagnostic 1006 und Kernel-PnP jede einzelne Verbindung, setupapi.dev.log und 0065 (FirstInstallDate) die erste. Das Tool führt sie zu einem Verbindungseintrag zusammen und zeigt jede Quelle als Chip.
Wie werden Verknüpfungen einem USB-Stick zugeordnet?
Eine Verknüpfung speichert die Volume-Seriennummer des Laufwerks, auf dem ihr Ziel lag. Das Tool liest dieselbe Seriennummer aus dem in Partition/Diagnostic 1006 protokollierten Volume Boot Record und aus EMDMgmt und verknüpft so die Verknüpfung mit dem physischen Gerät, auch wenn Laufwerksbuchstaben mehrfach vergeben wurden.
Was, wenn sich die Quellen widersprechen?
Der Widerspruch wird auf der Gerätekarte mit beiden Werten und ihren Quellen angezeigt: zum Beispiel, wenn setupapi und die Registry nach einer Neuinstallation unterschiedliche Erstinstallationsdaten nennen, oder wenn eine Zeit für das letzte Anschließen in der Registry keinen passenden Datensatz im Ereignisprotokoll hat, weil die Protokolle überschrieben wurden.