Symantec Security Response Weblog
Downadup: Small Improvements Yield Big Returns 」より
January 22,2009 Posted by Elia Florio

 米シマンテックは2008年11月,「MS08-067」のぜい弱性に対する「Downadup」ワームの攻撃急拡大を受けて,他セキュリティ・ベンダーが消極的,あるいは無視する姿勢を見せる中,セキュリティ脅威度「ThreatCon」のレベルを引き上げた(参照記事)。これは,Downadupの嵐の幕開けに過ぎなかったのだ(関連記事:Windowsの脆弱性悪用ウイルスが900万台に感染,3割は中国のパソコン/「USBウイルス」の新手口,設定ファイルをダミーのデータで偽装/『超特大』のセキュリティ・ホールに強いWindows Vista/Server 2008)。

 Downadupは「MS08-067」のぜい弱性を突いた初めてのワームではないが,先輩ワーム(「W32.Kernelbot.A」および「W32.Wecorl」)と違って明らかに「特別」だった。Downadupのプログラミング・スタイル,トリック,アイデアから,これまで見てきた平均的な脅威ではないと断言できた。Downadupの最初の亜種は,その攻撃的なルーチンと,位置特定用の「geo-location」やOS判別用の「OS フィンガープリント」を利用する高度なアルゴリズムにより,推定50万台のパソコンに感染できた(その他の連載記事)。

 ただし,この亜種第1号は,後続のものほど被害を与えられなかった。その理由は主に,(1)最初の亜種は一つのメカニズムでのみ感染可能だった,(2)IPアドレスから位置を特定する「geo-location」機能の実行時に使うデータ・ファイルは,ある1カ所の異常によって障害に陥ってしまうつくり(SPF:Single Point of Failure)になっていた,という二つだ。このデータ・ファイル「GeoIP.dat.gz」は2008年11月時点でWebサイトから自由に入手可能であり,Downadupはコード内に書き込まれたURLにアクセスして同ファイルを直接ダウンロードしていた。ファイルの提供元だった米マックスマインドは,ある段階で同ファイルを削除した。恐らく,Downadupに感染した全パソコンからアクセスされた結果,同社のサーバーがDoS(サービス妨害)攻撃を受けたのと同じ状態になったからだろう。この変更が,最初の亜種の感染能力にそれなりの影響を与えた。

 この事態が発生し,新バージョン・リリースの大義名分を得たDownadupの作者は,GeoIPファイル問題を修正し,感染能力を高めることにした。2008年12月30日に登場した新しい亜種「W32.Downadup.B」は,USBメモリーやネットワーク・ドライブ経由で複製が可能なうえ,ユーザー・パスワードに対するブルートフォース攻撃(総当たり攻撃)で感染する仕組みを備えていたため,感染能力が飛躍的に高まった。さらに,作者は感染用ファイルの追加データにGeoIPファイルを直接挿入することで,前亜種の問題点を解決した。実際,W32.Downadup.Bサンプルは,ファイルの終わりに75Kバイトの追加データが埋め込まれ,29バイト長の鍵でRC4暗号が施されている。暗号を解読したところ,RAR形式のアーカイブであり,エクスプロイトのルーチンに必要なGeoIP情報すべてが含まれていると判明した。このデータはメモリー上で直ちに復号/展開されるが,その後メモリーに対するセキュリティ検査(フォレンジック)から身を隠すため再び暗号化される。

[画像のクリックで拡大表示]

 W32.Downadup.Bのもう一つの興味深い変更点は,疑似乱数を利用したドメイン名生成(PRNG)アルゴリズムの変化である。シマンテックおよびその他セキュリティ・ベンダーの研究者はDownadupのコードをリバース・エンジニアリングし,ドメイン名生成アルゴリズムの解明に成功した。Downadupは毎日250個の異なるドメインを生成している。これらのドメインを予測すれば,感染パソコンの追跡と感染拡大の防止に役立つ。Downadupの作者は亜種「W32.Downadup.B」をマイナー・チェンジし,これまでと少し異なる疑似乱数で一連のドメイン名を作成するようにした。これらドメインの大半は,リバース・エンジニアリングの取り組みを妨害する可能性がある。

[画像のクリックで拡大表示]

 このPRNG(※)アルゴリズムは,感染パソコン全体で同じ値の乱数種(疑似乱数を生成させる際に初期値として与える数値)を毎日使っている。乱数種は,何らかの定数と,年月日など変化する数値の二つを使った64ビット演算処理で作られる。これらの数値は三つのマジックナンバーとして扱われ,乗算(M),除算(D),加算(A)の引数となる。PRNGルーチンのコードは200バイトあり,浮動小数点演算を複数回実行し,ハードコード化された2番目の乗数値(M2)を使用する。Downadupの二つの亜種で異なるのは,これらの三つのマジックナンバー(M,D,A)とM2の値で,PRNGアルゴリズムのロジック自体は全く変わらない。生成したドメインに仕掛ける攻撃は,追加の攻撃用コンテンツのダウンロードと実行だけだ。このコンテンツの中身はいまだ謎だが,東欧の犯罪集団やミスリーディング・アプリケーション(ユーザーをだましてインストールさせようとする悪質なプログラム)と関係があるとにらんでいる。

 筆者が最後に疑問に思ったのは,「今後のドメイン・リストがWebで開示されるのなら,ほかの犯罪集団はなぜ利用しないのか」ということだ。セキュリティ・ベンダーがこれらドメインの一部を監視目的で登録していることは分かっているが,別の悪人がそのドメインのどれか一つを登録して,Downadup感染パソコンに別のトロイの木馬を送り付けなかったのはなぜなのか。サイバー犯罪者はこの手のことには慣れている。これまでもボットネットの流用がなかったわけではない。

 Downadupのダウンロード用追加コードを調査した結果,その理由に見当が付いた。以前から述べている通り,Downadupの作者はマルウエア初心者でなく,ドメイン予測アルゴリズムが遅かれ早かれ解読されると感じているはずだ。したがって自らのボットネットを失わないよう,Downadupに第2の(強力な)防御機能を取り入れており,この結果(Downadup作者以外の第三者が)Downadup感染パソコンに悪意のあるコンポーネントをアップロードできないようになっていた。

 この記事は「W32.Downadup」ワーム連載の第4回に当たる。次回の記事では,さらに詳しくW32.Downadupを取り上げる。ご覧いただきたい。

(※)PRNGアルゴリズムのリバース・エンジニアリングにおける,当社のディープサイト脅威アナリスト・チーム(DeepSight Threat Analyst Team)および同僚のAaron Adams氏の素晴らしい分析に感謝する。


Copyrights (C) 2009 Symantec Corporation. All rights reserved.
本記事の内容は執筆時点のものであり,含まれている情報やリンクの正確性,完全性,妥当性について保証するものではありません。
◆この記事は,シマンテックの許可を得て,米国のセキュリティ・ラボの研究員が執筆するブログSecurity Response Weblogの記事を抜粋して日本語化したものです。オリジナルの記事は,「Downadup: Small Improvements Yield Big Returns 」でお読みいただけます。