Analysis of Recent Storm Worm Packer」より
May 8,2008 posted by Xiaodong Tan,Security Researcher

 米Webセンスのセキュリティ・ラボでは,「Stormワーム」が最初に猛威をふるった2007年初頭から,同ワームの追跡を続けている。Stormワームは,2007年および2008年で最も悪名の高いマルウエアの一つだ。これまで当ラボは,筆者の同僚であるNick Verenini氏が執筆した「Storm Worm Chronology」など,同ワームに関する数々の調査結果を公表してきた。

 Storm系ワームの亜種のほとんどが,専用のパッカー「Tibs」で圧縮/暗号化されている(関連記事:「パッカーの検出と,アンパックの一般的なテクニック」)。Tibsはポリモーフィック・パッカーであり,アンチエミュレーション機能を備えている(関連記事:ITPro Dictionary「ポリモーフィック」)。我々は最近になって,同パッカーで作成された実行形式ファイル「stormcodec8.exe」の大量配信に遭遇した。この亜種を分析したところ,マルウエアがいくつかの興味深い機能を持っていることに気付いた。分析結果のポイントを紹介しよう。

 「UPX」,「FSG」などの公開されているパッカーと同じく,Tibsのようなカスタムメイド・パッカーもパッカー自体の情報を保存するためのデータ構造を定義している。こうしたデータ構造は,パッカーには欠かすことができず,スタブが元ファイル再編時に利用する情報を保存する。例えば,暗号化データの位置とその長さ,伸長アルゴリズムに与えるパラメータ,Original Entry Point(OEP)のアクセス方法といった情報を保存する。もちろん,このようなデータ構造は,逆アセンブルした膨大なコードに埋もれているものだ。簡単には見付け出せない場合もある。しかし,ひとたび検出してしまえば,カスタムメイドのパッカーを手中に収めたも同然だ。

 Tibsを利用する今回の亜種の場合,パッカーのデータ構造は比較的単純だ。まず,データ構造の起点を見つけよう。

 パッカー用データ構造の起点となるアドレス「0x00401331」をスナップショットで捉えてみる。逆アセンブリ・コードを分析すると,二つの重要な構成要素が見つかった。一つは暗号化データへのポインタ(0x00401341),もう一つは同データのサイズだ(0x00401345)。