今回はTROJ_AGENT.ABBWを取り上げる。TROJ_AGENT.ABBWは2007年9月に登場した不正プログラムで,実行されるOSの言語設定によって動作を変化する。特定の言語環境を狙った標的型攻撃の一種と言える。

 TROJ_AGENT.ABBWの特徴は,昨今金銭目的の不正プログラムが多い中,最近では珍しい破壊活動を行う点である。破壊活動は,標的となった言語環境のマスター・ブートレコードを書き換えることにより,コンピュータを正常に起動させなくする活動を行う。なお,この不正プログラムの標的となったのは日本語版とインドネシア語版のWindows OSである。

 今回は,検証環境用に1台の日本語版のWindows XP SP2のコンピュータを用意した。検証環境からほかのネットワークへ影響を及ぼさないように完全なローカル・ネットワーク環境で検証を行った。まず,デバッガを使用してTROJ_AGENT.ABBWを開き,TROJ_AGENT.ABBWが呼び出している外部関数を表示した。次に,TROJ_AGENT.ABBWが実行環境の言語を確認するためにレジストリ・キーにアクセスすることを推測して,RegOpenKeyEx関数とRegQueryValueEx関数にブレークポイント(プログラムの強制停止コード)を設定した(図1)。RegOpenKeyEx関数は,指定されたレジストリ・キーをオープンする関数で,RegQueryValueEx関数は指定されたレジストリ・キーに属するレジストリ・エントリのデータ型とデータを取得する関数である。

図1●RegOpenKeyEx関数とRegQueryValueEx関数にブレークポイントを設定
図1●RegOpenKeyEx関数とRegQueryValueEx関数にブレークポイントを設定

 デバッガ上でトレースを進めていくと,RegOpenKeyEx関数とRegQueryValueEx関数を使い,次のレジスト・キーを開き,「InstallLanguage」値のデータを取得する動作を発見することができた(図2)。このレジストリ・キーは,その名前からも容易に想像できるようにインストールされているOSの言語であるロケールID(LCID)が設定されているレジストリ・キーである(図3)。なお図3のInstallLanguageのデータ「0411」は,日本語という意味である。

図2●RegOpenKeyEx関数とRegQueryValueEx関数を使ってOSの言語を調べていることが分かった
図2●RegOpenKeyEx関数とRegQueryValueEx関数を使ってOSの言語を調べていることが分かった
[画像のクリックで拡大表示]
図3●レジストリエディタを使って該当のレジストリキー「InstallLanguage」を確認
図3●レジストリエディタを使って該当のレジストリキー「InstallLanguage」を確認
[画像のクリックで拡大表示]

 このことからTROJ_AGENT.ABBWは,このレジストリ・キーを使ってOSの言語を確認していることが分かる。

■RegOpenKeyEx関数でオープンされたレジストリ
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Language

■RegQueryValueEx関数で取得されたレジストリエントリ
InstallLanguage