缓冲区溢出攻击及其防范实例
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。
图执行dns.exe命令
第2步:寻找漏洞。执行dns.exe -s 192.168.1.2028命令,对主机进行扫描,如图5-23所示,显示出被入侵主机(192.168.1.2028)开放的端口以及操作系统,最主要的是显示“1047:Vulnerability”,意思就是1047端口存在漏洞。
第4步:成功入侵。如图5-25所示,执行telnet192.168.1.2028 1100命令,结果如图5-26所示,我们现在已经成功的入侵了对方的电脑,并且得到了管理员的权限。
第5步:如图5-27所示,在已经成功入侵的电脑上执行简单的操作。
3.缓冲区溢出攻击的防范措施
(1)关闭不需要的特权程序。
(2)及时给系统和服务程序漏洞打补丁。
(3)强制写正确的代码。
(4)通过操作系统使得缓冲区不可执行,从而阻止攻击者植入攻击代码。
(5)利用编译器的边界检查来实现缓冲区的保护,这个方法使得缓冲区溢出不可能出现,从而完全消除了缓冲区溢出的威胁,但是代价比较大。
(6)在程序指针失效前进行完整性检查。
(7)改进系统内部安全机制。