Skip to content

Registry · setupapi · evtx · LNK

USB-Geräteverlauf, für Sie zusammengeführt

Legen Sie eine Windows-Triage-Sammlung ab. USBSTOR, MountedDevices, setupapi.dev.log, Partition/Diagnostic 1006, Kernel-PnP, LNK, Jump Lists und ShellBags werden zu einer Zeitleiste pro Gerät — mit der Quelle jeder Angabe und den Stellen, an denen sich die Quellen widersprechen. Ausgewertet in Ihrem Browser per WebAssembly; nichts wird hochgeladen.

Triage-Sammlung, ZIP oder einzelne Dateien hier ablegen

SYSTEM- und SOFTWARE-Hives, setupapi.dev.log, Ereignisprotokolle (Partition/Diagnostic, Kernel-PnP, DriverFrameworks, Security, System), NTUSER.DAT / UsrClass.dat, LNK-Dateien und Jump Lists. KAPE- und Velociraptor-Strukturen funktionieren direkt; irrelevante Dateien werden übersprungen.

Das Beispiel ist eine synthetische Sammlung von einer fiktiven Workstation: ein USB-Stick, den ein unberechtigtes Konto während eines Einbruchs angeschlossen hat, plus zwei ältere Geräte.

Im Browser ausgewertet — nichts wird hochgeladen

So erhalten Sie Ihre Daten

Vollständiger Sicherungsleitfaden

Der USB-Verlauf verteilt sich auf die SYSTEM- und SOFTWARE-Hives, setupapi.dev.log, einige Ereignisprotokolle sowie den Hive und den Recent-Ordner jedes Benutzers. Sammeln Sie alles zusammen: Jede zusätzliche Quelle bestätigt oder korrigiert die anderen.

  1. Mit einem Admin-Befehl, KAPE oder Velociraptor sammeln
  2. Ordner oder ZIP hier ablegen
  3. Lokal ausgewertet — nichts verlässt den Browser

Öffnen Sie auf dem laufenden System PowerShell mit „Als Administrator ausführen“ und fügen Sie diesen Block ein. reg save exportiert die gesperrten Hives; wevtutil exportiert die Ereignisprotokolle (Security gefiltert auf 6416 und 4663); die Benutzer-Hives angemeldeter Konten und der Recent-Ordner jedes Profils werden ebenfalls kopiert.

PowerShell · Admin
$t = 'C:\triage'; New-Item -ItemType Directory -Force $t | Out-Null
reg save HKLM\SYSTEM "$t\SYSTEM" /y; reg save HKLM\SOFTWARE "$t\SOFTWARE" /y
Copy-Item C:\Windows\INF\setupapi.dev*.log $t
'Microsoft-Windows-Partition/Diagnostic','Microsoft-Windows-Kernel-PnP/Configuration','Microsoft-Windows-DriverFrameworks-UserMode/Operational','System' |
  ForEach-Object { wevtutil epl $_ "$t\$($_ -replace '/','%4').evtx" /ow:true }
wevtutil epl Security "$t\Security.evtx" "/q:*[System[(EventID=6416 or EventID=4663)]]" /ow:true
Get-ChildItem Registry::HKEY_USERS | Where-Object PSChildName -match '^S-1-5-21-[\d-]+$' | ForEach-Object {
  reg save "HKU\$($_.PSChildName)" "$t\NTUSER_$($_.PSChildName).DAT" /y
  reg save "HKU\$($_.PSChildName)_Classes" "$t\UsrClass_$($_.PSChildName).dat" /y }
Get-ChildItem C:\Users -Directory | ForEach-Object {
  robocopy "$($_.FullName)\AppData\Roaming\Microsoft\Windows\Recent" "$t\Users\$($_.Name)\AppData\Roaming\Microsoft\Windows\Recent" /S /XJ /R:0 /W:0 /NP /NFL /NDL | Out-Null }

Alles landet in C:\triage. Legen Sie diesen Ordner auf der Seite ab.

Oder packen Sie ihn zuerst als ZIP, um ihn vom System zu übertragen (Windows 10 1803+ enthält tar):

PowerShell / cmd
tar -a -c -f C:\usb-triage.zip -C C:\ triage

Stolperfallen

  • Das Kopieren von SYSTEM oder NTUSER.DAT mit dem Explorer schlägt fehl oder liefert eine Datei voller Nullen, solange Windows läuft: Verwenden Sie reg save, KAPE oder ein Raw-Copy-Tool.
  • setupapi.dev.log steht in Ortszeit. Fügen Sie den SYSTEM-Hive hinzu, damit die Zeiten umgerechnet werden; andernfalls werden sie so angezeigt, als wären sie UTC.
  • Ereignisprotokolle werden überschrieben: Ein stark genutztes Security.evtx deckt eventuell nur Tage ab. Sammeln Sie früh und bewahren Sie ältere .evtx-Kopien aus Backups oder Volumeschattenkopien auf.
  • reg save erreicht nur die Hives angemeldeter Benutzer; für alle anderen verwenden Sie KAPE / Velociraptor oder kopieren NTUSER.DAT aus einem Abbild.

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.

Ein fiktiver Einbruch, analysiert mit USB Forensics: den Stick finden, das Anschließen datieren, das Konto zuordnen und kopierte Dateien auflisten.
Verknüpfungen, Jump Lists, ShellBags und 4663-Ereignisse über Volume-Seriennummer, Laufwerksbuchstabe und Zeit einem USB-Gerät und Benutzer zuordnen.
Installationsabschnitte in setupapi.dev.log lesen, ihre Ortszeiten nach UTC umrechnen und mit dem Erstinstallationsdatum der Registry vergleichen.