Symantec Security Response Weblog
Waledac,Part2:Its Bootstraps and Armor」より
August 14,2009 Posted by Gilou Tenebro

 当ブログで以前「W32.Waledac」を取り上げた際は,機能と戦略,発生源,ほかのマルウエアとの関係を大まかに解説した(関連記事:Confickerに新たな亜種「WORM_DOWNAD.E」,PtoP通信でアップデート )。今回は,Waledacが活動期間を延ばし,自衛する目的で採用している起動処理と防御機構について詳しく説明しよう。

パソコンへの侵入

 Waledacの実行ファイルが入り込んだパソコンはゾンビ化され,ボットネットのエージェントとして機能するようになる。この実行ファイルは「fhfhkjfhwefkwj」という名前のウインドウを作り,自らを「jfkljfilfj23fi32io」というクラス名で登録する。さらに,以下に示すいずれかのレジストリ項目を追加することで,Windows起動時に必ず実行される設定を施し,自力で動き出せるようにする

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\"
PromoReg" = "[実行ファイルの場所]"

もしくは
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\"
PromoReg" = "[実行ファイルの場所]"

 W32.Waledacは,このレジストリ項目をIDやIPアドレス・リストといった設定用データの保管にも使う。具体的には,レジストリ・キー「HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion」以下に「FWDone」「LastCommandId」「MyID」「RList」という4種類の値を作る。

・FWDone:16進数で「74 72 75 65」という値を入れる状態フラグ(W32.Waledacの通信が確立されると,ASCII文字で「true」に相当するこの値が入る)

・LastCommandId:W32.Waledacが最後に受信または実行したダウンロード/アップデート・コマンドのID番号を16進数で入れる。コマンドの詳細は後述する

・MyID:ノード(ボット)の起動時に,ランダムに生成する16進数の16バイト長データを入れる。この数値は,ボットネット内でノードを識別するために使う

・RList:ボットとボットネットの接続を維持するのに必要なIPアドレス・リストを,難読化して保管する。このリストはBzip2で圧縮され,AES(advanced encryption standard)方式の暗号化が施されている。RListのデータを解読すると,XML形式のリストが現れる。本来のIPアドレス・リストをエンコードしてレジストリ内のRListに納めるデータへ変換するまでの処理を,図1に示した


図1●IPアドレス・リストをRListに入れるデータへ変換する処理

 はじめRListには,実行ファイルに書き込まれているIPアドレスを入れる。ただし,実際の値は感染事例ごとに違うと思われる。実行ファイルにハード・コーディングされたIPアドレス・リストは2種類の項目からなる。ノードIDとそのノードのIPアドレスだ。

 W32.WaledacはRListを作るために,ハード・コーディングされていたリストからランダムにノードを選び,そのノードIDとIPアドレス,UNIX形式のタイム・スタンプ値,ポート番号を使ってXML形式のリストを生成する。次にこのXML形式リストをBzip2で圧縮してから,AES暗号をかける。こうして,RListに入れるレジストリ値ができあがる。その後,ハード・コーディングされていたリストから別のノードをランダムに選んで再びXML形式リストに変換し,古いリストの前に追加する。それから,UNIX形式の時刻フォーマットで現地時間タグをその時点の時刻に書き換える。新しいXML形式のノード用IPアドレス・リストを生成した後,Bzip2圧縮とAES暗号化を施し,RListの値を新しいものと入れ替える。この処理は,リストが一杯になるまで繰り返す。RListには,最大で500ノード分のIPアドレス・リストが入る。この最大値は,リストが更新されても変わらない。リストがいっぱいになると,次の更新では古いノードの情報は新しいノードの情報に置き換えられる。つまり通常は,リストの最後にあるエントリ(一番古いリスト)から消えていく。例として5ノード分入ったXML形式IPアドレス・リストを図2に示した。


図2●5ノード分入ったIPアドレス・リストの例