【VC++开源代码栏目提醒】:网学会员--在 VC++开源代码编辑为广大网友搜集整理了:缓冲区溢出漏洞攻击和检测技术研究 - 硕士论文绩等信息,祝愿广大网友取得需要的信息,参考学习。
南京航空航天大学 硕士学位
论文缓冲区溢出漏洞攻击和检测技术研究 别:硕士 专业:计算机应用技术 指导教师:秦小麟 20061201 南京航空航天大学硕士学位
论文 摘要 本文对网络安全领域中的缓冲区溢出攻击和检测技术进行了研究。
首先分析了相关课题的研究背景,并针对当前该领域国内外的研究现状和发展趋势进行了分析,在此基础上阐述了本课题的研究内容。
接着从缓冲区溢出攻击原理,攻击的类别和漏洞检测技术三个方面进行了深入而系统的研究。
由于最近几年基于硬件保护方案的缓冲区溢出检测成为研究的发展趋势,本文将检测技术的研究重点放在硬件层次,并跟踪了国外相关的研究。
Minos 项目提出了一种从另外一个角度分析缓冲区溢出漏洞攻击的新方法,但是它没有完善其思想模型。
本文对其进行了分析并提出了基于控制流完整性模型,做了模型的实例分析并给出了结论。
另一方面,将返回地址保护技术引入到硬件中实现是一个重要手段。
针对存在的这些方法先做了指令执行过程的详细分析,然后针对相关的安全指令
方案做了深入的研究,发现了其中的不足点,设计了可以绕开保护检测的例程。
在此基础之上提出了一种新的安全指令,最后做了相应的功能性测试和性能测试。
最后给出本文的结论和进一步研究的工作。
关键词:缓冲区溢出,静态检测技术,动态检测技术,控制流完整性,安全指令集,硬件保护 -I- 南京航空航天大学硕士学位
论文 Abstract The thesis makes a thorough and systemic study of techologies of bufferoverflow attacks and detections in the network security field. Firstly it analyzes not only research background of relative project but also theresearch status and developing trends of home and abroad in this field. it put forwardthe research content of the project base on the previous analyses. Secondly the thesis makes thorough research on techologies of buffer overflowattack theory attack kinds detection of vulnerabilities from three aspects. Since the buffer overflow detection based on the hardware protection plot hasbecome the trend in the couple of years. This paper lays the effort on the hardwareleveland introduces the study of some reletive institutions. The project Minos put forwards a novel detection for the buffer overflow attacksbut this model is not well developed. In this paper we discuss these deficienciespropose an improved model based on the Control Flow Integrity and give out thepractical analysis of the model as well as the conclusion. Besides The return address protection based hardware is an important strategy.Thus we firstly introduce the implementation of the exist methods in detail. And thenwe discuss the respective Secure Instructions represent the examples which couldpass the protect detection and point out the shortcomings of those rules. In order to solve these problems we design a set of new Secure Instructions andtheir function and performance are all tested. Finally we draw a conclusion for this paper and future direction in this field isdiscussed.Key
words: Buffer Overflow,Static Analysis,Dynamic Analysis,Control Flow Integrity,Secure Instructions,Hardware Protection-II- 南京航空航天大学硕士学位
论文 图清单图 1.1 CERT 漏洞建议报告 ...................................................................1图 2.1 攻击前后内存状态 .....................................................................7图 2.2 活动记录攻击时栈帧示意图 ......................................................8图 2.3 活动记录攻击示意
代码 ..............................................................8图 2.4 数据存储示意
代码 .....................................................................9图 2.5 HEAP/BSS 攻击时内存示意图 ..................................................10图 2.6 HEAP/BSS 攻击示意
代码 .........................................................10图 2.7 函数指针攻击时栈帧示意图 .................................................... 11图 2.8 函数指针攻击示意
代码 ............................................................ 11图 2.9 jmp_buf 数据结构 .....................................................................12图 2.10 长跳转攻击示意
代码 .............................................................13图 2.11 格式化字符串读攻击示意
代码 ...............................................14图 2.12 格式化字符串写攻击示意
代码...............................................14图 3.1 ROC 曲线示意图 ......................................................................19图 3.2 静态检测工具综合性能 ............................................................19图 3.3 StackGuard 栈帧 .......................................................................21图 3.4
VC.
NET 带编译/GS 选项的栈帧 ...........................................22图 3.5 ProPolice 栈帧 ...........................................................................23图 3.6 ProPolice 示意
代码 ...................................................................23图 3.7 Libsafe 栈帧 ..............................................................................24图 4.1 带缓冲区溢出漏洞检测技术的虚拟机 .....................................29图 4.2 The Minos Architecture ..............................................................30图 4.3 攻击前主客体状态 ...................................................................33图 4.4 信息流传递示意图 ...................................................................33图 4.5 攻击后主客体状态 ...................................................................34图 5.1 SECURE CALL 算法 .................................................................38图 5.2 SECURE RET 算法....................................................................38图 5.3 堆栈帧指针攻击示意图 ............................................................38图 5.4 Previous FP 攻击时受保护的栈帧 .............................................39图 5.5 针对前栈帧指针的攻击
代码 ....................................................40图 5.6 SOME_SERVICE 程序流向示意图 ............................................40 -I- 缓冲区溢出漏洞攻击和检测技术研究 图 5.7 CALL Instruction based Protection 算法 ...................................41 图 5.8 RET Instruction based Protection 算法 ......................................41 图 5.9 保护前后的栈帧结构 ...............................................................42 图 5.10 功能型测试
代码 .....................................................................43 图 5.11 性能测试
代码 .........................................................................44-II- 承诺书 本人郑重声明:所呈交的学位
论文,是本人在导师指导下,独立进行研究工作所取得的成果。
尽我所知,除文中已经注明引用的内容外,本学位
论文的研究成果不包含任何他人享有著作权的内容。
对本
论文所涉及的研究
工作做出贡献的其他个人和集体,均已在文中以明确方式标明。
本人授权南京航空航天大学可以有权保留送交
论文的复印件,允许
论文被查阅和借阅,可以将学位
论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或其他复制手段保存
论文。
保密的学位
论文在解密后适用本承诺书 作者签名: 日 期: 南京航空航天大学硕士学位
论文 第一章 绪论1.1 课题背景 在过去的十几年中,缓冲区溢出漏洞一直引起许多严重的安全性问题,使得一个攻击者有机会获得一台主机的部分或全部的控制权。
2001 年六月在红色病毒爆发前的一个月,微软公开宣称他们新的 Windows XP 操作系统经过详细完整的
代码审查不会存在缓冲区溢出漏洞。
四个月之后又一个缓冲区溢出的漏洞被发现存在于 Universal PNP 中,现在这种漏洞频繁的出现。
根据 CERT 漏洞建议
报告27可以看出缓冲区溢出漏洞占了已发现漏洞中相当大的一部分。
缓冲区溢出攻击之所以在安全攻击中占有这么大的比重,是因为缓冲区溢出的缺陷普遍存在并且非常容易被探测到。
攻击者利用它能够准确地获得自己想要的东西,他插入攻击
代码并使其运行在一定的特权下,最坏的情况,攻击者能够重新引导任何程序,甚至控制整个主机。
已发现漏洞 缓冲区溢出漏洞 37 37 40 35 27 28 28 30 22 22 25 19 17 17 20 15 13 15 7 8 10 5 2 5 0 1996 1997 1998 1999 2000 2001 2002 2003 图 1.1 CERT 漏洞建议报告 2006年5月22日赛门铁克安全机制应变中心今公布侦测出一只瞄准微软Word2003应用程序而来的零时攻击行为(zero-day exploit)。
“零时攻击”根据赛门铁克的定义,指的是该攻击针对系统厂商尚未公布修补程序的弱点。
这种情况下,漏洞的发现和攻击会发生在同一天。
作为缓冲区溢出攻击的标准防御手段,Norton Antivirus或Snort 6采用的做法是探测攻击数据的数字签名来阻止攻击。
可惜,这些方法有点像一个抢劫者打劫了数千家银行后才贴出他的画像。
因为事先没有攻击样本,所以对于Zero-Day攻击无法做出 -1- 缓冲区溢出漏洞攻击和检测技术研究防御。
由于之前并不知道漏洞的存在,所以没有办法防范攻击。
尽管业界已尽了最大努力,但没有哪个防火墙能保护主机避免针对网络服务的“零时攻击”。
防火墙对这种攻击方式无能为力,因为攻击者传输的数据分组并无异常特征,没有任何欺骗(这就是Nimda、SQL Slammer可以顺利穿透防火墙的原因)。
另外可以用来实施缓冲区溢出攻击的字符串非常多样化,无法与正常数据有效进行区分。
缓冲区溢出攻击不是一种窃密和欺骗的手段,而是从计算机系统的最底层发起攻击,因此在它的攻击下系统的身份验证和访问权限等安全策略形同虚设。
另一方面,造成严重的破坏作用的漏洞陆续被发现,那些提供安全服务的公司要不断的与全世界的黑客们进行赛跑。
究其根源,会发现攻击者与防御者之间在进行着一场不对称的博弈,攻击者可以利用扫描、探测等一系列技术手段全面获取攻击目标的信息,而防御者对他所受到的安全威胁一无所知。
为了扭转这种不对称局面。
最近几年,蜜罐技术2 的主动防御思想开始吸引了一些安全研究人员的注意。
通过布置一些作为诱饵的主机、
网络服务以及信息诱使攻击者对他们进行攻击,这样可以对攻击行为进行监控和分析,了解攻击者所使用的攻击工具和攻击方法,推测攻击者的意图和动机,从而能够让防御者清晰地了解他们所面对的安全威胁。
目前在操作系统和上层应用软件方面的缓冲区溢出检测研究已经几年来没有突破性研究成果。
所有的这些可能说明了也许缓冲区溢出
问题不是由于软件开发人员对于软件开发缺乏责任和努力。
缓冲区的溢出与程序在内存中的组织分布有关,在冯.诺依曼
计算机体系结构中程序的数据和执行
代码混合存储,对数据的修改可造成程序
代码的修改,是其
设计的计算机模型导致的后果,只不过 C/C语言为它提供了这个方便之门。
基于硬件仿真的虚拟机技术正好为上述的思想提供了技术实现手段。
虚拟机Virtual Machine是提供用户可在单一的桌面上同时运行不同的操作系统,和进行开发、测试、部署新的应用程序的一种软件。
虚拟机还可在一部实体机器上,通过连接多个操作系统来模拟完整的网络环境。
虚拟机在一台实体机器上同时运行了多种操作系统与应用程序,这些操作系统与应用程序共用硬件装置,但在逻辑上各自独立运行互不干扰。
虚拟层映射实体的硬件资源到自己本身的虚拟机器资源,因此每个虚拟机器都有各自的 CPU,内存,硬盘,I/O 设备等,所以虚拟机器完全等同于一个标准的 x86 计算机。
1.2 本课题的研究内容 由于缓冲区溢出存在的普遍性和破坏的巨大性,如何有效的检测出缓冲区-2- 南京航空航天大学硕士学位
论文溢出漏洞得到了许多研究机构的重视。
本课题首先研究缓冲区溢出漏洞攻击方法,它们包括: ● 活动记录Activation Records ● 堆HEAP/BSS ● 函数指针(Function Pointer) ● 长跳转SETJMP/LONGJMP ● 格式化字符串攻击Format String Attack 其次,研究目前现已存在的缓冲区溢出漏洞检测技术,它们包括: ● 漏洞静态检测技术 ● 漏洞动态检测技术 由于最近几年基于硬件保护方案的缓冲区溢出检测成为研究的发展趋势,本课题将检测技术的研究重点放在硬件层次,并跟进了国外相关研究。
一个是提出了一种从另外一个角度分析缓冲区溢出漏洞攻击的新方法的 Minos 项目,另外一个是将返回地址保护技术引入到硬件中实现的安全指令技术。
1.3 本课题操作系统平台及开发工具简介◆ 硬件环境 Intel P4 2.4GHz CPU/512MB SDRAM/80GB IDE Disk◆ 软件环境 Red Hat Linux 9.0QEMU 0.80Red Hat Linux 9.0◆ 开发工具 Linux 下 GNU 工具链以及集成开发环境 Eclipse3.0CDK◆ 所使用的操作系统平台及工具简介⑴ 操作系统:Red Hat Linux 9.0 Linux 是一个遵循 POSIX(标准操作
系统界面)标准的免费操作系统,具有BSD 和 SYSV 的扩展特性(表明其在外表和性能上同常见的 UNIX 非常相象,但是 。
它的
版权所有者是芬兰籍的 Linus所有系统核心
代码已经全部被重新编写了)B.Torvalds 先生。
Red Hat Linux 操作简便,配置快捷,独有的 RfM 模块功能使得
软件的安装极为容易。
Red Hat Linux 被公认为最易使用的 Linux 版本,同时它也是目前使用最多的 Linux 操作系统。
9.0 版本是其一个较新的版本,使用Red Hat Linux9.0 的用户占有非常大的比例。
选用 Red Hat Linux9.0 为主要的实验平台的原因是因为这个版本的 Linux 操作系统目前的使用率最高,具有普遍性和针对性。
-3- 缓冲区溢出漏洞攻击和检测技术研究⑵ 集成开发环境:Eclipse Eclipse 的前身是 IBM 的 Visual Age for Java简称 VA4J。
把这个项目
免费赠送给 Eclipse 社团www.eclipse.org前,IBM 已经投入超过四千万美元进行研发。
IBM 如今, 通过附属的研发机构 Object Technologies International简称 OTI,继续领导着 Eclipse 的开发。
Eclipse 是一个开放源
代码的、基于 Java 的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse 附带了一个标准的插件集,包括
Java 开发工具(Java DevelopmentTools, 。
JDT) Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。
开发 C/C程序,装一个 C 开发工具CDevelopment Toolkit,简称 CDT插件代替 JDT 即可⑶ 编译器工具:GNU GCC GCC 是一种“编译器”(compiler),把程序的“源
代码”(即
程序设计人员 (binary)指用 C 这类高端语言所写的指令)转换成电脑能够理解的“二进位”令。
几乎所有的开放源
代码软件都以 GCC 为基础。
Linux 系统下的 GCC(GNU CCompiler)是 GNU 推出的功能强大、性能优越的多平台编译器,是 GNU 的代表作品之一。
GCC 是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高 2030。
GCC 编译器能将 C、C语言源程序、汇程式化序和目标程序编译、连接成可执行文件。
⑷ 调试工具:GNU GDB GNU GDB 是 GNU
开源组织发布的一款功能强大的用来调试 C 和 C 程序调试工具。
它使你能在程序运行时观察程序的内部结构和内存的使用情况. 以下是 gdb 所提供的一些功能: ◆ 它使你能监视你程序中变量的值. ◆ 它使你能设置断点以使程序在指定的
代码行上停止执行. ◆ 它使你能一行行的执行你的
代码.1.4 QEMU 模拟器 1 QEMU 是一套由 Fabrice Bellard 所编写的模拟操作系统的自由软件。
它与 Bochs,PearPC 近似,但其具有某些后两者所不具备的特性,如高速度及跨平台的特性。
经由 kqemu 这个非自由的加速器,QEMU 能模拟至接近真实电脑-4- 南京航空航天大学硕士学位
论文的速度。
QEMU 的仿真速度约为实际机器的 25,约为 Bochs 的 60 倍。
VMware 和 Virtual PC 则比 QEMU 快一点,但因为不是
开源软件无法修改其功能。
国外有的研究机构采用 Bochs 虚拟机仿真,不过已经在考虑转到 QEMU上,因为 QEMU 确实比 Bochs 性能优越很多。
QEMU 的主要部分是在 LGPL下发布的,而其系统模式模拟则是在 GPL 下发布;而 kqemu 这个加速器则是在免费但不开放源
代码条件下发布的。
使用 kqemu 可使 QEMU 能模拟至接近实机速度,但其在虚拟的操作系统是 Windows 98 或以下的情况下是无用的。
● QEMU 主要运作模式 ⑴ User mode 模拟模式 亦即是用户模式。
QEMU 能启动那些为不同 CPU 编译的 Linux 程序。
而Wine 及 Dosemu 是其主要目标。
⑵ System mode 模拟模式 亦即是系统模式。
QEMU 能模拟整个电脑系统,包括中央处理器及其他周边设备。
它使得为系统源
代码进行测试及纠错工作变得容易。
也可以用来在一部主机上虚拟数个不同虚拟主机。
● QEMU 的优点 ⑴ 可以模拟 IA-32 x86,AMD ,MIPS R4000,升阳的 SPARC sun3 与PowerPC PReP 及 Power Macintosh架构; ⑵ 支持其他架构,不论在主机或虚拟系统上; ⑶ 增加了模拟速度,某些程序甚至可以实时运行; ⑷ 可以在其他平台上运行 Linux 的程序; ⑸ 可以储存及还原运行状态如运行中的程序; ⑹ 可以虚拟网络卡。
● QEMU 的缺点 ⑴ 对微.