|
|
「Trojan.Clampi」の仕組み:LOGGERモジュール
October 12,2009 Posted by Nicolas Falliere 前回のブログ記事で説明した通り,「Trojan.Clampi」はほとんどの機能を,それぞれに異なるモジュールを使って実現している。各モジュールは,クライアントの求めに応じて外部のゲートウエイ・サーバーから送られてくる。Clampiシリーズのブログ,今回はログイン情報を主に銀行系Webサイトから盗むモジュールの一つを取り上げよう。 当記事で説明するモジュールは,Clampi内で「LOGGER」と呼ばれている。解読したモジュールの先頭部分にあったデータを,そのまま以下に掲載する(圧縮が施されていた)。
Clampiは動作時に毎回LOGGERモジュールをダウンロードしないで済むよう,モジュールを暗号化して「Mxx」という値のレジストリに格納する。この「xx」には,0から数えた使用中モジュールの番号が入る(例えば「M02」といった値になる)。 なおClampiのモジュールは標準的なDLLであり,Clampi本体と同じく実行コード仮想化に対応した商用ソフト保護ツールで身を守っている。
LOGGERモジュールは,「Internet Explorer」(IE)のインスタンスに小さなコードを挿入し,「urlmon.dll」というWindowsの標準DLLによってインポートされるAPIに関連付けを持たせる(フックする)。urlmon.dllはIEがWebページを開く際に使うDLLである。フック対象のAPIは以下の通り。これらのAPI(フック)を利用すると,プログラム処理は,Clampiが感染したコードに誘導される。 以下のスクリーンショットは,IEに挿入されたコードである。
感染パソコンでWebページにアクセスする都度,IEに挿入されたコードは該当WebページのURLの一部に巡回冗長検査(CRC)演算を施し,ゲートウエイ・サーバーから受け取ったデータ・ファイル内のリストとCRC値を比較する。一致する項目が見つかると,IEから(たいていの場合)金融関連のWebサイトに送信されるデータが,Clampiのゲートウエイ・サーバーにも送られるようになる。この処理によって,Clampiは様々なWebサイトあてのログイン情報やその他機密データを大量に盗み取る。 以下は,キプロス共和国にある銀行のWebサイトにアクセスした際にClampiが送信したデータの例である。いい加減なID「abcdef」と暗証番号「123456」でログオンしたところ,それと同じ情報がモニター結果に現れた。
URL比較にプレーン・テキストでなくCRC値を使う手口が優れている理由はいくつかある。 我々はLOGGERモジュールのコードとデータ・ファイルを付き合わせて,ファイル構造と各フィールドの用途を解明した。具体的な例として,このデータ・ファイルのCRCエントリについて説明しよう。下図の強調表示した部分を見てほしい。
強調したフィールドは以下で説明した。
・Index:0x359(「このファイルで857番目のエントリ」という意味) |