☆ 附录E - 对印第安纳大学Handler系统的分析
2000年4月20日印第安纳大学IT安全办公室接到华盛顿大学Dave Dittrich的通知(随后是Penn State),在华盛顿大学确认一台类似Trinoo Agent的主机正以伪造过的源IP进行DoS攻击,该Agent的二进制文件中固化有印第安纳大学所属IP。
首先我们阻断了与该IP相关的进出通讯,并记录一切入连接企图。主要意图是避免该IP引起更多麻烦,但我们不想惊动入侵者。没有重启主机或者其它针对网络的物理改变(比如拔掉网线),以免运行在主机上的程序监测到这些行为并删除自身。
译注: 这个想法好,监测拔掉网线的行为并销毁自身。一般安全工程师给客户的建议中就有,如果条件允许,尽可能先拔掉网线再检查。现在看来,应该是从路由上阻断通讯,而不是拔掉网线。
一旦系统与网络其它部分隔离开来,我们就可以运行lsof,输出报告在后面。这个输出表明进程rpc.wall侦听好几个UDP端口,其中包括6838/UDP,Dittrich先生提到他那边的Agent进程向该端口发送报文。/usr/bin/...被打开读取了几百次,这个文件包含一个IP列表,做了点简单的ASCII变换加密。这些IP地址似乎是受该Handler控制的Agent(s)地址。华盛顿大学那台Agent确实在这个列表里。我们发现一个类似的文件/dev/grab/...,想必为另一个master server所用。
这种文件中包含类似行
ckd`chj`cc`jb<
ASCII变换加密仅仅是在每个字符上增加50,所以最终IP是(减去50即可得到) 192.168.11.80
可以用如下Unix命令一次性转换完毕tr 'b-k`' '0-9.' | sed 's/<$//'
我们得到76个IP地址,大概都是DDoS slave agents.
通过搜索原始设备(raw disk)找到了rpc.wall的源代码。入侵者很好地删除了原来的源代码,不仅释放了inode,也清除了内容本身。但是在编译过程中没有使用gcc -pipe,预编译代码被写入一个临时文件,最终传递给编译器。尽管这个临时文件由编译器删除了,但这种删除未能清除内容本身,通过读取原始设备可以还原出来。
分析这个源代码后,发现它能进行"stream"、"mstream"攻击。mstream攻击显然是多个IP同时进行stream攻击。我们相信这将导致比先前所见更大范围的DDoS攻击。还原出来的源代码附在报告尾部。此刻我们意识到这是相当重要的证据,于是用dd将整个文件系统复制出来,通过网络传输到笔记本电脑上。然后可以只读mount这个文件继续检查 在/bin/下发现名为flukek.tgz的rootkit。它替换了cron、in.timed、inetd、login、named、passwd、rshd、syslogd、tcpd等等。下列文件自系统安装以来被增加到/bin、/sbin、/usr/bin以及/usr/sbin中。似乎没有文件被增加到/usr/libexec或/usr/local中。列出的时间是inode change times,/usr/bin/old似乎是以前的login-rw-r--r-- 1 root wheel 2387704 Dec 18 16:37 bin/flukek.tgz-r-sr-xr-x 1 root daemon 12656 Apr 13 23:39 bin/login-rw-r--r-- 1 root wheel 1401 Apr 24 12:11 usr/bin/...-rwsr-xr-x 1 root wheel 20164 Mar 31 14:50 usr/bin/old-rwxr-xr-x 1 root wheel 33610 Apr 13 23:37 usr/bin/rpc.wall-rwxr-xr-x 1 root wheel 32727 Apr 5 21:56 usr/bin/xfs-r-xr-xr-x 1 root daemon 20164 Mar 31 14:50 usr/bin/xstat-rwxr-xr-x 1 root wheel 111500 Mar 31 20:09 usr/sbin/dnskeygen-rwxr-xr-x 1 root wheel 266712 Mar 31 20:09 usr/sbin/irpd-rwxr-xr-x 1 root wheel 528612 Mar 31 20:09 usr/sbin/named-rwxr-xr-x 1 root wheel 7166 Mar 31 20:09 usr/sbin/named-bootconf-rwxr-xr-x 1 root wheel 285076 Mar 31 20:09 usr/sbin/named-xfer-rwxr-xr-x 1 root wheel 37056 Mar 31 20:09 usr/sbin/ndc
似乎没有库文件、内核模块或PAM模块被替换。
/etc/passwd和/etc/shadow最近被修改过-rw-r--r-- 1 root wheel 849 Feb 17 00:57 /mnt/etc/passwd-rw------- 1 root wheel 884 Feb 17 00:57 /mnt/etc/passwd--r-------- 1 root wheel 794 Feb 17 00:57 /mnt/etc/shadow-r-------- 1 root wheel 658 Nov 15 10:07 /mnt/etc/shadow-
/etc/shadow的备份文件于11月5日创建,这给了我们一个何时增加帐号的线索www:MyjKA0KGHplq6:11004:0:99999:7:::login1:MyjKA0KGHplq6:11004:0:99999:7:::web:af47L/OTL7K6.:11004:0:99999:7:::x::11004:0:99999:7:::
我没有试图破解这些口令,仅仅试着以"x"登录,失败了。
/etc/services和/etc/inetd.conf被改变/etc/services:a 1111/tcp/etc/inetd.confa stream tcp nowait root /usr/sbin/tcpd in.telnetd
同样,我并示试图登录它
译注: 如果这样,我们可以大范围扫描1111/TCP,结合前面那个RID下面三个文件是现在所能找到的惟一含有相关信息的日志文件/.bash_history:nslookupcd /binwps xftp 192.168.0.1 21w/var/log/secure:Mar 29 18:39:18 herc in.ftpd[824]: connect from 10.156.97.157Mar 29 19:29:15 herc in.ftpd[876]: connect from 10.156.97.111Mar 29 19:49:58 herc in.ftpd[882]: connect from 10.156.97.111Mar 29 19:50:21 herc in.ftpd[887]: connect from 10.156.97.111Mar 31 14:58:14 herc in.telnetd[4224]: connect from 10.54.115.105Apr 3 23:54:02 herc in.telnetd[10403]: connect from 10.72.135.165Apr 4 05:44:34 herc in.telnetd[11235]: connect from 10.103.26.127Apr 4 08:28:28 herc in.ftpd[11397]: connect from 10.31.68.158Apr 4 11:36:16 herc in.ftpd[11565]: connect from 10.31.68.158Apr 7 05:33:32 herc in.telnetd[16737]: connect from 10.22.82.6Apr 7 07:32:19 herc in.telnetd[16849]: connect from 10.22.82.6Apr 7 07:33:01 herc in.telnetd[16851]: connect from 10.22.82.6Apr 7 07:33:20 herc in.ftpd[16852]: connect from 10.22.82.6Apr 7 07:34:11 herc in.ftpd[16855]: connect from 10.22.82.6Apr 7 07:35:22 herc in.ftpd[16859]: connect from 10.22.82.6Apr 7 07:37:02 herc in.rlogind[16860]: connect from 10.22.82.2Apr 7 07:37:12 herc in.fingerd[16863]: connect from 10.22.82.2Apr 7 07:37:18 herc in.rexecd[16866]: connect from 10.22.82.2Apr 7 07:37:22 herc in.rshd[16867]: connect from 10.22.82.2Apr 7 07:37:24 herc in.telnetd[16868]: connect from 10.22.82.2Apr 7 07:37:30 herc in.ftpd[16870]: connect from 10.22.82.2Apr 8 13:53:02 herc in.ftpd[19028]: connect from 10.247.49.53Apr 10 23:00:05 herc in.ftpd[23304]: connect from 10.8.148.36Apr 10 23:07:51 herc in.ftpd[23347]: connect from 10.8.148.36Apr 13 06:50:02 herc in.telnetd[27895]: connect from 10.215.99.125Apr 13 10:52:27 herc in.ftpd[28170]: connect from 10.114.238.145Apr 13 10:55:50 herc in.ftpd[28171]: connect from 10.114.238.145Apr 13 11:02:39 herc in.ftpd[28217]: connect from 10.114.238.145Apr 16 16:29:47 herc in.ftpd[1734]: connect from 10.161.208.34Apr 16 16:30:10 herc in.ftpd[1737]: connect from 10.161.208.34Apr 23 18:59:36 herc in.telnetd[14746]: connect from 10.27.211.234Apr 24 17:02:03 herc in.telnetd[16505]: connect from 10.79.16.203/var/log/wtmp (reverse chronological order):root pts/2 :0 Mon Apr 24 18:05 still logged inroot pts/0 :0 Mon Apr 24 17:24 still logged inftp ftp XXXXXX-XXXXXXXX. Thu Apr 13 10:02 - 10:02 (00:00)ftp ftp XXXXXX-XXXXXXXX. Thu Apr 13 09:55 - 09:56 (00:00)ftp ftp XXXXXXX-X.XXXXXX Mon Apr 10 22:07 - 22:09 (00:01)ftp ftp XXX.XXX.82.6 Fri Apr 7 06:34 - 06:35 (00:00)ftp ftp XXX.XXX.82.6 Fri Apr 7 06:33 - 06:34 (00:00)ftp ftp XXXXX.XX-XXXXXXX Tue Apr 4 10:36 - 10:36 (00:00)ftp ftp XXXXXXXX-XXXX.XX Wed Mar 29 19:50 - 19:50 (00:00)ftp ftp XXXXXXXX-XXXX.XX Wed Mar 29 19:29 - 19:29 (00:00)reboot system boot Wed Mar 29 16:17 (26+20:09)