【VC++开源代码栏目提醒】:本文主要为网学会员提供“一种数据库漏洞挖掘方法研究 - 硕士论文”,希望对需要一种数据库漏洞挖掘方法研究 - 硕士论文网友有所帮助,学习一下!
华中科技大学 硕士学位
论文一种数据库漏洞挖掘方法研究 级别:硕士 专业:信息安全 指导教师:崔国华 20090501 华 中 科 技 大 学 硕 士 学 位 论 文 摘 要 软件安全漏洞已经成为网络信息安全的最主要的威胁之一。
最近几年以来互联网发生的重大黑客或是病毒事件,基本上都是由于软件漏洞的存在而导致的。
而数据库作为信息系统中一个重要的组成部分,它担负着存储和管理数据信息的任务,如何检测出数据库中可能存在的漏洞并加以弥补,从而保证和加强数据库的安全性和保密性,已经成为目前迫切需要解决的热门课题。
在对目前比较流行的漏洞发现技术进行对比研究的基础上,选择了基于缺陷注入的自动化软件测试技术 Intelligent fuzzing 作为挖掘数据库漏洞的主要手段。
根据Intelligent fuzzing 的需要,需要研究目标应用程序的协议或文件格式。
因而接下来研究讨论了如何利用包捕获技术和反汇编技术对数据库的关键通讯协议进行分析,确定各个数据包的用途和数据包各个字段的含义。
在此基础上结合脚本和样本包的概念,分析了数据库主要的几种 SQL 命令的一般语法结构,根据不同数据项类型的定义,定位了相应的敏感字段,并给出了各个类型的字段的变换规则,作为构造测试数据包的依据。
结合实际情况分析了样本包来源,并总结了从客户端发送 fuzzing 数据包到服务器的技术手段,同时还讨论了如何在使用挖掘器对服务器进行 fuzzing 测试的过程中,通过监控服务端返回的信息和服务端的异常工作信息来识别漏洞触发的状况。
在总结了以上所述的协议分析、fuzzing 测试数据包构造、数据包发送和漏洞信息识别技术的基础上,给出了针对数据库漏洞挖掘的整体框架,并对关键模块的实现进行了详细的说明。
在文章末尾根据挖掘的框架构造了一个简单的挖掘器,结合一些现有工具,对某数据库进行了实验挖掘,验证了技术的可行性。
所提出的数据库漏洞挖掘技术及其实现框架,对于数据库漏洞挖掘的研究是很有意义的,可以针对不同数据库进行适当的修改,作为一种进行数据库漏洞挖掘的有效手段。
关键词: 数据库漏洞,漏洞挖掘技术,数据库安全,协议分析,反汇编技术 I 华 中 科 技 大 学 硕 士 学 位 论 文 Abstract Software security vulnerabilities have become one of the most important threat to thesecurity of information on computer networks. Hacking incidents and virus incidentshappened in recent years were mainly caused by the software vulnerabilities. And databaseas an important component of information systems takes the responsibility of storage andmanagement of data information.So how to detect the existence of vulnerabilities in thedatabase and enhance the security and confidentiality of database has been a hot topic thatneed urgently to solve. On the basis of the comparison of the most popular technologies on detectingvulnerabilities intelligent fuzzing technology has been chosen as the main mean to detectthe vulnerabilities in database. Intelligent fuzzing is an automatic technology based onselecting defects into the software. In accordance with the needs of intelligent fuzzing thestudy of the agreement or file format of application software is needed. Thus next we haveto study and discuss how to use packet-captured technology and disassembly technology toanalyze the key communication protocols of database so as to determine the use of datapackets and the meaning of each field of data packets. Based on this in combination withthe concept of script and packet samplewe analyze grammatical structure of several majorSQL commands of database. In according to the definition of different data types we locatethe sensitive field of the corresponding command and give the transformation rules of alldata types above as the basis of constructing test data packets. Combined with the actualsituation an analysis of in the sample packet sources is made and techniques of fuzzingpackets from the client to to the server are summarized. At the same time how to identifythe loopholes through the monitoring of information returned from service and the abnormalclient information is discussed in the fuzzing process using fuzzer on a test server. At theconclusion of the above-mentioned protocol analysis constructing of fuzzing test datapacket packet sending and identification of vulnerability information the overallframework for vulnerability database mining is givenand a detailed description of therealization of key modules is given too. At the end of the article a simple fuzzer isconstructed in accordance with the framework and combined with some existing tools a II 华 中 科 技 大 学 硕 士 学 位 论 文experimental mining of dameng databse is carried out to verify the feasibility of thetechnology. Mining technology of vulnerability in the database and its implementation frameworkis worthwhile to research or the database vulnerability mining.It can be appropriate fordifferent changes to distinct database as an effective meansof mining the loopholes.Key
words: database vulnerabilityintelligent fuzzingtechnology of vulnerability miningDatabase Securityprotocol analysis disassembly technology III 独创性声明 本人声明所呈交的学位
论文是我个人在导师指导下进行的研究工作及取得的研究成果。
尽我所知,除文中已经标明引用的内容外,本
论文不包含任何其他个人或集体已经发表或撰写过的研究成果。
对本文的研究做出贡献的个人和集体,均已在文中 以明确方式标明。
本人完全意识到本声明的法律结果由本人承担。
学位
论文作者签名:李向奎 日期: 2009 年 5 月 26 日 学位
论文版权使用授权书 本学位
论文作者完全了解学校有关保留、使用学位
论文的规定,即:学校有权保留并向国家有关部门或机构送交
论文的复印件和电子版,允许
论文被查阅和借阅。
本人授权华中科技大学可以将本学位
论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位
论文。
保密□ ,在_____年解密后适用本授权书。
本
论文属于 不保密□。
(请在以上方框内打“√”)学位
论文作者签名: 李向奎 指导教师签名:崔国华日期:2009 年 5 月 26 日 日期:2009 年 5 月 26 日 I 华 中 科 技 大 学 硕 士 学 位 论 文 1 绪论1.1 课题的研究背景和意义 进入 21 世纪之后,在计算机网络安全领域中网络蠕虫渐渐成为新的热门话题,成为计算机安全的一大威胁。
蠕虫就是能在
网络中自我复制传播并植入
计算机并执行的恶意程序,其复制传播的主要技术手段在于利用操作系统及其支持的软件中存在的各种漏洞。
近几年针对微软的 Windows 系列操作系统的蠕虫非常猖獗,造成的影响十分 ,以及 2004 年 5 月爆发的恶劣,其中比较典型的是 2003 年 8 月两次爆发的“冲击波”“震荡波” “冲击波”最高可每小时感染 3 万多个 Windows 系统,当时全球有 。
其中,上百万台电脑受到感染,造成了极严重的后果和损失1。
类似的蠕虫攻击事件基本上每天都有发生,只是造成的影响程度大小有别。
蠕虫盛行的主要原因是软件存在漏洞,黑客可以使用它复制传播恶意程序。
根据美国 CERT 的统计,从 2000 年到 2006 年,每年都会增加大量新漏洞报告。
2003 年漏洞报告总数为 3784,2004 年为 3750,2005 年为 5990,而 2006 年第 l 季度也己经达到了 15972。
在国内,绿盟科技公司维护着国内最大、最全面的安全漏洞数据库,差不多每天都更新着最近的 8000 多条漏洞信息。
在极短时间内黑客往往就能成功利用这些漏洞,当人们意识到应该增强安全意识的时候,或许已经晚了,由这些漏洞产生的蠕虫及其变种或许早已泛滥。
蠕虫传播的形式也产生了很大变化,从最初的主动感染,扩展到目前的被动感染形式,兼有网页、电子邮件等等方式。
除了利用已知漏洞,有的黑客比较善于从软件中挖掘一些尚未公布的漏洞,并利用他们。
他们的目的不是将漏洞信息
报告给软件开发商,以维护软件的安全性,而是在补丁出来之前进行病毒攻击,或者以昂贵的价格将漏洞信息出售,换取
经济利益。
例如 06 年初发现的 WMF 漏洞,就是在公众毫不知情的情况下展开攻击的,这个漏洞的相关信息据说以高达 4000 美元的价格被出售的3。
像 Dieefnse 和 3com 这样的大公司甚至也愿意从这些黑客手中购买包括 QQ、MSN、EI 等软件的未公开发布的漏洞资料。
相比于黑客,安全研究者们在未知漏洞挖掘研究的工作方面显得略微被动和滞后。
1 华 中 科 技 大 学 硕 士 学 位 论 文很多情况下,安全研究者们都是通过拦截并分析特定的蠕虫及其变种,从而由黑客采用的漏洞利用技术来分析未知漏洞的信息。
因此,安全研究者们应该加大对未知漏洞的挖掘研究力度,以便能主动对各类漏洞及早的合理得处理。
最近,Qualys 的首席技术官 Wolfgang Kandek 最近发布了 Laws of Vulnerabilities2.0,该漏洞法规来自于 Qualys 这个安全行业最大的漏洞数据基地。
研究报告表明,五个关键行业包括金融、医疗、零售、制造业和服务业的漏洞半衰期、普遍性、持久性和利用趋势。
这些趋势是从对 6.8 亿个漏洞进行分析统计得出的结论,其中 0.72 亿个漏洞为关键漏洞。
源自这项研究的结论包括: ⑴ 半衰期- 所有行业中关键漏洞的半衰期都维持在 30 天左右,与个别行业相比,服务行业的漏洞半衰期最短21 天,金融行业排名第二23 天,零售业为 24 天,而制造业最长为 51 天。
⑵ 普遍性- 对于最普遍和最严重的漏洞,其中 60都会在下一年被新漏洞取代,而在 2004 年的百分比为 50。
根据 Laws 2.0 显示,最难被取代的漏洞发生在 MSFTOffice、Windows 2003 SP2、Adobe Acrobat 和 Sun
Java 插件。
⑶ 持久性- Laws 2.0 宣称,大多数漏洞的寿命都是无限的,绝大部分的漏洞完全无法修复,该法规还对比了 MS08-001、MS08-007、MS08-015 和 MS08-021 的数据,如图 1.1 所示。
⑷ 利用- 在漏洞公开于众后的几天后,80的漏洞将被攻击者利用。
在 2008 年,Qulays Labs 记录了 56 个利用零日攻击的漏洞,其中包括制造 Conficker 的 RPC 漏洞。
在 2009 年,微软公司发布的第一个漏洞 MS09-001 在七天内就被攻击者成功利用。
微软公司 April Patch Tuesday 包括对已公开漏洞 47进行的漏洞利用攻击。
Qualys 首席技术官 Wolfgang Kandek 和 Laws of Vulnerabilities 2.0 的作者4表示:攻击者的攻击方式变得越来越复杂,而大多数关键漏洞的利用时间越来越短,这使安全问题变得越来越严峻。
数据库系统是许多信息系统的基础,特别是现今的基于 WEB 的系统,如电子商务、金融以及企业资源规划ERP系统等,数据库中保存着它们的关键数据。
以前的数据库访问只能通过几个互相隔离的复杂业务逻辑层来实现,现在却能够通过许多 Web 2 华 中 科 技 大 学 硕 士 学 位 论 文应用环境直接对数据库进行访问,这种访问方式同以往的相比在流动性上更加强大,但是却使数据库的安全性降低了,黑客更加容易得通过网络攻击数据库。
许多的机密信息、个人数据和工商业情报,万一被非法窃取或者删改,将造成严重的泄密事件或者信息的丢失。
目前数据库系统有着各种技术的防御保护机制,如授权和访问控制等等。
但是却因为存在很多漏洞。
非法用户可以绕过授权和访问控制,直接通过系统的漏洞访问数据库,得到其不具备访问权限的数据。
图 1.1 Qualys 漏洞报告 从这个意义上讲,如果能够自动挖掘出数据库产品中存在的漏洞并且定位漏洞代码的所在,那么无论是从提高系统的安全性的角度,还是从改进数据库本身的角度来看都将是很有意义的。
1.2 国内外研究概况 关于软件漏洞的挖掘分析和利用的研究已经成为信息安全界的一个热点,国内外很多多研究机构与大学都做了一定的
工作,目前,国内外公认将漏洞分析方法分为两个大类,一类是针对源代码的静态分析方法,二类是针对运行进程的动态分析方法。
静态分析技术包括源代码扫描与反汇编扫描,两者主要区别在于能否得到
软件的
源代码。
源代码扫描方法首先是由美国加州大学提出,通过检查源代码中不符合安全规则的文件结构、命名规则、函数以及堆栈指针等,从而发现程序中可能隐含的安全缺陷;反汇编扫描则是针对不公
开源代码的程序,利用一些逆向工程技术将可运行程序进行反汇编并分析。
目前静态分析工具有 Lint、LClint、Flowfinder、RATS、ITS4 3 华 中 科 技 大 学 硕 士 学 位 论 文等5-9。
漏洞的静态分析存在很大的局限性:需要预先制定出不安全代码的审查规则,这需要研究员有丰富的经验以及很高的技术;并且通过人工审查的方法检查程序代码,费时费力,对人员的技术水平要求极高;再者,一些
程序动态运行过程中才会暴漏出的的安全漏洞,如潜在的程序逻辑与安全性漏洞,不能通过静态的方式被发现。
由于静态分析这些局限,动态分析技术被开发出来,并成为目前很多漏洞研究的主要手段。
具体地说它包含以下几种技术: 1环境错误注入 环境错误注入是一种动态测试软件脆弱性的技术能有效地触发程序内部的漏洞,与静态检测漏洞技术相比具有很好的扩展性和灵活性,这种方法在安全性的检测中已经得到了较好的应用10。
错误注入是在软件运行时,通过人机交互接口或者函数接口,人为的注入错误数据,并观察程序的反应,这是验证计算机信息
系统容错性可靠性的有效方法11。
目前硬件检测领域使用较多的是 FISTFault Injection Security Tools,纯软件领域使用较多的是 FIATFault Injection-based Automated Testing。
此项技术的主要目的是测试程序的鲁棒性、可靠性以及容错性,在漏洞分析方面仍需要深入的研究与拓展,以寻找具备漏洞特征的软件错误。
2内存检测与保护机制 通过内存检测与保护机制进行漏洞挖掘和保护是目前的一项重要技术。
近年来,在 CERT/CC Computer Emergency Response/Coordination Center发布的公告中,关于缓冲区溢出漏洞的占 50%以上,因此,如果能够对堆栈内存进行检测与保护,也就能够达到漏洞挖掘的目的,同时能够避免堆栈内存溢出引发的后果。
这项技术采用多种方法,如虚拟机的漏洞分析方法,在系统内核加入关键机制进行检测并防止溢出的方法,甚至在硬件上采用安全芯片进行内存保护等。
比较典型的工具有:Stack Guard、Point Guard、Libsafe、Libverify 以及 Stack Shield,还有目前杀毒软件 Macfee 使用的栈溢出检测与保护机制。
目前的内存检测与保护机制技术在开源的操作系统平台中使用比较广泛,包括上述大部分研究成果,而在比较通用的 Windows 操作系统上进行有效的内存动态检测与保护,是需要解决的关键问题,另外少数如 Macfee 的 windows 内存保护机制已经在一定程度上被黑客攻破,还需要进一步研究可靠的 windows 平台下的监测与保护机制。
4 华 中 科 技 大 学 硕 士 学 位 论 文 3动态渗透分析 渗透分析需要有个前提,即是存在已知系统的一种漏洞的信息,然后才能根据它来检测未知漏洞。
渗透分析往往需要采用静态分析跟动态运行时跟踪相结合的办法,依赖于各种调试器,如:OllyDbg、SoftICE、
VC、IDA 和 KGDB 等。
其分析难度大,工作量也很大,有效性与执行分析的人员素质有关,它一般由经验丰富的安全工程师进行,并且分析效率低下。
4 Fuzzing 技术 Fuzzing 技术是一种基于缺陷注入的自动化软件测试方法12。
通过编写 fuzzer 向目标程序提供特殊构造的输入并观察其响应来发现
问题,这种输入可以是完全随机的或精心构造的。
Fuzzing 测试通常以大小相关的部分、字符串、标志字符串开始或结束的二进制块等为重点,使用边界值附近的值对目标进行测试。
除了上述静态分析与动态漏洞检测方法以外,基于模型检验的软件测试技术也在漏洞检测中使用也越来越广泛 13。
这是一种检验系统是否满足给定属性的形式化方法。
所谓形式化方法原则上就是用数学与逻辑的方法描述和验证系统。
其原理主要是首先对待检验的系统进行建模,常使用下推自动机 PDAPushdown Automata来描述;然后使用一种形式化的语言来描述安全属性,常使用的是时序逻辑表达式或者有限自动机 FSAFinite State Automata;最后选取适当的模型检测算法来判断此系统模型M 是否满足安全属性 s,即 Ms?这样一个问题。
这个问题对于有穷状态系统是可判定的。
目前使用这种技术开发的工具有 SMV、Spin 以及 MOPS 等。
上面介绍的几种技术是近几年在漏洞挖掘和防护上的新发展,但至今仍然没有一项技术能够适用于所有的情形,有些甚至已经被破解,如:Macfee 的内存溢出检测防护机制。
漏洞的存在使信息网络的安全形势依然严峻,特别要着重指出的是,目前国际上的许多研究和成果,包括上面介绍的很多工具在内,大部分是以开源的 Linux 系统为平台的,而对于使用广泛并且漏洞存在更显得多的 Windows 操作系统,相应的技术还很薄弱,迫切需要更进一步的研究和发展14。
1.3 主要研究内容
论文首先对目前比较流行的漏洞发现技术进行对比研究。
然后利用逆向工程的技 5 华 中 科 技 大 学 硕 士 学 位 论 文术手段在对数据库通讯协议进行了分析和研究,结合数据库关系模式的结构,采用Intelligent fuzzing 技术,对数据库进行漏洞挖掘。
基于本文所要研究的内容,
论文的主要研究工作如下: (1)对比研究目前比较流行的漏洞挖掘技术,给出了一种可用于进行数据库漏洞挖掘的漏洞挖掘技术――Intelligent Fuzzing。
(2)对数据库登录过程的通讯协议进行研究分析。
通过搭建实验环境,收、发登录数据包,利用逆向工程的技术分析协议的
通信规则,总结出协议登录过程数据包的详细结构,详细描述了各个字段的含义。
(3)结合脚本和样本包的概念,分析了数据库主要的几种 SQL 命令的一般语法结构,根据不同数据项类型的定义,定位了相应的敏感字段,并给出了各个类型的字段的变换规则,作为产生测试数据包的依据。
通过产生适当的 Fuzzing 数据,并将其注入到被测试的数据库软件中,以激发被测试数据库软件的漏洞。
1.4
论文的组织结构
论文的第一章绪论部分主要介绍课题的来源及目的,漏洞的来源,国内外漏洞检测的典型技术及工具,并对这些技术进行了一些比较。
第二章介绍了漏洞的概念、形成原因、特点和危害,并对目前流行的漏洞挖掘技术讨论的基础上,确定 fuzzer 的基本模型。
第三章利用包捕获激素和逆向工程技术对数据库关键协议进行分析和研究,确定各个字段的具体含义,为下一步 fuzz 程序
设计做准备。
第四章讨论了对样本包哪些字段,如何修改以便得到测试数据包流。
以及如何将数据包发往数据库服务器和怎样监控服务器是否触发了漏洞。
第五章针对结合第三、四章的技术讨论,给出了 fuzzer 的实现框架及关键部分的具体实现,并对目标数据库进行了实验,分析了实验的结果。
第六章对本文的工作进行.