挿入されたUSB機器の情報をレジストリから調べる

以前、「挿入された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

serialnumberpnpdeviceidのいずれもプロダクトコードの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

Leave a Reply

Your email address will not be published. Required fields are marked *