rootkit(t0rnkit)の姿

図1●t0rnkitをインストールした画面
図2●t0rnkitを警告したCERT/CCのWebページ
URLはhttp://www.cert.org/incident_notes/IN-2000-10.html
図3●t0rnkitが持つfingerによるバックドアを稼働した例
図4●0rnkitのネットワーク・スニファが収集したパスワードを表示したところ
図5●lkm-rootkitによるシステムの改ざんの概要
一般的なrootkitとの違いを示す

 t0rnkitは,あらかじめコンパイルした形式で配布された,おそらく初めてのrootkitである(図1[拡大表示])。不正アクセスに対して深い知識を持たない者でも,比較的簡単に使用することができる。このためか,数年前には米国コンピュータ緊急対応センター(CERT/CC)の「incident notes」で報告されるほど,t0rnkitによる深刻な被害が多数発生した(図2[拡大表示])。これを祖とした数多くのrootkitが出回っている。t0rnkitが,代表的なrootkitの一つということは間違いないだろう。t0rnkitは,次のようなユニークな機能を持ったツールで構成されている。

(1)三つのバックドア

 t0rnkitは,/bin/loginを改ざんしたもの,sshdを改造したもの,そしてfingerデーモンを改造した3種類のまったく異なるバックドアを持っている(図3[拡大表示])。いずれかのバックドアがコンピュータの管理者によって発見され,取り除かれたしても,不正アクセス者は別のバックドアを利用して再びコンピュータに侵入することができる。

(2)偽情報を報告するコマンド

 t0rnkitは,psやnetstat,およびlsやfindなどのコンピュータの状態を知るために欠かせない重要なコマンド(ファイル)を偽物と置き換える。置き換えたコマンド・ファイルは,不正アクセス者に関する情報を除いた偽のシステム情報をコンピュータの管理者に与える。

 例えば,不正アクセス者がコンピュータにログインしていれば,コンピュータ管理者は正常なnetstatコマンドを使って何者がコンピュータにアクセスしているかを知ることができる。しかし,t0rnkitによって改ざんされたnetstatコマンドは,平静を装った通信状態を報告する。そこに不正アクセス者の痕跡はまったく存在しない。このため,netstatコマンドの実行結果を見ても,コンピュータ管理者は自分が不正アクセスの被害を受けているなど夢にも思わない。

(3)ログを改ざんするツール

 “アンダーグラウンド”と称される世界で,「ログ・クリーナ」と呼ばれるツールが存在する。このツールは,syslogが記録するログ・ファイルや,wtmpファイルなどのコンピュータの状態を示すファイルを改ざんする機能を持つ。前述したコマンド・ファイルの改ざんのように,コンピュータのログ・ファイルから不正アクセス者に関する記録だけを消し去る。

(4)ネットワーク・スニファ

 ネットワーク・スニファは,ネットワークを盗聴して,ざまざまな情報を盗み見るツールである。t0rnkitのネットワーク・スニファは,パスワード情報を得ることに特化している(図4[拡大表示])。もし,コンピュータでt0rnkitが発見されたのなら,そのコンピュータの近くで利用した可能性のあるパスワードはすべて変更すべきである。おそらく,これらのパスワードは不正アクセス者の手に渡っている。

 実際に不正アクセスを受けたコンピュータでは,rootkitのほかにも何らかのプログラム・ツールが組み込まれている可能性が高い。例えば,IRC(インターネット・リレー・チャット)用のプロキシ・サーバや,違法ファイルの転送に利用するFTPサーバなどが考えられる。筆者が調査したコンピュータでは,IRCのプロキシ・サーバとDDoS(分散型サービス不能攻撃)のサーバ・プログラムがよく仕掛けられていた。

 rootkitが仕込まれたコンピュータで,不正アクセスの痕跡を発見することは難しい。システム情報の多くが不正アクセス者の都合の良いように操作されている。たとえ不正アクセス者がコンピュータにログインし,何らかのプログラムを実行していたとしても,システム管理者がそれに気づく可能性は極めて低いのである。

発見困難なlkm-rootkit

 近年,新しい技術を用いたrootkitの存在が確認されている。lkm(loadable kernel module) の技術を利用した「lkm-rootkit」である。

 lkmは,多くのUNIX系のOSに実装されている技術である。さまざまなデバイス・ドライバのモジュールを,必要な時にカーネルに読み込んで使用できるようにする。これにより,カーネル・サイズをコンパクトに保ち,メモリを節約することができる。

 lkmとして書かれたモジュールはカーネル・レベルでの動作が可能で,カーネル自身を制御することさえできる。その能力をrootkitに応用して開発されたのがlkm-rootkitである。

 lkm-rootkitは,システム・コールの呼び出しハンドラを乗っ取り,OS内でシステム情報を操作してしまう(図5[拡大表示])。プロセスに渡った時点で,すでに偽の情報とすり替えてしまうのである。このため,たとえ正常なコマンド・ファイルを用意しようと,偽のシステム情報しか得ることができなくなる。rootkitの探索に有効とされる「chkrootkit」のようなツールを使ったとしても,正しいシステム情報を得ることが不可能になる。

 lkm-rootkitは,このようなシステム情報の操作をコンピュータのいたる所で行う。コンピュータのシステム設定ファイルやカーネル・イメージごと,偽物とすり替えることさえ可能である。このため,ファイルの整合性をチェックしたり,正しいファイルとの入れ替えを行っても,すべては不正アクセス者の手のひらであがいているに過ぎない。lkm-rootkitによって改ざんされたコンピュータでは,前述のt0rnkit以上に不正アクセスの痕跡を発見することが困難になる。コンピュータのディスクを別のクリーンなコンピュータにマウントし,入念に調査しない限り発見することはできない。

渡辺 勝弘
汎用計算機のプログラマ・SE、原子力関係機関のネットワーク管理者を経て、現在は独立行政法人理化学研究所において、コンピュータセキュリティをテーマとした研究・開発に携わる。また同研究所のコンピュータセキュリティ環境の整備も担当するほか、執筆、セミナー講師などの活動も行う。1965年生まれ。東京都在住。家族は妻一人、犬一匹。趣味はギターの演奏と模型飛行機。Webサイトはhttp://www.hawkeye.ac/micky