使用chkrootkit工具软件

< 入侵监测系统的构建( chkrootkit ) > (最近更新日:2006/08/24)

前  言

所谓 rootkit ,是一类入侵者经常使用的工具。这类工具通常非常的隐秘、令用户不易察觉,通过这类工具,入侵者建立了一条能够常时入侵系统,或者说对系统进行实时控制的途径。所以,我们用自由软件 chkrootkit 来建立入侵监测系统,来保证对系统是否被安装了 rootkit 进行监测。

chkrootkit 在监测 rootkit 是否被安装的过程中,需要使用到一些操作系统本身的命令。但不排除一种情况,那就是入侵者有针对性的已经将 chkrootkit 使用的系统命令也做修改,使得 chkrootkit 无法监测 rootkit ,从而达到即使系统安装了 chkrootkit 也无法检测出 rootkit 的存在,从而依然对系统有着控制的途径,而达到入侵的目的。那样的话,用 chkrootkit 构建入侵监测系统将失去任何意义。对此,我 们在操作系统刚被安装之后,或者说服务器开放之前,让 chkrootkit 就开始工作。而且,在服务器开放之前,备份 chkrootkit 使用的系统命 令,在一些必要的时候(怀疑系统命令已被修改的情况等等),让 chkrootkit 使用初始备份的系统命令进行工作。

安装 chkrootkit

首先来下载和安装 chkrootkit 工具。

[root@sample ~]# wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz ← 下载chkrootkit

--03:05:31-- ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
=> `chkrootkit.tar.gz'
Resolving ftp.pangeia.com.br... 200.239.53.35
Connecting to ftp.pangeia.com.br|200.239.53.35|:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done. ==> PWD ... done.
==> TYPE I ... done. ==> CWD /pub/seg/pac ... done.
==> PASV ... done. ==> RETR chkrootkit.tar.gz ... done.
Length: 37,140 (36K) (unauthoritative)
100%[====================================>] 37,140 5.67K/s ETA 00:00
03:05:46 (5.30 KB/s) - `chkrootkit.tar.gz' saved [37140]

[root@sample ~]# tar zxvf chkrootkit.tar.gz  ← 展开被压缩的源代码

[root@sample ~]# cd chkrootkit*  ← 进入chkrootkit源代码的目录

[root@sample chkrootkit-0.46a]# make sense  ← 编译

[root@sample chkrootkit-0.46a]# cd ..  ← 返回上层目录

[root@sample ~]# cp -r chkrootkit-* /usr/local/chkrootkit  ← 复制编译后文件所在的目录到指定位置

[root@sample ~]# rm -rf chkrootkit*  ← 删除遗留的源代码目录及相关文件

测试 chkrootkit

然后测试 chkrootkit 是否能够正常运行。

[root@sample ~]# cd /usr/local/chkrootkit  ← 进入chkrootkit的目录

[root@sample chkrootkit]# ./chkrootkit | grep INFECTED  ← 测试运行chkrootkit
稍等片刻…如果没有显示“INFECTED”字样,而直接出现命令行提示符,说明一切OK!

[root@sample chkrootkit]# cd   ← 回到root用户目录

让 chkrootkit 的监测自动化

用Shell Script编写一段脚本,通过这个脚本让chkrootkit的监测自动化。如有rootkit被发现的时候,发送邮件通知root用户,并且将运行结果保存在/var/log/messages文件中。

[root@sample ~]# vi chkrootkit  ← 建立chkrootkit自动运行脚本

#!/bin/bash
PATH=/usr/bin:/bin
TMPLOG=`mktemp`
# Run the chkrootkit
/usr/local/chkrootkit/chkrootkit > $TMPLOG
# Output the log
cat $TMPLOG | logger -t chkrootkit
# bindshe of SMTPSllHow to do some wrongs
if [ ! -z "$(grep 465 $TMPLOG)" ] && \
[ -z $(/usr/sbin/lsof -i:465|grep bindshell) ]; then
sed -i '/465/d' $TMPLOG
fi
# If the rootkit have been found,mail root
[ ! -z "$(grep INFECTED $TMPLOG)" ] && \
grep INFECTED $TMPLOG | mail -s "chkrootkit report in `hostname`" root
rm -f $TMPLOG

[root@sample ~]# chmod 700 chkrootkit  ← 赋予脚本可被执行的权限

[root@sample ~]# mv chkrootkit /etc/cron.daily/  ← 将脚本移动到每天自动运行的目录中

chkrootkit 相关的系统命令的备份

如前言所述,当chkrootkit使用的系统命令被入侵者更改后,chkrootkit对 rootkit的监测将失效。所以,我们事前将chkrootkit使用的系统命令进行备份,在需要的时候使用备份的原始命令,让chkrootkit对 rootkit进行检测。

[root@sample ~]# mkdir /root/commands/  ← 建立暂时容纳命令备份的目录

[root@sample ~]# cp `which --skip-alias awk cut echo egrep find head id ls netstat ps strings sed uname` /root/commands/  ← (连续输入无换行)备份系统命令到建立好的目录

[root@sample ~]# /usr/local/chkrootkit/chkrootkit -p /root/commands|grep INFECTED  ← 用备份的命令运行chkrootkit

[root@sample ~]# tar cvf /root/commands.tar /root/commands/ ← 将命令打包

[root@sample ~]# gzip /root/commands.tar  ← 将打包的文件压缩
然后将压缩后的commands.tar.gz用SCP软件下载到安全的地方

[root@sample ~]# rm -rf commands*   ← 为安全起见,删除服务器端备份的系统命令及相关文件

如果以后想通过备份的原始系统命令来运行chkrootkit的时候,只需用SCP软件将备份的命令打包压缩文件上传至服务器端已知位置并解压缩,然后运行在chkrootkit的时候指定相应的目录即可。例如,假设已经将备份上传至root用户目录的情况如下:

[root@sample ~]# tar zxvf /root/commands.tar.gz  ← 解开压缩的命令备份

[root@sample ~]# /usr/local/chkrootkit/chkrootkit -p /root/commands|grep INFECTED ← 用备份的命令运行chkrootkit

然后在运行后删除相应遗留文件即可。

RubyScript2exe vs Exerb

RubyScript2exe和Exerb都是把.rb(.rbw)文件"变"成windows环境下可独立运行的exe文件的工具
这两个工具我都用了一段时间,下面把我的心得和大家分享一下。

一、安装
     1.RubyScript2exe的安装方式非常简单,直接通过gem就可以

CODE:
gem install rubyscript3exe
2.Exerb不能通过gem安装,不过安装方式也十分方便。
       首先到exerb的官方网站下载exerb.链接在页面中间那个位置。
       找不到的化(汗..)请点击下载exerb
       解压下载下来的zip文件,用命令行进去运行里面的setup.rb即可

CODE:
ruby setup.rb
二、使用
      1. 使用RubyScript2exe,只需要打开命令行,输入

CODE:
rubyscript2exe 文件路径
就可以了
          它会先执行一遍程序,过程中寻找程序都用到了什么文件,等待一段时间(挺长的)后,会在与.rb 文件相同的目录下生成一个
          同名exe文件
       2.Exerb相比rubyscript2exe来说功能就强大的多了。
         直接在命令行下输入

CODE:
exerb 文件路径
的话可以得到一个单纯由你的rb文件生成的exe,体积很小,但只能在装有ruby的机器上运行。
         如果想要一个
         可以独立运行的exe的话需要这么做

CODE:
mkexy 文件路径
exerb  生成的.exy文件的路径
可以打开.exy文件看一下,前面有这么一段
      general:
      startup: hello.rb
      core: cui
      kcode: none
    如果我们把cui改称gui,就可以用来生成gui程序了~,此外还可以在kcode里改变文件的编码。

三、比较
    1.难度:都很简单,两者相当
    2.功能:自然是exerb的功能更多一点
    3.速度:有些时候是用rubyscript2exe的速度让人难以忍受(至少让我难以忍受),而exerb就快的多了,一般虽然需要两步完成(mkexy,exerb)但还是要比rubyscript2exe快不少
    4.大小:同样一个rb文件,通常是exerb生成的exe要小一些。(原因不明)
    5.其他:经尝试只有用exerb的mkexy功能才能生成一个完美的gui程序。
                把.rb改成.rbw然后用rubyscript2exe也可以,但是运行的时候会先出现一个命令行窗口,然后才是你的程序......

经过多方面的比较,exerb从总体上来讲要比rubyscript2exe要优秀,

以上仅供参考,大家按照自己的需要来选择吧~