Kozupon.com    
 
 chkrootkitでrootkitを見つける!


rootkitと言うとてつもないクラックツールが有る。かなり昔から有るツールで一言でいうと「鯖に侵入したら、悪いことをするためにそれをしやすくするための道具がまとめて入っているツールキット。」と言う定義を俺は自分で作ってみた。つまり、もたもた人の鯖の中でコンパイルだのビルドだのしていたら、せっかく鼠小僧のように進入したのに相手に見つかっちゃうじゃん。みたいな(笑)。まるっきり無意味じゃん!
この道具の代表的なものが、バックドアを作成する事が出来る。それも、鯖のさの字も未だ判らん”とうしろう”でも使いこなせると言うからこのキット使い方を間違えるとたちが悪い。2005年1月現在で流行っているのは、どうもSSHに仕込むタイプのようだ。そこで、この嫌らしいrootkitが仕掛けられてるのを見付けるツールを紹介する。

実験環境 )
OS : FreeBSD 4.9-SECURITY
HOST : MMX Pentium133 NotePC

FreeBSDには既にportsでchkrootkitが存在する。だから、

bash-2.05b# cd /usr/ports/security/chkrootkit

bash-2.05b# make install clean


1.ソースのゲット

ここ でゲットする。
執筆時点( 2005年1月 )では、0.44が最新だった。


2.インスコ

bash-2.05b# cd /usr/local/src/

bash-2.05b# tar zxvf chkrootkit.tar.gz
chkrootkit-0.44
chkrootkit-0.44/ACKNOWLEDGMENTS
chkrootkit-0.44/chkrootkit
chkrootkit-0.44/chkproc.c
chkrootkit-0.44/README
chkrootkit-0.44/chklastlog.c
chkrootkit-0.44/README.chkwtmp
chkrootkit-0.44/COPYRIGHT
chkrootkit-0.44/Makefile
chkrootkit-0.44/check_wtmpx.c
chkrootkit-0.44/strings.c
chkrootkit-0.44/ifpromisc.c
chkrootkit-0.44/chkdirs.c
chkrootkit-0.44/chkrootkit.lsm
chkrootkit-0.44/chkwtmp.c
chkrootkit-0.44/README.chklastlog

bash-2.05b# chown -R root:wheel chkrootkit-0.44

bash-2.05b# cd chkrootkit-0.44

bash-2.05b# make sense
gcc -DHAVE_LASTLOG_H -o chklastlog chklastlog.c
gcc -DHAVE_LASTLOG_H -o chkwtmp chkwtmp.c
gcc -DHAVE_LASTLOG_H -o ifpromisc ifpromisc.c
gcc -o chkproc chkproc.c
gcc -o chkdirs chkdirs.c
gcc -o check_wtmpx check_wtmpx.c
gcc -static -o strings-static strings.c

bash-2.05b# cp chkrootkit /usr/local/bin/


3.使ってみる

1) とにかくコマンドを叩く

とにかくコマンドをぶったたいてみる。rootkitが仕掛けられている場合は、「INFECTED
が出力される。

bash-2.05b# chkrootkit
ROOTDIR is `/'
Checking `amd'... not infected
Checking `basename'... not infected
Checking `biff'... not infected
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
Checking `find'... not infected
Checking `fingerd'... not infected
Checking `gpm'... not found
Checking `grep'... not infected
Checking `hdparm'... not found
Checking `su'... not infected
Checking `ifconfig'... not infected
Checking `inetd'... not infected
Checking `inetdconf'... not infected
Checking `identd'... not found
Checking `init'... not infected
Checking `killall'... not infected
Checking `ldsopreload'... not tested
Checking `login'... not infected
Checking `ls'... not infected
Checking `lsof'... not found
Checking `mail'... not infected
Checking `mingetty'... not found
Checking `netstat'... not infected
Checking `named'... not infected
Checking `passwd'... not infected
Checking `pidof'... not found
Checking `pop2'... not found
Checking `pop3'... not found
Checking `ps'... not infected
Checking `pstree'... not found
Checking `rpcinfo'... not infected
Checking `rlogind'... not infected
Checking `rshd'... not infected
Checking `slogin'... not infected
Checking `sendmail'... not infected
Checking `sshd'... not infected
Checking `syslogd'... not infected
Checking `tar'... not infected
Checking `tcpd'... not infected
Checking `tcpdump'... not infected
Checking `top'... not infected
Checking `telnetd'... not infected
Checking `timed'... not infected
Checking `traceroute'... not infected
Checking `vdir'... not found
Checking `w'... not infected
Checking `write'... not infected
Checking `aliens'... no suspect files
Searching for sniffer's logs, it may take a while... nothing found
Searching for HiDrootkit's default dir... nothing found
Searching for t0rn's default files and dirs... nothing found
Searching for t0rn's v8 defaults... nothing found
Searching for Lion Worm default files and dirs... nothing found
Searching for RSHA's default files and dir... nothing found
Searching for RH-Sharpe's default files... nothing found
Searching for Ambient's rootkit (ark) default files and dirs... nothing found
Searching for suspicious files and dirs, it may take a while... nothing found
Searching for LPD Worm files and dirs... nothing found
Searching for Ramen Worm files and dirs... nothing found
Searching for Maniac files and dirs... nothing found
Searching for RK17 files and dirs... nothing found
Searching for Ducoci rootkit... nothing found
Searching for Adore Worm... nothing found
Searching for ShitC Worm... nothing found
Searching for Omega Worm... nothing found
Searching for Sadmind/IIS Worm... nothing found
Searching for MonKit... nothing found
Searching for Showtee... nothing found
Searching for OpticKit... nothing found
Searching for T.R.K... nothing found
Searching for Mithra... nothing found
Searching for OBSD rk v1... nothing found
Searching for LOC rootkit... nothing found
Searching for Romanian rootkit... nothing found
Searching for Suckit rootkit... nothing found
Searching for Volc rootkit... nothing found
Searching for Gold2 rootkit... nothing found
Searching for TC2 Worm default files and dirs... nothing found
Searching for Anonoying rootkit default files and dirs... nothingfound
Searching for ZK rootkit default files and dirs... nothing found
Searching for ShKit rootkit default files and dirs... nothing found
Searching for AjaKit rootkit default files and dirs... nothing found
Searching for zaRwT rootkit default files and dirs... nothing found
Searching for Madalin rootkit default files... nothing found
Searching for anomalies in shell history files... nothing found
Checking `asp'... not infected
Checking `bindshell'... not infected
Checking `lkm'... nothing detected
Checking `rexedcs'... not found
Checking `sniffer'... lp0 is not promisc
ppp0 is not promisc
fe1 is not promisc
Checking `w55808'... not infected
Checking `wted'... nothing deleted
Checking `scalper'... not infected
Checking `slapper'... not infected
Checking `z2'... nothing deleted

2) 最低限の情報のみ出力させてみる

bash-2.05b# chkrootkit -q
not tested: can't exec ./ifpromisc
not tested: can't exec ./chkwtmp
not tested: can't exec ./chklastlog

3) コマンドを参照して比較する(本来このやり方を推奨)

インストール時、あらかじめ正しいバイナリのコマンドをFDD等にコピーして置いてそれを元に改ざんされてるかを比較する。例えば、
2005/01/27 11:44 282,675 awk
2005/01/27 11:49 10,232 echo
2005/01/27 11:49 75,516 find
2005/01/27 11:49 11,928 id
2005/01/27 11:49 107,854 netstat
2005/01/27 11:49 50,100 sed
2005/01/27 11:49 9,752 uname
2005/01/27 11:49 21,438 cut
2005/01/27 11:49 20,427 head
2005/01/27 11:49 89,044 egrep
2005/01/27 11:49 47,020 ls
2005/01/27 11:49 62,392 ps
2005/01/27 11:49 24,660 strings

こんなコマンドを初っぱなのインストール時にFDDへコピーしておく。そして、以下のように-pパラメータでFDDのパスを指定する。

bash-2.05b# chkrootkit -q -p /mnt/floppy

4) chkrootkitのオプション

-h       ヘルプを表示する
-V       バージョンを表示する
-l        チェックする項目を表示する
-d       デバッグ
-q       必要な最低限の情報のみを表示する
-x       結構詳細な情報を表示する
-r        dir ディレクトリを指定する
-p       dir1:dir2.... チェックに使用するコマンドのディレクトリパスを指定する
-n       NFSでマウントしたディレクトリはチェックしない

5) 自動的に動作させて結果を報告させる

bash-2.05b# vi chkrootkit.cron

#!/bin/sh
/usr/local/bin/chkrootkit -q > /dev/null 2>&1 | mail -s 'chkrootkit daily run output' xxx@hogehoge.com


このように、chkrootkit.cronみたいなシェルを定期的に九龍でいごかしたらどうだろう。dailyで毎日回してメール配信させれば確認出来るだろう。文字列操作でズバリ危険アラームを出すスクリプトを作っても良いが誤検出もかなりあるので自分の目で確認した方が良いかと(ーー;)


4.こやつの欠点

chkrootkitには、当たり前だが欠点もある。欠点を知って旨く使うこと。

1) 新種のrootkitには対応できない
2) 改造されてるrootkitには対応できない
3) chkrootkitでもご認識はある

以上


 
 
 



Copyright 2005 Kozupon.com.