USBメモリ関連の調査

USB メモリ関連の確認方法について調べたことをメモします。
Windows10 で確認した結果をまとめる方針ですが確認しないで HP の情報をそのまま記載するかもしれません。

ツール等

ツール名 用途
Registry Explorer HIVE ファイル(Registry の実体)の調査
Registry Finder ローカルホストのレジストリ調査(regedit.exe より使いやすそう)
Registry Explorer ローカルホストの USB 関連の情報を GUI で表示(ダウンロードリンクはページの下部)

PC に過去接続された USB メモリを調査する方法

  • キー【HKLM¥SYSTEM¥Select】内の名前【Current】の値を確認する(「1」か「2」を想定)
  • キー【HKLM¥SYSTEM¥ControlSet00[Currentの値]¥Enum¥USBSTOR¥】のサブキーからベンダー名と製品名を確認する
     キーの例:【Disk&Ven[ベンダー名]&Prod[製品名]&Rev_[不明]】
          【Disk&Ven_I-O_DATA&Prod_USB_Flash_Disk&Rev_PMAP】
  • キー【HKLM¥SYSTEM¥ControlSet00[Currentの値]¥Enum¥USBSTOR¥[ベンダー名,製品名]】のサブキーからシリアル番号を確認する
     キーの例:【[シリアル番号]&0】
          【SNDKB91EA4346D408606&0】

自身が保有するUSBメモリと異なるベンダーやシリアル番号があれば不正に接続されたと考えることができます。

自身が所持している USB メモリのシリアル番号を調査する方法

  • PC に USB メモリを接続する
  • 【コントロールパネル】→【デバイスマネージャー】→【ディスクドライブ】→ デバイスのプロパティ →【詳細】タブ → 【プロパティ】の【親】を選択し値を確認する
     【値】の例:【USB¥VID[ベンダーID]&PID[プロダクトID]¥[シリアル番号]】
          :【USB¥VID_0411&PID_0098¥B001000000047899】

USB メモリを使用した WINDOWS アカウントを調査する方法

Windows10 に項目がありませんでしたがメモしておきます。

  • キー【HKLM¥SYSTEM¥ControlSet00[Currentの値]¥Enum¥USBSTOR¥[ベンダーID,プロダクトID]¥[シリアル番号]】内の名前【ParentIdPrefix】の値を確認する
     値の例:【8&62f9b79&0】
  • キー【HKLM¥SYSTEM¥MountedDevices】内の値に先ほどの【ParentIdPrefix】の値が含まれる名前を確認し GUID を記録する
     名前の例:【¥??¥Volume{[GUID]}】
          【¥??¥Volume{e996e33f-b41a-11e7-8153-000c29208375}】
     値の例 :【¥??¥STORAGE#RemovableMedia#8&62f9b79&0&RM#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}】
     ※値は HEX で保存されており Ascii で記載しています。
  • キー【HKEY_USERS¥[各ユーザID]¥SOFTWARE¥Microsoft¥Windows¥CurrentVersion¥Explorer¥MountPoints2】のサブキーが先ほど確認した GUID と同じもを探す
     キーの例:【(d8be01aa-b41f-11e7-8155-000c29208375)】

以下は Windows10 に存在した項目にシリアル番号が記載されていたのでメモしておきます。

  • キー【HKU¥[各ユーザID]¥SOFTWARE¥Microsoft¥Windows¥CurrentVersion¥Explorer¥MountPoints2¥Volume】の各サブキー内の名前【Data】の値を確認する
     キーの例:【{8e2999e8-fd6c-11ec-b371-105bad920ad4}】
     値の例 :【¥¥?¥STORAGE#Volume#??USBSTOR#Disk&Ven_BUFFALO&Prod_USB_Flash_Disk&Rev_4000#B001000000047899&0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}#】
     ※値は HEX で保存されており値の一部を Ascii で記載しています。

※ParentIdPrefix とは OS が USB メモリを一意に識別するために自動生成するランダムな値で、シリアル番号のない(低品質な)USB メモリではシリアル番号の代わりに使われるそうです。

autorun.inf の痕跡を確認する方法

Windows10 に項目がありませんでしたがメモしておきます。

  • キー【HKU¥[各ユーザID]¥SOFTWARE¥Microsoft¥Windows¥CurrentVersion¥Explorer¥MountPoints2¥{[USBメモリのGUID]}¥Shell¥Auto¥command】内の名前【(default)】の値を確認する
     値の例:【E:¥9164.exe】

USB メモリが初めて接続された日付を調査する方法

USBDeview による調査

  • USBDeview を実行する。
     【Registry Time1】は直近で接続した時間を示す
     【Registry Time2】は初めて接続した時間を示す
     ※USBDeview の解説に OS の再起動で情報が失われるとありましたが情報は残っていました。

ファイルによる調査

  • 【C:¥Windows¥INF¥setupapi.dev.log】をテキストエディタで開く。
     ※ setupapi.dev.log は数か月毎にファイルを分けて保存するようなので、過去分も確認する。
  • シリアル番号で検索しもっとも古い【Section start】の日時を確認する。

無料でツールや情報を共有してくれる方々に感謝

Day-1 セキュリティ技術勉強会資料 – 仙台CTF推進プロジェクト
USBドライブのシリアル番号を確認するにはどうすればよいですか?
View any installed/connected USB device on your system
デバイスインスタンスパスが変わるUSBメモリ
PowerShellで最終書き込み時刻/最終変更時刻でレジストリエントリを並べ替える方法