黑客告诉你 网络“溢出攻击”攻防录
来源:中国安全信息网 更新时间:2012-04-13
           

随着网络普及,大量公开的Shellcode(“溢出”代码)与溢出攻击原理都能在各大安全网站中找到,也由此衍生了一系列安全隐患,很多稍微了解网络安全知识的人都可以利用现成的攻击软件轻易发动溢出攻击获得服务器权限。

1.什么是“溢出攻击”?

“溢出攻击”就像是将很多沙子倒入装满水的容器时,水就会溢出来一样。目前,大多溢出攻击都是针对缓冲区的溢出。当缓冲区溢出时,过剩的信息对电脑内存中原有内容进行完全替换,如未进行备份,你的内容就永远丢失了。

现在网上公布的攻击程序不仅具有破坏文件的功能,一般还会得到系统权限的CMDSHELL(管理命令行),那它又是如何实现的呢?“溢出攻击”在对缓冲区中的文件进行替换的同时,还会执行一些非法程序,从而得到命令行下的管理员权限,之后攻击者再通过命令行建立管理员账号,对电脑进行控制。

2.“溢出攻击”的实现

一般入侵者在网上了解或发现了可以进行溢出攻击的漏洞后,使用缺陷扫描器(如全面扫描的X-SCAN、针对单一漏洞扫描的IIS WEBDAV等工具)找到并确认存在远程溢出漏洞的电脑,接着便使用利用攻击代码编程成功的Exploit(攻击程序)发送Shellcode攻击,确认远程溢出成功后使用NC或TELNET等程序连接被溢出主机的端口从而得到CMDSHELL。

比如前段时间危害特别大的MS05039溢出漏洞,就是先利用MS05039Scan来扫描有漏洞的电脑,然后打开两个命令提示符窗口,一个用来得到CMDSHELL的NC,一个执行溢出攻击程序,当执行攻击程序后,就得到了系统权限的CMDSHELL。

3.如何对溢出攻击进行防护?

说到防护,首先定时更新有效补丁。但如果攻击者用的是尚未发布补丁的攻击程序呢?所以打补丁是有效,但不是惟一的方法。下面就来看看如何手动设置,对溢出攻击进行防御。

第一步:在Windows 2000/2003,可以建立一个用户,如boxer,密码最好用大于8位的数字与字母的混合方式,而且如果觉得还不够强壮,可以在用户的名称前面加上一个$。这样,可以建立一个隐藏账户,入侵时攻击者无法利用“net user boxer password”命令来修改这个用户的密码。另外强调一点,那个用户必须是USER组的。

第二步:对于Windows 2000/2003,建立用户后,打开C:\WINNT\System32(系统安装在C盘),找到cmd.exe,用右键选择“属性”项,在“安全”标签下修改cmd.exe的访问权限,只保留刚刚新建立的boxer用户对cmd.exe的完全控制权限,将其他用户全部删除,尤其是Everyone。之后,找到net.exe文件,按照cmd.exe的方法进行设置,如果在找到net.exe的同时,还发现了net1.exe,也要一同设置一样的权限,完成上述限制后,最基本的防御措施就完成了。

在Windows XP下,cmd.exe的“属性”选项里已经没有了“安全”标签,可以点击“开始→运行”,输入gpedit.msc,打开“组策略”窗口。在组策略中,依次展开“计算机配置→Windows 设置→软件限制策略”,右击后,选择“创建新的策略”。然后,继续展开“软件限制策略→其他规则”项,右击该项,选择“新键散列规则”。在弹出窗口中点击“浏览”按钮,选择C:\WINNT\System32下的cmd.exe文件,设置“安全级别”为“不允许的”。对net.exe文件执行同样的操作,进行限制。

Windows XP中经过设置后任何用户将不能调用cmd.exe和net.exe命令了。此方法只适合在溢出程序被发布后没有相关的补丁情况下进行应急防护,如果用户不需要用到cmd.exe及net.exe命令。推荐此利用方式禁止运行。

另外还有一种情况就是一些攻击者可能通过其他途径得到用户电脑上某些软件的操控权限,如FTP服务、WEB服务等,在这种情况下很可能出现利用Windows系统本身的TFTP服务进行木马上传或本地溢出程序。所以,最后再来讲解一下防止攻击者利用TFTP:进入C:\WINNT\System32\Drivers\Etc,用“记事本”打开文件services,把TFTP端口改为0。这样,攻击者就无法通过使用TFTP指令传输溢出程序了。当然,为了更好的安全性,也可以将TFTP.EXE文件,按前面介绍的方法,添加为只能让boxer用户才能使用的命令。

通过上面操作后,一般用户的电脑就能防御大部分针对个人用户的溢出攻击了。