「TROJ_DLOADER」(ディーローダー)ファミリーは,トレンドマイクロのサポートセンターに寄せられるウイルス被害の報告において,上位に入るトロイの木馬型の不正プログラムである。2007年の年間ウイルス感染被害レポートでは245件の報告があり,4位であった。

 TROJ_DLOADERファミリーが最初に発見されたのは,2003年3月とそれほど新しいタイプではない。しかし,今なお多くの亜種が作成されている不正プログラムの一種である。トレンドマイクロのウイルス・パターン・ファイルへのウイルス・シグネチャ登録数を見ても,亜種の発生数が右肩上がりに増加しているのが見て取れる(図1)。

図1●TROJ_DLOADERシグネチャ数推移
図1●TROJ_DLOADERシグネチャ数推移

 TROJ_DLOADERは,名前が示す通り,ほかの不正プログラムをダウンロードさせるのが主たる動作である。悪意のある攻撃者の目的を達成するための中継ぎの役目を担っていることが多い。昨今のWebからの脅威を説明する上で欠くことができない代表的な不正プログラムの一種である。また,ファイル・サイズも数十キロバイトから数百キロバイトと比較的小さいのも特徴である。

 今回は検証環境用に1台のマシンを用意した。テスト機にはWindows XP SP2をインストールした(図2)。

図2●検証環境
図2●検証環境
スタンドアロン環境のテスト機上でTROJ_DLOADERを実行する

Windowsで実行可能なPE形式のファイル構成

 まず,テスト機上でTROJ_DLOADER.CMM を実行する前にどのようなパッカーが使用されているのかを調査した。パッカーとは実行可能な状態で,プログラムを圧縮/暗号化(以下,パック)するソフトウエアのことである。パッカー自体は不正なプログラムではないが,セキュリティ・ソフトの検出から逃れるためや,解析を妨害する目的で昨今の不正プログラムの作成者に悪用されている。どのようなパッカーでパックされているかを確認するためにTROJ_DLOADER.CMMをバイナリ・エディタで開きセクション・テーブルを確認した(図3)。

図3●TROJ_DLOADER.CMMをバイナリ・エディタで開きセクション・テーブルを確認
図3●TROJ_DLOADER.CMMをバイナリ・エディタで開きセクション・テーブルを確認

 セクション・テーブルを確認すると,テーブル名にUPX0,UPX1という文字列と,テーブル名UPX0のフィジカル・サイズがゼロであることが確認できる。このようなセクション・テーブルはUPXでパックされたファイルの一般的なものであるため,この不正プログラムはUPX形式でパックされている実行可能ファイルである疑いが強い。ただし,不正プログラムの作成者は,さらなる難読化のためにセクション・テーブルを変更し,パック形式を偽るケースもある。従って,この時点ではUPX形式のパックだとは100%決め付けることはできない。

 続いて,UPX形式のファイルを解凍するツールで解凍をしてみる(図4)。「Unpacked 1 file.」と表示されていることからも間違いなくUPX形式でパックされていたことが分かった。

図4●UPX解凍ツールを用いてTROJ_DLOADER.CMMを解凍した画面キャプチャ
図4●UPX解凍ツールを用いてTROJ_DLOADER.CMMを解凍した画面キャプチャ
[画像のクリックで拡大表示]

 なお,UPX形式のファイルを解凍するツールは,Googleなどの検索サイトで簡単に入手することが可能である。また,マニュアルでのアンパックの方法も有志の手により数多く公開されているので興味のある方はそちらも見てみるとよいだろう。

 UPX解凍後にバイナリ・エディタで再度セクション・テーブルを表示してみると,通常のWindowsで実行可能なPE形式(Portable Executable)のプログラム・ファイルの構成であることが確認できる(図5)。

図5●解凍後のセクション・テーブル
図5●解凍後のセクション・テーブル

 この状態で再度バイナリ・エディタなどを使用し,DATAセクションを確認することによって,プログラムが使用している変数や文字列などのデータを読むことができ,不正プログラムの動作をある程度推測することが可能となる。例えば,BinTextなどを使用すると,TROJ_DLOADER.CMMがアクセスするURLを簡単に確認できる(図6)。

図6●解凍後のファイルをBinTextで開いた画面
図6●解凍後のファイルをBinTextで開いた画面
[画像のクリックで拡大表示]