




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
漏洞挖掘技术研究2010年04月21日“攻防”栏目是H3C攻防研究团队定期向读者分析安全事件、安全漏洞、漏洞技术以及分享实践经验的园地。H3C攻防研究团队是进行安全趋势研究、安全热点事件追踪和漏洞挖掘分析的专业团队,其目的是将研究的成果及时转化到H3C安全产品。漏洞挖掘技术研究文/H3C攻防研究团队漏洞(vulnerability)是指系统中存在的一些功能性或安全性的逻辑缺陷,包括一切导致威胁、损坏计算机系统安全性的所有因素,是计算机系统在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷和不足。漏洞的存在不可避免,一旦某些较严重的漏洞被攻击者发现,就有可能被其利用,在未授权的情况下访问或破坏计算机系统。先于攻击者发现并及时修补漏洞可有效减少来自网络的威胁。因此主动发掘并分析系统安全漏洞,对网络攻防具有重要的意义。目前国际上比较权威的漏洞发布机构是国际安全组织CVE(Common Vulnerabilities & Exposures,通用漏洞披露)和CERT(Computer Emergency Response Team,计算机应急响应小组)。CVE会对认证产品从CVE Mapping等四个维度进行严格考核,同时会对厂商的攻防研究能力也进行持续的定期评估,在攻防领域没有持续投入的厂商会被取消CVE认证资格。H3C很早就从事漏洞的分析和研究,是CVE兼容性认证厂商和MAPP(Microsoft Active Protections Program,微软主动防御计划)认证厂商。漏洞研究主要分为漏洞挖掘与漏洞分析两部分。漏洞挖掘技术是指对未知漏洞的探索,综合应用各种技术和工具,尽可能地找出软件中的潜在漏洞;漏洞分析技术是指对已发现漏洞的细节进行深入分析,为漏洞利用、补救等处理措施作铺垫。本文简要介绍几种流行的漏洞挖掘方法,以及使用该方法挖掘的典型漏洞。1 漏洞挖掘技术分类根据分析对象的不同,漏洞挖掘技术可以分为基于源码的漏洞挖掘技术和基于目标代码的漏洞挖掘技术两大类。随着Internet和网页应用的普及,Web漏洞挖掘技术也浮出水面。Web漏洞出现在动态Web页面程序中,动态Web页面一般是无法获取到源码或只能获取部分源码的,因此Web漏洞挖掘技术可以归类为基于目标代码的漏洞挖掘技术。基于源码的漏洞挖掘是将源码获取后,使用自动工具或手工检查的方法进行源代码分析,从而找到软件漏洞的技术。这类漏洞挖掘多是在软件生产中测试过程的一环,可以提高软件发布后的安全性。开源(Open Source)软件也经常被第三方机构、爱好者和黑客做开源漏洞挖掘,为的是找到更多开源软件的漏洞,以促进软件的健壮性。基于目标代码的漏洞挖掘技术与软件测试技术相近,分为白盒分析、黑盒分析和灰盒分析三种。白盒分析采用逆向工程的方法将目标程序转换为二进制码或还原部分源代码。但是在一般情况下,很难将目标程序完全转换为可读的源代码,尤其是当原作者采用了扰乱、加密措施后,采用白盒分析会很困难。黑盒分析是控制程序的输入,观察输出的一种方法,而不对目标程序本身进行逆向工程。它可以对某些上下文关联密切、有意义的代码进行汇聚,降低其复杂性,最后通过分析功能模块,来判断是否存在漏洞。但黑盒分析的过程需要分析者具有较高技术水平,否则很难在较短时间内找到可利用的漏洞。灰盒分析则是将两种分析技术结合起来的方法,从而能够提高分析命中率和分析质量。2 漏洞挖掘分析技术漏洞挖掘分析技术有多种,只应用一种漏洞挖掘技术,是很难完成分析工作的,一般是将几种漏洞挖掘技术优化组合,寻求效率和质量的均衡。2.1 人工分析人工分析是一种灰盒分析技术。针对被分析目标程序,手工构造特殊输入条件,观察输出、目标状态变化等,获得漏洞的分析技术。输入包括有效的和无效的输入,输出包括正常输出和非正常输出。非正常输出是漏洞出现的前提,或者就是目标程序的漏洞。非正常目标状态的变化也是发现漏洞的预兆,是深入挖掘的方向。人工分析高度依赖于分析人员的经验和技巧。人工分析多用于有人机交互界面的目标程序,Web漏洞挖掘中多使用人工分析的方法。2.2 Fuzzing技术Fuzzing技术是一种基于缺陷注入的自动软件测试技术,它利用黑盒分析技术方法,使用大量半有效的数据作为应用程序的输入,以程序是否出现异常为标志,来发现应用程序中可能存在的安全漏洞。半有效数据是指被测目标程序的必要标识部分和大部分数据是有效的,有意构造的数据部分是无效的,应用程序在处理该数据时就有可能发生错误,可能导致应用程序的崩溃或者触发相应的安全漏洞。根据分析目标的特点,Fuzzing可以分为三类: 动态Web页面Fuzzing,针对ASP、PHP、Java、Perl等编写的网页程序,也包括使用这类技术构建的B/S架构应用程序,典型应用软件为HTTP Fuzz; 文件格式Fuzzing,针对各种文档格式,典型应用软件为PDF Fuzz; 协议Fuzzing,针对网络协议,典型应用软件为针对微软RPC(远程过程调用)的Fuzz。Fuzzer软件输入的构造方法与黑盒测试软件的构造相似,边界值、字符串、文件头、文件尾的附加字符串等均可以作为基本的构造条件。Fuzzer软件可以用于检测多种安全漏洞,包括缓冲区溢出漏洞、整型溢出漏洞、格式化字符串和特殊字符漏洞、竞争条件和死锁漏洞、SQL注入、跨站脚本、RPC漏洞攻击、文件系统攻击、信息泄露等。与其它技术相比,Fuzzing技术具有思想简单,容易理解、从发现漏洞到漏洞重现容易、不存在误报的优点。同时它也存在黑盒分析的全部缺点,而且具有不通用、构造测试周期长等问题。常用的Fuzzer软件包括SPIKE Proxy、Peach Fuzzer Framework、Acunetix Web Vulnerability Scanner的HTTP Fuzzer、OWASP JBroFuzz、WebScarab等。2.3 补丁比对技术补丁比对技术主要用于黑客或竞争对手找出软件发布者已修正但未尚公开的漏洞,是黑客利用漏洞前经常使用的技术手段。安全公告或补丁发布说明书中一般不指明漏洞的准确位置和原因,黑客很难仅根据该声明利用漏洞。黑客可以通过比较打补丁前后的二进制文件,确定漏洞的位置,再结合其他漏洞挖掘技术,即可了解漏洞的细节,最后可以得到漏洞利用的攻击代码。简单的比较方法有二进制字节和字符串比较、对目标程序逆向工程后的比较两种。第一种方法适用于补丁前后有少量变化的比较,常用的于字符串变化、边界值变化等导致漏洞的分析。第二种方法适用于程序可被反编译,且可根据反编译找到函数参数变化导致漏洞的分析。这两种方法都不适合文件修改较多的情况。复杂的比较方法有Tobb Sabin提出的基于指令相似性的图形化比较和Halvar Flake提出的结构化二进制比较,可以发现文件中一些非结构化的变化,如缓冲区大小的改变,且以图形化的方式进行显示。常用的补丁比对工具有Beyond Compare、IDACompare、Binary Diffing Suite(EBDS)、BinDiff、NIPC Binary Differ(NBD)。此外大量的高级文字编辑工具也有相似的功能,如Ultra Edit、HexEdit等。这些补丁比对工具软件基于字符串比较或二进制比较技术。2.4 静态分析技术静态分析技术是对被分析目标的源程序进行分析检测,发现程序中存在的安全漏洞或隐患,是一种典型的白盒分析技术。它的方法主要包括静态字符串搜索、上下文搜索。静态分析过程主要是找到不正确的函数调用及返回状态,特别是可能未进行边界检查或边界检查不正确的函数调用,可能造成缓冲区溢出的函数、外部调用函数、共享内存函数以及函数指针等。对开放源代码的程序,通过检测程序中不符合安全规则的文件结构、命名规则、函数、堆栈指针可以发现程序中存在的安全缺陷。被分析目标没有附带源程序时,就需要对程序进行逆向工程,获取类似于源代码的逆向工程代码,然后再进行搜索。使用与源代码相似的方法,也可以发现程序中的漏洞,这类静态分析方法叫做反汇编扫描。由于采用了底层的汇编语言进行漏洞分析,在理论上可以发现所有计算机可运行的漏洞,对于不公开源代码的程序来说往往是最有效的发现安全漏洞的办法。但这种方法也存在很大的局限性,不断扩充的特征库或词典将造成检测的结果集大、误报率高;同时此方法重点是分析代码的“特征”,而不关心程序的功能,不会有针对功能及程序结构的分析检查。2.5 动态分析技术动态分析技术起源于软件调试技术,是用调试器作为动态分析工具,但不同于软件调试技术的是它往往处理的是没有源代码的被分析程序,或是被逆向工程过的被分析程序。动态分析需要在调试器中运行目标程序,通过观察执行过程中程序的运行状态、内存使用状况以及寄存器的值等以发现漏洞。一般分析过程分为代码流分析和数据流分析。代码流分析主要是通过设置断点动态跟踪目标程序代码流,以检测有缺陷的函数调用及其参数。数据流分析是通过构造特殊数据触发潜在错误。 比较特殊的,在动态分析过程中可以采用动态代码替换技术,破坏程序运行流程、替换函数入口、函数参数,相当于构造半有效数据,从而找到隐藏在系统中的缺陷。常见的动态分析工具有SoftIce、OllyDbg、WinDbg等。3 典型技术应用3.1 使用Fuzzing技术进行网页漏洞挖掘 图1Acunetix Web Vulnerability Scanner软件的HTTP Fuzzer工具使用Acunetix Web Vulnerability Scanner软件进行漏洞挖掘,该软件提供了一些预定义好的Fuzz运算参数库,可以便于初学者上手,也可以方便分析者使用。过程如下:1、 定义HTTP请求(Request),即定义所需访问的网页URL;2、 定义运算参数(Add generator),即定义可能产生漏洞的字符串表达式,如:查找$password、$passwd、$token;3、 插入运算参数(Insert into request),即将定义好的多条运算参数绑定为一条搜索策略;4、 定义成功触发特征(Fuzzer Filters),将运算参数与HTTP请求绑定;5、 扫描(Start);6、 等待软件返回匹配的项,这些项就是可能的漏洞。经过以上步骤,一个网页中可能存在的漏洞就被发现了。3.2 使用补丁比对技术找到漏洞的例子2008年10月23日,微软发布的MS08-067的补丁,该问题被列为严重。该安全更新解决了服务器服务中一个秘密报告的漏洞。如果用户在受影响的系统上收到特制的RPC请求,则该漏洞可能允许远程执行代码。漏洞挖掘过程为例说明补丁对比技术的应用。首先保留一份原始文件,然后安装新的补丁程序,提取出相同和新加入的文件后,就可以使用软件进行对比。 图2经过对比后发现被修改的3个函数对比软件列出了三个函数名称,分别为0.25、0.67和0.94并列出补丁前后的相似程度。通过
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年威海市文登区卫生健康局所属事业单位公开招聘工作人员(67人)模拟试卷及答案详解(名师系列)
- 2025河南省蓝天实验室招聘工作人员20人模拟试卷及答案详解(易错题)
- 2025年齐齐哈尔工程学院博士人才招聘50人考前自测高频考点模拟试题及完整答案详解一套
- 2025年汉中市中心医院第二批备案制工作人员招聘(19人)模拟试卷附答案详解
- 2025年福建省莆田市度尾镇向社会招聘1人考前自测高频考点模拟试题附答案详解(模拟题)
- 2025广西百色市西林县社会保险事业管理中心招聘编外聘用人员6人模拟试卷带答案详解
- 2025年塑铝稳态管项目合作计划书
- 2025年管业:地暖专用管合作协议书
- 2025年高精度数字电压表合作协议书
- 2025湖南郴州桂东县城市管理和综合执法局辅助执法临聘人员招聘考前自测高频考点模拟试题及1套参考答案详解
- 2025年河北唐山市芦台经济开发区公开招聘区属国有企业工作人员18人笔试模拟试题及答案解析
- 树妈妈和树叶娃娃教学课件
- 酒店突发事件应急预案2025优化版
- 2024年新高考Ⅰ卷英语真题(原卷+答案)
- 2025年注册安全工程师考试冲刺押题:安全生产管理实务专项训练试卷
- 外贸会计自学课件
- 2024年黑龙江哈尔滨工业大学辅导员招聘真题
- 高质量临床护理服务实施路径
- 2025年辅警招聘考试试题库及答案(必刷)
- 烟花爆竹经营培训试题及答案
- 2025年医院精神科冲动伤人患者应急预案及演练脚本
评论
0/150
提交评论