安全|一个Linux系统被攻击的分析过程作为运维人员,必须了解一些安全运维准则。同时,要保护自己负责的业务,首先要站在攻击者的角度思考问题,修复任何潜在的威胁和漏洞。下面通过一个案例来介绍服务器被rootkit入侵时的处理思路和处理过程。Rootkit攻击是Linux系统下最常见的攻击方式和攻击方式。1、攻击现象这是客户的门户服务器,托管在电信机房。客户收到中国电信的通知:由于服务器不断向外界发送数据包,100M带宽用完,所以中国电信切断了服务器的连接。网络。本服务器为Centos5.5版本,对外开放80、22端口。我从客户那里了解到,网站的访问量不大,所以带宽占用不会太高,100M带宽是绝对不可能用完的,所以很有可能是服务器流量过大攻击,所以登录服务器做详细检查。2、初步分析在电信人员的配合下,通过交换机检测服务器的网络流量,发现主机确实有外部80端口扫描流量,于是登录系统查看端口由系统通过netstat–an命令打开。奇怪的是,没有找到80端口相关的网络连接。然后使用ps–ef、top等命令也没有发现可疑进程。所以怀疑是不是系统被植入了rootkit。为了证明系统是否被植入rootkit,我们对网站服务器下的ps、top等命令和之前备份的同版本可信操作系统命令进行md5sum校验,发现这两个网站服务器下的命令确实被修改了,可以断定这台服务器已经被攻陷,安装了rootkit级别的后门程序。3、断网分析系统由于服务器一直在发包,首先要做的就是断网,然后分析系统日志,寻找攻击源。但是,系统命令已被替换。如果您继续在此系统上执行操作,它将变得不可信任。有两种方法可以避免这种情况。第一种方法是把这台服务器的硬盘拆下来,挂载到另一台安全主机上进行Analyze。另一种方式是将同版本可信操作系统的所有命令复制到入侵服务器下的某个路径下,然后在执行命令时指定命令的完整路径。这里使用第二种方法。我们首先查看系统的登录日志,看是否有可疑的登录信息,执行了如下命令:more/var/log/secure|grepAccepted查看命令的输出后,有一条日志引起了我们的怀疑:Oct303:10:25webserversshd[20701]:Acceptedpasswordformailfrom62.17.163.186port53349ssh2该日志显示,10月3日凌晨3点10分,一个IP地址为62.17.163.186的邮件账号成功登录系统。Mail是系统自带的帐号。默认情况下是无法进行登录操作的,IP62.17.163.186经验证是来自爱尔兰的地址。从邮件账号的登录时间来看,早于网站服务器被攻击的时间。然后查看系统密码文件/etc/shadow,发现可疑信息:mail:$1$kCEd3yD6$W1evaY5BMPQIqfTwTVJiX1:15400:0:99999:7:::很明显,邮件账号设置了密码,并且被修改了之所以使用邮件账户进行远程登录,很可能是因为入侵者想留下一个隐藏账户,方便以后再次登录系统。然后继续查看其他系统日志,比如/var/log/messages和/var/log/wtmp都是空文件。可以看出入侵者已经清理了系统日志文件。至于为什么/var/log/secure文件没有被清除,只是未知。4.寻找攻击来源至此,我们知道的是有一个邮件账号登录了系统,但是为什么这个网站服务器不断的向外界发送数据包呢?需要找到对应的攻击源。通过在这台服务器上替换ps命令查看系统当前运行的进程,发现了一个新的可疑点:nobody2276516Sep29?4-00:11:58.t这个.t程序是什么?继续执行top命令,结果如下:PIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND22765nobody1501740m1362m1228S98.391.52892:19.t从输出来看,t程序已经运行了4天左右。内存和cpu,这也是之前客户反馈的网站服务器异常慢的原因。从这个输出中,我们得到t程序的进程PID为22765,接下来根据PID,找到执行程序的路径:进入内存目录,查看对应PID目录下的exe文件信息:[root@webserver~]#/mnt/bin/ls-al/proc/22765/exelrwxrwxrwx1rootroot0Sep2922:09/proc/22765/exe->/var/tmp/…/apa/t这样完整的程序执行路径对应到进程被发现。这条路非常隐蔽。由于默认情况下/var/tmp目录对任何用户都是可读的,因此入侵者利用此漏洞在/var/tmp目录中创建了一个文件。“...”目录,而攻击的程序源就隐藏在该目录下,进入/var/tmp/.../目录,发现了入侵者放置的一系列rootkit文件,列表如下:[root@webserver...]#/mnt/bin/ls-aldrwxr-xr-x2nobodynobody4096Sep2922:09apa-rw-r--r--1nobodynobody0Sep2922:09apa.tgzdrwxr-xr-x2nobodynobody4096Sep2922:09cacadrwxr-xr-x2x0bodynobody4902:09cacadrwxr-xrw9nobodynobody0Sep2922:09apa.tgzdrwxr-xr-x2nobodynobody4096-x2nobodynobody4096Sep296Sep29ha1nobodynobody0Sep2922:10kk.tar.gz-rwxr-xr-x1nobodynobody0Sep2922:10login-rw-r--r--1nobodynobody0Sep2922:10login.tgz-rwxr-xr-x1nobodynobody0Sep2922:10z通过对这几个文件的分析,基本判断这就是我们要找的程序攻击源,其中:z程序用于清除系统日志等相关信息,例如执行:./z62.17.163.186该命令执行后,将清除系统中所有与62.17.163.186相关的日志。apa目录下有一个后门程序t,这是我之前在系统中看到的。运行这个程序后,这个程序会自动读取apa目录下的ip文件,ip文件记录了各种ip地址信息。我猜想这个t程序应该是扫描ip文件中网站记录的所有ip信息,然后获取远程主机的权限,可见这个网站服务器已经是入侵者的肉鸡了。haha目录下的程序是用来替换系统相关命令的,也就是这个目录下的程序让我们看不到操作系统的异常情况。登录程序是一个用来代替系统登录程序的木马程序。该程序还可以记录登录帐号和密码。5、查找攻击原因至此,服务器的攻击已经基本清楚,但是入侵者是如何入侵这台服务器的呢?这个问题很重要。必须找到入侵的根源,才能从根本上堵住漏洞。要想知道入侵者是如何进入服务器的,就必须了解这台服务器的软件环境。本服务器是基于java的web服务器。安装的软件有apache2.0.63,tomcat5.5,apache和tomcat之间使用mod_jk模块集成,apache对外开放80端口,而由于tomcat不对外开放端口,所以问题集中在阿帕奇。通过查看apache的配置,发现apache只处理部分静态资源请求,而且大部分网页都是静态页面,所以通过网页入侵系统的可能性不大。由于漏洞可能来自apache,尝试查看apache日志,或许可以发现一些可疑的访问痕迹,通过查看access.log文件,发现如下信息:62.17.163.186--[29/Sep/2013:22:17:06+0800]"GEThttp://www.xxx.com/cgi-bin/awstats.pl?configdir=|echo;echo;ps+-aux%00HTTP/1.0"20012333"-""Mozilla/5.0(Windows;U;WindowsNT5.1;pt-BR;rv:1.8.1)Gecko/20121010Firefox/2.0"62.17.163.186--[29/Sep/213:22:17:35+0800]"GEThttp://www.xxx.com/cgi-bin/awstats.pl?configdir=|echo;echo;cd+/var/tmp/.../haha;ls+-a%00HTTP/1.0"2001626"-""Mozilla/5.0(Windows;U;WindowsNT5.1;pt-BR;rv:1.8.1)Gecko/20121010Firefox/2.0"至此,漏洞源被发现。结果证明是awstats.pl脚本中configdir中的一个漏洞。在了解了这个服务器的应用之后,客户确实使用了Awstats的一个开源插件来做网页访问统计。通过该漏洞,攻击者可以直接在浏览器上对服务器进行操作,如查看进程、创建目录等。从上面第二条日志可以看出,攻击者在正常浏览器中切换到了/var/tmp/.../haha目录。这个脚本漏洞比较恐怖,但是Awstats官网已经给出了修复方法。对于这个漏洞,修复方法很简单。打开awstats.pl文件,找到如下信息:if($QueryString=~/configdir=([^&]+)/i){$DirConfig=&DecodeEncodedString("$1");}修改如下:if($QueryString=~/configdir=([^&]+)/i){$DirConfig=&DecodeEncodedString("$1");$DirConfig=~tr/a-z0-9_-/./a-z0-9_-/./cd;}6.揭开谜底通过上面一步一步的分析介绍,这个服务被入侵的原因和过程已经很清楚了,大致过程如下:(1)攻击者进入系统通过Awstats脚本awstats.pl文件的漏洞,在/var/tmp目录下创建了一个隐藏目录,然后将rootkit后门文件传递给该路径。(2)攻击者通过植入后门程序获得系统超级用户权限,进而控制服务器,通过服务器向外发送数据包。(3)攻击者的IP地址62.17.163.186可能是通过代理来的,也可能是攻击者控制的另一台bot服务器。(4)攻击者为了永久控制机器,修改了系统默认账户mail的信息,使该邮件账户可登录,并设置了该邮件账户的密码。(5)攻击完成后,攻击者通过后门程序自动清除系统访问日志,销毁证据。通过分析本次入侵过程,发现入侵者的手段非常简单和普遍。虽然入侵者删除了系统的一些日志,但是仍然留下了很多可以查的痕迹。其实还可以查看用户文件下的.bash_history,这个文件就是用户操作命令的历史记录。七、如何恢复网站由于系统文件被更改更换,系统已经完全失信,建议备份网站数据,重新安装系统。基本步骤如下:安装稳定版操作系统,删除系统默认和用户不需要的。系统登录方式改为公钥认证方式,避免密码认证的缺陷。安装更高版本的apache和最新稳定版本的Awstats程序。使用Linux下的Tcp_Wrappers防火墙来限制ssh登录的源地址。
