図7 ウイルス対策ソフトなどに見つからないように潜伏する

フェーズ2 潜伏
ウソを見せたり,姿を変える

 フェーズ2の潜伏で知っておきたいのは,ユーザーやウイルス対策ソフトに見つからないように,ウイルスがどのように隠れるか,という点だ。ウイルス対策ソフトとの“イタチゴッコ”を続けたことで,かなり高度な隠れ方を身につけたものまで出てきている。潜伏の代表的な手法としては,ステルス化と自己変異(ミューテーション)がある(図7[拡大表示])。

サイズをごまかして監視を逃れる

 (1)のステルス化は,ウイルスがファイルに感染していることを隠すために,ユーザーやウイルス対策ソフトにウソのファイル・サイズを教えるというもの。例えば,ユーザーがウイルスに感染したファイルを実行すると,ウイルスはほかのファイルに感染するだけでなく,メモリー上に常駐してユーザーの行動を監視し始める。ここで,ファイルのリスト表示など,ファイル・サイズを取得するようなコマンドが実行されると,ウイルスがOSの代わりにウソの情報を返答するのである。

 この手法を,フェーズ1で説明した追記感染型ウイルスが取り入れると,ユーザーが感染したことを見つけにくくなる。つまり,ファイル・サイズの変化を手がかりに感染を調べるのが難しくなるのだ。

変装して追跡者をかわす

 もう一つの潜伏手法である自己変異とは,ウイルスが自分自身の形を本当に変化させて,主にウイルス対策ソフトのチェックから逃れようという手法だ。詳しくはPart2で説明するが,ウイルス対策ソフトは,ウイルスを検出するために,ウイルスの特徴を抽出したデータを持っており,これと比較することでウイルス感染を見つける。

 そこでウイルスは,感染するたびに自分自身の形(データの中身)を変えることで,ウイルス対策ソフトが持っている特徴データと照合しても見つけられないように工夫するのである。なお,このタイプのウイルスは,ポリモーフィック型などと呼ばれることもある。

 自己変異をさらに発展させた形として,「暗号化」もある。これは,感染する際に自分自身を暗号化して,その復号ルーチンおよび暗号鍵を感染対象のファイルに埋め込むといったものである。暗号鍵をたくさん用意していれば,感染するたびに異なるデータになるので,ウイルス対策ソフトから見つかりにくくなる。

 暗号化は,解読されにくいように複雑にすればするほど,処理に時間がかかる。つまり,ユーザーに気づかれやすくなるし,ウイルス自体の感染速度も遅くなる。ただ,最近のパソコンはこの程度の処理では重くならないほど高性能になってしまっている。

フェーズ3 増殖
ネットを介して勝手に増える

 感染の冒頭で触れたように,最近は電子メールを介してウイルスがパソコンに入ってくる。この電子メールを媒介に使うのがワームである。

 実際,最近起こった大規模なウイルス感染事件は,ほぼ間違いなくワームが絡んでいる。こうした事件を知るためにも,ワームが増殖するしくみを理解しておこう。

図8 電子メールを利用した増殖のしくみ
最近,大きな事件を起こしたウイルスはほとんどがワーム機能を備えている。

メール・ソフトを勝手に拝借

 まずは代表的なWindowsワームを例に,増殖のしくみを見ていこう(図8[拡大表示])。例は,99年春に出現し,たった数日で数万台から数十万台ものパソコンが感染したMelissaメリッサ(W97M. Melissa.A)である。

 Melissaは,Wordの文書ファイルに感染するマクロウイルスで,電子メールの添付ファイルとしてユーザーに送られてくる。ユーザーがこの添付ファイルを開く(実行する)と,MelissaはWordに感染すると同時に,ワームとして増殖し始める。

 具体的には,勝手にWordのマクロ機能を使って電子メール・ソフトのOutlookを起動し,Outlookのアドレス帳に登録されているあて先50件に対して自分自身を含んだWord文書ファイルを添付して電子メールを送信する。

 つまり,ユーザーがフロッピ・ディスクをほかの人に手渡すような行為をしなくても,Melissaは勝手に自分をほかのユーザーのところへ送って増殖するのである。

完全自動のUNIXワーム

 最近では,Melissaのように,電子メール・ソフトを媒介にして増殖するワームがほとんどである。しかし,これとは違うタイプのワームもある。主にUNIX上で増殖するタイプのワームで,もともとはこちらのタイプがワームの主流だった。

 UNIXに多いワームの特徴は,なんといっても完全自動でネットワークを介して増殖する点だ。Melissaのような電子メールを利用するタイプのワームは,相手のパソコンに自分自身を送り込むことはできても,そこから先は,相手が添付ファイルを実行してくれるのを待つしかない。一方,UNIXワームは,ユーザーになんらかのアクションをしてもらうことなく増殖できる。

 こんなことが可能なのは,UNIXマシンが基本的にサーバーとして使われているからだ。つまり,サーバー・ソフトが動いているので,そのバグを突いて外部からワームを送り込み,実行させることができる。

 もう少し具体的にしくみを追っていこう。UNIXワームは,まず適当なIPアドレスの範囲から,特定のセキュリティ・ホールを抱えたサーバー・ソフトが動作しているUNIXマシンを探す。そして条件に合致したサーバーを見つけると,そのサーバー・ソフトのセキュリティ・ホールを突いて外部からコマンドを実行させ,サーバー内に自分自身を送り込む。そして,送り込んだワームを実行させる。