论文部分内容阅读
漏洞挖掘和利用技术的研究是网络信息安全的重要研究领域。随着软件工业的发展,软件的安全漏洞问题日益突出。如何发现软件的安全漏洞,如何防范漏洞被利用,从而降低漏洞的危害程度,是漏洞研究始终围绕的核心问题。本文主要研究了Fuzzing漏洞挖掘方法与溢出漏洞利用分析技术。在漏洞挖掘方法中,主要研究基于进化Fuzzing测试的漏洞挖掘方法。Fuzzing测试技术是一种通用性强、适用性广、自动有效的漏洞挖掘技术,但它仍有随机黑盒测试的局限性,其一是随机构造的测试数据冗余程度高,其二是因为测试的过程中不了解程序的逻辑结构而导致测试效率低,其三是对测试效果及发现漏洞的危害程度不好评估。针对Fuzzing测试的这些不足,本文阐述了将Fuzzing测试技术和程序分析技术相结合,并对测试数据进行遗传优化—灰盒导向的进化Fuzzing测试的方法。在应用遗传算法对测试数据优化的具体问题中,适应度函数的设计设计是关键,本文并提出基于动态控制流差异的适应度函数,并提出应用序列比对算法计算动态控制流差异。并根据这种基于进化的Fuzzing测试的漏洞挖掘方法,在Windows平台下设计实现了进化的Fuzzing测试系统。该系统通过静态分析技术得到程序的结构和控制逻辑关系等程序的静态信息,为衡量程序在测试过程中的覆盖率提供参照,并为利用进化搜索算法构造测试数据建立搜索空间;通过动态跟踪技术在Fuzzing测试中跟踪程序的动态控制流,得到基于控制流的测试覆盖分析,进一步对测试用例的适应度进行评估,应用遗传算法根据测试覆盖和动态控制流差异等反馈信息指导下一代测试数据的生成,对测试数据进行优化,从而提高Fuzzing测试的效率和效果。Fuzzing测试技术主要用来发现溢出类的内存破坏型漏洞。而这类漏洞的利用受内存保护机制的影响较大。因此,为了正确评估所发现漏洞的危害和影响程度,就需要研究溢出利用技术和内存保护机制的突破技术。Windows平台下针对溢出利用技术采取Cookie保护、数据执行保护、SafeSEH、ASLR等,本文针对堆栈溢出两种主要漏洞模式,研究了其原理和利用技术,并分析了溢出保护技术的原理,分析了现有的一些保护机制突破技术,如在可精准地控制栈的情况下,通过代码重用技术绕过DEP保护。从而可为评估对Fuzzing测试发现漏洞的危害和影响提供更全面的依据。