USB メモリ活用講座【実践編・USB メモリのウィルス対策】

< 最終更新日: 2020-05-26 >

はじめに

USB ウィルス対策としては,次の二つの感染経路を考える必要があります:

  1. 自分が管理する PC に,他人の USB メモリを挿すときに,USB メモリから PC にウィルスが感染する.
  2. 他人が管理する PC に,自分の USB メモリを挿すときに,PC から USB メモリにウィルスが感染する.

以下では,前者 (USB メモリ→PC) への対策を「PC 側の対策」,後者 (PC→USB メモリ) への対策を「USB 側の対策」と呼ぶことにします.

参考 Web サイトの情報によれば,それぞれについて,次のような対策があるようです:

  1. PC 側の対策
    1. OS を最新の状態に保つ.
    2. セキュリティ対策ソフトウェア (ファイアウォール,ウィルス対策,スパイウェア対策,etc.) を導入し,最新の状態に保つ.
    3. USB メモリや光学ドライブなどのリムーバブルドライブからの自動実行 (再生) を無効にする
    4. USB メモリの中のファイルを開く前にウィルススキャンを実施する.
    5. リムーバブルドライブをダブルクリックでは開かない. 右クリックメニューを使う場合も,偽装に細心の注意を払う.
  2. USB 側の対策
    1. セキュリティ対策が十分でない PC に挿さない.
    2. USB メモリを PC に挿入するときに Shift キーを押し下げて,自動実行 (再生) を無効にする.
    3. USB メモリのルートに Autorun.inf という名前のフォルダを作っておく.

この Web ページで紹介する方法をためす前に,参考 Web サイトの情報に一通り目を通しておき,「PC 側の対策」として最低限 1-a1-b の対策を講じておくことを強く推奨します. 他人の USB メモリを,自分の PC に挿す機会が多い方は 1-c の対策も講じておきましょう.

参考 Web サイト

Internet Security Knowledge
2008/12/19:緊急 レポート!今までの対策が効かない!?~進化した USB メモリウィルスが出現~
2008/7/14:USB メモリで広まるウィルス~感染してしまったら?感染しないためには?~
@IT
http://www.atmarkit.co.jp/fsecurity/rensai/tipstoday01/tips01.html)
IPA・情報セキュリティ
2009/05/08:コンピュータウィルス・不正アクセスの届出状況 [4 月分] について
Hitachi Incident Response Team > Publications
2009/04/09:USB メモリの自動再生/自動実行-仮想体験デモ(2)-

USB 側のウィルス対策について

われわれ人間の日常生活において,インフルエンザのウィルス感染がこわいからといって,まったく外出をせずに過ごすという対策は非現実的です. 現実的には,手洗いやうがいの励行などの予防策をしっかりとることが妥当なところだと思います. また,体調が悪くなったら早めに手当てをするといった初期治療策や,セキが出るときには他人を感染させないようにマスクをするといった感染の拡大を防ぐ策も有効です.

PC の利用にも同様のことがいえるでしょう. コンピュータウィルス感染がこわいからといって,インターネット接続をせず,新しいソフトウェアもインストールせず,他人と情報交換しないという対策は非現実的でしょう. 現実的な対策として,PC 側の対策は有効と考えられます. しかし,USB側の対策について,2-b2-c の対策は最新の USB ウィルスには効かないこともあるようです. 2-a についても,状況によっては十分にチェックできない場合もあるでしょう.

最近では,ウィルス対策機能や情報漏えい対策機能を搭載した,高機能な USB メモリが各社から発売されています. 労力をかけずに安心をお金で買いたい方や,本当に重要なデータを持ち運ばなければならない方には,必要な機能を搭載した USB メモリを新規購入すれば USB 側の対策を強化することができます.

しかし,今すでに所有している USB メモリを,セキュリティ対策が十分でないからといって,使用をやめたり捨ててしまうのは,たいへんもったいない話です. そこでここでは,お金をかけずにウィルス感染の被害拡大をできるだけ防ぐことを目的とします. 残念ながら USB メモリへのウィルス感染を完全に防ぐことはできませんが,USB メモリを抜き挿しするときに簡単な感染チェックを行うことで,できるだけ早い段階で感染を検知し,被害の拡大を防ぐためのアイディアを紹介します. また,【参考】Panda USB ワクチンを試すでは特殊な処理によって,読み書きができない Autorun.inf を作成するフリーソフトウェアを簡単に紹介します.

USB ウィルスの簡易検知機能

USB メモリのルートに Autorun.inf という名前のテキストファイルを,所定の書式にしたがって作成しておくと,USB メモリを挿し込んだときに表示されるドライブのアイコンを変えたり,特定のプログラムを起動させたり,ドライブを右クリックしたときに特定のメニューを表示するように設定することができます. この自動実行 (再生) の設定ファイルである Autorun.inf を不正に書き換え,ウィルス本体を起動し,感染を広げるタイプのコンピュータウィルスが USB ウィルスと呼ばれています.

この対策として,自分であらかじめ Autorun.inf を作成しておき,変更できないように保護することが考えられます. USB メモリで一般に利用されている FAT や FAT32 と呼ばれるフォーマットでは,ファイルやフォルダに 4 種類の属性 (読み取り専用/アーカイブ/システムファイル/隠しファイル) を設定可能です. 例えばコマンドプロンプトから次のようにして,読み取り専用属性を設定しておけば,テキストエディタなどで編集したときに上書き更新を防ぐことができます.

attrib +r Autorun.inf Return

しかし,FAT/FAT32 ではファイルの所有権が設定できないため,属性を誰でも簡単に変更することができてしまいます. 当然,USB ウィルスの多くは,ファイル属性による保護を簡単に破って感染します. その上,不正に作成した Autorun.inf に隠しファイル属性などを設定して,発見しにくくするようなことまでやってのけるそうです.

これに対し,USB 側の対策2-c は,あらかじめ Autorun.inf という同名の「フォルダ」を作っておくことで,ウィルスによる不正な Autorun.inf ファイルの作成を失敗させて感染を防ぐというものです. しかし,最新の USB ウィルスには,同名フォルダが存在した場合に,それを別の名前にリネームしてから Autorun.inf を作成するというものが存在するそうですので,万全ではありません. 【参考】Panda USB ワクチンを試すで紹介するように,読み書き不能な Autorun.inf を作成するという対策もありますが,自分専用の設定を工夫するという楽しみは失われてしまいます.

そこで,ここでは USB ウィルスの感染 (ウィルスによる Autorun.inf の変更)は,本質的には防ぎようがないという立場で,その代わりに Autorun.inf が不正に書き換えられていないかをチェックする機能を WSH (Windows Scripting Host) の VB スクリプトで実現してみましょう (WSH について興味がある方は,こちら をご覧ください).

テキストエディタを起動して,次のような VB スクリプトを入力しましょう. 先頭がアポストロフィ (') の行はコメント (注釈) となりますので,飛ばしてもかまいません. 入力し終えたら chk_arun.vbs と名前をつけて,USB ドライブ上の適当なフォルダ (ここでは U:\BKUP とします) に保存しましょう. 正確にタイプする自信がない方は,ブラウザからエディタへコピー&ペーストすればよいでしょう. なお,保存するときには文字コード (エンコード) をシフト JIS (Shift_JIS) にする必要があるようです. 「メモ帳」でこのスクリプトを作成する方は,保存時の文字コードを ANSI に指定するとともに,ファイル名が chk_arun.vbs.txt となってしまわないよう気をつけてください (失敗したらリネームすればよいだけですが).

' autorun.infファイルの検査
Option Explicit
Dim objFS,objShell,strDrv,strCmd,fcresult
Set objShell = WScript.CreateObject("WScript.Shell")
Set objFS = WScript.CreateObject("Scripting.FileSystemObject")
' スクリプトファイルのフルパス名からドライブ名を取得
strDrv = objFS.GetDriveName(WScript.ScriptFullName)
strCmd = "fc.exe " & strDrv & "\Autorun.inf " & strDrv & "\BKUP\Autorun.inf"
fcresult = objShell.Run(strCmd, 2, True)
If fcresult <> 0 Then
  WScript.Echo _
    strDrv & "\Autorun.inf と " _
    & strDrv & "\BKUP\Autorun.inf の内容が異なります." & vbCRLF _
    & "ウィルスチェックを実行するか," _
    & strDrv & "\BKUP\Autorun.inf を更新してください."
Else
  WScript.Echo _
    "Autorun.inf は正常と思われます."
End If

次に,USB ドライブのルートに Autorun.inf ファイルを作成し,それを U:\BKUP にもコピーします. 例えば,フリーで入手できるようなアイコン画像ファイル (ここでは USBICON.ico とします) を設定するには,テキストエディタを起動して,次のように入力して Autorun.inf と名前をつけて保存すればよいでしょう.

[autorun]
; USBドライブのアイコンを,USBICON.icoに設定する(;で始まる行はコメント行)
icon=USBICON.ico
図1・エラーメッセージ
図1・エラーメッセージ

それでは chk_arun.vbs の動作確認をしましょう. U:\Autorun.infU:\BKUP\Autorun.inf が同一内容の場合には,「Autorun.inf は正常と思われます.」というダイアログボックスが表示され,内容が異なる場合には図1のようなダイアログボックスが表示されるはずです.

これで,USB メモリがルートにある Autorun.inf が不正に書き換えられたとしても,BKUPAutorun.inf が書き換えられなければ,次に chk_arun.vbs を起動したときに,不正な書き換えを検出できるはずです.

ところで,USB ウィルスの作者がここの情報を知ってしまうと,ルートにある Autorun.inf を書き換えるときに,BKUP\Autorun.inf も書き換える USB ウィルスや,BKUP\chk_arun.vbs を無効化する USB ウィルスを作ることも考えられます (心配しすぎかもしれませんが). そこで,BKUP フォルダの名前を自分なりに変更し,そこに Autorun.inf を別名でコピーすることにして,スクリプトの内容もそれに対応させたうえで,スクリプトファイル名を変更しておくことを推奨します.

自分で定期的に chk_arun.vbs を起動するのは,煩雑でしょうから,次のページでは USB メモリを抜き挿しするタイミングなどにあわせて,自動的に起動させる方法を紹介します.

【参考】Panda USB ワクチンを試す

注意: Panda USB ワクチン は 2009 年 10 月にリリースされた Version 1.0.1.4 から更新が停止されています. 2019 年 10 月現在における有効性は検証していませんので,あくまで参考としてお読みいただき,使ってみるかどうかは自己責任でご判断ください.

リムーバブルメディアの自動実行 (再生) 機能を無効にするフリーソフトウェアとして Panda USB ワクチンが公開されています. このソフトウェアは次の二つの機能を持っています:

ここでは USB ワクチンを適用する方法を簡単に紹介します. 管理者 (Administrator) 権限を持つユーザで作業を行うとよいでしょう. ただし,自分の USB メモリで試す前に「手順」の後に書いてある注意事項もよく読んでください.

  1. Panda USB ワクチン の「Download Now」をクリックします.
  2. 表示されるページからさらに「Download Now」をクリックすると USBVaccineSetup.exe をダウンロードすることができます. C:\temp などのローカルフォルダに保存してください.
  3. USBVaccineSetup.exe を起動すると図2のようにセットアップがはじまるので Next をクリックします.
    図2・Panda USB Vaccine のインストール(1)
    図2・Panda USB Vaccine のインストール(1)
  4. 図3のライセンス契約書が表示されたら内容を一読し,同意できるならば"I accept the agreement"にチェックして Next をクリックします. ライセンス契約に同意しなければ,Panda USB ワクチンを利用することはできません.
    図3・Panda USB Vaccine のインストール(2)
    図3・Panda USB Vaccine のインストール(2)
  5. 図4のインストール先を問い合わせるダイアログボックスが表示されたら,必要に応じて変更して Next をクリックします.
    図4・Panda USB Vaccine のインストール(3)
    図4・Panda USB Vaccine のインストール(3)
  6. 図5の Panda USB ワクチンの動作設定に関するダイアログボックスが表示されたら,適宜 On/Off を行って Next をクリックします. 本講座では,すべて Off にしてインストールを進めることを推奨します.
    図5・Panda USB Vaccine のインストール(4)
    図5・Panda USB Vaccine のインストール(4)
  7. インストールが完了すると図6のダイアログボックスが表示されます. Launch Panda USB Vaccine のチェックを付けたまま,Finish をクリックすると,Panda USB ワクチンが起動されます.
    図6・Panda USB Vaccine のインストール(5)
    図6・Panda USB Vaccine のインストール(5)
  8. Panda USB ワクチンが起動されると図7の画面が表示されます.インストール後に Panda USB ワクチンを起動するには,スタートメニューから Panda Security-Panda USB Vaccine-Panda USB Vaccine とたどればよいでしょう.
    図7・Panda USB Vaccine の起動画面
    図7・Panda USB Vaccine の起動画面
  9. 図7の下側 Select an USB drive で,Panda USB ワクチンを適用したい USB ドライブを選択し,Vaccinate USB ボタンをクリックすると USB ドライブのルートディレクトリには AUTORUN.INF という 16 バイトのファイルが作成されます. このファイルに対し,エディタで開く,削除する,別のドライブに作成してあった Autorun.inf を上書きコピーする,などを試してみても,アクセスが拒否されるなどで,どの操作もうまくいかないことが確認できると思います.

USB ワクチンを適用 (AUTORUN.INF を作成) してしまうと,ドライブのアイコン変更などの Autorun.inf に関係する設定を一切行うことができなくなりますので,利便性をある程度犠牲にしてでも安全性を高める手段だと考えてください. また,この USB ワクチンで防ぐことができるのは,USB ウィルスが感染を広げるために Autorun.inf を書き換える部分だけで,USB メモリにウィルス自身の実行ファイルがコピーされたり,USB メモリ上の Autorun.inf 以外のファイルが改変されることは防げません (スキャン機能や駆除機能はありません). さらに,USB ワクチンを解除するためには,USB ドライブを初期化 (フォーマット) しなければなりません.

これらの制約事項を十分理解したうえで,必要に応じて利用を検討してください. より詳しい情報は,Panda USB ワクチンのオンラインヘルプなどをご覧ください.