マルウエア(悪質なプログラム)の挙動を把握することは、感染を未然に防ぐために重要である。また、感染してしまった場合に被害を最小限に抑えるためにも重要である。ネットワークにどのような影響を与え、システムにどのようなダメージがあるのかを知れば、何らかの対策を講じることができる。

 マルウエアに関する情報は、アンチウイルス・ベンダーのWebサイトから入手できる。しかし、すべてのマルウエアについて、十分な情報がタイムリーに提供されていないという問題点がある。例えば、特定の地域や企業、団体を狙ったマルウエアの場合には、被害状況を把握できなかったり、マルウエアのサンプルが入手できなかったりするためにベンダーの対応が遅れてしまう。

 もし自分でマルウエアを解析することができれば、アンチウイルス・ベンダーの情報提供を待たずに手を打てる。そこで、専門家ではないエンジニアでもマルウエアを解析できるように、マルウエア解析のためのツールやテクニックを数回にわたって解説する。

ブラックボックス手法

 あるプログラムがマルウエアかどうか、マルウエアであった場合にはどういった挙動を示すのかを調査する手法は、隔離された環境で実際にプログラムを動作させて調査する「ブラックボックス手法」と、リバース・エンジニアリングにより構造や仕様を分析する「ホワイトボックス手法」の二つに大別できる。

 ブラックボックス手法とは、(他のシステムに影響を与えない)隔離された環境で、実際に調査対象プログラムを動作させてその挙動を調査することである。「動的解析」と呼ばれることもある。この手法では、様々なシステム・モニタリング・ツールを利用する(ツールについては、次回以降に紹介する)。後述のホワイトボックス手法と比較し、短時間で容易に挙動を把握することができる。

 しかし、調査対象プログラムによっては、ホワイトボックス手法よりも時間がかかってしまうこともある。例えば、擬似ネットワーク環境下ではうまく動作しなかったり、日付や確率などの条件により動作を開始するようなプログラムだったりした場合だ。当たり前のことだが、月曜日のみ発症するマルウエアを火曜日に実行しても、その挙動を調査することはできない。

ホワイトボックス手法

 ホワイトボックス手法とは、リバース・エンジニアリング(逆アセンブル)によって調査対象プログラムの構造や仕様を分析することである。ブラックボックスが動的解析と呼ばれるのに対して、こちらは「静的解析」とも呼ばれる。

 逆アセンブルしたプログラム・コードをすべてチェックすればマルウエアの完全な挙動を把握することができる。しかし、時間がかかるというデメリットもある。逆アセンブルしたプログラム・コードを分析するためには、ある程度の経験(慣れ)も必要だ。また、OSやネットワーク、プログラミング言語など幅広い知識が不可欠である。

 実際のマルウエア解析においては、ブラックボックス手法とホワイトボックス手法を組み合わせて行うのが効果的である。

<以下、「マルウェアを解析する(その2)」に続く>