论文部分内容阅读
本文对基于可执行文件的漏洞挖掘和利用技术进行了深入的研究和探讨。安全漏洞(Vulnerability)是网络攻防的关键。先进的漏洞挖掘和利用技术有助于研究者先于攻击者发现安全漏洞,并及时修补软件开发中的安全缺陷,提高系统和应用软件的安全性。可执行文件是安全研究人员最容易获得的程序信息承载格式,以此为支点发展出的漏洞相关技术能够很好地适应当前信息系统的封闭现状,对开放源码的软件程序也具有一定程度的借鉴价值,是近年来安全漏洞研究领域的一个热点问题,具有很强的研究价值和现实意义。
在充分分析已知漏洞形成机理的基础上,本文对用于可执行文件的三种漏洞挖掘技术进行了研究,分别提出了不同程度的改进和实现;通过整合二进制审核和补丁比对技术、二进制审核和Fuzzing技术的融合,更进一步地提高了漏洞挖掘的效率。在对软件缺陷进行验证的过程中,提出了ARM架构中的Unicode-proofShellcode构造方法,并提出了一种适用于Windows CE系统的指令缓存刷新技术,使得原本不具有安全性威胁的软件缺陷转变为高危害的安全漏洞,具有很好的实用价值。
本文取得主要成果有:
1)提出了基于LCS(Longest Common Subsequence,最长公共子串)算法和二进制审核的补丁比对技术;基于LCS算法的补丁比对技术能够在多项式时间内近似的解决函数基本块之间的同构问题;在此基础上,通过融合二进制审核技术进一步地提高了缓冲区溢出漏洞代码的定位效率;实践证明,该算法在函数配对的准确性和时耗方面均优于现有补丁比对算法和工具;
2)提出了基于二进制审核的样本数据分析算法,提高了Fuzzing测试数据的有效性;在此基础上,通过对已有图片与音频漏洞的分析,设计并实现了常见图片和音频文件格式漏洞Fuzzing测试平台;成功重现了历史上的三个高危安全漏洞,并检测出两个未公开的软件漏洞,说明了研究方法和技术的有效性;
3)提出了使用自修改代码在ARM架构上构造Unicode-proof Shellcode的方法;该方法在不考虑指令缓存问题的前提下适用于所有的操作系统,具有很好的实用价值;
4)提出了适用于Windows CE系统的指令缓存刷新技术,并通过理论分析和实践验证说明了技术的有效性,从而使得攻击者在现实中能够构造适用于智能手机操作系统的Unicode-proof Shellcode;这也是目前唯一适用于ARM架构和Unicode-proof Shellcode的指令缓存刷新技术。