以前、「挿入されたUSBのシリアル番号や製品情報をレジストリから調べる」というタイトルで記事を公開していたのだが、SANSのKevin Ripa氏のブログ記事 The Truth About USB Device Serial Numbers – (and the lies your tools tell) によると、レジストリに保持される番号はメーカーが定めたUSB機器のシリアル番号と一致しないとのことだった。
なので、簡単な検証とともに改訂版の記事を書くことにした。(旧記事は現在非公開)
※検証にはWindows 11を搭載したデスクトップPCを使用。
USB機器の情報が保持されているレジストリ
パソコンに挿入されたUSB機器の情報は以下のレジストリに保持される。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR
もしくは
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\SCSI
これまでの定説
例えばUSBSTOR
キーに以下の情報が保持されていたとする。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR\Disk&Ven_I-O_DATA&Prod_USB_Flash_Disk&Rev_3A\00080814A68800770338&0
これまで、00080814A68800770338&0
の&
以前がUSB機器のシリアル番号を表していると言われてきた。上記の例だと、シリアル番号は00080814A68800770338
である。
しかし、SANSのKevin Ripa氏のブログ記事 The Truth About USB Device Serial Numbers – (and the lies your tools tell) によると、これは誤りであるとのことだった。
氏の検証によると、レジストリに保持される番号と実際のUSB機器に明記されているシリアル番号は一致していないとのことだった。
なので、自分でも簡単に検証してみることにした。
USBフラッシュメモリを用いた検証
まずはWestern Digital社のUSBフラッシュメモリ SanDisk Ultra USB 3.0 16GB (SDCZ48-016G) を用いて検証してみた。
メーカーの公式ページによると、どうやらこのUSBフラッシュメモリはシリアル番号の記載がないタイプで、代わりにプロダクトコードが記載されているらしい。
おそらくBL22090015344
がプロダクトコードと思われる。
このUSBフラッシュメモリをWindows 11を搭載したデスクトップPCのUSB 3.2 Gen 2 ポートに挿してみた。
USBSTOR
キーに以下の情報が保持されていた。
レジストリパス: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR\Disk&Ven__USB&Prod__SanDisk_3.2Gen1&Rev_1.00\090103c760c3b578dcbea3b5f7f1bd3cb89f7920bfd16452836858b7f2552d3
プロダクトコードのBL22090015344
はどこにも見当たらない。
次に、以下のPowerShellコマンドでPCに接続されているディスクドライブの情報を取得してみた。
gwmi win32_diskdrive | Select-Object model, serialnumber, pnpdeviceid
serialnumber
とpnpdeviceid
のいずれもプロダクトコードのBL22090015344
と一致していない。
外付けHDDを用いた検証
続いて、SEAGATE社の外付けHDD Expansion HDD 1TB (SRD0NF1) を用いて検証してみた。
背面のラベルより、シリアル番号はNACRFWV3
と判明した。
付属のケーブルを使って、この外付けHDDをWindows 11を搭載したデスクトップPCのUSB 3.2 Gen 2 ポートに挿してみた。
USBSTOR
キーには、このSEAGATE社の外付けHDDの情報は保持されていなかった。
では、どこに保持されているのかというと、USBSTOR
キーではなく、SCSI
キーに情報が保持されていた。
レジストリパス: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\SCSI\Disk&Ven_Seagate&Prod_Expansion_HDD\6&137f65a1&2&000000
シリアル番号のNACRFWV3
はどこにも見当たらない。
次に、以下のPowerShellコマンドでPCに接続されているディスクドライブの情報を取得してみた。
gwmi win32_diskdrive | Select-Object model, serialnumber, pnpdeviceid
serialnumber
の欄に00000000NACRFWV3
というシリアル番号が記述されているのが確認できた。これはHDD背面のラベルに記載されていたシリアル番号と一致している。
しかしKevin Ripa氏によると、このPowerShellコマンドによる判定も常に正しい結果が得られるわけではないらしい。
最後に
検証の結果、USBSTOR
キーやSCSI
キーには、メーカーが定めたUSB機器のシリアル番号は保持されていないことが分かった。
先述したSANSのKevin Ripa氏のブログ記事 The Truth About USB Device Serial Numbers – (and the lies your tools tell) では、より多彩なパターンで検証を行っているので、ぜひ一読することを推奨する。
氏のブログを読むかぎり、実際のUSB機器を確認する以外に、挿入されたUSB機器のシリアル番号を特定するのは難しそうである。
ただし、シリアル番号こそ保持されていないものの、USBSTOR
キーやSCSI
キーに保持される情報が、フォレンジック調査において十分有用なことには変わりはない。
最後に。
USBSTOR
キーやSCSI
キーに保持される番号は何と呼称するべきか。
Kevin Ripa氏は、より正確を期すためにも、シリアル番号という呼称は使わずに、Windows Assigned Device ID
(WADID
) と呼ぶべきだと提言している。
参考
https://www.sans.org/blog/the-truth-about-usb-device-serial-numbers/
https://youtu.be/b4KyGhh75Qc?si=hYxmkrMdR1aZEs0V