Windows-Artefakte · Lektion 6 von 9
USB- und externe Geräte
11 Min. Lesezeit
Wenn Daten eine Organisation auf einem USB-Laufwerk verlassen, muss der Prüfer drei Fragen beantworten: Welches Gerät wurde angeschlossen, wann wurde es angeschlossen und welcher Benutzer hat damit gearbeitet? Kein einzelnes Artefakt beantwortet alle drei Fragen. Windows 10 und 11 verteilen die Beweisspuren auf die Hives SYSTEM, SOFTWARE und NTUSER.DAT, ein Klartext-Installationsprotokoll und mehrere Ereignisprotokolle. Diese Lektion zeigt, wo die einzelnen Werte gespeichert sind und wie Sie sie miteinander verknüpfen, bis hin zur Volumeseriennummer im USB-Abbild selbst. Diese Verknüpfung bildet den Kern der praktischen CFX-Prüfung, deren Paket eine Windows-Triage-Sammlung und ein E01-Abbild eines USB-Laufwerks enthält.
Bevor Sie beginnen: der ControlSet
Ein offline vorliegender SYSTEM-Hive enthält keinen CurrentControlSet. Dieser Name ist eine Verknüpfung, die nur auf einem laufenden System existiert. Lesen Sie zuerst SYSTEM\Select\Current aus. Ein Wert von 1 bedeutet, dass ControlSet001 der aktive ControlSet ist. Alle SYSTEM-Pfade in dieser Lektion setzen ControlSet001 voraus. Rechnen Sie lokale Zeiten anhand der Zeitzoneneinstellungen um, die Sie in Lektion 2.2 erfasst haben.
Das Gerät identifizieren: USBSTOR und USB
Jedes USB-Massenspeichergerät, das Windows eingerichtet hat, erhält einen zweistufigen Eintrag unter SYSTEM\ControlSet001\Enum\USBSTOR:
- Geräteklassenschlüssel:
Disk&Ven_<vendor>&Prod_<product>&Rev_<rev>, beispielsweiseDisk&Ven_SanDisk&Prod_Cruzer_Blade&Rev_1.00. Hersteller und Produkt sind hier die Zeichenfolgen, die das Gerät meldet, keine registrierten IDs. - Instanzschlüssel:
<serial>&<n>, beispielsweise4C530001230411109384&0. Der Teil vor dem letzten&ist die Seriennummer des Geräts (die USB-Zeichenfolge iSerialNumber). Die angehängte Zahl ist die Nummer der logischen Einheit (LUN), normalerweise0, die Windows hinzufügt.
Der Wert FriendlyName des Instanzschlüssels enthält einen lesbaren Namen wie SanDisk Cruzer Blade USB Device.
Die Seriennummernfalle. Wenn das zweite Zeichen der Instanz-ID ein & ist, wie in 7&2c1f9a3e&0, hat das Gerät keine eindeutige Seriennummer gemeldet. Windows hat die ID selbst erzeugt, teilweise anhand des Anschlusses, an dem das Gerät angeschlossen war. Sie ist keine Hardware-Seriennummer, lässt sich keinem physischen Gerät zuordnen, und dasselbe Laufwerk kann an einem anderen Anschluss eine andere ID erhalten. Geben Sie sie als von Windows erzeugte Instanz-ID an, niemals als Seriennummer.
Dasselbe Gerät erscheint auch unter SYSTEM\ControlSet001\Enum\USB\VID_xxxx&PID_yyyy\<serial>. VID und PID sind die 16-Bit-Hersteller- und Produkt-IDs in hexadezimaler Schreibweise, beispielsweise VID_0781&PID_5567 für einen SanDisk Cruzer Blade. Hier ist der Instanzname die Seriennummer ohne das Suffix &0; die Seriennummernzeichenfolge verknüpft somit die USB- und USBSTOR-Einträge. USB-Laufwerke, die das UASP-Protokoll verwenden, werden häufig unter Enum\SCSI statt unter Enum\USBSTOR aufgeführt. Durchsuchen Sie daher beide.
Gerätezeitstempel im Schlüssel Properties
Der Instanzschlüssel enthält die genauesten Gerätezeiten unter Properties\{83da6326-97a6-4088-9453-a1923f573b29}\. Jeder Unterschlüssel ist eine Eigenschafts-ID in hexadezimaler Schreibweise. Sein Wert ist ein 8-Byte-FILETIME-Wert, der 100-Nanosekunden-Intervalle seit 1601-01-01 UTC zählt.
| Unterschlüssel | Eigenschaft (devpkey.h) | Bedeutung |
|---|---|---|
0064 | DEVPKEY_Device_InstallDate | Letzte Installation der Geräteinstanz; ändert sich bei einer Neuinstallation oder Aktualisierung des Treibers |
0065 | DEVPKEY_Device_FirstInstallDate | Erste Installation: der erste Zeitpunkt, zu dem dieses Gerät eingerichtet wurde |
0066 | DEVPKEY_Device_LastArrivalDate | Letztes Anschließen: die jüngste Verbindung |
0067 | DEVPKEY_Device_LastRemovalDate | Letztes Entfernen: die jüngste Trennung (Windows 8 und höher) |
Einige veröffentlichte Kurzübersichten bezeichnen 0064 als „erste Installation“. Die Windows-SDK-Headerdatei devpkey.h definiert Eigenschaft 100 (0x64) als InstallDate und 101 (0x65) als FirstInstallDate. Bei einem USB-Laufwerk sind die beiden Werte normalerweise gleich. Prüfen Sie daher beide und geben Sie den verwendeten Unterschlüssel an. Auf einem laufenden System ist der Schlüssel Properties normalerweise nur für SYSTEM lesbar, sodass einem als Administrator ausgeführten Registrierungseditor der Zugriff verweigert werden kann. Offline liest jeder Hive-Parser wie RECmd oder Registry Explorer ihn direkt aus.
Laufwerksbuchstabe und Volume: MountedDevices
SYSTEM\MountedDevices ordnet Namen mithilfe zweier Arten von Werten Volumes zu:
\DosDevices\E:enthält das Volume, dem zuletzt der Buchstabe E: zugewiesen wurde.\??\Volume{GUID}enthält einen Eintrag pro Volume, das der Mount Manager erkannt hat. Die Volume-GUID bleibt für dieses Volume auf diesem System beständig.
Die Binärdaten identifizieren das Volume. Bei Wechselmedien handelt es sich um eine UTF-16LE-Zeichenfolge mit dem Gerätepfad, beispielsweise _??_USBSTOR#Disk&Ven_SanDisk&Prod_Cruzer_Blade&Rev_1.00#4C530001230411109384&0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}. Die Seriennummer in dieser Zeichenfolge verknüpft die Volume-GUID mit der USBSTOR-Instanz. Bei einem MBR-Festplattenlaufwerk, wie vielen USB-Festplatten, umfassen die Daten 12 Bytes: die 4-Byte-Datenträgersignatur, gefolgt vom 8-Byte-Startoffset der Partition in Bytes. GPT-Partitionen speichern DMIO:ID:, gefolgt von der Partitions-GUID.
Laufwerksbuchstaben werden wiederverwendet. Jedes neue Laufwerk kann E: werden, und \DosDevices\E: behält nur das letzte bei. Ein Pfad wie E:\Plans\budget.xlsx beweist nicht, welches Gerät gemeint war. Der Buchstabe ist ein schwacher Beleg, solange keine Volumeseriennummer die Zuordnung bestätigt.
Das Gerät mit einem Benutzer verknüpfen: MountPoints2
Die Datei NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2 jedes Benutzers enthält für jedes Volume, das in dessen Sitzung aufgetaucht ist, einen Unterschlüssel namens {volume GUID}. Wenn die GUID mit einem Wert \??\Volume{GUID} in MountedDevices übereinstimmt, wurde das Gerät eingebunden, während dieser Benutzer angemeldet war. Die NTUSER.DAT, in der Sie den Eintrag gefunden haben, identifiziert das Konto. Der LastWrite-Zeitstempel des Unterschlüssels weist auf jüngste Aktivitäten mit dem Volume in der Sitzung dieses Benutzers hin. Behandeln Sie ihn als stützenden Beleg, da auch andere Aktivitäten den LastWrite-Zeitstempel eines Schlüssels aktualisieren können (Lektion 2.1). MountPoints2 führt auch Netzwerkfreigaben auf, als Unterschlüssel wie ##server#share.
Volumebezeichnungen im SOFTWARE-Hive
Über zwei SOFTWARE-Schlüssel lässt sich eine Volumebezeichnung wie „WORK“ ermitteln, die der SYSTEM-Hive nicht erfasst:
SOFTWARE\Microsoft\Windows Portable Devices\Devices\<device path containing the serial>: Der WertFriendlyNameist häufig die Volumebezeichnung oder der Laufwerksbuchstabe, falls das Volume keine Bezeichnung hatte.SOFTWARE\Microsoft\Windows Search\VolumeInfoCache\<drive letter>: enthält die Bezeichnung des Volumes, das zuletzt unter diesem Buchstaben erkannt wurde. Wie MountedDevices ist dieser Schlüssel nach Buchstaben indiziert und wird überschrieben.
Keiner der beiden Schlüssel wird für jedes Gerät befüllt. Verwenden Sie sie daher zur Bestätigung, nicht als primäre Beweismittel.
setupapi.dev.log: erste Installation
C:\Windows\INF\setupapi.dev.log ist ein Textprotokoll der Treiberinstallationen. Wenn ein Gerät zum ersten Mal angeschlossen wird, schreibt Windows einen Block wie diesen:
>>> [Device Install (Hardware initiated) - USBSTOR\Disk&Ven_SanDisk&Prod_Cruzer_Blade&Rev_1.00\4C530001230411109384&0]
>>> Section start 2026/03/10 14:22:06.120
Der Zeitpunkt unter Section start ist die erste Installation, die praktisch dem ersten Anschließen entspricht. Er wird in lokaler Systemzeit ohne Zeitzonenkennzeichnung angegeben, daher müssen Sie ihn in UTC umrechnen. Spätere Verbindungen desselben Geräts erzeugen keine neuen Installationsblöcke. Ältere Einträge werden in rotierte Dateien wie setupapi.dev.yyyymmdd_hhmmss.log im selben Ordner verschoben.
Ereignisprotokolle
- Microsoft-Windows-Partition/Diagnostic, Ereignis-ID 1006 (
Microsoft-Windows-Partition%4Diagnostic.evtx, Windows 10 und 11): wird protokolliert, wenn ein Datenträger angeschlossen oder entfernt wird. Erfasst werden Manufacturer, Model, Revision, SerialNumber und Capacity, der Partitionsstil und die Partitionstabelle sowie Rohkopien des MBR (Mbr) und von bis zu vier Volume-Bootsektoren (Vbr0bisVbr3). Trennungsereignisse weisen eine Kapazität von 0 und keine Partitionsdaten auf. Das Ereignis 1006 verknüpft die Hardware-Seriennummer mit einem Dateisystem, da die Volumeseriennummer aus denVbr-Bytes ausgelesen werden kann. Das Ereignis bleibt erhalten, nachdem das Gerät entfernt wurde. - Microsoft-Windows-Kernel-PnP/Configuration: Die Ereignis-IDs 400 (Gerät konfiguriert), 410 (Gerät gestartet) und 420 (Gerät gelöscht) nennen die Geräteinstanz-ID einschließlich der Seriennummer und stützen die Verbindungszeitpunkte.
- Microsoft-Windows-DriverFrameworks-UserMode/Operational: Die Ereignis-IDs 2003 und 2100 bis 2102 erfassen das Anschließen und Entfernen, der Kanal ist unter Windows 10 und 11 jedoch standardmäßig deaktiviert. Rechnen Sie nicht mit seinem Vorhandensein und werten Sie sein Fehlen nicht als aussagekräftig.
Die Verknüpfung über die Volumeseriennummer
Ein Dateisystem schreibt beim Formatieren des Volumes eine Volumeseriennummer (VSN) in seinen Volume-Bootsektor (VBR). Alle folgenden Offsets beziehen sich auf den Anfang des Volumes, und die Werte liegen im Little-Endian-Format vor:
| Dateisystem | VBR-Offset | Größe | Darstellung |
|---|---|---|---|
| NTFS | 0x48 | 8 Bytes | Niederwertige 4 Bytes, XXXX-XXXX |
| FAT32 | 0x43 | 4 Bytes | XXXX-XXXX |
| exFAT | 0x64 | 4 Bytes | XXXX-XXXX |
Dieselbe Nummer erscheint an drei Stellen. Die erste ist der VBR im USB-Abbild. Die zweite ist die LinkInfo VolumeID von LNK-Dateien und Sprunglisten auf dem Host (Lektion 2.4), neben dem Laufwerkstyp (Wechseldatenträger) und dem ursprünglichen Pfad. Die dritte ist die Vbr0-Kopie in Partition/Diagnostic 1006. Ein viertes Bindeglied, die USBSTOR-Seriennummer, verknüpft sie über das Feld SerialNumber dieses Ereignisses mit der Hardware. Wenn eine LNK-Datei in C:\Users\ana\... auf E:\Plans\budget.xlsx mit der VSN 1A2B3C4D verweist und der VBR des E01-Abbilds dieselbe VSN enthält, wurde die Datei von diesem Volume geöffnet. Sie wurde nicht von irgendeinem anderen Laufwerk geöffnet, das ebenfalls den Buchstaben E: verwendete. Dabei gilt eine Einschränkung: Eine Neuformatierung erzeugt eine neue VSN. Eine Übereinstimmung identifiziert daher einen bestimmten Formatierungszustand des Mediums, den die Hardware-Seriennummer anschließend dem physischen Gerät zuordnet.
Durchgerechnetes Beispiel: ein Gerät von Anfang bis Ende
Die Zeitzoneneinstellungen (Lektion 2.2) zeigen E. South America Standard Time mit ActiveTimeBias = 180 Minuten, also UTC = lokale Zeit + 3 Stunden.
Select\Current= 1.ControlSet001\Enum\USBSTOR\Disk&Ven_SanDisk&Prod_Cruzer_Blade&Rev_1.00\4C530001230411109384&0ist vorhanden. Das zweite Zeichen istC, die Seriennummer ist also echt: 4C530001230411109384.Enum\USB\VID_0781&PID_5567\4C530001230411109384bestätigt sie.MountedDevices: Der Wert\??\Volume{a9d9c980-1ca5-11f1-a3d2-806e6f6e6963}enthält...#4C530001230411109384&0#..., und\DosDevices\E:enthält dieselben Daten.C:\Users\ana\NTUSER.DATenthältMountPoints2\{a9d9c980-1ca5-11f1-a3d2-806e6f6e6963}; das Volume wurde also in der Sitzung von ana eingebunden.- setupapi.dev.log: Section start
2026/03/10 14:22:06.120in lokaler Zeit. Durch Addition von 3 Stunden ergibt sich 2026-03-10T17:22:06.120Z.0065enthält die Bytes00 A0 2F 6C B2 B0 DC 01, die dekodiert 2026-03-10T17:22:08Z ergeben und den setupapi-Zeitpunkt bis auf wenige Sekunden bestätigen. 0066enthält die Bytes80 B6 F9 4D 6B E7 DC 01. Im Little-Endian-Format gelesen ergibt dies 0x01DCE76B4DF9B680 = 134.236.536.970.000.000 Intervalle von 100 ns. Geteilt durch 10.000.000 ergibt dies 13.423.653.697 s seit 1601. Nach Abzug von 11.644.473.600 s ergibt sich die Unix-Zeit 1.779.180.097, also 2026-05-19T08:41:37Z (letztes Anschließen).- Partition/Diagnostic 1006 um 2026-05-19T08:41:38Z zeigt SerialNumber 4C530001230411109384 und eine Partition, die bei LBA 2.048 beginnt. Die Bytes 0x43 bis 0x46 von
Vbr0sind4D 3C 2B 1A. - Im E01-Abbild beginnt die Partition bei 2.048 × 512 = 1.048.576 Bytes. Die FAT32-VSN bei 1.048.576 + 0x43 lautet
4D 3C 2B 1A, also 0x1A2B3C4D, dargestellt als 1A2B-3C4D.fsstat -o 2048 usb.E01meldet dieselbe Volume-ID. - Der Ordner Recent von
anaenthältbudget.xlsx.lnkmit dem Laufwerkstyp Wechseldatenträger, der Seriennummer 1A2B3C4D und dem PfadE:\Plans\budget.xlsx.
Antworten im Prüfungsstil: Seriennummer 4C530001230411109384 (ohne &0); erste Verbindung 2026-03-10T17:22:06Z.
Übersichtstabelle
| Frage | Artefakt | Feld |
|---|---|---|
| Geräteseriennummer | SYSTEM Enum\USBSTOR\...\<serial>&0 | Name des Instanzschlüssels |
| Hersteller- und Produkt-ID | SYSTEM Enum\USB\VID_xxxx&PID_yyyy | Schlüsselname |
| Erste Verbindung | setupapi.dev.log; Properties 0065 | Section start (lokal); FILETIME (UTC) |
| Letzte Verbindung / Entfernung | Properties 0066 / 0067 | FILETIME (UTC) |
| Laufwerksbuchstabe und Volume-GUID | SYSTEM MountedDevices | Daten von \DosDevices\X:, \??\Volume{GUID} |
| Welcher Benutzer | NTUSER.DAT MountPoints2 | Unterschlüssel {volume GUID} |
| Volumebezeichnung | SOFTWARE Windows Portable Devices; VolumeInfoCache | FriendlyName; VolumeLabel |
| Volumeseriennummer | VBR des USB-Abbilds; LNK LinkInfo; Partition/Diagnostic 1006 | 0x43 / 0x48 / 0x64; DriveSerialNumber; Vbr0 |
Prüfungsschwerpunkt: Rechnen Sie mit Aufgaben, die nach einer USB-Seriennummer fragen, wobei die Hardware-Seriennummer und nicht eine von Windows erzeugte &-ID gemeint ist, sowie nach dem Zeitpunkt der ersten oder letzten Verbindung in UTC. Die setupapi-Zeit muss aus der lokalen Zeit umgerechnet werden. Seien Sie darauf vorbereitet, nachzuweisen, dass eine über einen Laufwerksbuchstaben geöffnete Datei vom bereitgestellten USB-Abbild stammt, indem Sie die VSN im VBR des Abbilds mit der LNK-Datei und dem Ereignis 1006 abgleichen.
Kernpunkte
- Ermitteln Sie zuerst
SYSTEM\Select\Currentund lesen Sie dannEnum\USBSTORundEnum\USBaus. Eine Instanz-ID, deren zweites Zeichen&ist, wird von Windows erzeugt und ist keine Seriennummer. Properties\{83da6326-...}:0065erste Installation,0066letztes Anschließen,0067letztes Entfernen, alle als FILETIME in UTC. setupapi.dev.log liefert die erste Installation in lokaler Zeit.- MountedDevices verknüpft die Seriennummer mit einer Volume-GUID und einem Buchstaben. MountPoints2 in NTUSER.DAT verknüpft diese GUID mit einem Benutzer.
- Laufwerksbuchstaben werden wiederverwendet. Daher ist es die Volumeseriennummer (NTFS 0x48, FAT32 0x43, exFAT 0x64), die LNK-Pfade mit einem bestimmten Volume verknüpft.
- Partition/Diagnostic 1006 erfasst die Hardware-Seriennummer und eine VBR-Kopie und stellt so die Verbindung zwischen dem Gerät und seinem Dateisystem her. DriverFrameworks-UserMode ist standardmäßig deaktiviert.