昨今のウイルスの特徴は、ウイルス脅威の進化による大量の新種・亜種の登場だ。それでは、こうした大量のウイルスに対して、どのように対抗すればよいのだろうか。ここでは、パターンマッチングとヒューリスティックという現在メジャーな対策方法、そして新たに開発された対策技術を紹介しよう。
検出手段の基本は2通り
ウイルス対策の基本は、不正コードを検出することだ。不正コードは、ファイルの形でコンピュータに侵入する。そのため、ファイル内を検索して不正コードを検出すれば、ウイルスの侵入や活動開始を防ぐことができる。
不正コードの検出には、大きく分けて「パターンマッチング」方式と「ヒューリスティック」方式がある。この2つは、対立する技術ではなく、相互に補完しあう関係にある。
まず、不正コードの検出方法としてもっとも一般的なのが、パターンマッチングだ。この方式はすべてのウイルス対策ソフトで採用されている方式である。このパターンマッチングは、実世界の犯罪捜査における顔写真つきの指名手配書や指紋捜査などにたとえられることが多い。あらかじめ、ウイルスの検体(サンプル)の不正コードから特徴的な部分を抜き出してデータベース化しておく。そして、検索対象となるファイル内のコードと比較し、そのファイルがウイルスであるかどうかを判定している(図1)。
パターンマッチング方式は、高い精度でウイルスの検出が可能だ。しかし、検体の不正コードが入手できなければデータベース化できないため、新しいウイルスや亜種の検出が不可能だという短所がある。
こうしたパターンマッチング方式の短所を補う方法として研究されてきたのが、ヒューリスティック方式である。そもそもヒューリスティック(Heuristic)とは、「発見的」という意味だ。たとえば、人工知能の分野では、コンピュータの思考の元になる人間の経験則に基づいたルールを、「発見的規則(ヒューリスティックルール)」と呼んでいる。つまりヒューリスティック方式とは、ウイルスの個体を検出するのではなく、プログラムの活動内容に人間の経験則に基づいたルールを適用して不正なプログラムであるかどうかを判定するのだ。なお、トレンドマイクロではこのようなヒューリスティック検出の方法を、「トラップ検出(ヒューリスティックルールベース方式)」と呼んでいる。
具体例で説明しよう。「ファイル感染型ウイルス(PE 型ウイルス)」は、ほかのプログラムファイルを開き、そこに自身の不正コードを埋め込む活動を行なう。こうしたことから、ヒューリスティック方式では、プログラムの動きをソフトウェア上で「エミュレーション」して、実際に不正コードを埋め込む活動が確認された場合にウイルスの疑いがあるものとして判定し、検出する。この方法であれば、ウイルスの検体が入手できない場合でも疑わしいファイルを検出できる。実世界でいえば、挙動不審な人物を拘束することにたとえられるだろう。
しかし、ウイルスの特定が可能なパターンマッチングとは異なり、ヒューリスティック方式の検出はあくまで「疑い」によるものである。実際に詳細な解析を行なった場合にウイルスでないことが判明することもあり得る。より厳密なルールを設定し、エミュレーションに時間をかければ検出精度の向上は可能だが、コンピュータに負荷をかける結果となり、現実的ではない。判定が容易な簡潔なルールと、必要最低限のエミュレーションとのバランスが必要になる。
大量の亜種に対抗する新たな技術
以上がウイルス対策技術の基本的な仕組みであるが、ここで最近の脅威に有効な対策手法として「ジェネリック検出」と「パッカー形式の検出」を紹介したい。
短期間に大量発生するウイルスの亜種に迅速に対応する検出技術として採用されているのがジェネリック検出である。ジェネリック検出では、特定のウイルスの既知の亜種から共通点を抽出し、既知の亜種だけでなく亜種と想定される複数のウイルスを検出する。また、パターンマッチング方式では検出できない新しい亜種であっても、共通点が一致していれば発生した時点で検出できる(図2)。
また、ウイルス作者が金銭的な実利を得ようと画策している現在、ウイルスは発見・検出を逃れるように作られている。その一例として挙げられるのが、ファイルの圧縮/暗号化ツールの一種である「パッカー(Packer)」の悪用だ。パッカーを使うと、自動実行形式の圧縮ファイルを作ることができる。攻撃者は、パッカーで圧縮/暗号化されたウイルスファイルをユーザーに送信する。受け取ったユーザーがダブルクリックすると、ファイル内容が展開/復号され、さらに中身のウイルス本体まで自動的に実行されてしまう仕組みだ。
パッカーの種類が異なると、作成された圧縮/暗号化ファイルの形式も異なってくる。パッカーの種類を変えるだけで亜種を作成できるため、攻撃者が「亜種」を大量作成する手法としても定着している。2006年後半に猛威をふるった「Stration(ストレーション)」がわずか半月の間に150 種以上の亜種を生み出すことができた背景には、このパッカーの存在がある。Strationではパッカーの持つファイルの暗号化機能を悪用したり、複数のパッカーを使用して不正プログラムを加工した。これらによりウイルスの中身を「見えない化」し、パターンマッチングによる検出を回避したのである。
パッカーを使ったウイルスに対してトレンドマイクロでは、使ったパッカーの「種類」から、怪しいかどうかを判定している。ウイルスに使われることの多いパッカーが利用されたファイルを、疑わしいファイルとして検出するのだ。
筆者紹介:岡本勝之
1996年、トレンドマイクロ入社。「リージョナルトレンドラボ」にて不正プログラムなどのネットワーク上の脅威全般の解析業務を担当