2009年01月25日 - autorun.inf - ウイルス対策とUSB接続機器の安全な利用法

 USBメモリや外付けハードディスク、リムーバブルメディアを媒介したウイルス感染について、相談される機会が急増している。
 自分はいかなる保証もできないし、100%の確実性をもって掲載するのではない点をご容赦願いたい。
 わずかな(時には大きな)環境の違いが、挙動や動作 - そして感染するか否かを左右するからだ。

USB機器経由感染について

USB機器経由感染とWindows OSの挙動

 最近流行しているタイプとOSごとの違いを簡単に説明する。
  1. Windows XP
    • 1)USB機器を接続しただけでは感染はしない
    •  (個人サポートで接続しただけと訴える例があったが、検証できていない)
    • 2)マイコンピュータを開きダブルクリックして開くと感染する
  2. Windows VISTA
    • 1)設定によっては、USB機器を接続しただけで感染
    •  Shiftキーによる自動実行キャンセルは効果が無い
    • 2)マイコンピュータを開きダブルクリックして開くと感染する
    •  Microsoft Updateを行い最新の状態にすると、自動実行が無効化される(例外あり?)

 多くの例外があり、ユーザーの数だけ不安定な要素がある。
 「次回も同じ動作」としたためとか、あるソフトウェアをインストールしたために対策パッチがとか、USB接続機器なのに他のデバイスとして認識されるとか。そういった理由なのかな。
 US-CERT Vulnerability Note VU#889747 の日本語訳(葉っぱ日記)Vulnerability Analysis Blog: The Dangers of Windows AutoRunの日本語訳(葉っぱ日記)をあわせて読んでもらいたい。

感染活動の概要

 リムーバブルメディアのルートディレクトリ中に作成されるautorun.infと、それにより自動実行される実行形式ファイルの組み合わせにより、感染活動が行われる。
 感染したパソコンには、新たにautorun.infと実行形式ファイルが作成され、汚染されたメディアが続々と生産されるだろう。

 感染後にはリムーバブルメディア中のマルウェアをパソコンにコピーする。
 最近流行しているものは、新たな複数の実行形式ファイルなどを作成して汚染したり、ネット経由で新たなマルウェアをダウンロードする。

 対処を困難にさせる活動として、パソコンの動作を極端に重くさせて何もできない状態に貶め、特定ファイルをルートキットで隠蔽、レジストリを操作し(更には設定変更後に自動的に修復前の状態に戻して!)ファイルを隠蔽させる。

autorun.inf - 自動実行を予防する、具体的な対策について

KB 953252 - Microsoftによるガイドは不完全?

 Windows で強制"無効"に自動実行レジストリ キーを修正する方法(Microsoft)には幾つかの方法が掲載されている。
 だが自分としては、正直言ってあまり推奨できない。

1) XP向けのMicrosoft「Windows XP 用の更新プログラム (KB950582)」の導入は、確実な対策とはならない。
 (あくまでも自分の体験談に過ぎないが)個体差があり、Windows XP SP2では2台に効果が無かった。またXP SP3では3台全てに効果が無かった。

2) グループポリシーはXP Professionalでは有効であった、だがホームユーザー向けのWindows XP Home Editionでは使えない。

3) NoDriveTypeAutoRunの設定は、不完全であるとのレポートもある。
 また、NoDriveTypeAutorunのレジストリの値を「0xFF」にしても、ユーザーがWindows Explorerでデバイスのアイコンをクリックすれば、任意のコードが実行されることがあるとしている。  機能するやり方を:「MSのAutorun無効化方法は不適切」とUS-CERTが指摘(ITmedia)
 原文はMicrosoft Windows Does Not Disable AutoRun Properly(US-CERT)

 そう言えばメディアのタイプをWindowsは(何故か)たまに間違って識別する場合があるが、どうなるんだろうか。

Autorun.infを完全に無効化する - XPとVISTA向けガイド

 The Dangers of Windows AutoRun (CERT)に掲載されている内容より。
 はせがわ氏が和訳をVulnerability Analysis Blog: The Dangers of Windows AutoRunの日本語訳(葉っぱ日記)に掲載しており、面白いのでじっくりと読んでもらいたい。

 この方法はUSBメモリだけではなく、USB接続のハードディスクや、CD-ROM、SDカードなどのautorun.infまでをも無効化する。
 前述のKB 953252と根本的に違うのは、前者がWindows OSに新たなデバイスを接続した際の挙動を制御する目的であるのに対して、これはautorun.infそのものを無効化するという点であり、方向性が全く違う。

 元記事で記載されているレジストリ操作を自動化するバッチファイルを作成した。
 XPとVista各バージョン・SPの20台以上でテストし、有効に機能するのを確認している。だが他のWindows OSでは試していないため、いかなる責任もとれない。

 autorunstopよりダウンロードして利用してもらいたい。
 具体的には以下の2つのレジストリエントリを操作する。

 利用する前には、XPとVISTAではシステムの復元機能から復元ポイントを作成し。重要なファイルはバックアップし。各自の責任で実行してもらいたい。

 ただし、autorun.infを利用するCD-ROMやDVDでは、自動実行(自動再生)機能が無効になるから、これまで通りの利用はできなくなるのが欠点。
 例として、CD-ROMを開いて、setup.exeとかinstall.exeを直接ダブルクリックして起動しなければならなくなるし。
 またフォトCDでは、CD-ROMを開いてhtmlファイルを手動で開かねばならないだろう。
 (CD-Rなどのトラップも防げるだろう!とポジティブシンキングしてほしい)

autorun.inf - リムーバブルメディアでの感染を再現して体験する

 メモ帳(notepad)を起動し、autorun.infとautoruntest.batの名称で保存し、USBメモリーキー中に入れ。
 パソコンに接続したり、マイコンピュータを開きドライブをクリックして実感してもらいたい。
 

 USBメモリーは可能であれば未使用のものを利用してくれ。
 (autoruntest.zipとしてアップロードしておいた)

 autorun.infは、以下の内容とする。

 autoruntest.batは、以下の内容とする。

autorun.infの自動実行(自動再生)について詳しく

autorun.infと自動再生、自動実行

 先日捕獲した検体のautorun.infより、検出避け目的のコメント行(セミコロンが行頭にある行)などを除いて転載する。
 autorun.infについての詳細はAutorun.inf Entries (Microsoft)を読んでもらいたい。


 open=hbs.exeは、メディアをパソコンに接続した時の自動再生機能により、hbs.exeを実行させるものだ。
 よくShiftキーを押しっぱなしにすれば回避できると言われるが、実はそのような風説は正確ではない。細かい点については後述する。

 shell\open、これはマイコンピュータを開き、USBリムーバブルメディアのアイコンをダブルクリックした時点で実行される。
 XPとVISTAでは、USBメモリーを開いただけで感染する可能性がある
 マイコンピュータを開き、リムーバブルメディアを開いて。。。。。。これだけで感染してしまうケースだ。

 笑えない話として、感染しているか確認するため数十のUSBメモリーキーを開きまくって、感染規模が拡大したケースがあった。
 自分が依頼された多くの駆除作業の実感としては、openではなく shell\open、こちらがメジャーな感染タイミングとなっている感触がある。

依然猛威を振るい続けるUSBワーム、今一度脅威の再認識を(トレンドマイクロセキュリティブログ)なる記事があったので、引用して紹介する。
 「shellコマンド」はドライブのダブルクリックや右クリックメニューなどをトリガーにしてファイルを自動実行させるものです。
 例えば、Windows XPの環境ではCDメディアのみに 「Autorun.inf」内の「openコマンド」が有効になります。つまりWindows XPでは、USBメモリを挿した時点で表示されるダイアログ中に「openコマンド」にあたる選択肢がなく(図6)、この時点で感染することはありません。しかし、「Autorun.inf」内の「shellコマンド」は有効となるため、マイコンピュータ内のドライブアイコンをダブルクリックするとウイルスが呼ばれ感染してしまいます。
 一方Windows Vistaでは「Autorun.inf」内の「openコマンド」による有効範囲がCDメディアに加えUSBメモリまで拡大されました。
 依然猛威を振るい続けるUSBワーム、今一度脅威の再認識を(トレンドマイクロセキュリティブログ)

 他にも、ウイルス騒動(Okumura's Blog)などで同種の報告があるようだ。

Shift(シフト)キーを押しながら接続すれば安全なのか? - openコマンドに関する問題

 Shiftキーを押したはずなのに感染したと、先日相談された。
 Shiftキーを押せば自動実行をブロックできるとのアドバイスは適切ではない。

 Windows XPでは、openコマンド(接続時に稼動)はUSB接続機器では実行されない。だからShiftキーを押しても意味が無い。
 例えば、Windows XPの環境ではCDメディアのみに 「Autorun.inf」内の「openコマンド」が有効になります。つまりWindows XPでは、USBメモリを挿した時点で表示されるダイアログ中に「openコマンド」にあたる選択肢がなく(図6)、この時点で感染することはありません。
 依然猛威を振るい続けるUSBワーム、今一度脅威の再認識を(トレンドマイクロセキュリティブログ)

 またWindows VISTAでは、openコマンド(接続時に稼動)はUSB接続機器で実行される。だがShiftキーによるキャンセルが効かないのだ。
 Windows XP と違って、Shift キーを押しても自動再生を無視できないのはなぜですか。
 自動再生の設計は変更されました。現在は、既定の設定に関係なく、Shift キーを押し続けると自動再生が開きます。
 自動再生 よく寄せられる質問(Microsoft)

VISTAの不思議

 インストール直後ではUSBメモリーのautorun.infにより実行される。
 だが、Microsoft Updateを行い最新の状態にすると、autorun.infは無効化されるものと無効化されないパソコンがある。
 理由はわからない。
 MountPoints2絡みなんだろうか。それともメディアタイプ(画像、プログラム、その他)?

USB接続機器だけじゃない - SDカードなども感染源になる

 USBメモリーキーはともかく。デジカメ用の記録メディアはさほど注意は払われないのではなかろうか。「忘年会の画像が欲しいー」「いいよぉー」と。
 ノートパソコンのスロットにSDカードを接続。。。。。感染、と。

 興味深い話があったので、紹介する。
 東京・JR立川駅北口にある家電量販店「ビックカメラ立川店」で、デジタルカメラの写真プリント注文機がコンピューターウイルスに感染し、利用者の持ち込んだメモリーカードにも感染が広がっていたことがわかった
 (中略)
 感染していたのは写真プリント注文機「オーダーキャッチャー」の1台で、画像が記録されたメモリーカードを同機に差し込むことで感染して拡大していく「ワーム型」と呼ばれるウイルスが確認された。
 asahi.com via 思いもかけぬ場所での感染 - tomcatの落書き帳 part-4

リムーバブルメディアのライトプロテクト

 USBメモリーやSDカードには、ライトプロテクト - つまり書き込み禁止のスイッチがある製品がある。
 自分の管理外のパソコンに接続するには、そのような製品を選べば「お土産」をもらってくる心配は無いだろう。
 是非とも1つ購入してもらいたいと熱く薦める

 余談として、店頭で販売されているUSBメモリーキーとしては、buffalo(メルコ)の製品以外にはライトプロテクト機能が無かったのには驚いた。

関連記事

 USBメモリ経由で感染するウイルスの、一瞬でできる簡易診断方法(Semplice, 2008年12月27日)
 Knightウイルス感染でUSBメモリが開けない(LucaBlog, 2007年12月24日)

Conclusion

 感染源はUSB接続機器だけではなく、SDカードや、感染中に作成されたCD-Rといった経路もある。
 警視庁のネットワークで感染拡大したW32.Downadup.B(Symantec)のように、LANの共有リソースをクラックして感染拡大するものもある。
 Microsoftによるアドバイザリは、例外 - つまり期待された設定通りにいかない事例が多々見受けられる。
 The Dangers of Windows AutoRun (CERT)のように、Autorun.infそのものを無効化する手法が有用。

 正直な話として、エンドユーザーごとの環境の違いにより、ここまで動作が異なるともうお手上げ。

更新履歴

 2009年2月11日、リムーバブルメディア(removable media)と記載すべき部分をリムーバルメディア(removal media)と記載していた10箇所を修正。凡ミスとはいえ投稿時には気を抜いてはならないと決意する。指摘してくれた方に大変感謝。