Copyright © 2000-2005 eazyfox. All Rights Reserved.
HOME| Firewall | Security| 製品紹介| SecuTool| Forest| Hello| Link| 掲示板| 雑談掲示板| SiteMap| Contact
Home > Security > Virusチェッカ(AntiVirusツール)

Virusチェッカ(AntiVirusツール)

内部からの攻撃に書いてある内容と重複するが、Virusチェッカの役割と機能について考えてみる。Virusチェッカのおもな仕事は次のようなものだ。

これらの仕組みはどうやって実現しているのか理解すると、Virusチェッカの必要性と弱点が見えてくる。

DiskやE-Mailの内容をチェックする

Disk上のファイルをリアルタイムでチェックするためにはOSがあるファイルを読込もうとしたときVirusフィルタを経由して読込むような仕組みをとる。簡単に言うとDiskのドライバとして働くような仕組みである。

  1. OSはファイル読み込み時にVirusチェッカ(AntiVirus)にxxxxx.Exeというファイルを読込むように指示をする。
  2. VirusチェッカはファイルをDiskから読込んで内容を検査して感染が無いならOSにファイルデータを渡す。
  3. また感染と判断した時にはまずユーザーに警告のダイアログを表示して、OSにはユーザーからの返答が来るまで待たされる。
  4. 警告ダイアログで「無視する」を選択するとデータはそのままOSに引き渡れる
  5. 「削除」や「移動」を選択するとOSには空データを渡す。

このようにして感染したファイルがOSに引き渡され実行されたり、他のメディアにコピーされることを防ぐのだ。
E-MailのHTTPデータ内の悪意のあるスクリプトや添付データのチェックはPOP3-Proxyという仕組みで検査している。上記のDiskドライバと同様にOEなどのメールクライアントがメールデータを送受信するときにVirusフィルタを経由させる。受信したデータをDiskのデータに置き換えて考えればDiskからデータを読込むのと同じ仕組みである。 

このようにデータをOSが読込む前、書き込む前にデータを横取りして内容をチェックするので当然通常のアクセス(Virusフィルタを経由しないアクセス)よりも速度は低下する。また圧縮ファイルであれば一度ワーク領域に展開するので速度はさらに低下してしまう。ファイルを完全に読込んでからOSに渡すのではなくフィルタを流れるデータを連続チェックしながら、検査が終了した分からOSに渡していくような仕組みで速度の低下を抑えているようだ。

以前のWindows3.1の時代ではVirusに感染するのはExeやComといった実行形式のファイルで、通常はユーザにより書き換えられることが無いファイルであった。そのため

  1. 事前にExeやComファイルのチェックサムを作ってDisk上に保存しておく
  2. 実行時にDiskに保存してあるチェックサムと、実行時に再計算したチェックサムを比較する
  3. チェックサムが一致すればExeやComファイルは書き換えられていない(感染していない)と判断して実行する
  4. もしチェックサムが異なればExeやComファイルは書き換えられている(感染している)と判断して警告を発する


というVirusチェッカが主流をなしていた(筆者も使っていた)。これは通常のファイル(実行形式ではないファイル)アクセスでは何のチェックも行わないし、Virusのパターンデータとの比較検査ではなく、単純なチェックサムの検査なので動作が非常に軽かった。現状でも「Integrity Check」としてMD5などのハッシュ関数を用いた同様のチェックを採用している製品も多くある。
また手動スキャンはDisk上のファイルを順番に読込んでチェックを行う仕組みで、OSからの指示ではなくVirusチェッカ自身が読み込み指示を行っているのがリアルタイムチェックを異なる点である。

重要ファイルの更新を監視する

WindowsのスタートアップフォルダやiniファイルやレジストリとWindowsシステムフォルダ内へのアクセスを監視する。通常の読み込みは制限しないが、書き込み処理は制限してVirusが起動時に実行されたり、システムファイルに感染することを防いでいる。Virusやトロイの木馬はPC起動時に確実に起動するようにこれらのファイルを書き換えるのだ。たとえば

などだ。ただし感染時に書き換えられた上記のファイルを元に戻されないように、Regedit.Exeの起動やWin.iniの内容を監視して、書き換えられると直ぐに元に戻す機能を持ったVirusも存在する。こういった自己修復機能を持つVirusであれば感染後に完全駆除することは難しい、したがって感染する前に怪しい動作を規制する必要があるのだ。また重要ファイルではないが、メモリ上にロードしてあるアプリケーションがDisk上のExeやDll等のファイルを書き換えることはアプリケーションのインストール時以外にはほとんど無いはずだ。したがって何らかのアプリケーションがExeやDllを書き換えようとすれば警告する機能も必要となる。

常駐タスクを監視する

VirusやWormは重要ファイルの更新で書いたようにWindowsのスタート時に起動するように設定を変更してしまう。もし感染に気づかないでWindowsを使いつづけるのなら大変に危険な行為である。
Virusはユーザにより起動された実行モジュールのファンクションをフックして自分のコピーを次々と増やしていこうとする。そのためにVirusチェッカは常駐メモリを頻繁にスキャンして怪しいモジュールが常駐していないかを検査する。また手動スキャンを開始する前には必ず常駐タスクとメモリスキャンを行う。なぜなら、手動スキャンによってファイルを順に読込んでいくので、もしVirusが常駐してファイルの読み込みをフックしているならVirusチェッカの手動スキャンにより全てのファイルが感染してしまうからだ。

Virusチェッカに何を期待するのか

VirusやWorm(トロイの木馬を含む)の感染経路は以前なら圧倒的にフロッピーなどの他人から貰ったファイルであった。しかし現在ではインターネット経由での感染がおもな経路となっている。インターネット経由からの感染を防ぐとなると

が必要となってくる。

ここで考えて欲しいことは、上記に書いたようなファイルやスクリプトは通常のWebサイトの参照やメールの受信といった正常なインターネットの使用中に潜む危ないデータということだ。つまりFirewallのルールをきっちり設定して外部からの侵入も防いでいるし、怪しいアプリケーションの起動もしていないのにWebを参照したり、メールを開いただけでVirusやWormに感染することがある。
Firewallではコンテンツの内容をチェックして、VirusやWormの侵入を防ぐことはできない。セキュリティ製品というのは守備範囲が限られた製品である。守備範囲外の攻撃に対してはまったく効果をもたない製品でもある。したがって複数のセキュリティ製品を組み合わせて使用する必要があるのだ。

侵入を防ぎ、実行を防ぐ

Personal FirewallとVirusチェッカの役割をまとめてみよう。Personal Firewallはインターネットの出入り口を制限するためのもので、VirusチェッカはFirewallを通過した内容を選別するためのものである。

(ケース1) IEでWeb巡回していたときにクラッカサイトに接続されてトロイの木馬を送り込まれた。

このケースはアダルトサイトなどに行った時によくあるパターンで次々にPopアップが開いていく中に悪意のあるサイトが存在してトロイの木馬を仕込まれるというものだ。またアングラなサイトでも遭遇することがある。以前はダイヤルアップの情報を書き換えてQ2などの有料チャネルに接続するという手法が多かったが、現在ではDDoS用のトロイであったり、通販のパスワードやカード番号収集目的のトロイの木馬(キーロガー)を送り込まれることが多い。

これに対抗するには、まず不正コンテンツを送られてもブロックするようにコンテンツ内容を判断するVirusチェッカが欠かせない。また不正スクリプトが動作しないようにIEやJavaVMのバージョンアップなどWindowsモジュールの修正が欠かせない。さらにVirusチェックを通り過ぎてしまったトロイの木馬が起動しても外部に接続できないようにFirewallで出口を塞ぐ必要がある。

(ケース2) Outlookで友人から「楽しいエロゲーム」というExeを送ってもらったので実行したら未知のVirusに感染していた。またはトロイの木馬であった。

送ってくれた友人も、誰かから貰ったものかも知れない。またごく少数しか出回っていないVirusやトロイの木馬であればVirusチェッカにかからないときもある。VirusチェッカのSandBox機能でDisk内のファイルに対する危険な更新は防げることが多いが、データファイルに対する更新(XlsやDocに寄生する行為)は防げないと考えておこう。不信なExeは実行する前に必ずVirusチェックをしておこう。また常時接続ではゲーム中だからといってFirewallを切ってしまうのは得策ではない。モデムやRouterの電源が入っているときは必ずFirewallも実行しなければならない。

このようにFirewallとVirusチェッカの組み合わせでないとセキュアな環境は実現できない。SymantecがFirewallとAntiVirusを組み合わせたのも、トレンドマイクロがVirusBasterにFirewall機能を入れたのも、上記のような理由からだ。

決して危険なサイトには行かないから、Virusやトロイといった脅威にさらされることは無いと思っている方に警告したい。あなたが安全だと思って接続していたサイトは実はクラッカーが動かしているサーバ上にあることは絶対にありえないのか?大手企業のサイト管理者がクラッカーに豹変することは考えられないか?

世の中に絶対安全ということは存在しない。まして匿名でだれもが直ぐに犯罪者になれるInternetの社会で安全などありえない。自分の身は自分で守らないと誰も守ってはくれない。

・SecurityのTopに戻る