ウイルス対策ソフトの未来を占う“迷探偵”ハギーのテクノロジー裏話(2/3 ページ)

» 2013年03月08日 08時00分 公開
[萩原栄幸,ITmedia]

ウイルス対策ソフトの検知方法

 現在あるウイルス対策ソフトは、大きく分けると次のように不正プログラムを見つけ出そうとする。

パターン・マッチング

 最も基本的な検知方法で、「パターン・テーブル」の中に「これと同じコードがあればウイルスです」というパターンを登録しておき、それと対象物を比較させてウイルスかどうかを判断する。

 当初はサンプルのウイルスコードを丸ごとテーブルにしていた時期もあったと聞いているが、それでは何百万種を超えるともいわれる種類の比較に、相当な時間を要してしまう。それと「亜種」のウイルスの検知には追いつかない。そこで、亜種であったとしても「ここは不変」となるコードパターンが必ず幾つか存在するので、そういうごく一部のコードを比較する。こうして検知時間を短縮し、亜種にも対応できるようにしている。

 また「シグネチャ」という言葉を聞いたことがある方も多いだろう。誤解を恐れずにいうと、パターン・マッチングと同じようなものと考えていて大差はない。対策ソフト会社や研究者の一部からは「違う」といわれそうだが、大枠で捉えることの方が重要なので、ご容赦いただきたい。

 ウイルスの一部は悪質で、感染すると「自己変異」したり「暗号化」したりして自分の基となるコードを隠すタイプがある。パターン・マッチングでは検出できないタイプだ。これに対応すべく変異する処理、暗号化する処理の逆の処理を行うアプリを用意しておき、これを実行させてからパターン・マッチングするものもある。ただし、例えば、暗号化なら非可逆暗号、一方向性関数における暗号化であれば元に戻せないし、そもそも、それらに対応する逆処理用のアプリを全部準備させておくわけにもいかない。そこで現れたのが、「ヒューリスティック」である。

「ヒューリスティック法」

 俗に言う「ミューテーション型ウイルス」「ポリモーフィック型ウイルス」とは、IT用語辞典によれば「ファイルに感染するたびにウイルス自体をランダムな暗号化コードを使用して暗号化するコンピュータウイルス」であり、感染している時のデータが毎回違うため、パターン・マッチングによる検出ができないとされている。これを検出するための技術が「ヒューリスティック法」なのである。

 概要を述べると、パターン・マッチングでは「ウイルスとみなせる特色のある、特徴的なコード」を使っていたが、これは「プログラムが行うであろう動作、処理」を前もって決めておき、これらの動作をルール化した組み合せによって加重採点させる。そこで、しきい値を超えるとか、決定的な動作を発見した時点でウイルスと判断する。このロジックによって、未知のウイルスにも対応可能としているのだ。

 ただし、この部分は少し考えるとご理解できると思うが、対策ソフト企業によって大きくスキルが問われる部分であり、実際にもバラツキが出てくるものとなっている。またこの方式は、ここまでの説明部分に関しては「スタティックヒューリスティック法」とか「静的ヒューリスティック法」と呼ばれる。さらには、「ダイナミックヒューリスティック法」「動的ヒューリスティック法」、もしくは一部の専門家が「ビヘイビア法」と呼んでいる方法を組み合わせている。この方法は、対象物を実際に動かして確認する方法である。

 対象物を実際に動かして確認する方法は、大きく分けると、「これ以上動かすと危険なのでそこで停止させる」という方法と、Androidのサンドボックスと同様に仮想環境を用意し、その中の安全領域内で動作させる方式がある。極めて有効だが、実際に動作させることになるのでコンピュータの負荷が大きい。その反面、巨大になり過ぎたパターンを抑制することにつながり、全体としてコンピュータの負荷軽減に成功している。これらが、対策ソフトが最近の特徴となっている。いずれにしても、前述の通り対策ソフト企業のノウハウの結集でもあり、結果としてバラツキも大きくなっているのも見逃せない。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ