ウイルス対策ソフトの機能は年々向上している。以前はウイルス定義ファイル(パターン・ファイル)を使ったパターン・マッチングのみでウイルスを検出していたが,現在では,ウイルス定義ファイルに登録されていない未知ウイルスについても,一部検出できるとしている。このままウイルス対策ソフトが“進化”を続ければ,ウイルス定義ファイルを更新しなくても未知ウイルスを検出できるようになるのではないか――。しかし,そんな時代は当分来ないことが,ウイルス対策会議「AVAR Conference」に出席してよく分かった。

 AVAR Conferenceは,アジア太平洋地域のアンチウイルス・ベンダーや研究者などで組織される非営利団体「AVAR(Association of Anti-Virus Asia Researchers)」が主催する国際会議である。1998年のAVAR設立以来,毎年アジア各国で開催され,5回目の今年は韓国ソウルで開催された。

 2日間の会議では,ウイルスのメカニズムやウイルス対策技術に関する研究や,アジア各国におけるウイルス対策の現状などが講演された。AVAR Conferenceの主目的は,一般参加者へウイルス対策の必要性などを啓もうすることなので,最先端の研究が発表されることはない。実際,会議に出席したウイルス研究者に聞くと,目新しい発表はほとんどなかったという。しかし,筆者にとってはとても勉強になった。

自分自身を変化させるメタモーフィック・ウイルス

 まず,ウイルスが“進化”していることが分かった。最近のウイルスは,メールの件名や本文,添付ファイル(ウイルス本体)の名前を“工夫”して感染を広げようとするものが多い。「いかにユーザーにウイルスを実行させるか」に注力しており,メカニズム自体は目新しくない。このため,ウイルスの進化は行き着くところまで行ったのかと思っていたが,そんなことはない。メカニズム自体の工夫も進んでいる。その最たる例が「メタモーフィック・ウイルス(Metamorphic Virus)」だ。メタモーフィック・ウイルスは,実行されるたびに――すなわち,発病するたびに――自分自身を書き換えて,パターン・マッチングでは検出されないようにする。

 パターン・マッチングでは検出されないようにするウイルスとしては,メタモーフィック・ウイルスよりも「ポリモーフィック・ウイルス(Polymorphic Virus)」のほうが歴史が古い。ポリモーフィック・ウイルスは,自分自身を暗号化してパターン・マッチングをすり抜けようとする。

 ポリモーフィック・ウイルスは,(1)ウイルス本体部分,(2)ウイルス本体を暗号化/復号する部分で構成される。ポリモーフィック・ウイルスに感染したファイルが実行されると,まずウイルス本体が復号されて実行され,その後ランダムに選択された暗号鍵で再び暗号化される。異なる鍵で暗号化されるので,ウイルス本体のパターンは実行されるたびに変化することになる。

 しかし,ウイルス本体を暗号化/復号する部分は暗号化されていないので,ポリモーフィック・ウイルスかどうかは容易に判別することができるし,暗号化に使用した鍵情報(復号に必要な鍵情報と同じ)を読み出すことも可能である。また,暗号化されているときは異なるパターンであっても,復号されたウイルス本体部分のパターンは同一である。このため,読み出した鍵で事前に復号したり,保護されたメモリー内でウイルスを実行させたり(エミュレートしたり)すれば,パターン・マッチングでウイルスかどうかを判断することができる。

 これに対して,メタモーフィック・ウイルスは実行されるたびに自分自身を書き換えてしまう。2000年中ごろに出現した「Ghost」および「Smash」というメタモーフィック・ウイルスは,ウイルス本体をいくつかのブロックに分割して,実行されるたびにブロックの順番を入れ替える。単にブロックを入れ替えて,ジャンプ・コードを挿入するだけなので,ウイルスが実行されたときの挙動は変わらない。しかし,パターン・パッチングで検出することは難しくなるという。

 2001年初頭に出現した「Zmist」は行単位(命令単位)で順番を入れ替える。さらに,特に意味を持たない「ジャンク・コード(Junk Code)」を挿入して,ウイルスのコード・パターンを変化させる。「z0mbie」という名前のウイルス作者によって作られたこのZmistは,ウイルス研究者のコミュニティに大きな衝撃を与えたという。

 Zmist以降も,メタモーフィック・ウイルスの“開発”が進められている。例えば,「Metaphor(Etap)」ウイルスは,コード内のある命令を複数の命令で実現するように変更した後,Zmistと同じようにその命令の順番をランダムに入れ替える。ウイルスの挙動は同じでも,コード自身は大きく異なったものになるため,パターン・マッチングでは検出できなくなる。

 ただし,現状では大きな被害をもたらしたメタモーフィック・ウイルスは存在しない。というのもメカニズムが複雑すぎるために,変化の途中で壊れてしまうケースが多いからだ。会議に出席したウイルス研究者に聞くと,最初の数回は意図したとおりに変化しても,ある“世代”で壊れてしまい,それ以降感染を続けることができなくなるケースがほとんどだという。しかし最近では“完成度”が上がっているために,壊れることなく感染を広げ続けるメタモーフィック・ウイルスが出現する可能性はあるともいう。

事前に対応できない変種ウイルス

 あるウイルスが流行すると,その変種ウイルスがいやというほど出現する。いまだに大きな被害をもたらしている「Klez」ウイルスは,2002年5月の時点で10種類を超える変種が出現していた。オリジナルのウイルスが出現した際に,その後出現する変種を事前に予測すること――すなわち,変種ウイルスのパターンも定義ファイルに含めておくこと――はできないのだろうか。この答えが“No”であることも,会議に出席してよく分かった。

 ウイルスを実行形式のまま圧縮すると,振る舞いは同じだがコードのビット・パターンが異なる変種ウイルスが作れる。例えば,1999年に出現した「ExplorerZip」ウイルスは,オリジナルはそれほど被害をもたらさなかったが,圧縮された変種は大きな被害を漏らした。

 なぜ変種ウイルスに事前に対応できないのか。それは,作られうる変種が多すぎるためである。それらすべてを事前にウイルス定義ファイルに収めておくことはできない。原因は,圧縮用のツールが多数存在することにある。代表的なものだけでも現在では20種類以上存在するという。

 当然,ツールそれぞれで圧縮アルゴリズムなどが異なるために,圧縮結果は異なる。さらに,同じツールでもバージョンが異なったり,オプションの指定が異なったりすると,圧縮結果は異なる。加えて,あるツールで圧縮してから,別のツールで圧縮すると,またまた異なる圧縮結果を得られる。例えば,2002年7月に出現した「Frethem」の変種である「Frethem.l」,2001年6月に出現した「Leave.worm」の変種「Leave.worm.j」,1999年11月に出現した「APSTrojan」のある変種は,異なるツールで複数回圧縮された変種であるという(ウイルス名は,いずれもネットワークアソシエイツによる表記)。

 圧縮ツールは代表的なものに限らない。ウイルス作者が独自に作成したツールが用いられる場合もある。また,ソース・コードが公開されている圧縮ツールもある。これを基に,独自の圧縮ツールを作ることができる。実際,この圧縮ツールが,ウイルスなどの悪質なプログラムを配布するのによく使われているという。

ベンダーは新機能で対抗,しかし万全ではない

 アンチウイルス・ベンダーやウイルス研究者は手をこまねいているだけではない。メタモーフィック・ウイルスや変種をウイルス定義ファイルに頼らず検出できるような機能の研究や実装を進めている。具体的には,ビット・パターンではなく,プログラムの挙動でチェックする機能をウイルス対策ソフトに追加している。プログラムに書かれている命令を逐一チェックしたり,保護されたメモリー上で実行させたりすることで実際の挙動を調べ,ウイルスのような挙動をするプログラムをウイルスとみなして検出するのである。

 実際,これである特定の未知ウイルスを検出できたというベンダーも存在する。しかし万全ではない。ウイルス対策ソフトに設定された「こういう挙動をすればウイルスとみなす」というルールの裏をかかれれば検知できなくなるからだ。ルールの裏をかくのは容易だ。ウイルス作者はウイルス対策ソフトを使って事前にチェックできるからだ。試行錯誤で「ウイルスとはみなされない挙動をするウイルス」を作ることが可能なのだ。

 誤検出の問題もある。ファイルの検索やファイルへの書き込みなど,ウイルスがよく行う操作は,通常のプログラムも行う操作である。ルールを厳しくすれば誤検出が増えることになる。

 また,ルール・ベースでウイルスであることを検出できても,ウイルスの種類を特定することは困難であるという。例えば,「ファイルに感染する」といった挙動は多くのウイルスが示すからだ。ウイルスの種類を特定できなければ,適切に“駆除”すること(ファイルからウイルスだけを取り除くこと)ができない。

 結局は,メタモーフィック・ウイルスについては現在出現している“世代”の特徴を収めたウイルス定義ファイルを,新しく出現した変種についてはその特徴を収めたウイルス定義ファイルを使って,パターン・マッチングで検出することが最も確実な対処方法となる。

 「いくら最新の検出メカニズムを備えても,ウイルス作者は回避する方法を必ず見つける。ウイルス対策ソフトをチェック・ツールとしてウイルス作者が利用できる以上,仕方がないことだ。ウイルス対策は後追いにならざるをえない」――。会議に出席した,あるウイルス研究者の言葉である。ウイルス作者とアンチウイルス・ベンダーのいたちごっこは当分続く。

(勝村 幸博=IT Pro)