同学给我介绍了一个电子商务网站,因为自己读的就是电子商务专业,加上对网络安全比较感兴趣,所以看了这样的好网站,当然要帮忙测试下网络安全啦,首先做下常见端口扫描,咦,有状况……
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 Settingswebmaster桌面>目录下:
桌面上有几个常用的快捷方式,想想倒也蛮符合此账号webmaster的身份。再转到C:Documents and Settingswebmaster「开始」菜单程序>目录下,也只是几个网管常用的工具连接。所以我们初步断定webmaster这个账号为合法账号,那么我们就除掉backup$这个用户:net user backiup$ /del。
查完了用户,就轮到查查入侵者是否有在主机上留下特洛伊
[url=http://www.77169.com/Article/List/List_41.html]木马[/url]
程序或是其他远程控制程序此类的后门,这时就要用到前面上传的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 CodeExecution
(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 FilesMicrosoft SQL ServerMSSQLBinn,ren xplog70.dll xplog70.bak(SQL97下ren xpsql70.dll xpsql70.bak)。 搞定,再次把入侵者踢出主机,哈哈~这次入侵者就再也没有进来过了。有人会说,原来反入侵就这么容易,那可就错了,我有位好友这样说过:“起服务名,是一门艺术。”确实,当你对电脑系统有了一定的认识后,服务名和显示名称和描述几乎可以起得以假乱真,即使管理员起了疑心,但也决不敢轻易卸载服务。 好了,反入侵告一段落,也到了我们该走的时候了。日志该改的就改,好好擦下自己的脚印,反入侵时上传的程序创建的文件夹记得别忘了删,创建的用户也得删,网管可分不清谁是谁。即使咱们帮他补洞,可咱本质上还是入侵者,呵呵~最后,在网站上找找网管的电子邮箱,写个大概经过给他,提醒他以后多多留意网络安全方面的最新消息。