2006年12月17日 - ウイルス対策ソフトの起動時スキャン(ブートタイムスキャン)を活用

 起動時スキャン(Boot-time Scan)をご存知だろうか。
 WindowsOSが起動し各種サービスが起動し終わるよりずっと前、またユーザーがログオンするよりも前にアンチウイルスソフトを活動させて、システムを保護させる手段だ。

WindowsでのStartup Entryとプログラムの起動タイミング


 Startup Entry(起動エントリ)は各種プログラムを起動させるための設定項目だ。どこにどう設定するか次第で、プログラムの起動タイミングは変わるだろう。

 AppInit_DLLsへのDLLインジェクションで起動するウイルスは何年か前より細々と存在し、セーフモードでも起動してしまうために難儀だった。
 ルートキットにはデバイスドライバとして起動されOSが起動し終わる前・アンチウイルスソフトが起動し終わる前に活動し始めるものがあり、特定ファイル・やプロセスの隠蔽工作のために、OS起動後にアンチウイルスソフトでスキャンしても検出するのが難しい。
 この手の話題については後日場を改めて紹介するので、ここではざっと一般的マルウェアが起動エントリに登録され起動する順番を取り上げる。ログオンスクリプトではどうなのかとか、マニアックな話は置いておく。

 1)デバイスドライバ
 2)サービスプロセスの一部
 3)レジストリのrunエントリ(HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunもしくはHKCU)
 4)スタートアップフォルダ

 わかりやすく書くと、より早期に起動するソフトウェアがある意味で有利だ、とだけ覚えてもらいたい。

プログラムが起動する順番と検出力の関係


 アンチウイルスソフトが起動するタイミングは、早ければ早いほど望ましい。
 理由としてはマルウェアが起動する前にアンチウイルスソフトが活動すれば、ルートキット類による隠蔽活動が完全ではない状況で検出できる可能性がある(修復作業が確実に行えるとの意味ではない)。
 またアンチウイルスソフトの挙動を妨害するようなマルウェアよりも先に起動できれば、アンチウイルスソフトの活動が阻害される可能性は低減する(確実とは言わない)。
 (いずれも可能性の問題ではあるのだ)

アンチウイルスソフトでの起動時スキャン(ブートタイムスキャン)の例


Norton AntiVirus


 Norton AntiVirus2007をインストール。まず「設定」を開く。
 
 Auto-Protectを開く。
 
 「Auto-Protectはコンピュータをウイルス、スパイウェア、その他のリスクから継続的に保護します。」のダイアログでは、まかり間違っても「オフにする」を選択してはならない。「設定」をクリック。
 
 リアルタイム保護:Auto-Protectの画面では、デフォルトでは「システム起動中にAuto-Protectをロードする[A]」は無効になっている。ボックスにチェックを入れる。
 

 sdelist(株式会社 軟球)では、起動時スキャン無効時にはこのように表示される。
 
 起動時スキャンを有効、つまり「「システム起動中にAuto-Protectをロードする」のボックスにチェックしたらば、このようになるだろう。ファイルシステムドライバとしてNorton AntiVirus関連ファイルが起動するよう設定されている。
 

起動時スキャン(ブートタイムスキャン:Boot-time scan)は完全な防備となるのか
 事例の積み重ねが乏しいため、あくまでも自分の経験則の範囲であるのはご容赦願いたい。

 OSを起動した後になってからのオンデマンドスキャン(ユーザーが手動で行うスキャン)やもしくはスケジューリングされたスキャン、非常駐型の検出サービス(ANTIDOTE for PC AntiVirus - SuperLiteなど)やオンラインスキャンとは、起動時スキャンや常駐型スキャンが求められる役割は全く別のものである。
 (細かい話では起動時スキャンはもちろん常駐スキャンはそれぞれ必須と自分は考えており、これらとオンアクセススキャンでの件出力を同列に並べるのは無意味な行為なのだが、解説は後日とする)

 常駐型スキャンではオンデマンドでは検出されない何かが検出される場合も多く、運用面でより保護を確かなものとするだろう。
 そして(あまり注目されないが有用である)起動時スキャンは、起動タイミングが早いマルウェアを検出する際に、大いに役立つだろう。

 もちろん起動時スキャンで検出されたとしても、その後に確実に復旧できるかと問われれば、答えはNoだ。
 アンチウイルスソフトの主たる役割は感染の防止であり、感染後のやりくりではない。

Conclusion


 アンチウイルスソフトのブートタイムスキャン(Boot-time scan)は、Windowsが起動する際により早い段階で監視を開始するオプションである。
 プログラムが起動する順番が早ければ早いほど、ウイルス対策ソフトの監視活動とマルウェアの隠蔽工作における争いは、より優位な立場となるだろう。
 OS起動時のブートタイムスキャンにて検出されたとしても、マルウェアよりの修復作業が確実に行えるのではない。
 起動時のスキャンは、隠蔽されるマルウェアを検出する率を向上させるには有用な手段である。