基于模糊测试的ActiveX控件 漏洞挖掘研究——硕士论文.doc
64页硕硕士士学学位位论论文文 基于模糊测试的基于模糊测试的 ActiveXActiveX 控件控件 漏洞挖掘研究漏洞挖掘研究 专专 业业 名名 称称: 软软 件件 工工 程程 研究生姓名研究生姓名: 导导 师师 姓姓 名名: 校外导师姓名校外导师姓名: 摘要 I 摘要 关键字: ABSTRACT I ABSTRACT Key Words: I 目目 录录 摘要I ABSTRACT II 第一章 绪论.1 1.1 研究背景1 1.2 相关研究现状1 1.2.1 ActiveX 控件技术的发展 1 1.2.2 模糊测试技术的研究现状2 1.2.3 缓冲区溢出漏洞研究现状2 1.3 研究目的和意义3 1.4 主要工作与创新点3 1.5 本文的章节安排4 第二章 ACTIVEX 控件安全性分析与模糊测试技术5 2.1 ACTIVEX 控件原理分析 .5 2.1.1 ActiveX 控件加载原理 5 2.1.2 ActiveX 控件的加载条件 5 2.2 ACTIVEX 控件漏洞形成分析 .6 2.2.1 软件漏洞的定义6 2.2.2 软件漏洞的原理与分类6 2.2.3 ActiveX 控件的漏洞的特点与形成原因 .10 2.3 模糊测试技术.12 2.3.1 传统的漏洞挖掘方法.12 2.3.2 模糊测试的定义.13 2.3.3 模糊测试技术的原理.13 2.3.4 模糊测试的优点和缺点.14 2.3.5 进化模糊测试思想.15 2.4 本章小结.16 第三章 漏洞分析相关技术17 3.1 调试器原理.17 3.2 关键调试技术分析 .18 3.2.1 调试技术基础.18 3.2.2 调试相关的 API .20 3.3 自动化动态分析技术.20 3.4 静态分析技术.22 3.4.1 IDA Pro 及其插件开发 .22 3.4.2 利用 IDA Pro 实现静态代码分析.22 3.5 本章小结.23 第四章 ACTIVEX 控件漏洞挖掘分析系统 24 4.1 系统总体设计.24 II 4.2 漏洞挖掘模块.24 4.2.1 ActiveX 控件分析子模块 .25 4.2.2 启发式静态分析子模块 .28 4.2.3 二进制代码覆盖率分析子模块 .29 4.2.4 测试数据生成子模块.31 4.2.5 模糊测试执行子模块.32 4.3 漏洞分析模块.32 4.3.1 调试器子模块.33 4.3.2 反汇编子模块.35 4.3.3 溢出检测与定位子模块.36 4.3.4 单步跟踪子模块.41 4.3.5 漏洞代码分析子模块.43 4.5 本章小结.43 第五章 ACTIVEX 控件漏洞挖掘分析系统 44 实验验证及结果分析.44 5.1 实验验证.44 5.1.1 实验环境.44 5.1.2 存在漏洞的控件.44 5.2 漏洞分析.44 5.2.1 SetList(栈溢出漏洞)44 5.2.2 SetLogInfo2(堆溢出漏洞)48 5.3 漏洞自动挖掘系统的优缺点.52 5.3.1 系统优点.52 5.3.2 系统缺点 .52 5.4 本章小结 .53 第六章 总结与展望54 6.1 本文工作总结.54 6.2 未来研究展望 .54 致谢.55 参考文献.56 1 第一章 绪论 1.1 研究背景研究背景 自从万维网诞生以来,针对浏览器的攻击就愈演愈烈,一刻也不曾停歇过。
浏览器作为广大网民接触网络的主要工具,是网民踏入互联网世界的主要入口 之一一旦这个入口受到恶意攻击,将有大量电脑沦为黑客的“肉鸡” ,轻则电 脑运行缓慢、不断弹出广告页面,重则帐号、金钱被盗,重要资料失窃等等 随着软件工程理论和软件工业的发展,愈来愈多的软件漏洞被发现,软件 安全问题日益严重由于利益的关系,越来越多的黑客将注意力转移到了浏览 器软件领域,致使不断出现浏览器的安全漏洞作为 Windows 自带的浏览器, IE 到目前为止依然占有超过 50%的市场份额这一数字使得大量黑客在不断寻 找 IE 浏览器的漏洞,而随着 IE 的诸多新版本推出,寻找并利用新漏洞的难度 也越来越大 作为 IE 浏览器唯一支持的插件形式,ActiveX 控件的安全性一直受到很大 的关注由于 ActiveX 控件一般会带有自身的类型库信息,而类型库中包含了 控件所能提供的所有方法和属性,以及它们的参数信息,因此这些方法和属性 成为了优良的模糊测试的对象黑客借助于 Comraider、Axman 等工具可以轻 易发现 ActiveX 控件中存在的漏洞,从而利用这些漏洞达到破坏、窃取信息以 及非法牟利的目的。
经历了 2007、2008 年 ActiveX 控件漏洞出现高峰之后,各个厂商都开始注 重 ActvieX 控件的安全问题,由于没有判断输入参数长度而导致的缓冲区溢出 漏洞也大大减少但是,如 Comraider 这种半自动化工具已越来越难以满足漏 洞挖掘的需要,而且,对于一些隐藏的漏洞也无能为力 1.2 相关研究现状相关研究现状 1.2.1 ActiveX 控件技术的发展控件技术的发展 ActiveX 是微软公司 1996 年提出的基于 COM 组件和 OLE 技术的一种通用 的开放程序接口,使用该技术开发的 ActiveX 控件可以直接集成到 IE 浏览器或 其它第三方程序中[1] 由于 ActiveX 控件可以方便地扩展浏览器功能,因此许多软件厂商都喜欢 开发自己的 ActiveX 控件例如,各大网银为了保证自己的登录和交易安全, 都会让用户安装自己的 ActiveX 控件登录;一些电子商务网站,如淘宝,也会 建议用户安装登录安全控件此外,网络视频软件、杀毒软件等也都会安 装自己的 ActiveX 控件 这些控件一旦出现安全问题,黑客便可以构造恶意页面,诱使用户访问, 而用户一旦访问,黑客就可以轻易植入木马和病毒,盗取用户银行账户,对企 业和个人造成重大损失。
2 1.2.2 模糊测试技术的研究现状模糊测试技术的研究现状 模糊测试的思想最早产生于 1989 年美国威斯康星大学的一个研究计划, Barton Miller 教授(被成为模糊测试之父)最初是用来测试 UNIX 应用程序的 健壮性[2] 1999 年,芬兰 Oulu 大学开始研发基于 Fuzzing 的网络协议测试工具 PROTOS,并于 2002 年发布了用于 SNMP 测试的版本PROTOS 综合了黑盒 测试和白盒测试的特点,是模糊测试发展过程中的一个里程碑[3] 2002 年,Dave Aitel 发布了一个开放源代码的模糊测试工具 SPIKE5,它使 用了基于块的模糊处理器,用于测试基于网络的应用程序作为第一个可以实 现自定制的模糊测试器框架,SPIKE 的发布标志着模糊测试一个新的里程碑[4] 2004 年,File Fuzzing 开始出现Mu Dynamics(原 Mu Security)公司开始开 发一种硬件模糊装置,其目的是让网络中传输的协议数据发生变异这个商业 产品供应商的出现,恰好吻合当前人们关注 Fuzzing 的潮流[3] 同年,两个类似 SPIKE 的基于块的 Fuzzer 工具发布:Peach 和 smudge。
这 两个工具都是使用 python 开发,从而提供了易于使用的快速开发框架Peach 是近年来较受外界关注的模糊测试框架,适用于多个平台Peach 要先对测试 的协议或文件格式进行建模,并用 XML 语言描述出这种数据模型,然后数据 生成引擎通过解析 XML 文件来构造测试数据集[5] 2006 年,ActiveX 控件的 Fuzzing 开始流行,David Zimmer 发布了 COMRaider,H.D.Morre 发布了 AxMan16ActiveX 控件由于其中接口、函数原 型的公开性,是一种优秀的模糊测试目标,允许对其实施自动化的智能测试 这使得 ActiveX 控件漏洞的挖掘一时间风靡整个黑客界,不断会爆出某些软件 的 0day 漏洞比如 2007 年底迅雷 5 的 PPLAYER.DLL 控件中溢出漏洞;2008 年初的联众 GLChat.ocx 控件溢出漏洞;2009 年的暴风影音 mps.dll 控件远程栈 溢出漏洞;2011 年的 旋风中 IEHelper.dll 控件的远程栈溢出漏洞;2011 年的淘宝阿里旺旺中 imageMan.dll 控件的远程栈溢出漏洞等等。
国外对模糊测试的研究较早也较深,有多款成熟的模糊测试框架推出,相 对于此,国内对模糊测试的研究起步较晚,尚未出现成熟的测试框架文献[9] 介绍了使用模糊测试挖掘 MP3 播放软件中的漏洞,文献[10]介绍了使用模糊测 试挖掘 Word 软件中的漏洞,文献[11]介绍了使用模糊测试挖掘 PNG 格式解析 软件的漏洞,以上三种都属于文件 Fuzzing 的范畴,而文献[12]介绍了使用模糊 测试挖掘 TFTP 中的漏洞,这是种网络协议的模糊测试 1.2.3 缓冲区溢出漏洞研究现状缓冲区溢出漏洞研究现状 缓冲区溢出攻击起源于 1996 年的一篇文章 “Smashing The Stack For Fun And Profit”[14],这篇文章清楚地阐述了缓冲区溢出攻击的原理这使得缓冲区 3 溢出攻击不断被世人所了解1998 年来自“Cult of the Dead cow”的 Dildog 详 细介绍了如何利用 Windows 的溢出[15],这篇文章的最大贡献在于提出了利用栈 指针的方法来完成跳转,避免了因进程、线程的不同造成的栈位置不固定 1999 年,Dark Spyrit 提出使用系统核心 DLL 中的 Jmp ESP 指令完成跳转[16]。
同年,w00w00 安全小组的 Matt Conover 写了基于堆的缓冲区溢出的专著[17], 从而使人们意识到堆溢出的危害性 与此同时,缓冲区溢出保护技术也在不断发展 2000 年,Arash Baratloo 和 Tzi-cker Chiueh 等实现的 StackShield 原型系统 通过保留返回地址的副本来检测溢出的发生[18]同年,Hiroaki Etoh 和 Kunikazu Yoda 提出 Etoh 和 Yoda 技术,使用随机数保护和栈中的数组重定位技 术来防止对局部变量的溢出[19]2002 年 12 月,Chew 和 Song 对栈的基地址、 系统调用表和库函数入口指针进行了随机化,并达到了破坏溢出利用可靠性的 目的[20]2003 年 5 月,Xu,Kalbarczyk 和 lyer 提出了透明实时随机化技术,对 Linux 的栈基址、堆基址以及 GOT 进行了随机化[21] Windows 也从 XP SP2 开始引入随机化 PEB 基址、SEH 保护、堆栈 Cookie 保护等技术这些技术的引进会增大缓冲区溢出攻击利用的难度,但是并不能 从本质上消除缓冲区溢出的出现。
正如黑客技术与反黑客技术一样,溢出研究 与溢出保护研究也在对抗之中不断发展与前进 1.3 研究目的和意义研究目的和意义 本文的研究目的主要有以下三点: 1、寻找到一种智能、高效的基于模糊测试的漏洞挖掘方法,能够挖掘出 ActiveX 控件中的缓冲区溢出漏洞 2、研究出一种动态分析与静态分析相结合的漏洞分析方法,对漏洞进行高 效、准确的分析,获取到漏洞形成的相关信息 3、实现一套基于模糊测试的自动化 ActiveX 控件的漏洞挖掘分析系统,以 完成从控件接口分析到漏洞挖掘到漏洞分析的自动化过程 本文的研究意义主要有: 1、通过对 ActiveX 控件进行自动化漏洞挖掘和分析,以帮助软件开发者或 安全人员尽早地发现、定位和分析漏洞,减少已发布软件中漏洞的数量及生存 期,从而避免漏洞对企业和个人造成重大的损失 2、通过对 ActiveX 控件的漏洞挖掘研究,掌握漏洞挖掘过程的技巧和方法, 以应用到其它类型的软件。





