Stormワームについての考察

2010/11/24

Stormワームは2007年初めに登場し、主にスパミングとフィッシング活動で有名なボットネットになりました。Nuwar、Zhelatin、FakeAV、Peacommの別名でも知られるこのボットは今年初めに再び登場し、偽のウイルス対策ソフト、ダウンローダー型トロイの木馬で配布されました。Stormは、ターゲットPCから大量のスパムを送信する、比較的大規模なボットネットです。また、Fast-Fluxという手法を使って、分布域がわからないようにします。McAfee Labsが行った分析では、Stormの実行ファイルは未知の圧縮プログラムで難読化され、デバッグ環境や仮想環境が検出されると活動を中止する無限ループが使用されていることが確認されました。

Stormのスパムキャンペーン活動には様々なスパムが含まれており、大半はオンラインのドラッグストア詐欺やアダルト製品に関係しています。また、いくつかのクライアントの脆弱性を利用した悪質なURLへのリンクからも拡散します。

Stormを分析したところ、特有の特徴がいくつか確認され、ネットワーク不正侵入対策システムにStormの管理活動を確実に検出する仕組みを実装する上で役立ちました。

Stormワームの静態分析
McAfee Labsは、2010年4月に受け取った亜種を調べました。このサンプルの冒頭部には、様々な暗号解読ルーチンが組み込まれていました。最初の0×5090バイトがヒープに移動し、その後、暗号解読ルーチンを実行してバイナリを解凍します。

ループの実行後、バイナリがヒープセクションに移動され、解読されます。

さらに、asam.exeという名前で自身をc:\windowsにコピーし、Windowsの起動時に動作するようにレジストリキーを改変し、asam.exeプロセスを作成し、自身を終了します。

作成されたasam.exeファイル内のHTTP通信コードの分析

このStormファイルをリバースエンジニアリングしたところ、独自の制御チャネルの特徴がいくつか確認されました。チャネルはBase64でコード化され、gzipで圧縮されたHTTPデータをベースにしていました。HTTP通信の分析について、以下のコードスニペットで説明します。

POSTリクエストのURI拡張
Stormによって開始されるPOSTリクエストで使われている、ハードコード化されたURL拡張とURIの長さは以下の通りです。

URIリクエストパスを形成するランダム生成機能 

以下のコードのスナップショットで示されているのはランダム文字生成機能で、3バイトのランダムなアルファベット文字を生成し、「.」を付加してリクエストURIのパスを形成します。その後、再びランダム生成機能が呼び出され、.jpg、.htm、.gifからランダムな拡張子を選択し、先に生成したリクエストパスに拡張子を付加してURIを形成します。

HTTP POSTリクエストヘッダー

以下は、Stormワームがマシンで実行されたときのPOSTリクエストの低レベルの詳細です。

上記のコードで判明したのは、この亜種はHTTP POSTリクエストを介してボットマスターと通信するということです。POSTリクエストコードを検証したところ、User-Agentヘッダーで誤植と思われる別の手掛かりが見つかりました。ヘッダーが「Mozilla/4.0 (compatible; MSIE 6.0; Windoss NT 5.1; SV1)」に設定され、Windowsが「Windoss」になっています。これは、Stormが現在活動していることを示す良い手掛かりです。不正侵入対策システムは、この手掛かりを使ってネットワーク上のStormを検出できます。ボットネットサーバーは、ボットがスパムを送信するのに使ったスパムテンプレートに応答します。

サーバーからの先行データはすべて、Base64でコード化されています。サーバーからの応答をデコードすると、以下のスパムテンプレートが見つかりました。

ボットクライアントは、このデータのデコード後、以下のループSMTPエンジンコードを使って、スパムテンプレートをベースにしたスパムメールを送信します。

このボットで生成されるスパムメールを見てみましょう。

さらなるコマンドが判明
このボットの初期の亜種には、各コマンドを実行するために別々のコンポーネントとバイナリが組み込まれていました。しかし、が分析したある亜種では、すべての制御コードがひとつのコンポーネントに組み込まれているようです。以下のコードに見られるように、さらなるマルウェアをシステムにダウンロードするダウンローダーコンポーネント、ボットの実行ファイルの最新コピーをダウンロードするアップデーターコンポーネントが確認されました。これらのコマンドがサーバー応答で検出されると、ボットは受信したデータを格納するヒープを割り当てます。

ドライブのファイルをスキャン
Stormには、ドライブをスキャンして、以下の拡張子を持つファイルを探すルーチンも組み込まれています。

.wab, .txt, .msg, .htm, .shtm, .stm, .xml, .dbx, .mbx, .mdx, .eml, .nch, .mmf, .ods, .cfg, .asp, .php, .pl, .wsh, .adb, .tbb, .sht, .xls, .oft, .win, .cgi, .mht, .dhtm, .jsp, .dat, .lst

また、これらのファイルに含まれる特定の文字列を検索します。ファイルに格納されているホスト、メールアドレスに関する情報を追跡するためと思われます。

@microsoft, rating@, f-secur, news, update, anyone@, bugs@, contract@, feste, gold-certs@, help@, info@, nobody@, noone@, kasp, admin, icrosoft, support, ntivi, unix, bsd, linux, listserv, certific, sopho, @foo, @iana, free -av, @messagelab, winzip, google, winrar, samples, abuse, panda, cafee, spam, pgp, @avp., noreply, local, root@, postmaster@

ネットワーク上のStormワームを検出
インターネットのメールトラフィックの大半はスパムです。これらのスパムボットを検出し、増殖を防がなければなりません。の分析は、ネットワーク上でStormのトラフィックを検出する良い手掛かりを提供します。信頼性の高い手法のひとつは、ネットワークで短期間に発生した複数の疑わしいイベントを関連づけることです。その一例が、先に述べたUser-Agentの誤植のチェックです。これを短期間で同じソースから行われた複数の外部へのDNS MXクエリーと関連づけることができます。さらに確実な検出方法は、これら2つのイベントを、ソースから外部へのSMTP接続の自然増と関連づけることです。これらの手掛かりをたどることで、ゲートウェイにてStormを検出する確率が高まります。

※本ページの内容はMcAfee Blogの抄訳です。
原文:A New Twist on ‘Pump and Dump’ Stock Scams