论文部分内容阅读
近几年来互联网不断上演重大网络安全事故,给用户和企业都带来了难以计量的损失。这些事故一方面反映了软件开发人员的安全意识薄弱,另一方面也提出了一种需求:网络安全应该成为计算机领域的重要研究课题。反观引起这些重大安全事故的原因,基本上都是由于存在软件漏洞导致的,这些漏洞可能是web应用程序的SQL注入、XSS漏洞,也可能是软件中的缓冲区溢出漏洞。统计表明,在近几年CERT/CC发布的公告中,和缓冲区溢出相关的漏洞占50%以上。利用缓冲区溢出漏洞,攻击者往往能获得较高的非法权限,进而造成更大的危害。目前仍然没有一种有效的方法遏制缓冲区溢出漏洞的出现,虽然微软等各大公司为提高操作系统安全性推出了很多安全机制,但在软件的漏洞挖掘方面却一直没有什么进展,目前主流的漏洞挖掘方法仍然是基于源代码的静态分析和基于逆向工程的静态分析。此外,安全研究人员在没有源代码的情况下很难检测出软件中潜在的漏洞,而且这是一件非常耗时的事情。本文在研究了缓冲区溢出漏洞的基本原理以及微软为其windows (?)平台所增加的安全机制的基础上,对微软的各个安全机制进行了研究,提出了针对其各个安全机制的绕过方法,从而写出可以成功利用漏洞的exploit代码。同时在分析了当前国内外主流的缓冲区溢出检测技术的基础上,提出了一种基于动态跟踪调试的漏洞定位技术,该框架以fuzzing技术为核心,是一种“触发-捕获”模型,可以自动记录检测过程中触发的程序异常。安全人员在分析这些异常日志后可以确定该漏洞是否可以被利用,这对提高安全人员的测试效率有非常大的意义。本文的主要工作包括:1.对Win32环境下的缓冲区溢出漏洞的基本原理与利用方法进行了研究;2.对微软在windows各版本添加的安全机制进行了研究,研究如何绕过这些安全机制并写出成功的漏洞利用代码;3.提出一种基于动态监测技术的漏洞发掘框架,其关键技术为fuzzing,该技术主要用于协议测试;4.对提出的漏洞发掘框架进行详尽而具体的系统设计,深入分析了这中间应用到的关键技术,然后将其进行工程实现。5.最后以飞秋2.5客户端为测试用例,对该框架的漏洞挖掘效果进行了测试。