日本のセキュリティチームの Blog

日本のマイクロソフトで、セキュリティ全般の活動を行っている部署です

  Blog ホーム :: ホーム :: 連絡をする :: RSS  :: ATOM :: ログイン
投稿数  186  :: 記事 0 :: コメント 0 :: トラックバック 364

注意事項

当サイトの使用条件、コミュニティ利用規定または eXConn 削除規定に反する内容と判断されるコメントやトラックバックは、事前のお知らせなしに削除させていただく場合があります。ご了承ください。

投稿カテゴリ

アーカイブ

お知らせ

Microsoft TechNet Plus サブスクリプション

SRT 奥天です。

最近感じていることなのですが、Rootkit って、昔から話題になりながらもなんだかピンと来ない攻撃手法の代表的ものではないかと思っています。が、最近この攻撃方法が一般化しているようなので、取り上げたいです。
Rootkit 自体は、カーネルモードのたとえばドライバとして動作するものと、DLL インジェクションの一種で API コードを書き換えるタイプが主流ですが、過去にあったように痕跡の改ざんを目的としたものではなく、プロセスやレジストリ、ファイル全般を UI から見せなくする、そういった手の込んだカーネル Rootkit が確認されています。
ある情報では、企業内でウイルスやハッキングが行われたマシンのかなりの割合で、プロセスの隠蔽が行われているようです。最近のウイルスは、ウイルスコンテナとしての役割であって、感染しても Bot のようにその事実を隠そうとしますし、さらに巧妙にするためにこの Rootkit で積極的に隠蔽しようとしているわけですね。

さて、実際に使用されることが増え危機感が高まっている Rootkit ですが、なぜ話題になりきらないのでしょう?それは、見つからないことが理由だと思います。ご存知のとおり、最近の Malware は、亜種の開発が非常に短期間になっています。ただでさえ頻繁な開発によりウイルス対策ソフトの定義ファイルが遅れ気味なことに加え、ユーザーが感染に気がつかないことから検体を対策ベンダーへ提供する機会が減っていると思います。検体が提供されないために結局発見がされず、発見されないから検体が・・・という悪循環が引き起こされるわけです。
今までの、ウイルスの開発と、検出および駆除のバランスが、この Rootkit の存在で崩れる可能性があると考えられますし、ソフトウェアの開発メーカーとしても何らかの対策を行わなければならない、と感じています。
セキュリティ更新プログラムを適用し、ファイアウォールを使用して、コンテナウイルスの検出を行う、という対策は最低限として、Windows XP SP2 なら、IE でダウンロードしたファイルや、OE であればメールに添付されているファイルをうっかり実行してしまうミスも減らせるかなと。もちろん実行したくて実行したものをとめることは難しいですが・・・

では Rootkit を見つけるにはどうするか?これは、Safe モードや Single User モードと呼ばれる、ドライバの組み込みを最小限に抑えたモードで起動し、保存されている実行ファイルやレジストリのダンプを取り、通常起動時の結果と見比べる、もしくは、http://www.sysinternals.com/ で公開されている RootkitRevealer や、検出ソフトウェアを使うことになります。マイクロソフトのエンジニアの中には、Kernel Debugging で発見する方法を語る輩もいますが、それはカスタムメイドな Rootkit の検出のためなのですべてのユーザーが対応できるものではないですよね。
Rootkit の種類によっては、どの情報を隠蔽しているのかが特定できていないと的を絞りにくいというのがありますが、プロセスとファイル、netstat によるポート、レジストリなどチェックする項目が定まらないので完全な方法、と言い切れないのが難しくさせています。
一説には、この Rootkit は侵入済みホストの何割かに入り込んでいるという話もありますので、どうもありえないパケットが出ているとか idol time が減っているがプロセスがいないとか、不自然な動きが見つかれば疑ってみるのも一つかと思います。またその場合には、出来る限りマシンの再構築をお勧めします。

ちなみに、米国ではこんな技術情報があるくらいポピュラー。
http://support.microsoft.com/kb/897079
あと、研究開発部門も、これについて調べてます。
http://research.microsoft.com/rootkit/

ということで、今後間違いなく話題になってきそうです、と言い残して長文を終わります。

コミュニティにおけるマイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。
投稿日時 : 2005年11月2日 21:09

トラックバックは下記のURLにpingを送信してください。
TrackBack URL: http://www.exconn.net/Blogs/team02/services/trackbacks/4479.aspx

コメント

# インストールを隠蔽するRootkitネタが最近多いようで。 2005/11/04 16:08 ぱそでこ!
マイクロソフトのセキュリティチームブログにも載っていたので、気にしてくるぐらい増えてきたのかなぁと思って、エントリーしてみました。

そういえば、先日もCNetで米ソニーBMGのCDを再生すると勝手にRootkitでファイルを仕込まれた話が上がってましたし。

で、SRTの奥天さん曰く。
Rootkit 自体は、カーネルモードのたとえばドライバとして動作するものと、DLL インジェクションの一種で API コードを書き換えるタイプが主流ですが、過去にあったように痕跡の改ざんを目的としたものではなく、プロセスやレジストリ、ファイル全般を UI から見せなくする、そういった手の込んだカーネル Rootkit が確認されています。うーむ。
調子が悪いPCは、疑った方がいいかもしれません。
傀儡状態になっているパソコン(ゾンビPCですね)も結構な数になってきたようですから。

次回は自分のPCを探ってみるネタでも!
(といいつつ、いつもの通りトンズラ(ぉぃw))

関連:
Rootkit の話題って目立たないですネ


# memo 2005/11/04 21:40 PukiWiki/TrackBack 0.1
Rootkit äΩ?? ???VMware Player ??γ?-Joy of Painting mozdev.org - enigmail Vine Linux3.1/QEMU ??Υ??QEMU? OpenVPN 2.0.2 for SL-Zaurus? !SL-C760 ???ä?...

# ルートキット検出ツールを使ってみた 2005/11/07 0:09 ひまじゃのう
ルートキット(rootkit)なるものがある。UNIXの世界では、そのコンピュータに対して何でもできる権限をもっているアカウントをrootという。Windowsの世界では、Administratorである。ルートキットは、もともと、コンピュータに侵入し、rootになるためのいろいろな小道具を集めたものをいう。侵入して自らの権限をrootに昇格させる手順や、侵入したことの痕跡や活動ログを消したり、自身の存在を隠したりするツール群、あるいはそのための技術である。

Windows版のルートキットは、Unix版のものとは少し異なり、もっぱらウィルス対策ソフトなどから、スパイウェアやウィルス、トロイの木馬、ボットなど悪意あるプログラムの存在を隠すために用いられている。雲隠れの術である。雲隠れの術を使われると、その発見が非常に困難になる。

このルートキットによる侵入が、一般化しているのではないかという指摘がある。

スパイウェアによく用いられているHackerDefenderというルートキットがあるが、これは、プロセスやレジストリ、ファイルなどをユーザから見えなくしてしまう。そのため、何か変な動作をしていることがわかっていても、タスクマネージャでプロセスを見てもそれらしきプロセスは無いし、レジストリにも無いし、ディスクのファイルをサーチしても何も出てこないということになる。また、見えないから削除も困難になる。

このようなルートキットを検出するツールとして、RootkitRevealerというのがある。
www.sysinternals.comから無料でダウンロードできる。zipファイルになっているので、適当なフォルダに解凍し実行、「File」メニューの「Scan]をクリックすると、レジストリとファイルをスキャンし、検出した結果を表示してくれる。

RootkitRevealerの原理は、ディスクに記録されているレジストリやファイルのナマのデータと、ユーザインターフェース(Windows API)を通して見える見掛け上のデータを比較し、異なっている場合、隠されているものがあると判断する。

スキャン中は、そのコンピュータでは他の作業をしないほうがよい。作業をすると、スキャン中にディスクの値が変わってしまうことがあり、余計な検出結果がでてくることになる。

やってみた結果、124点の相違(問題点)を検出した。ここからが、人間様の仕事である。この結果を精査し、それが本当にルートキットによるものなのかを眼力で判断しないといけない。RootkitRevealerは、ルートキットを自動で判断し削除してくれるような便利なツールでは無い。一般的にルートキットを自動判断するのはたいへん難しい。RootkitRevealerがやってくれるのは、あくまで相違点、問題点の検出だけなのだ。

判断するには、ある程度のシステムの知識が必要になる。少なくともどんなアプリやプルグラムをインストールしていて、どんなプロセスが動いているかとか、レジストリのチェックをできるくらいの知識は必要だ。

今回の検査では、次のような問題点が報告されたが、結果的には、すべて問題はなかった。
<B>Key name contains embedded nulls</B>
これは、レジストリのキー名にnull(値が0コード)のが使われていることを示す。nullは、文字列の終わりの印として使われるので、キー名にnullを含ませるとレジストリのキー名を隠すことができる。そのため、ユーザやウィルス検査ソフトからキー名を見えなくして、その存在を隠すためにこの手法が使われている。

ただし、日本語のキー名を使っている場合は、日本語コードにnullが含まれるためこの「Key name contains embedded nulls」がたくさん報告されることがある。したがって報告されたレジストリが確かに日本語を使っているのであれば、これは無視して差し支えない。

<B>Data mismatch between Windows API and raw hive data.</B>
これは、スキャン中に、レジストリの値が変化したときに出る。今回Microsoftの暗合化関連のレジストリで暗合化のシード値として報告されたが、無視しても問題ない。

<B>Hidden from Windows API.</B>
Windows APIからは見えないファイルがあることを表す。ルートキットによって隠されたファイルがあるときは、この報告が出る。そのため、どんなファイルが隠されているのか、チェックする必要がある。今回、Microsoftのデスクトップサーチのインデックスファイルにこの報告が出ていた。こういうのは問題ない。

<B>Visible in Windows API, but not in MFT or directory index.</B>
これは、スキャン中にファイルが変わったときに出る。スキャン中に変わる可能性があるものであれば、問題ない。

その他の検査結果メッセージは、RootkitRevealerのヘルプに説明がある(英文)のでそれを参照。

ルートキットに侵入されたレジストリ、ファイルなどの削除はたいへんな手間がかかる。ゴミ箱にポイというわけにはいかない。何しろファイルは見えないのだから。一般的に言って、ルートキットに侵入されていると判断すれば、ハードディスクの全フォーマットから始めて、OSをクリーンインストールするのが望ましい。(インストール中にLANケーブルを接続していたりすると、またやられる)

最後に、RootkitRevealerでOKだったからといって、システムが100%安全であるわけではない。RootkitRevealerは、ルートキットに侵入されたシステムを発見する<B>限定的なツール</B>の一つに過ぎない。ルートキットは、OSの深部に潜り込み、OSの動作を変えててしまう。ルートキットの発見は、原理的に、犯人が監督指揮して犯人探しをするようなものである。それで本当に犯人が発見できるの?という哲学的な問題にぶち当たる。

# Rootkit の話題って目立ちましたね・総集編 2005/11/21 0:21 セキュリティ雑感
第一段階 私にとっての事の起こりはマイクロソフトの奥天氏がBLOGに書いたこの記事からです。 MS 日本のセキュリティチームの Blog 投稿日時 : 200