USB-Geräte¶
Was der USB-Verlauf ist¶
Windows zeichnet jedes Gerät auf, das es installiert. Für USB-Speicher, andere USB-Geräte und tragbare
Geräte (Telefone, Kameras, Mediaplayer) speichert der SYSTEM-Hive einen Schlüssel pro Gerät mit Name,
Seriennummer und den Zeitpunkten, zu denen Windows es installiert, zuletzt dessen Anschluss und zuletzt dessen Entfernung registriert hat.
MountedDevices zeichnet die Volume-GUIDs und Laufwerksbuchstaben auf, die ihren Volumes zugewiesen wurden. Der
SOFTWARE-Hive speichert die Namen, die der Explorer tragbaren Geräten und Volumes gegeben hat, sowie die Aufzeichnung von
Volume-Seriennummern durch ReadyBoost. Die NTUSER.DAT jedes Benutzers zeichnet die Volumes auf, die dieser Benutzer
eingebunden hatte.
parse-registry usb führt sie zu einem Datensatz pro Gerät und Volume zusammen: welches Gerät es war, wann
es installiert und angeschlossen wurde, welchen Laufwerksbuchstaben und welches Volume es hatte und welche Benutzer dieses
Volume eingebunden hatten.
Bestmögliche Schlussfolgerung: Ein Gerät mit diesem Hersteller, Produkt und dieser Seriennummer war an dieses System angeschlossen, erstmals und zuletzt zu diesen Zeitpunkten; sein Volume hatte diesen Laufwerksbuchstaben; diese Benutzer hatten es eingebunden. Registry-Datensätze zeigen nicht, welche Dateien kopiert wurden.
Speicherort¶
C:\Windows\System32\config\SYSTEM
ControlSet00N\Enum\USBSTOR\<Disk&Ven_…&Prod_…&Rev_…>\<serial>&<LUN>
ControlSet00N\Enum\USB\<VID_xxxx&PID_yyyy>\<serial>
ControlSet00N\Enum\SWD\WPDBUSENUM\<device path>
Properties\{83da6326-97a6-4088-9453-a1923f573b29}\0064 … 0067
MountedDevices
C:\Windows\System32\config\SOFTWARE
Microsoft\Windows Portable Devices\Devices
Microsoft\Windows NT\CurrentVersion\EMDMgmt
C:\Users\<user>\NTUSER.DAT
Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2
| Geräteeigenschaft | Feld | Bedeutung (devpkey.h) |
|---|---|---|
0064 |
DriverLastInstalledUTC |
DEVPKEY_Device_InstallDate: wann sein Treiber zuletzt installiert wurde |
0065 |
DeviceFirstInstallUTC |
DEVPKEY_Device_FirstInstallDate: wann das Gerät erstmals installiert wurde |
0066 |
LastArrivalUTC |
DEVPKEY_Device_LastArrivalDate: wann es zuletzt angeschlossen wurde (Windows 8 und später) |
0067 |
LastRemovalUTC |
DEVPKEY_Device_LastRemovalDate: wann es zuletzt entfernt wurde (Windows 8 und später) |
Windows 8 und später speichern jede Zeit als Standardwert des Schlüssels 0064 … 0067. Windows 7
speichert sie in 00000064\00000000\Data. Juntei liest beides.
Viele DFIR-Referenzen bezeichnen 0064 als Erstinstallation und 0065 als Installation. Juntei folgt
den oben genannten Definitionen aus Microsofts devpkey.h und benennt die Spalten nach dem, was jede Zeit aufzeichnet.
Übergeben Sie -f oder -d den SYSTEM-Hive. Der SOFTWARE-Hive des Systems und die NTUSER.DAT-
Hives seiner Benutzer werden daneben gefunden, so wie eine Sicherung sie ablegt (Windows\System32\config\SOFTWARE,
Users\<user>\NTUSER.DAT), oder im selben Verzeichnis und eine Ebene darunter, wenn die Hives gemeinsam
exportiert wurden. Sichern Sie sie alle mit ihren Transaktionsprotokollen.
Wie die Datensätze zusammengeführt werden¶
- Geräte: ein Datensatz pro Geräteschlüssel:
usbstor,usbundwpdbusenum(DeviceClass). Ein USB-Speichergerät übernimmt Hersteller- und Produkt-ID von dem USB-Gerät mit derselben Container-ID (andernfalls derselben Seriennummer). - Volumes: Die Volumes eines USB-Speichergeräts sind die
\??\Volume{GUID}-Werte vonMountedDevices, deren Daten ein Pfad sind, der das Gerät benennt. Ein Gerät mit zwei Volumes hat zwei Datensätze. Seine Laufwerksbuchstaben sind die\DosDevices\X:-Werte mit denselben Daten. - Namen und Seriennummern: Volume-Namen stammen aus
Windows Portable Devicesund von den tragbaren Geräten, die dasselbe Gerät benennen. Volume-Bezeichnungen und Seriennummern stammen ausEMDMgmt-Schlüsseln, die es benennen. - Benutzer: die Benutzer, deren
MountPoints2die GUID des Volumes enthält, mit der Zeit des letzten Schreibzugriffs auf diesen Schlüssel. - Volumes ohne Geräteschlüssel (
volume): einMountedDevices-Volume, das kein Geräteschlüssel benennt (das einer internen Festplatte oder eines entfernten Geräts, dessenEnum-Schlüssel verschwunden ist), ein Laufwerksbuchstabe, dessen Daten mit keinem Volume-GUID- Wert übereinstimmen, und ein Volume, das nur inMountPoints2von Benutzern vorkommt. - Geräte, die nur
SOFTWAREbenennt (portable_device,readyboost).
SourceKeys listet jeden Schlüssel und Wert auf, aus dem ein Datensatz zusammengeführt wurde, mit seinem Hive.
Hinweise für die Analyse¶
- Laufwerksbuchstaben werden wiederverwendet.
MountedDevicesspeichert das letzte Gerät, das jeden Buchstaben erhalten hat. Ein Buchstabe wird nur bei dem Gerät angezeigt, dessen Daten noch die dieses Buchstabens sind. - Seriennummern können erfunden sein. Ist das zweite Zeichen einer Instanz
&, hat Windows sie erzeugt, weil das Gerät keine Seriennummer meldet;Serialist dann leer. Eine solche Instanz kann auf einem anderen Computer abweichen. - Instanzen von USB-Speichergeräten enden mit der logischen Einheit (
&0).Seriallässt sie weg;Instancebehält sie bei. - Die Zeiten unterscheiden sich je nach Windows-Version. Windows 7 hat nur die Installationszeiten.
LastArrivalUTCundLastRemovalUTCsind nur der letzte Anschluss, nicht jeder Anschluss. Ereignisprotokolle (Microsoft-Windows-Partition/Diagnostic1006, Kernel-PnP,DriverFrameworks-UserMode) undsetupapi.dev.logliefern mehr. - Control Sets: Standardmäßig wird das zuletzt von Windows verwendete Control Set gelesen.
--all-control-setsliest jedes Control Set; ein älteres kann noch ein Gerät auflisten, das das aktuelle nicht mehr hat. - Die Zeit des letzten Schreibzugriffs auf einen Schlüssel ist keine Anschlusszeit. Windows schreibt Geräteschlüssel aus vielen Gründen neu.
- Entfernte Geräte hinterlassen Spuren. Ein Volume-Datensatz mit Hersteller und Produkt, aber ohne Geräteschlüssel,
ist ein Gerät, dessen
Enum-Schlüssel entfernt wurde (durch eine Deinstallation oder durch Bereinigungstools) und dessen VolumeMountedDevicesnoch enthält. - ReadyBoost-Seriennummern sind die Seriennummer des Volumes (
VolumeSerials, wiedirsie anzeigt), die auch LNK-Dateien und Jump Lists aufzeichnen.
Mit Juntei parsen¶
Usage: juntei parse-registry usb <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find SYSTEM hives (with their SOFTWARE and NTUSER.DAT hives)
-f, --file <FILE> Parse one SYSTEM hive (with its SOFTWARE and NTUSER.DAT hives)
--log1/--log2 Supply the SYSTEM hive's transaction logs explicitly
--no-logs Do not replay logs
Filtering:
--all-control-sets Read every control set
Output:
-o, --output <FILE> Save records
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-registry usb -d evidence/ -o usb.csv
juntei parse-registry usb -f C/Windows/System32/config/SYSTEM -t jsonl \
| jq 'select(.DeviceClass == "usbstor") | {Vendor, Product, Serial, LastArrival, DriveLetters, Users}'
Die Zusammenfassung listet die zuletzt angeschlossenen USB-Speichergeräte (neueste zuerst) mit ihren Laufwerks- buchstaben auf sowie die Anzahl der Volumes, die zu USB-Speichergeräten ohne Geräteschlüssel gehören.
Ausgabefelder¶
| Feld | Interpretation |
|---|---|
Host |
Der Name des Computers, aus SYSTEM. |
DeviceClass |
usbstor, usb, wpdbusenum oder, ohne Geräteschlüssel, volume, portable_device oder readyboost. |
ControlSet |
Das Control Set des Geräteschlüssels. |
Vendor, Product, Revision |
USB-Speicher: aus dem Namen des Geräts (Disk&Ven_…&Prod_…&Rev_…), auch für ein Gerät, das ein Volume- oder SOFTWARE-Schlüssel benennt. |
Vid, PID |
Die USB-Hersteller- und -Produkt-IDs. |
Serial, Instance |
Die Seriennummer und der Name des Instanzschlüssels wie geschrieben. |
FriendlyName, DeviceDesc, Service, ContainerID |
Die Werte des Geräteschlüssels wie geschrieben (DeviceDesc ist oft @<inf>,%…%;<text>). Der FriendlyName eines tragbaren Geräts ist meist die Bezeichnung oder das Laufwerk seines Volumes. |
DeviceFirstInstallUTC, DriverLastInstalledUTC, LastArrivalUTC, LastRemovalUTC |
Die Zeiten aus den Geräteeigenschaften (siehe oben). |
DriveLetters |
Die Laufwerksbuchstaben, deren MountedDevices-Daten denen des Volumes entsprechen. |
VolumeGUID, VolumeData |
Die GUID des Volumes und worauf es laut seinen MountedDevices-Daten liegt: ein Gerätepfad, eine MBR-Datenträgersignatur mit Partitionsoffset oder eine GPT-Partition. |
VolumeNames, VolumeSerials |
Namen, die der Explorer dem Gerät oder seinem Volume gegeben hat, ReadyBoost-Bezeichnungen und Volume-Seriennummern (1234-ABCD). |
User |
Die Benutzer, deren MountPoints2 das Volume enthält, mit dem letzten Schreibzugriff auf diesen Schlüssel (JSON: User, MountPoints2LastWritten, SourcePath). |
FoundIn, SourceKeys |
Wo es gefunden wurde (Enum, MountedDevices, Windows Portable Devices, EMDMgmt, MountPoints2), und jeder Schlüssel und Wert, aus dem es zusammengeführt wurde. |
KeyPath, KeyLastWrittenUTC |
Der Instanzschlüssel des Geräts und sein letzter Schreibzugriff. |
SourcePath, SoftwarePath |
Der SYSTEM-Hive und der SOFTWARE-Hive, sofern er etwas beigetragen hat. |
TransactionLogStatus, LogsApplied |
Kontext der Registry-Wiederherstellung der Hives, aus denen der Datensatz zusammengeführt wurde. |
Problems |
Schlüssel, die nicht gelesen werden konnten, und Geräteeigenschaften, die keine FILETIMEs sind (mit ihren Bytes). |
Untersuchungsstrategie¶
- Sortieren Sie USB-Speichergeräte nach
LastArrivalUTC(andernfallsDriverLastInstalledUTC) und klammern Sie die eigenen Lesegeräte und Hubs des Computers aus. - Notieren Sie Hersteller, Produkt, Seriennummer, Volume-GUID, Laufwerksbuchstabe und Volume-Seriennummer jedes Geräts
und suchen Sie danach in LNK-Dateien, Jump Lists, ShellBags und der
$MFT(Pfade auf diesem Laufwerksbuchstaben oder Volume). - Prüfen Sie
User, um festzustellen, wer das Volume eingebunden hatte und wann (letzter Schreibzugriff auf denMountPoints2-Schlüssel). - Suchen Sie nach
volume-Datensätzen, die ein USB-Speichergerät benennen: Geräte, deren Schlüssel entfernt wurden. - Korrelieren Sie mit den Ereignisprotokollen für jeden Anschluss, nicht nur den letzten.
- Verwenden Sie
parse-registry read --recover-deletedfür gelöschte Geräteschlüssel.
Weitere Informationen¶
- Microsoft: Geräteeigenschaften (devpkey.h)
- Microsoft: Unterstützung von Mount-Manager-Anforderungen
devpkey.h(wie in den Headern von Wine): die Nummern der Geräteeigenschaften- libyal winreg-kb: USB storage, Mounted devices und Mount points
- ys-registry-parser
Benutzerzuordnungen verwenden die Quellidentität jedes Hives, sodass exportierte Hives mit demselben Profilnamen getrennt bleiben. SourceKeys bewahrt die Pfade der beitragenden Benutzer-Hives. Die Erkennung zugehöriger Benutzer-Hives überspringt symbolische Links, im Einklang mit der rekursiven Hive-Erkennung. Die VID/PID-Korrelation erfordert eine übereinstimmende, verwendbare Container-ID; ohne eine solche muss der Abgleich über Seriennummern eindeutige IDs ergeben. Widersprüchliche Kandidaten bleiben unbekannt und werden mit einem Problem gemeldet.