Linux入侵保卫战(图)
由于工作忙加上有点懒,笔者隔了一个星期都没看日志,所以周一一上班就登录服务器去看日志:嗯,重要的服务器都没发现什么问题,还好,但登录上个人Web机器,以普通用户登录,然后直接su到root,输入密码后没反应,熟悉的“#”迟迟不出来,随手敲了下回车也没反应,以为自己输错密码了,于是按了下“ctrl+c”想重输,突然出现了“-bash-2.05b#”的提示符,正奇怪自己的Shell怎么就变了,难道是自己中招了?
笔者不大相信自己的机器这么容易就中招,于是直接用“cat /etc/shadow |grep root”看看,果然密码是空的。想不到稍微懒了点就被黑到头上了,还好只是个人的Web服务器,就顺便将这次检测过程记录了下来。(机器为Redhat8.0,上面放着Phparticle文章管理系统和discuz论坛。)
分析入侵
看看有没有别人在现场—如果有的话自然要想法踢掉他或者禁掉对外的网卡或拉掉网线等,还好只有笔者自己在。于是将root密码改了,尽管只有自己在上面,但空密码总是让人不放心,然后将Apache服务停止,免得现在有人访问进来,使用命令“/usr/local/apache/bin/apachectl stop”。另外,笔者再看看防火墙情况,使用“iptables -L”一看,晕了,“INPUT、OUTPUT、FORWARD”链全是空的。
用“netstat -anp”查看端口和关联进程的情况。提示没有“p”参数,估计可能“netstat”被黑客替换了,因为之前一直都用得好好的。(在这里说一下,如果您之前没做备份的话,现在就赶快看看数据有没有被删除,并将数据传到本机来;笔者自己由于一直都做了备份,所以现在不需要拷贝什么数据。)先不管它,直接用“netstat -ant”查看,果然有问题,如图1所示:

因为笔者的
SSH一直是监听内网的,且端口是监听“50022”的,现在突然多了个“0.0.0.0:50022”出来,监听来自任何IP了。顺便检查了一下“netstat”包有没有被替换,可以使用“rpm -qf /bin/netstat”和“rpm -V net-tools”进行检验,看有没有多出什么东西来。使用“netstat -rn”查看路由信息。笔者用“ifconfig -a”看网卡有没有被启动成混杂模式,一般笔者都是使用“dmesg |grep eth0”命令来查看的,想不到提示“Segmentation fault”的错误信息,只好用“dmesg |more”查看。发现日志很少,但重要的是在后面有连续几个“eth0: Promiscuous mode enabled.”的信息,想不到真的被人使用Sniffer监听了。
查看日志。转到“/var/log”下,发现有的日志被清空,有的却予以保留,不知道这个黑客用意何在。不过从保留的日志中可以看到,入侵者是在“3月26”凌晨开始入侵并取到root的。笔者打开几个没被清空的日志慢慢查看,发现都是晚上一点多进来的,如图2所示:

看启动目录。笔者转到“/etc/rc.d/init.d/”目录看看启动目录中有没可疑的信息,果然,很明显地看到这些文件都被人动过,如图3所示:

随后笔者用“stat functions”想看看文件修改的情况,居然提示没这个命令,然后转到“/etc/rc.d/”目录,又看到了被改动过的文件,如图4所示:

看到上面的结果,估计入侵者还不算是“高手”,因为日志和文件的修改时间都没做装饰,于是笔者猜想历史记录有可能都没清除,直接使用“more ~/.bash_history”打开文件,果然所有操作都还保留在里面没被清空。
顺着历史记录,笔者找到其它一些有问题的目录,如“/dev/logs”等。同时,笔者发现这名黑客还下载了一些CGi类的攻击程序和扫描器,并拿笔者的机器当跳板去扫描和攻击其它网站。
笔者决定看看“functions”文件到底被做了哪些修改,使用命令“more functions”,发现在文件后面被加入了这么一行,如图5所示。

难怪笔者的SSH会多监听来自任何IP的,原来除了原来默认启动的SSH外还在这个地方多出了个nfsd。使用NFS能启动SSH服务?笔者有点不相信,于是使用“strings nfsd”、“strings sshd”看看nfsd和sshd这两个文件,然后对比了一下,发现这个nfsd就是sshd,只不过改了个名字掩人耳目而已。之后再看看“/usr/sbin/nfsd”下的文件时,发现nfsd居然被加上了“s”位,如图6所示。

顺便看看黑客指定的SSH配置文件“/sbin/sshd_config”,果然简单明了啊,如图7所示。

之后笔者陆续发现一些删除日志和其它Shell命令的Shell脚本,比如下面这个清掉Apache日志的脚本(它将Apche日志31日前的全删除了),其Shell内容如图8所示。

并且在Web的cgi-bin目录下有大量的CGi攻击工具,且整个目录被加上了“s”位,Web主目录下也发现一些黑客使用攻击和扫描的工具,如gwee、cgiscan、bscan、explorer.sh、explorer2.sh、pscan、runner、ss、ssvuln和http_get.c、phpfile.c等。
从以上获得的相关信息分析得出,机器被黑客成功入侵,并把它当作跳板去攻击其他人。
入侵响应
下面就根据日志及历史记录着手清理相关的文件,该删除的就删掉,被加进启动文件里面的就将添加进来的内容清掉。
在处理过程中多次遇到不能删除或编辑的文件,笔者发现都使用“chattr”命令加上了不加改变的属性,一一清掉这些属性才得以顺利编辑和删除(使用“chattr -i files”即可)。然后再搜索所有的“SUID和SGID”的文件(使用“find / -type f ( -perm 4000 -o perm -2000) -print”即可)。
文件清理和删除后,就要检测有没有被放了“rootkit”和当前被加载的模块了。笔者简单使用“lsmod”命令查看了一下输出的模块使用情况,但看不出有什么不对,只好借用一些工具了,如“Chkrootkit”。
笔者到它的官方网站http://www.chkrootkit.org/download/下载了最新版本的Chkrootkit工具(目前最新版是0.45),放到“/tmp”目录,用“tar”解压后进去“chkrootkit-0.45”目录,执行“make sence”进行编译,然后执行它“./chkrootkit > /tmp/chkrootkit.txt”。
查看“/tmp/chkrootkit.txt”文件时,笔者发现大量的系统文件被替换并删除,连目前使用的Shell都是已经被替换过的,并且出现在大量的“Segmentation fault”的错误,如图9所示。

看起来系统被删除的东西太多了,笔者再使用“tripwire”进行检测,首先到http://www.tripwire.org/downloads/index.php下载最新版本(目前最新版本是2.3-47),简单配置好后使用。但结果还是一样,出现大量的“Segmentation fault”错误。
由于之前没有对系统进行备份,只能接受重装系统的苦果。
反思
从整个分析检测过程中知道,入侵者是利用discuz论坛的漏洞成功入侵并得到root的。这就要求网管员必须时时关注安全动态和漏洞情况,并为自己的系统做足安全措施,不能有一点的疏忽。其实,在前段时间笔者就看到discuz论坛的漏洞信息,当时也有想到要给自己的论坛补上漏洞,但由于懒,并且老是以个人Web不会被人注意为由,一直给拖了下来,从而导致今天的苦果。
另外,服务器也没做足安全措施,如没用Chroot,使得Web一旦被攻破,系统root就被轻易获取;没做日志备份处理,导致日志被清除,从而无法知道入侵者来自何处等;没有做系统文件备份,一旦系统被严重破坏,无法在第一时间恢复。
有一点也颇值得遗憾,就是由于技术原因,没有在清理后门之后设下蜜罐等待入侵者的再次光临,从而捕捉到他。
文章转载地址:http://www.365master.com/kt_article_show.php?article_id=1642&categ_code=10041003