打印本文 打印本文  关闭窗口 关闭窗口  
攻防:一次入侵兼反入侵的实例
作者:陈鹏  文章来源:eNet  点击数  更新时间:2009/9/11 23:16:40  文章录入:陈鹏  责任编辑:陈鹏

同学给我介绍了一个电子商务网站,因为自己读的就是电子商务专业,加上对网络安全比较感兴趣,所以看了这样的好网站,当然要帮忙测试下网络安全啦,首先做下常见端口扫描,咦,有状况……

6129端口开了,6129是上段时间在网上比较流行的一个远程控制软件的端口,想想网管自己应该不会给自己主机装个这样的玩意儿吧。难道……嗯,继续扫扫,调出流光,扫啊扫,建立空连接失败,没有弱口令,IIS没有漏洞,MSSQL连SA都改了密码……不会啊~这个网站防御措施做的还是蛮足的啊,怎么又像被人入侵过的痕迹呢?嗯,试试最近比较流行的那个MSSQL溢出漏洞,试试看……

溢出成功!进去了。

看来,如果没有估计错的话,那么那个远程控制软件就是以前的入侵者留下来的。作为一个电子商务网站,不能够有效地解决网络安全这个问题,难怪国人现在对网上交易还不大放心。既然如此,那就好事做到底,帮网管把这主机的漏洞补上,堵了入侵者的后门,断了入侵者的后路。

首先把要用到的工具都上传到目标主机上面去,建个IPC$管道,上传一些待会分析要用到的工具,如mport.exe这个能查看进程对应端口的体积小却功能强大工具,看下这主机有多少用户属于管理员组:

根据经验,像backup$这类的用户就一定是入侵者留下来的账号。因为在命令行下,像hacker$这样的用户名你用net user是看不到的,系统默认会隐藏掉。但是有个致命的缺点,就是用net localgroup则可以列出组中所有用户,无论加了$还是没有加。接着继续判断其他用户的合法度,转到C:\Documents and Settings目录下,这个目录记录了曾经在目标主机上登陆过的用户的一些信息:

每个文件夹前面的创建日期可以给我们一点提示:管理员账号administrator创建于2002-02-01,除了webmaster是2002-11-19以外,其他的用户都比较接近,所以我们把重点放在webmaster上面。这时我们需要得到更多有个这个账号的信息,net user webmaster,得到此账号上次登陆时间是“上次登录 2002/11/29 上午 08:44”,也就是周五早上上班时间登陆的,再转向C:\Documents and Settings\webmaster\桌面>目录下:

桌面上有几个常用的快捷方式,想想倒也蛮符合此账号webmaster的身份。再转到C:\Documents and Settings\webmaster\「开始」菜单\程序>目录下,也只是几个网管常用的工具连接。所以我们初步断定webmaster这个账号为合法账号,那么我们就除掉backup$这个用户:net user backiup$ /del。

查完了用户,就轮到查查入侵者是否有在主机上留下特洛伊木马程序或是其他远程控制程序此类的后门,这时就要用到前面上传的mport.exe啦。执行下mport.exe,咦,又有情况:

主机竟然开了远程终端,而且被换在了2887端口而不是默认的3389端口,看来又是入侵者的杰作。

命令行下:netstat –an看看现在都有谁连接到主机上:

哈!真是巧,有人在连接终端,原来入侵者就在身边,那么补漏的工作更加刻不容缓。

那么咱们也登陆上终端看看,说不定会有新的发现。登上终端,输入刚刚自己加的账号,熟悉的桌面又展现眼前.继续咱们的补漏工作。记得刚开始扫常见端口的时候主机开了80。查一查原来是台WEB发布服务器,主机上有50来个网站,主机已经打了SP3,不存在idq/ida溢出,Unicode和二次解码漏洞也不存在,主目录设在了E盘下,也不必担心那几个默认的WEB共享文件夹。接着看看主机运行了哪些服务,按照以往的经验,凡是服务名开头的字母没有大写的,除了pcanywhere以外,都是入侵者自己留的后门或是其他别的什么。还有一些服务名没有改的远程控制软件一眼就可以看出来,像比较流行的Radmin。

入侵者虽然把服务端改成了sqlmsvr.exe这样比较容易迷惑人的名字,可是服务名没有改,还是很容易就被识破。

入侵者把远程终端的端口和显示名称及描述都改了,可是服务名称还是没有改到,所以并不难找出来。

服务名称还是把入侵者出卖了,找到这些后门后,先停服务,再把启动类型改为禁用!

接下来我们就要把我们进来时的漏洞堵上,到google搜下,这是有关MSSQL这个溢出漏洞补丁的相关信息:

厂商补丁:

Microsoft已经为此发布了一个安全公告(MS02-039)以及相应补丁:

MS02-039:Buffer Overruns in SQL Server 2000 Resolution Service Could Enable Code
Execution (Q323875)

链接http://www.microsoft.com/technet/security/bulletin/MS02-039.asp

补丁下载:

* Microsoft SQL Server 2000:

http://www.microsoft.com/Downloads/Release.asp?ReleaseID=40602

下载后展开,得到ssnetlib.dll这个文件,这时只要dir ssnetlib.dll /s找出主机中所有的老ssnetlib.dll这个文件,改名后以新的ssnetlib.dll替换掉老ssnetlib.dll就把MSSQL这个溢出漏洞补上了。

命令行下:query user,用户是guest,嗯,估计是被克隆过的用户。

查下是不是,果然!感觉补漏工作应该做得差不多了,也是时候跟入侵者say byebye了~

命令行下:net user guest /active:no,把guest这个用户禁用。

命令行下:logoff 1。

入侵者已经被我们踢出去了,现在是检验我们劳动成果的时候了,静静地netstat –an,看入侵者是否还能重新进来,过了好一会,发现他连接到主机1433端口,而且guest用户又被重新激活,奇怪了,明明MSSQL溢出漏洞已经补上了啊,。难道入侵者在MSSQL中留了后门?不会啊,都是几个很正常的用户。思考中……哦!对了,入侵者可能自行改了SA的密码,然后再利用SA的xp_shell重新取得权限!好,既然我们想到了这步,就把SA的xp_shell也去掉,断入侵者的后路!

要把SA这类用户的xp_shell去掉,要得到xp_shell,就得调用到xplog70.dll这个文件(SQL97下是xpsql70.dll),那么我们只要把这个文件给改名了,那么就无法得到xp_shell,命令行转到C:\Program Files\Microsoft SQL Server\MSSQL\Binn,ren xplog70.dll xplog70.bak(SQL97下ren xpsql70.dll xpsql70.bak)。

搞定,再次把入侵者踢出主机,哈哈~这次入侵者就再也没有进来过了。有人会说,原来反入侵就这么容易,那可就错了,我有位好友这样说过:“起服务名,是一门艺术。”确实,当你对电脑系统有了一定的认识后,服务名和显示名称和描述几乎可以起得以假乱真,即使管理员起了疑心,但也决不敢轻易卸载服务。

好了,反入侵告一段落,也到了我们该走的时候了。日志该改的就改,好好擦下自己的脚印,反入侵时上传的程序创建的文件夹记得别忘了删,创建的用户也得删,网管可分不清谁是谁。即使咱们帮他补洞,可咱本质上还是入侵者,呵呵~最后,在网站上找找网管的电子邮箱,写个大概经过给他,提醒他以后多多留意网络安全方面的最新消息。



【责任编辑 徐洋】

打印本文 打印本文  关闭窗口 关闭窗口