Perangkat USB¶
Apa itu riwayat USB¶
Windows mencatat setiap perangkat yang diinstalnya. Untuk penyimpanan USB, perangkat USB lain, dan perangkat
portabel (ponsel, kamera, pemutar media), hive SYSTEM menyimpan satu key per perangkat dengan nama,
nomor seri, dan waktu ketika Windows menginstalnya, terakhir melihatnya tersambung, dan terakhir melihatnya dilepas.
MountedDevices mencatat GUID volume dan huruf drive yang diberikan kepada volume-volumenya. Hive
SOFTWARE menyimpan nama yang diberikan Explorer kepada perangkat portabel dan volume, serta catatan
nomor seri volume milik ReadyBoost. NTUSER.DAT setiap pengguna mencatat volume yang pernah
di-mount oleh pengguna tersebut.
parse-registry usb menggabungkannya menjadi satu record per perangkat dan volume: perangkat apa itu, kapan
perangkat itu diinstal dan dihubungkan, huruf drive dan volume apa yang dimilikinya, dan pengguna mana yang pernah me-mount
volume tersebut.
Kesimpulan terbaik: perangkat dengan vendor, produk, dan nomor seri ini pernah dihubungkan ke sistem ini, pertama dan terakhir kali pada waktu-waktu ini; volumenya memiliki huruf drive ini; pengguna-pengguna ini pernah me-mount-nya. Record registry tidak menunjukkan berkas mana yang disalin.
Lokasi¶
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
| Properti perangkat | Field | Makna (devpkey.h) |
|---|---|---|
0064 |
DriverLastInstalledUTC |
DEVPKEY_Device_InstallDate: kapan driver-nya terakhir diinstal |
0065 |
DeviceFirstInstallUTC |
DEVPKEY_Device_FirstInstallDate: kapan perangkat pertama kali diinstal |
0066 |
LastArrivalUTC |
DEVPKEY_Device_LastArrivalDate: kapan perangkat terakhir dihubungkan (Windows 8 dan yang lebih baru) |
0067 |
LastRemovalUTC |
DEVPKEY_Device_LastRemovalDate: kapan perangkat terakhir dilepas (Windows 8 dan yang lebih baru) |
Windows 8 dan yang lebih baru menyimpan setiap waktu sebagai nilai default dari key 0064 … 0067. Windows 7
menyimpannya di 00000064\00000000\Data. Juntei membaca keduanya.
Banyak referensi DFIR melabeli 0064 sebagai instalasi pertama dan 0065 sebagai instalasi. Juntei mengikuti
definisi devpkey.h milik Microsoft di atas, dan menamai kolom sesuai dengan apa yang dicatat oleh setiap waktu.
Berikan hive SYSTEM ke -f atau -d. Hive SOFTWARE milik sistem dan hive NTUSER.DAT
milik penggunanya ditemukan di sebelahnya, sebagaimana hasil pengumpulan menyimpannya (Windows\System32\config\SOFTWARE,
Users\<user>\NTUSER.DAT), atau di direktori yang sama dan satu tingkat di bawahnya bila hive-hive tersebut
diekspor bersama-sama. Kumpulkan semuanya beserta log transaksinya.
Cara record digabungkan¶
- Perangkat: satu record per key perangkat:
usbstor,usb, danwpdbusenum(DeviceClass). Perangkat penyimpanan USB mengambil vendor ID dan product ID-nya dari perangkat USB dengan container ID yang sama (atau jika tidak ada, nomor seri yang sama). - Volume: volume milik perangkat penyimpanan USB adalah nilai
\??\Volume{GUID}diMountedDevicesyang datanya berupa path yang menyebutkan perangkat tersebut. Perangkat dengan dua volume memiliki dua record. Huruf drive-nya adalah nilai\DosDevices\X:dengan data yang sama. - Nama dan nomor seri: nama volume berasal dari
Windows Portable Devicesdan dari perangkat portabel yang menyebutkan perangkat yang sama. Label volume dan nomor seri berasal dari keyEMDMgmtyang menyebutkannya. - Pengguna: pengguna yang
MountPoints2-nya memiliki GUID volume tersebut, dengan waktu last-write key tersebut. - Volume tanpa key perangkat (
volume): volumeMountedDevicesyang tidak disebutkan oleh key perangkat mana pun (milik disk internal, atau milik perangkat yang dilepas yang keyEnum-nya sudah hilang), huruf drive yang datanya tidak sama dengan nilai GUID volume mana pun, dan volume yang hanya dimiliki olehMountPoints2pengguna. - Perangkat yang hanya disebutkan oleh
SOFTWARE(portable_device,readyboost).
SourceKeys mencantumkan setiap key dan nilai yang menjadi sumber penggabungan sebuah record, beserta hive-nya.
Peringatan bagi analis¶
- Huruf drive digunakan kembali.
MountedDevicesmenyimpan perangkat terakhir yang diberi setiap huruf. Sebuah huruf hanya ditampilkan pada perangkat yang datanya masih merupakan data huruf tersebut. - Nomor seri dapat dibuat-buat. Ketika karakter kedua dari sebuah instance adalah
&, Windows membuatnya sendiri karena perangkat tidak melaporkan nomor seri; dalam hal ituSerialkosong. Instance seperti itu dapat berbeda di komputer lain. - Instance penyimpanan USB diakhiri dengan logical unit (
&0).Serialtidak menyertakannya;Instancemenyimpannya. - Waktu berbeda menurut versi Windows. Windows 7 hanya memiliki waktu instalasi.
LastArrivalUTCdanLastRemovalUTChanyalah koneksi terakhir, bukan setiap koneksi. Log peristiwa (Microsoft-Windows-Partition/Diagnostic1006, Kernel-PnP,DriverFrameworks-UserMode) dansetupapi.dev.logmemberikan lebih banyak informasi. - Control set: secara default, control set yang terakhir digunakan Windows yang dibaca.
--all-control-setsmembaca setiap control set; control set yang lebih lama masih dapat mencantumkan perangkat yang sudah tidak ada di control set saat ini. - Waktu last-write sebuah key bukanlah waktu koneksi. Windows menulis ulang key perangkat karena banyak alasan.
- Perangkat yang dihapus meninggalkan jejak. Record volume dengan vendor dan produk tetapi tanpa key perangkat
adalah perangkat yang key
Enum-nya telah dihapus (oleh proses uninstall atau alat pembersih) tetapi volumenya masih dimiliki olehMountedDevices. - Nomor seri ReadyBoost adalah nomor seri volume (
VolumeSerials, sebagaimana ditampilkandir), yang juga dicatat oleh berkas LNK dan Jump Lists.
Mengurai dengan Juntei¶
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}'
Ringkasan mencantumkan perangkat penyimpanan USB yang terakhir tersambung (terbaru terlebih dahulu), beserta huruf drive-nya, dan berapa banyak volume milik perangkat penyimpanan USB yang tidak memiliki key perangkat.
Field keluaran¶
| Field | Interpretasi |
|---|---|
Host |
Nama komputer, dari SYSTEM. |
DeviceClass |
usbstor, usb, wpdbusenum, atau, tanpa key perangkat, volume, portable_device, atau readyboost. |
ControlSet |
Control set dari key perangkat. |
Vendor, Product, Revision |
Penyimpanan USB: dari nama perangkat (Disk&Ven_…&Prod_…&Rev_…), juga untuk perangkat yang disebutkan oleh volume atau key SOFTWARE. |
Vid, PID |
Vendor ID dan product ID USB. |
Serial, Instance |
Nomor seri, dan nama key instance sebagaimana tertulis. |
FriendlyName, DeviceDesc, Service, ContainerID |
Nilai-nilai key perangkat, sebagaimana tertulis (DeviceDesc sering kali berupa @<inf>,%…%;<text>). FriendlyName milik perangkat portabel biasanya adalah label atau drive volumenya. |
DeviceFirstInstallUTC, DriverLastInstalledUTC, LastArrivalUTC, LastRemovalUTC |
Waktu-waktu properti perangkat (lihat di atas). |
DriveLetters |
Huruf drive yang data MountedDevices-nya adalah data volume tersebut. |
VolumeGUID, VolumeData |
GUID volume, dan apa yang dinyatakan oleh data MountedDevices-nya tentang lokasinya: path perangkat, disk signature MBR dan offset partisi, atau partisi GPT. |
VolumeNames, VolumeSerials |
Nama yang diberikan Explorer kepada perangkat atau volumenya, label ReadyBoost, dan nomor seri volume (1234-ABCD). |
User |
Pengguna yang MountPoints2-nya memiliki volume tersebut, beserta last write key tersebut (JSON: User, MountPoints2LastWritten, SourcePath). |
FoundIn, SourceKeys |
Tempat record ditemukan (Enum, MountedDevices, Windows Portable Devices, EMDMgmt, MountPoints2), dan setiap key dan nilai yang menjadi sumber penggabungannya. |
KeyPath, KeyLastWrittenUTC |
Key instance perangkat dan last write-nya. |
SourcePath, SoftwarePath |
Hive SYSTEM, dan hive SOFTWARE bila hive tersebut memberikan sesuatu. |
TransactionLogStatus, LogsApplied |
Konteks pemulihan registry dari hive-hive yang menjadi sumber penggabungan record. |
Problems |
Key yang tidak dapat dibaca, dan properti perangkat yang bukan FILETIME (beserta byte-nya). |
Strategi investigasi¶
- Urutkan perangkat penyimpanan USB berdasarkan
LastArrivalUTC(atau jika tidak ada,DriverLastInstalledUTC), dan sisihkan pembaca kartu dan hub milik komputer itu sendiri. - Catat vendor, produk, nomor seri, GUID volume, huruf drive, dan nomor seri volume
setiap perangkat, lalu cari di berkas LNK, Jump Lists, ShellBags, dan
$MFT(path pada huruf drive atau volume tersebut). - Periksa
Useruntuk mengetahui siapa yang pernah me-mount volume tersebut, dan kapan (last write keyMountPoints2). - Cari record
volumeyang menyebutkan perangkat penyimpanan USB: perangkat yang key-nya telah dihapus. - Korelasikan dengan log peristiwa untuk setiap koneksi, bukan hanya yang terakhir.
- Gunakan
parse-registry read --recover-deleteduntuk key perangkat yang dihapus.
Detail lebih lanjut¶
- Microsoft: Properti perangkat (devpkey.h)
- Microsoft: Mendukung permintaan mount manager
devpkey.h(sebagaimana terdapat di header Wine): nomor-nomor properti perangkat- libyal winreg-kb: USB storage, Mounted devices, dan Mount points
- ys-registry-parser
Penggabungan pengguna menggunakan identitas sumber setiap hive, sehingga hive yang diekspor dengan nama profil yang sama tetap terpisah. SourceKeys mempertahankan path hive pengguna yang berkontribusi. Penemuan pengguna pendamping melewati symbolic link, konsisten dengan penemuan hive secara rekursif. Korelasi VID/PID memerlukan container ID yang cocok dan dapat digunakan; tanpanya, pencocokan nomor seri harus menghasilkan ID yang tidak ambigu. Kandidat yang saling bertentangan tetap tidak diketahui dengan sebuah problem.