セキュリティ・コンサルタント
村上 純一
前回で述べたように,昨今流行しているボットやスパイウェアなどのマルウエアでは,ルートキットを悪用して,その存在を隠す手口が使われている。今回は,その一例としてMAILBOTの亜種であるMAILBOT.ARを紹介する。
MAILBOT.ARは,2006年5月に発見されたルートキットを悪用するボットの一種である。検体はOffensive Computingから取得できる。
ボットの動作を逆アセンブリで解析
MAILBOT.ARは,実行ファイル(.exeファイル)中にシステム・ファイル(.sysファイル)が埋め込まれた構造を持つ。プログラムの実行時に動的にこのシステム・ファイルを生成する。図1に,該当する機械語コードの逆アセンブルを示す。GetTempPathA APIを呼び出してテンポラリ・フォルダを取得した後,フォルダ中にsysbus32.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ファイルをサービス化しようとしているところ |
![]() |
図3●cmd.exeを使って自身のファイルを消そうとしているところ |
しかし,MAILBOT.ARに感染した場合は,いずれの方法でもその存在を確認することはできない。前述のサービス化されたシステム・ファイルがカーネルを改変し,感染の痕跡を隠蔽(いんぺい)しているためである。
幸いにも,MAILBOT.ARの場合,インターネット上で公開されているいつかのルートキット検出ツールで検出できる。図4はGMERと呼ばれるルートキット検出ツールの実行結果である。GMERの実行結果から,カーネルに対して以下の3種類の改変が行われていることが分かる。
![]() |
図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によるネットワーク処理を横取りし,感染の痕跡となる通信を感染コンピュータ上からは確認できないよう隠ぺいしている。
次回は,ルートキットで利用されている様々な技術について,詳しく解説する。
|