rootkitの検出

攻撃者がコンピュータに侵入した後によく利用するツール類をまとめたrootkitと呼ばれるツールキットがあります。rootkitは攻撃者の足跡を消し去り、バックドアを設置します。また、rootkit自体の存在を隠すために、psコマンドやlsコマンドなどのシステム自体を改ざんします。
rootkitには様々種類が存在するために、それらを手動で検出することは非常に困難ですが、chkrootkit を使うことにより自動的な検出ができます。現在のところ、chkrootkitでは60種類以上のrootkitを検出することができます。
詳細は以下のサイトを参照してください。
chkrootkit — locally checks for signs of a rootkit
http://www.chkrootkit.org/
1. インストール
上記のサイトより最新のソースをダウンロードしてインストールします。(一般ユーザ権限でもインストール可能です。)

$ tar zxvf chkrootkit.tar.gz
$ cd chkrootkit-0.46a
$ su
# make sense
# cp ./chkrootkit /usr/local/bin/

chkrootkitプログラムが作業ディレクトリ内に出来上がります。コマンドから実行しやすいように、/usr/local/binディレクトリにコピーしておくとよいでしょう。
2. chkrootkitの実行
root権限で実行します。

# chkrootkit
ROOTDIR is /'
Checking
amd’… not infected
Checking basename'... not infected
Checking
biff’… not found
Checking chfn'... not infected
Checking
chsh’… not infected
Checking cron'... not infected
Checking
date’… not infected
(省略)

rootkitが検出された場合は、「INFECTED」と表示されます。
3. cronで実行
chkrootkitをcronに登録して定期的に実行させます。
また、実行結果を記録するとともに、rootあてにメールを送信します。
/etc/cron.dailyディレクトリにchkrootkitを実行するシェルスクリプト /etc/cron.daily/chkrootkitを作成します。
▼/etc/cron.daily/chkrootkit

#!/bin/sh
/usr/local/bin/chkrootkit > /var/log/chkrootkit.log
grep “INFECTED” /var/log/chkrootkit.log | mail -s “chkrootkit log” root
chmod 600 /var/log/chkrootkit.log

スクリプトに実行権を付加します。

# chmod 755 chkrootkit

 

注1: “INFECTED”と出力されたら改ざんされている可能性が高いですが、誤って検知される事も多いようですので、必ずしも改ざんされているとは限りません。また、まだ一般的に知られていない新しい rootkit も検知される事はありませんので、検出されなかったら安全というわけではありません。
 
注2: 攻撃者にrootkitそのものを改ざんされてしまったら意味がありません。chkrootkitをCD-ROMなどの書き込みできないメディアに移しておくとよいでしょう。
また、chkrootkitが呼び出すコマンドは、awk、cut、egrep、find、head、id、ls、netstat、ps、strings、sed、unameですが、これらのコマンドが汚染されている場合もありますので、汚染されていないと想定できるシステム(KNOPPIXなど、CDブートできるディストリビューション)で一時的にブートし、そのシステムのコマンドを使ってchkrootkitを実行するのがより望ましいでしょう。