翻译:Batman
by Lance Spitzner
Tue May 23 2000
lance@spitzner.net
本文是“了解你的敌人”系列中的续篇。前三篇文章中覆盖了黑客社团所使用的工具和
战术。这里我们将介绍
如何把前面文章里面介绍的方法集中起来,目的是为了让你能够掌握如何面队威胁你的
网络安全的入侵者们。
背景:
本文中所有相关的信息都是由我的honeypot(http://www.enteract.com/~lspitz/
honeypot.html)收集到的。在我的honeypot上默认安装的是Red Hat 6.0。按照默认安
装好后没有进行过其它附加的改动,所以在它上面存在的安全漏洞对于其它默认安装的
Red Hat 6.0系统也是存在的。同样,在下面文章中出现的所有数据都是没有修改过的。
所有的IP地址,用户帐号,包括所有的键盘输入都是真实的。为了保护系统的安全只有
密码数据被改动了,本文的目的就是为了更好的来理解黑客是如何思维和攻击的。 所有
的嗅探器格式都是使用了
snort格式。Snort是我使用的嗅探器和入侵检测系统,这是因为它的灵活性,兼容性和
免费软件的特点。这次入侵过程中黑客所有的行动都被snort记录下来了,同时我使用了
www.whitehats.com提供的入侵分析资料。你可以去那查询到我这里提到的所有详细技术
资料。当你在阅读本文的时候,可以注意到黑客使用了各种不同的操作系统,虽然本文
将这个黑客称呼为“她”,但是我们并不真正知道他的性别到底是什么。
关于这次攻击
在4月26日06:43时,snort向我报警,报告说现在我的系统中某一台服务器遭受到'n
oop'攻击。包含有noops 命令的包一般预示这是一次缓冲溢出攻击。在本次攻击中,
snort检测到这次攻击并且将攻击者的行动记录到/var/log/messages文件中(该文件由s
watch程序监视)。申明:在本文中,IP地址172.16.1.107是我的honeypot(就是被攻击
的服务器)的IP地址。而其它的IP地址都是黑客所使用的IP地址
Apr 26 06:43:05 lisa snort[6283]: IDS181/nops-x86: 63.226.81.13:1351 -> 172.
16.1.107:53
虽然我的honeypots每天都会收到无数的扫描、探测、查询。但是,这条信息马上引
起了我的注意,因为它预示这系统已经受到威胁了。果然,还不到两分钟,系统日志就
告诉我入侵者已经连接上并且登录上了。
Apr 26 06:44:25 victim7 PAM_pwdb[12509]: (login) session opened for user twi
n by (uid=0)
Apr 26 06:44:36 victim7 PAM_pwdb[12521]: (su) session opened for user hantu
by twin(uid=506)
显然,入侵者已经得到了超级用户的访问权限,并且现在已经控制了系统。但是这
是怎么发生的了?下面我们将一步一步的说明她是如何干的。
攻击分析
在学习这次攻击最好的起点就是刚开始黑客是如何开始的。通常黑客做的第一件事
情就是收集信息,他们 需要先判断系统是否存在安全漏洞然后才能够进行攻击。如
果你的系统的安全受到威胁,通常表示黑客早 已经注意到你的系统了。所以,我们
开始做的第一件事情是,黑客到底收集到我们系统上的什么信息了。
注意上面的报警,攻击是针对53端口(DNS的BIND服务的)。所以我开始检查我的s
nort报警中和DNS扫描相关的信息。果然,我发现了一个来自与同一入侵主机的查询DNS
版本的扫描记录。
Apr 25 02:08:07 lisa snort[5875]: IDS277/DNS-version-query: 63.226.81.13:449
9 -> 172.16.1.107:53
Apr 25 02:08:07 lisa snort[5875]: IDS277/DNS-version-query: 63.226.81.13:463
0 -> 172.16.1.101:53
请注意扫描的日期,四月25日。而我们的系统是在四月26日被相同的主机攻击的。
我们的主机是在扫描后安全受到威胁的。所以我猜测这是由黑客在运行一个自动扫描工
具,该工具专门扫描已知的DNS安全漏洞。
当扫描结束后,这个黑客分析扫描结果,找出那些有安全漏洞的主机(包括我们的),
然后进行攻击。这些过程我们都已经在第一篇文章中介绍了,下面继续我们的分析。根
据我们的入侵检测软件分析,表明我们遭遇到一个熟知DNS漏洞的script kiddie(就是
那些只依赖工具进行攻击的黑客)的攻击了。但是攻击是如何进行的
了,下面让我们来进一步地分析。
进行攻击
类似与许多商业入侵检测系统,snort可以收集到所有IP的具体包内容。我们正是要
使用这个能力来分析这次攻击。攻击信息使用tcpdump二进制格式保存在snort的日志文
件中(译者注:也许有人会疑惑,为什么攻击者不把日志给毁掉了,其实作者已经在他
的第二篇文章中介绍了,他的日志是存放在另外一台机器上的,同时他还在他的局域网
中安装有sniffer--snort,所以这个黑客就是销毁了被他攻陷的主机上的日志,但是作
者还是完整的记录下她的一举一动了。)我从头到尾查询了我的snort日志,当然我也不
局限于只查找来自主机63.336.81.13的记录,因为攻击者很有可能要使用到其他的系统
。最终事实证明,我们的这个攻击者至少使用了
三种不同的系统来运行她的exploit程序。这个exploit的目的就是要获取到远程机器上
的root shell。一旦这个黑客得到了root shell,他们就能够执行任意的命令。最常见
的是在文件/etc/passwd和/etc/shadow中放置帐号。
下面就是这个黑客所执行的指令。当她一得到了root权限后,她就执行了下面的命令:
cd /; uname -a; pwd; id;
Linux apollo.uicmba.edu 2.2.5-15 #1 Mon Apr 19 22:21:09 EDT 1999 i586 unknow
n
/
echo "twin::506:506::/home/twin:/bin/bash" >> /etc/passwd
echo "twin:w3nT2H0b6AjM2:::::::" >> /etc/shadow
echo "hantu::0:0::/:/bin/bash" >> /etc/passwd
echo "hantu:w3nT2H0b6AjM2:::::::" >> /etc/shadow
我们的黑客运行了一些命令。首先,她要证实自己是在什么系统上(uname-a),然后
是当前在什么路径(pwd)接着是查询她的(id)。同时她还给系统增加了两个帐号,twin和
hant,并且这两个帐号都拥有相同的密码。请注意twin的UID为506但是hantu的帐号是U
ID为0 (题外话,hantu是指鬼的意思). 记住,大多数系统都是不允许UID为0的帐号使用
telnet进入系统的。所以她必须要创建另外的一个帐号进行远程访问,然后使用su命令
获取root权限。所以,我们的黑客运行了一个DNS攻击工具,获取到一个root shell,接
着马上就是插入两个帐号。接着在90秒内,她telnet进入系统获取了root访问权限,请
注意看日志中记录的时间。好了,下面她又该干什么拉呢?
Apr 26 06:43:05 lisa snort[6283]: IDS181/nops-x86: 63.226.81.13:1351 -> 172.
16.1.107:53
Apr 26 06:44:25 victim7 PAM_pwdb[12509]: (login) session opened for user twi
n by (uid=0)
Apr 26 06:44:36 victim7 PAM_pwdb[12521]: (su) session opened for user hantu
by twin(uid=506)
获取访问权限
幸运的是,telnet是一个明文的协议,所有的数据都是不加密的。这意味着我们