Geek-Side

このエントリーをはてなブックマークに追加  

2004/11/15

Chkrootkitによるrootkit検知

セキュリティには絶対と言う事はないため、自分のマシンが不正侵入されるケースも想定する必要があります。
クラッカーはマシンをクラックした後にrootkitと呼ばれるものを仕掛け、そのマシンへの
進入の痕跡を消したり、バックドアと呼ばれる裏口を確保します。
このrootkitと呼ばれるソフトを検知するツールとしてchkrootkitがあります。

chkrootkitはクラッカーが仕掛けたrootkitを検出するツールです。

chkrootkitのインストールと実行

chkrootkitをインストールします。
$ emerge chkrootkit
インストールされたchkrootkitのバージョンは0.44でした。
chkrootkitはインストール後特に設定なく実行できます。
$ chkrootkit 
ROOTDIR is `/'
Checking `amd'... not found
Checking `basename'... not infected
Checking `biff'... not found
Checking `chfn'... not infected
Checking `chsh'... not infected
Checking `cron'... not infected
Checking `date'... not infected
Checking `du'... not infected
Checking `dirname'... not infected
Checking `echo'... not infected
Checking `egrep'... not infected
Checking `env'... not infected

(以下略)
上記は改ざんがされていない場合の結果の一部ですが、改ざんされている場合は大文字で 'INFECTED' と表示されます。
また、-q オプションを指定すれば、改ざんされている場合のみ結果を表示します。
$ chkrootkit -q

安全なコマンドの確保

chkrootkitでは以下のコマンドを使用し、rootkitの検出を行います。
awk cut echo egrep find head id ls netstat ps strings sed uname

これらのコマンドが改ざんされている場合は、rootkitの検出が正しく行われない可能性 があります。

chkrootkit では p オプションの後に上記コマンド群を格納したディレクトリを指定する事 で、使用するコマンド群を制御する事ができます。
書き込み不可にしたフロッピーディスクやCDROMに安全なコマンド群を保存し、chkrootkit実行時 にはそれらを使用するようにする事ができます。

私はKNOPPIXから上記コマンド群を得ました。KNOPPIXならコマンドが改ざんされている 心配も少ないと思います。
フロッピーディスクにコマンド群をコピーする時には以下のコマンドで取得しました。 例ではフロッピーディスクが/mng/floppyにマウントされているものとしています。

$ cp `which --skip-alias awk cut echo egrep find head id ls netstat ps 
strings sed uname` /mnt/floppy/

フロッピーディスクに保存した安全なコマンド群を使用してchkrootkitを実行した例です。
フロッピーディスクは/mnt/floppyにマウントされているものとしています。

$ chkrootkit -p /mnt/floppy 
ROOTDIR is `/'
Checking `amd'... not found
Checking `basename'... not infected
Checking `biff'... not found
Checking `chfn'... not infected
Checking `chsh'... not infected
Checking `cron'... not infected
Checking `date'... not infected
Checking `du'... not infected
Checking `dirname'... not infected
Checking `echo'... not infected
Checking `egrep'... not infected
Checking `env'... not infected

(以下略)

chkrootkitの定期実行

cronでchkrootkitを定期実行させ、異常があった場合はメールを送信します。
ファイル /etc/cron.daily/chkrootkit.cron を作成します。
#! /bin/sh

/usr/sbin/chkrootkit -q -p /mnt/floppy | grep INFECTED

上記例では /mnt/floppy にあるコマンド群を用いて、chkrootkitを実行し、結果に "INFECTED" が含まれる場合は root宛てにメールが送信されます。

chkrootkit.cronに実行権限を与えます。
$ chmod 700 /etc/cron.daily/chkerootkit.cron


このエントリーをはてなブックマークに追加   ツイート