エンタープライズ:特集 2003/06/10 15:23:00 更新

rootkitによるハッキングとその防御
第5回 kernel rootkitの概要 (1/4)

今回から解説する「kernel rootkit」は、ps、ls、netstatなどのコマンド類は改変せずに、Application rootkitと同じように、クラッカー側にとって必要な機能(バックドア、ファイル・プロセスの隠蔽など)を提供するものだ。このためApplication rootkitに比べて管理者からの発見を逃れられる可能性が高い。その概要について解説しよう。

 これまで解説してきた「Application rootkit」は、単にファイルをすり替えることで侵入の隠蔽やバックドアの作成を行っていた。つまり、クラッカーがApplication rootkitを利用してきた場合には、ファイルの整合性チェックツールなどで、システムの改ざんを検知できる可能性が高いということになる。これはいままで紹介してきたセキュリティツール(Tripwireやchkrootkitなど)の検出結果を見てもお分かり頂けるだろう。

 また、たとえファイルの整合性チェックツールなどで検知されなかった(回避されてしまった)としても、コマンドの動作がおかしい、不明なユーザーがログインしている、といった何らかの異常を感じるときには、改ざんされたと思われるファイルを正常なファイルに置き換えれば、隠蔽されたプロセスやファイルがあるかを確認することもできる。

 しかし、これはクラッカー側から見ればあまり好ましいことではないだろう。侵入行為やrootkit、各種ツールなどをインストールした痕跡を、管理者に短時間で発見されてしまえば、攻略したシステムへ再侵入できる可能性は低くなる。また、たとえ再度侵入できたとしても、管理者によってはクラッカーが気がつかないように、逆にトラップを仕掛けてくるかもしれない。

 今回から解説する「kernel rootkit」は、Application rootkitに比べて管理者からの発見を逃れられる可能性が高い。ps、ls、netstatなどのコマンド類は改変せずに、Application rootkitと同じように、クラッカー側にとって必要な機能(バックドア、ファイル・プロセスの隠蔽など)を提供するものだ。kernel rootkitのインストールがクラッカーにとって面倒な作業であればよいが、インストール自体はApplication rootkitなどと大きな違いはなく、条件さえ揃っていれば簡単にターゲットのシステムにインストールすることができる。このため、クラッカーはkernel rootkitが使用できる場面であれば、はじめからApplication rootkitは使用せず、kernel rootkitを用いることを考えるだろう。

 kernel rootkitには代表的なものとして、「adore」、「suckit」、「knack」といったものがあり、どれもインターネット上からダウンロードすることができる。

ローダブルカーネルモジュールによる設置

 カーネルに新たな機能を追加するためには、通常ならば再コンパイルしてリブートする必要がある。しかし、機能を追加するたびにいちいち再コンパイル→再起動を繰り返していたのでは、システムにかかる負担が大きくなってしまう。このため、Linuxを含む多くのシステムでは、「カーネルモジュール」という方法で必要に応じて機能を動的に組み込めるようにし、再コンパイルやリブートといった煩わしさを解消している。この動的にロードできるモジュールは「ローダブルカーネルモジュール」(LKM)と呼ばれるが、単純な例としては、ノートパソコンに利用しているPCMCIAカードやUSBデバイスなどを思い浮かべるとよいだろう。たとえば、現在ロードされているモジュールは、lsmodコマンドで表示させることができる(《リスト1》)。

リスト1■現在ロードされているモジュールを確認する
# lsmod
Module Size Used by
autofs 11264 1 (autoclean)
sis900 11264 1 (autoclean)
usb-uhci 20720 0 (unused)
usbcore 49664 1 [usb-uhci]

 リスト1はデスクトップPC上で実行したものだが、USBのモジュールやネットワークカード(sis900)のモジュールがロードされているのが分かるだろう。モジュールのロードには「insmod」コマンドを、そしてモジュールのアンロードには「rmmod」コマンドを使用する。

 今後紹介する予定のrootkitのうち、「suckit」を除くkernel rootkitは、このようなローダブルカーネルモジュールとしてインストールされ、カーネルレベルでの動作を実現している。つまり悪意をもつローダブルカーネルモジュールとがロードされると、アプリケーションプログラムが必要とするカーネルのシステムコールはクラッカーにハイジャックされてしまい、Application rootkitのときのようにバイナリファイルの改ざんは必要とせず、バックドアや、ファイル・プロセスの隠蔽などを行うことが可能になる(《図1》)。

図1■通常のApprication rootkitとkernel rootkitの違い

図1

通常のApprication rootkitは、文字通りあくまでもアプリケーションとして動作するため、Tripwireなどのツールにより簡単に改ざんが発見されてしまう



図1

悪意をもつローダブルカーネルモジュールとがロードされると、アプリケーションプログラムが必要とするカーネルのシステムコールはクラッカーにハイジャックされてしまい、Application rootkitのときのようにバイナリファイルの改ざんは必要とせず、バックドアや、ファイル・プロセスの隠蔽などを行うことが可能になる


      | 1 2 3 4 | 次のページ

[TTS,ITmedia]