PR

McAfee Avert Labs Blog
Generic Rootkit.d Strikes Again in New Variant」より
June 29,2009 Posted by Rachit Mathur

 筆者は2009年6月下旬,DNSサーバーの設定を変えるマルウエア「DNSChanger.ad」の最近亜種を見る機会に恵まれた。この亜種は,たいていFakeAlert(偽ウイルス対策ソフト)やDNSChangerといった種類のトロイの木馬と関わりを持つルートキットをダウンロードする。ダウンロードされたシステム・ファイルは,時間の経過に応じて名前が「tdss*.sys」から「seneka*.sys」,「skynet*.sys」といったように変わっていた。我々がこのルートキットにメモリー検査/クリーニングを実施したところ,「Generic Rootkit.d」であることが分かった。このマルウエアが使う手口は既に判明している。基本的には「IofCallDriver」,「IofCompleteRequest」,「NtFlushInstructionCache」,「NtEnumerateKey」などにインライン・フックを設けるのだ。さらに,自身のレジストリ項目から各種権限を消去する。

 今回のマルウエアは,「system32\drivers」フォルダ内に「skynet*.sys」といった名前のシステム・ファイルを隠す。マルウエアによって設けられたインライン・フックは,ルートキット分析ツールのほか,デバッガ「WinDbg」でも修復可能で,インライン・フックを修復すれば攻撃用ファイルが見えるようになる。それでも,このマルウエアは削除されたファイルを元に戻す機能を備えている。マルウエアが「監視」や構成コンポーネントの復旧を試みることはよくある。ただ興味深いのは,ファイル監視機構「File Monitor」(filemon)でそうした活動を捉えられないし,ほかのAPI追跡手段でもファイル復旧と思われる動きを見つけられないことだ。

 詳しく調べたところ,「KeDelayExecutionThread」で作ったループの中で遅延システム・ワーカー・スレッドを使い,一定の間隔で「ZwCreateFile」を呼び出していた。この処理に関連するコードとスレッドを以下に示す。

図1●ファイル生成処理ループ

 この処理から,削除したファイルが復活する仕組みが分かる。このスレッドはマルウエアのレジストリを監視しており,以下のコードを使ってシステム用サービスのアドレス格納テーブル「System Service Descriptor Table」(SSDT)を絶えず改変している。この影響で,SSDTにフックを設けて各種活動を調べる監視ユーティリティが機能しなくなるのだ。

図2●SSDTの書き換え

 SSDTを書き換えられただけなら,filemonはこのファイルに関する活動を報告できたはずだ。ところがこのマルウエアは,ファイル・システム・フィルタ・ドライバをすべて削除する。filemonもファイル・システム・フィルタを使っているため,このドライバ削除によって報告できなくなっていた。感染前後のデバイス・スタックの内容を以下の図3に示す。感染後にすべてのフィルタが駆除されていることに注目しよう。

図3●感染前後のデバイス・スタックの内容

 以下は,割り当てられていたフィルタを削除するコードである。

図4●フィルタ削除コード

 なお,割り当てられているこのNTFS用デバイス・フィールドだけがnullで,これ以外のスタックは改変されず残っている。

 図3を見ると,filemon用フィルタ・ドライバだけでなく,Filter Managerも見事に削除されたことが分かる。すべてのフィルタを削除しSSDTを書き換えることで,これらに頼る分析ツールの邪魔をする。ただし,ほかのソフトウエアの動きを阻むこともあり得る。ほとんどの環境でルートキットの動きを隠すことができるのなら,ほかのソフトウエアが動かなくてもマルウエアとしては問題ないのだろう。こうしたトレードオフは多くのマルウエアに見られる。今回のマルウエアは,ここで説明したような判断をしたのだ。


Copyrights (C) 2009 McAfee, Inc. All rights reserved.
本記事の内容は執筆時点のものであり,含まれている情報やリンクの正確性,完全性,妥当性について保証するものではありません。
◆この記事は,マカフィーの許可を得て,米国のセキュリティ・ラボであるMcAfee Avert Labsの研究員が執筆するブログMcAfee Avert Labs Blogの記事を抜粋して日本語化したものです。オリジナルの記事は,「Generic Rootkit.d Strikes Again in New Variant」でお読みいただけます。