Symantec Security Response Weblog
Qakbot, Data Thief Unmasked: Part II」より
December 21,2009 Posted by John McDonald

データ不正取得

 パート1で説明した通り、「Qakbot」は感染したパソコンから情報を盗むことを主目的としたワームだ。FTPやPOP3、IMAP用のログイン情報だけでなく、クッキーも盗もうとする。一般的なWebブラウザのセッション・クッキーに加え,Flashのクッキーも狙う。当記事ではFlash用クッキーには触れないが、Flash用クッキーはWebブラウザのプライバシ管理機能の操作対象にはなっていないため、Webブラウザ用クッキーと違って簡単に削除できない点に注意しよう。

 Qakbotは、感染したパソコンからデジタル証明書の秘密鍵を集める手段を3種類持っている。一つ目は、証明書に関係するあらゆるダイアログ・ボックスをすり替え、ダイアログ・ボックスの表示直後に「OK」ボタンを自動的にクリックする、というものだ。これにより「OK」ボタンをユーザーから隠し、メッセージ・ボックスの表示もすべて抑制できる。二つ目は、パスワード入力ウィンドウにフックを設け、入力される文字を漏れなく盗む方法。三つ目は、API「CPExportKey」にパッチを当てセキュリティ・チェックを回避し、秘密鍵を一つ一つ数えていく方法である。

 さらにQakbotは感染したパソコンの所在地とWebブラウザに関する情報を、以下の設定済みURLへ定期的に送信する。パソコンとQakbot制御用(C&C:command-and-control)サーバー間の通信は、すべてSSLで暗号化されている。

アップデート

 Qakbotは、自分自身をアップデートするファイルのダウンロード手段も複数用意している。

 まず、前回のアップデートから1万8000秒(5時間)過ぎると、「we.js」を「%System%\sconnect.js」としてダウンロードする。このダウンロードに成功したら、感染パソコンで「sconnect.js」を「%Windir%\Tasks\[ランダムな名前].job」(「.cb」ファイル内で「instwd」と定義されている)として実行する新たなタスクをスケジューリングする。このタスクはスケジューリング・タスク一覧ウィンドウから確認可能で、4日おきに実行されることになっている。ただし、実際にはタスクが5時間ごとに自らスケジューリングし直す。次にQakbotは「q1.dll」を「%Temp%\msvcrt81.dll」、「q2l.jpg」を「%Temp%\drwatson.exe」としてダウンロードし、drwatson.exeに命じて作動中の「iexplore.exe」プロセスへmsvcrt81.dllを挿入する。こうすることで、メモリー上でiexplore.exeのふりをしつつ、自分のインスタンスをうまくアップデートできる。

 Qakbotは、設定情報の入った.cbファイルもダウンロードする。このファイルはXORとバイト回転処理でエンコードされており、_qbot.dllを使って復号できる。

 上の図を見て分かる通り、この.cbファイルには(盗んだ情報を入れたファイル)seclog.txtをアップロードするFTPサイトの一覧と、各FTPサイトのユーザー名/パスワードが記載されている。面白いことに「cleanup」という設定がある場合、Qakbotは設定項目「startup」のセミコロン以降にあるコマンドを実行する。このコマンドで作られるファイル「uninstall.tmp」は、「_qbotinj.exe」を使って感染パソコンからQakbotを消す。

 我々は今回の分析過程で興味深い動作に気付いた。Qakbotのフォルダに空のテキスト・ファイル(拡張子が「.txt」のファイル)を作り、このファイルの名前を「uninstall.tmp」に変えるだけで、感染パソコンの再起動後に上述した削除処理が動き出すのだ(なお、この手順をQakbotの有効な削除手段として推奨するわけでない点には注意してほしい)。我々が試したところ、Qakbotは再起動して数秒後に自らフォルダとその中の全ファイルを消した。そして次の再起動でメモリー上のフォルダ/ファイル削除用プロセスを消す。スケジュール化されたタスクとレジストリ・エントリは残るが、呼び出すファイルが一つも存在しないので、実質的には無害化したことになる。

 またQakbotは、定期的に.cbファイルをアップデートし、インストール時刻や実行クラス(ユーザー、管理者、Win98など)といった情報を入れていく。

防衛手段

 簡単な解説ではあったが、正当な既存プロセスに隠れることで強力な機能の存在をセキュリティ検査に悟られず、一般ユーザーに見つからないようにしているQakbotの仕組みが理解できただろう。Qakbotには自力でアップデートする機能もあり、作者はパラメータを定義するという操作の範囲内で機能を変えられる。姿を隠しながらネットワーク共有で感染拡大を図り、感染したパソコンの制御権を持ち続けようとする手口も分かっただろう。

 IT管理者は、管理下にあるネットワークの保護に役立つ情報の収集に努めよう。最悪の場合でも、せめてQakbotに感染した可能性のあるパソコンを見つけられるようにしておこう。想定外のFTPトラフィック、名前に「qbot」という文字列のあるスケジューリングされたタスク、異常な頻度でネットワーク共有の偽装を試みるパソコン、「qbot」という文字列の入ったレジストリ・キー(Windows標準のレジストリ・エディタではおそらく検出できないだろう)、TCPの16666~16669番ポートに対するインターネット接続(こちらもローカル環境のTCPテーブルは隠ぺいされるので、何らかの監視手段を用意しよう)など、感染の証拠となる現象を見張るのだ。

 間違いなく、何者かがある種の個人情報を入手しようと奮闘している。我々の対抗策は、最大の努力をしてこれ以上の活動を妨げるくらいだ。セキュリティ・ソフトを絶えずアップデートし続けるしかない。

 Qakbotを分析してくれたMasaki Suenaga氏とTakayoshi Nakayama氏に感謝する。


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