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

 昨今,ボットやスパイウエアなどのマルウエアによる被害が増加している。こうした最近のマルウエアには,ユーザーから自身の姿を隠すために,ルートキットと呼ぶソフトウエアが併用されていることが多い。ところが,ルートキットの危険性の認知はその被害の規模に反して低い。これはルートキット自体が「隠れることを目的とする」という性質を持つことに起因していると思われる。そこで,本稿ではルートキットの現状に至るまでの経緯と,その実態を紹介する。

1997年から始まった

 1997年ごろに登場した初期のルートキットは,SolarisやBSD,LinuxといったUNIXを対象としたものがほとんどだった。こうした初期のルートキットは,名前から推測できるようにツールキットとしての意味合いが強く,侵入者がコンピュータのコントロールを奪取するための不正プログラムの“詰め合わせ”だった。具体的には(1)ぜい弱性を攻撃するコード,(2)システムに侵入するための裏口を開けるバックドア,(3)ネットワークに流れるパケットを収集するスニファ,(4)ユーザーのキー入力を記録する「キーロガー」,(5)OSからの出力を改ざんすることで侵入の痕跡を消すトロイの木馬,(6)侵入の痕跡となるログを削除するログクリーナーが含まれていた(表1)。

表1●初期のルートキットの典型的な構成例
表1●初期のルートキットの典型的な構成例

 この中で,注目してほしいのはトロイの木馬である。ファイルの一覧を表示する「ls」や実行中のプロセスの一覧を表示する「ps」などのコマンドのプログラムを書き換え,これらのコマンドに対する結果を別のものと置換することで,ユーザーに正しい情報を見せないようにする。こうした侵入者にとって都合の悪い情報をユーザーから隠ぺいする機能がだんだんとルートキットの特徴として大きな部分を占めるようになった。

 トロイの木馬は,2000年ごろから実装方法に変化が現れた。初期のコマンド・ファイルをトロイの木馬と置換するという単純な方法からカーネルの拡張モジュール(デバイス・ドライバ)を悪用した方法に主流が移っていったのだ。具体的には,悪意の拡張モジュールをOSに組み込んでカーネルを改変し,本来の正当な処理を横取りすることで情報の操作を行う方法である(図1)。LinuxやBSDなどの多くがオープンソースだったため,実装は容易だった。

図1●カーネルの拡張モジュールを利用したルートキットの動作イメージ
図1●カーネルの拡張モジュールを利用したルートキットの動作イメージ

 この時代のルートキットは単体でファイル,プロセスなどの隠蔽機能を備えているものが多かった。ルートキットは単なるツールキットではなく,「ルートキット = 隠蔽機能を提供するマルウエア」というイメージが広まってきたのもこのころからである。

Windowsにおけるルートキット

 Windowsにおいてルートキットが注目され始めたのは,1999年にGreg Hoglund氏によって公開されたNT Rootkitからである。NT Rootkitは,Windows NT/2000に対応した初のオープンソースのルートキットである。今となっては決して目新しいものではないが,実装に利用されている手法の多くは現在のルートキットでも多用されている。セキュリティ専門家の間でコンセプト・コードとしての評価が高い。

 NT Rootkit以降,Windowsカーネルの内部構造の解析が進むにつれて,より高度なルートキットが公開されていくこととなった。知識やツールが蓄積されたことで,ルートキット開発が容易になり,ボットやスパイウエアなどのマルウェアへの悪用が広まっていった。

 この背景には,マルウエアの開発・悪用が愉快目的から営利目的へ変化したことが挙げられる。マルウエアを悪用して金儲けに使いたい側からすれば,可能な限りマルウエアをユーザーから隠蔽して気付かれないようにする必要があったために,ルートキットはまさにうってつけだったわけだ。


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