论文部分内容阅读
随着信息与网络技术的发展,以及这些技术在军事领域的不断渗透,计算机网络已成为连接未来信息化战场的枢纽。对计算机的攻击,能够获得大量宝贵的情报以及达到其它武器系统所不能及的效果。因此对以计算机为基础的网络攻击与防护就自然成为军事领域密切关注的问题。缓冲区溢出攻击是黑客攻击的主要手段,给网络信息安全带来了越来越大的危害。已有的防御手段研究相对滞后,目前国内外的研究大多集中在某个具体漏洞的利用与防范上,缺乏全面的研究。并且现有的缓冲区溢出防御手段也存在诸多不足之处。针对这一问题,论文以缓冲区溢出攻击与防御研究为主题,力图系统地对缓冲区溢出多方面的性质进行综合研究。论文首先介绍了缓冲区和堆栈的基本概念,研究并总结了缓冲区溢出的原理和过程。论文还通过一些攻击示例介绍了系统如何被溢出攻击,并介绍了一些常用的攻击方法。然后,论文研究了Windows环境下基于堆栈的缓冲区溢出攻击的技术细节且从操作系统的体系结构出发深究了这种漏洞的成因。从Windows环境中缓冲区溢出的利用方法出发,讲述了漏洞发掘的技术。接着,论文研究了缓冲区溢出攻击里最关键的部分Shellcode的编写方法,总结了Shellcode的一般流程,具体说明了如何编写突破系统版本限制的Shellcode的编写要用到的技术,其中关键是找到Kernel32.dll的基址,给出了三种找Kernell32.dll的方法,给出了多种突破现有防火墙的方法,给出了如何突破现有Windows的堆栈保护技术的方法。还总结出了一个精确定位溢出点的公式。在此基础上,论文研究并总结了目前防御缓冲区溢出攻击的一些常用方法,主要从主客观两方面来讨论。主观方面,主要是要提高程序员编写代码的质量,形成良好的编程风格;客观方面,主要是从系统和软件做一些相关的检查和优化。数组和指针边界检查是目前常用的防止缓冲区溢出的方法,而且它能很有效的防止缓冲区溢出漏洞攻击。但是,常规的边界检查所带来额外性能开销也是相当大的。论文提出了数组和指针边界检查的优化方法,并且提出了一条特殊的针对边界检查的指令,结合相应的软件优化方法,并且在仿真平台上做了模拟仿真,通过一些基准测试了优化方案,并分析了相应的实验结果,得到了较好的优化结果。