セキュリティ・コンサルタント
村上 純一

 前回で述べたように,昨今流行しているボットやスパイウェアなどのマルウエアでは,ルートキットを悪用して,その存在を隠す手口が使われている。今回は,その一例としてMAILBOTの亜種であるMAILBOT.ARを紹介する。

 MAILBOT.ARは,2006年5月に発見されたルートキットを悪用するボットの一種である。検体はOffensive Computingから取得できる。

ボットの動作を逆アセンブリで解析

 MAILBOT.ARは,実行ファイル(.exeファイル)中にシステム・ファイル(.sysファイル)が埋め込まれた構造を持つ。プログラムの実行時に動的にこのシステム・ファイルを生成する。図1に,該当する機械語コードの逆アセンブルを示す。GetTempPathA APIを呼び出してテンポラリ・フォルダを取得した後,フォルダ中にsysbus32.sysを生成していることが分かる。

図1●テンポラリ・フォルダにsysファイル
図1●テンポラリ・フォルダにsysファイル
(sysbus32.sys)を書き込もうとしているところ

 次に,生成したシステム・ファイルをCreateService API,StartService APIを順に呼び出してサービス化する(図2)。.exeファイルが.sysファイルを生成し,サービス化した後,.exeはcmd.exeを使って自身のファイルを消去する(図3)。この結果,コンピュータ上に存在するrootkitのコンポーネントはsysのみとなる。通常,サービスの一覧は「scコマンド」や「winmsdコマンド」を利用して取得できる。また,レジストリには各サービスに対応したレジストリ・エントリが,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services以下に作成される。

図2●sysファイルをサービス化しようとしているところ
図2●sysファイルをサービス化しようとしているところ

図3●cmd.exeを使って自身のファイルを消そうとしているところ
図3●cmd.exeを使って自身のファイルを消そうとしているところ

 しかし,MAILBOT.ARに感染した場合は,いずれの方法でもその存在を確認することはできない。前述のサービス化されたシステム・ファイルがカーネルを改変し,感染の痕跡を隠蔽(いんぺい)しているためである。

 幸いにも,MAILBOT.ARの場合,インターネット上で公開されているいつかのルートキット検出ツールで検出できる。図4GMERと呼ばれるルートキット検出ツールの実行結果である。GMERの実行結果から,カーネルに対して以下の3種類の改変が行われていることが分かる。

図4●GMERを使ったシステムの検索結果
図4●GMERを使ったシステムの検索結果

1.SSDT(System Service Descriptor Table)に対するパッチング
SSDTの詳細については本稿では割愛するが,呼び出されたAPIとAPIの実処理の関連付けを管理しているテーブルと理解して頂きたい。MAILBOT.ARは,SSDTに対して上書きを行うことで,ZwEnumerateKey APIの処理を横取りし,感染の痕跡となるレジストリキーを隠ぺいしている。

2.nfts.sysに対するメモリ・パッチング
nfts.sysはNTFSファイルシステムを実装しているファイル・システム・ドライバで,OSの起動時に自動的にカーネルにロードされる。MAILBOT.ARは,カーネルにロードされたメモリー上のntfs.sysを書き換えることでファイル操作を横取りし,感染の痕跡となるファイルを隠ぺいしている。

3.tcpip.sysに対するメモリパッチング
tcpip.sysはTCP/IPスタックを実装しているシステム・ファイルで,OSの起動時に自動的にカーネルにロードされる。MAILBOT.ARは,カーネルにロードされたメモリー上のtcpip.sysを書き換えることでTCPやUDPによるネットワーク処理を横取りし,感染の痕跡となる通信を感染コンピュータ上からは確認できないよう隠ぺいしている。

 次回は,ルートキットで利用されている様々な技術について,詳しく解説する。


村上純一(むらかみ・じゅんいち)
国内の大手セキュリティ・コンサルティング会社に勤務。セキュリティ・コンサルタント業務やソフトウエアのぜい弱性を発見する業務に携わる。