(read)基于Fuzzing的PNG漏洞挖掘技术_夏建军
- 格式:pdf
- 大小:255.71 KB
- 文档页数:4
基于Fuzzing的文件格式漏洞挖掘技术摘要随着计算机的不断发展,人们的生活越来越离不开各种各样计算机应用软件的辅助。
而随着大量应用软件的诞生,产生的软件安全问题也慢慢开始引起更多人的重视。
攻击者经常利用软件漏洞来直接绕过系统安全防御,进而控制整个操作系统。
漏洞挖掘作为软件安全领域一个重要的分支,旨在提高软件安全质量,尽可能先于攻击者发现安全问题,以降低安全风险。
由于传统的漏洞挖掘方式主要通过白盒测试来对软件源代码进行审计,这种方法不仅需要审核者了解编程概念和产品功能的每一个细节,而且还需要测试人员首先获得产品的源代码。
而基于Fuzzing的漏洞挖掘技术可以在不需要访问源代码的基础上对软件进行安全测试,在发掘那些用传统代码审计无法发现的产品关键安全漏洞方面,Fuzzing可以更加高效的发现软件中存在的问题。
本设计基于Windows平台上文件格式漏洞分析方法,通过Fuzzing技术实现对软件的自动化安全测试。
首先提出基于文件内容变异和基于文件结构生成两种生成畸形文件方法。
然后利用反汇编引擎l ibdasm完成对目标程序的异常监控。
最后分别用C#和C语言实现一个比较完整的文件格式Fuzzing测试系统,能够对目标程序进行Fuzzing测试,并将测试结果通过UI展现给测试人员。
关键词:模糊测试漏洞挖掘软件安全安全测试文件格式漏洞File Format Vulnerability Discovery ExploitingTechnique Based on FuzzingABSTRACTWith the Development of Computer Science,People's lives becomea large number of application software ,the issue of security become draw more and more people‟s attention. Attackers often exploit software vulnerabilities to bypass the security defense of system directly, and then control the whole operating system.As a branch of software security, vulnerability discovery aimed at improve the quality of software , As early as possible before Attracter find the Security issue, Reduce security risks. Traditional vulnerabilities discovery mainly through the white-box testing base on source-code, it is not only require auditor have knowledge of coding program and function of products, but also need to get the source-code of products. Use Fuzzing in vulnerabilities discover means you can auditor software not require access to source-code. Fuzzing can be more efficient to audit critical security vulnerabilities than traditional code audit.This paper base on the method of vulnerabilities analysis on windows Operating system, Using Fuzzing to achieve automation software security testing. Firstly it comes up with two methods to generate malformed file: Content-based and structure-based, and Secondly it use the disassembly engine-l ibdasm to monitor the exception of target software. Finally it use C# and C programming language to achieves a visual tools for Fuzzing and aids auditor to analysis vulnerabilities.Key Words:Fuzzing; Vulnerability Discovery Exploiting; Software Security; Security Testing; File Format Vulnerability;目录第一章绪论............................................................................................................. (1)1.1选题的研究目的和意义 (1)1.1.1课题背景 (1)1.1.2课题意义 (2)1.2国内外发展现状 (2)1.3 主要研究内容 (4)第二章Fuzzing技术介绍 (5)2.1 Fuzzing测试的定义 (5)2.2文件格式Fuzzing测试的方法 (6)2.2.1 构造测试数据 (6)2.2.2 文件格式Fuzzing的流程 (8)2.3 相关工具介绍 (9)第三章:构造畸形数据文件 (12)3.1基于内容变异构造畸形文件 (12)3.2基于结构生成畸形文件 (13)3.2.1 xml文件结构描述语言 (13)3.2.2用xml定义简单的文件结构 (14)3.2.3基于结构生成畸形文件的优缺点 (16)3.3 本章小结 (16)第四章异常检测 (17)4.1反汇编技术 (17)4.2 反汇编引擎libdasm的使用 (18)4.3异常检测模块开发 (19)4.5 本章小结 (20)第五章:FileFuzz的实现 (21)5.1开发环境 (21)5.2开发语言选择 (22)5.3畸形文件生成模块的设计与实现 (22)5.3.1基于变异方式生成畸形文件 (22)5.3.2基于结构生成畸形文件 (25)5.4监视模块设计与实现 (26)5.5配置模块设计与实现 (28)5.6 本章小结 (31)第六章:系统测试 (32)6.1基于文件内容变异测试 (33)6.2基于文件结构生成测试 (37)6.3本章小结 (39)结束语 (39)参考文献 (40)附录 (41)致谢 (45)第一章绪论1.1选题的研究目的和意义1.1.1课题背景软件作为计算机的重要组成部分,在计算机发展过程中有着巨大的作用,随着现代软件工业的发展,软件规模不断的扩大,软件内部的逻辑结构也变得非常复杂,在一些大型的软件公司,测试环节所耗费的资源甚至已经超过了开发,可即便如此,无论从理论上还是工程上都没有任何人敢声称能够彻底消灭软件中的所有逻辑缺陷[1]。
doi :10.3969/j.issn.1671-1122.2009.05.017基于漏洞特征和Fuzz 技术的Windows 漏洞挖掘模型研究徐俊扬,文伟平(北京大学软件与微电子学院信息安全系, 北京 102600)摘要:Windows漏洞挖掘已经成为网络安全技术一个重要的组成部分。
在结合逆向工程和fuzz技术的Windows漏洞挖掘模型中加入了漏洞特征的因素:本文首先介绍了逆向工程、漏洞特征建模和fuzz技术的概念和研究内容,接着介绍了基于漏洞特征的Windows漏洞挖掘模型原理。
关键词:逆向工程;漏洞特征;Fuzz技术;漏洞挖掘中图分类号:TP393.08文献标识码:AV ulnerability mining model for Windows based on vulnerability characteristicsand Fuzz technologyXU Jun-yang, WEN Wei-ping(Department of Information Security, SSM, Peking University, Beijing 102600, Chin a)Abstract: Windows vulnerability mining has become an important part of the network security technology. We consider the vulnerability characteristics in the Windows vulnerability mining model based on reverse engineering and technology fuzz technology: first we introduce the reverse engineering and vulnerability characteristics, and then introduce the principle of vulnerability mining model for Windows based on vulnerability characteristics.Key words: Reverse engineering; V ulnerability characteristics; Fuzz technology; Vulnerability mining0 引言随着网络和计算机的普及,Win d o ws 操作系统在全球范围内更加流行。
Value Engineering色空间变换转为计算机可处理的数字信号,使得计算机可以显示和处理视频信号。
目前采样格式有两种:Y:U:V4:1:1和Y:U:V4:2:2,前者是早期产品采用的主要格式,Y:U:V4: 2:2格式使得色度信号采样增加了一倍,视频数字化后的色彩、清晰度及稳定性有了明显的改善,是下一代产品的发展方向。
视频编码技术是将数字化的视频信号经过编码成为电视信号,从而可以录制到录像带中或在电视上播放。
对于不同的应用环境有不同的技术可以采用。
从低档的游戏机到电视台广播级的编码技术都已成熟。
5结束语多媒体的含义就是把电视式的视听信息的传播能力与计算机能够有效的结合起来,创造出新型的信息处理模式,使计算机具有可控制和传输多媒体电子邮件、电视会议等视频传输的功能,使之完全标准化和实用化,以此成为这场新技术革命的重大课题。
世界很大,却也很小,这句话说得很对,多媒体技术就使人们跨越时空了解到天文地理、古往今来、各地的风土人情。
但是随着人们生活水平的提高,从多媒体的发展不难看出,通讯、数字声像技术、网络电视、3G、MP4、MP5等等,这些都体现了人类文明的进步。
参考文献:[1]徐洪珍,周书民.基于MVC的分布式网络付费平台的设计与实现[J].计算机与现代化,2006(01).[2]顾伟泉.数字版权管理的技术体系分析[J].情报杂志,2004(10).[3]王法涛.数字权限管理技术(DRM)应用研究[D].吉林大学,2006.[4]刘飞.基于存储卡的数字版权管理系统的研究及设计[D].北京邮电大学,2006.[5]华宇.J2EE设计模式及其在企业信息系统中的应用研究[D].浙江工业大学,2006.[6]陈凯.P2P网络环境中基于文件的数字版权管理系统[D].上海交通大学,2007.[7]刘健.数字音像内容智能终端系统研究与设计[D].电子科技大学,2008.[8]纪雅莉.音频数字水印技术在数字版权管理中的应用研究[D].武汉理工大学,2006.[9]武淑云.库车电视台媒体资产管理系统的构建和应用[J].有线电视技术,2011(08).[10]杜燕青.浅谈电视节目制作新技术[J].电脑知识与技术,2011(19).0引言近年来,随着软件产业的高速发展,软件的安全漏洞问题也愈发的暴露出来,越来越多的网络黑客行为起源于软件中存在的安全漏洞。
基于Fuzzing的文件格式漏洞挖掘技术
刘涛;王海东
【期刊名称】《中国科技信息》
【年(卷),期】2014(000)009
【摘要】本设计基于Windows平台上文件格式漏洞分析方法,通过Fuzzing技术实现对软件的自动化安全测试,提出基于文件内容变异和基于文件结构生成两种生成畸形文件方法,利用反汇编引擎libdasm完成对目标程序的异常监控.用C#和C 语言实现一个比较完整的文件格式Fuzzing测试系统,能够对目标程序进行Fuzzing测试,并将测试结果通过UI展现给测试人员对应用软件进行Fuzzing测试,并将测试结果展现给研究人员.
【总页数】3页(P160-162)
【作者】刘涛;王海东
【作者单位】天津理工大学计算机与通信工程学院;天津理工大学计算机与通信工程学院
【正文语种】中文
【相关文献】
1.基于文件格式的漏洞挖掘技术研究 [J], 陈韬;孙乐昌;潘祖烈;刘京菊
2.文件格式漏洞Fuzzing测试技术研究 [J], 项巧莲
3.文件格式漏洞Fuzzing测试技术研究 [J], 项巧莲
4.基于Fuzzing的文件格式漏洞挖掘技术 [J], 唐彰国;钟明全;李焕洲;张健
5.基于Fuzzing的网络协议漏洞挖掘技术研究 [J], 尹誉衡
因版权原因,仅展示原文概要,查看原文内容请购买。
总第245期2010年第3期计算机与数字工程Computer&Digital EngineeringVol.38No.392基于Fuzzing的PNG漏洞挖掘技术3夏建军 孙乐昌 吴志勇 王红川 刘京菊(解放军电子工程学院 合肥 230037)摘 要 Fuzzing是一种利用黑盒测试思想的自动化漏洞挖掘技术。
文章基于Fuzzing的漏洞挖掘思想,设计并实现了一个针对PN G文件查看软件的f uzz工具2PN GFuzzer,可以实现对PN G文件的漏洞测试,最后给出了该工具测试的实例。
关键词 漏洞;漏洞挖掘;Fuzzing技术;PN G中图分类号 TP391PN G Vulnerability Exploiting Technique Based on FuzzingXia J ia njun Sun L echang Wu Zhiyong Wang Hongchua n L iu J ingju(Electronic Engineering Institute of PL A,Hefei 230037)Abs t rac t Fuzzing is an automated vulnerability exploiting technique based on black_box test.This paper specifically designs and implementes a PN GFuzzer to test PN G viewers based on f uzzing.Taking CV E2200420599as an example,the us2 age of the PN GFuzzer is also discussed in this paper.Ke y Words vulnerability,vulnerability exploiting,fuzzing,PN GClass Nu m ber TP3911 引言“漏洞”(Vulnerability)是计算机系统在硬件、软件、协议的具体实现或系统安全策略上存在安全方面的缺陷[1]。
漏洞一旦被发现,攻击者就可使用这个漏洞获得计算机系统的额外权限,使在未授权的情况下访问或破坏系统,从而导致危害计算机系统安全。
为了降低漏洞带来的危害,安全工作人员要抢在攻击者之前尽可能多地发现软件中的漏洞并及时修补。
目前常用的漏洞挖掘技术主要有Fuzz2 ing[2~3]技术、静态分析技术(Static Analysis)、动态调试技术(Runtime Analysis)、补丁比较技术等。
流式网络图形格式(Portable Network Grap h2 ic Format,PN G)是一种现在应用较多的位图文件(bit map file)存储格式,由于被广泛地使用,因此, PN G相关软件漏洞的危害性较为严重。
系统研究PN G软件的安全问题,通过分析文件的结构归纳总结可能出现的漏洞类型,及早找出隐藏的漏洞,消除安全隐患,对于增强个人电脑以及网站服务器的安全性都有重要的意义。
论文研究如何运用Fuzzing技术来挖掘基于Windows平台的PN G软件的漏洞。
2 Fuzzing技术2.1 一种漏洞挖掘思路传统的漏洞测试主要由测试人员手工进行,费力费时,并且主要依赖于测试人员的个人经验,难以进行推广应用。
而现阶段的漏洞自动挖掘还处在起步阶段,自动化程度不高,效率低下。
将手工测试和Fuzzing技术相结合,同时借助于Debugger (IDA Pro,Ollydbg等)则是一种很好的漏洞挖掘思路。
通过人工分析,能够了解目标软件的一些基3收稿日期:2009年10月23日,修回日期:2009年11月17日基金项目:电子工程学院博士创新基金资助。
作者简介:夏建军,男,硕士研究生,研究方向:计算机信息安全。
2010年第3期计算机与数字工程93本信息,找出该软件可能出现脆弱点的线索,从而有针对性地利用Fuzzing技术设计并实现具体的f uzzer工具。
使用f uzzer对目标软件的某些脆弱点进行测试出现异常错误时,需要借助于Debug2 ger具体调试目标软件。
2.2 Fuzzing技术介绍Fuzzing是一种利用黑盒测试思想的自动化漏洞挖掘技术[4~5]。
它以一个正常的文件模板为基础,按照一定规则产生一批带有攻击性的畸形文件作为目标软件的输入,并监视软件是否正常,记录软件的错误信息,以程序是否出现异常为标志来发现应用程序中可能存在安全漏洞的疑点。
所谓畸形文件是指文件的必要标识部分和大部分数据都是有效的,但是同时该文件的其余部分是无效的,这样应用程序仍然会认为这是一个有效的文件。
因此,应用程序在解析处理该文件时就可能发生溢出等异常。
可以把Fuzzing理解为一种能自动进行“rough attack”尝试的工具,因为Fuzzing往往可以触发一个缓冲区溢出漏洞,却不能实现有效地Exploit,需要测试人员实时地捕捉目标程序抛出的崩溃和寄存器等信息,综合判断这些错误是不是真正的可利用漏洞[6]。
Fuzzing技术应用领域目前主要包括文件格式、网络协议、Web程序、环境变量和COM对象等。
国内对Fuzzing技术有了初步的研究和简单的应用[7~9]。
3 文件格式分析3.1 PN G文件分析[10]PN G图像格式文件由一个8字节的PN G文件署名(PN G file signat ure)域和按照特定结构组织的数据块(chunk)组成。
PN G定义了两种类型的数据块,一种是称为关键数据块(critical chunk),这是标准的数据块,另一种叫做辅助数据块(ancillary chunks),亦称可选数据块。
关键数据块定义了4个标准数据块,每个PN G文件都必须包含它们,PN G读写软件也都必须要支持这些数据块。
3.1.1 PN G文件署名域8字节的PN G文件署名域用来标识该文件是否为PN G文件。
该域的值是:十进制数13780787113102610十六进制数89504e470d0a1a0a3.1.2 数据块的结构每个数据块都由表1所示的的4个域组成。
表1 PN G文件数据块的结构域的名称字节数说明Length4字节指定数据块中数据域的长度,其长度不超过(231-1)字节Chunk T ypeC ode4字节数据块类型码由ASCII字母(A~Z和a~z)组成Chunk Data可变长度存储按照Chunk T ype Code指定的数据CRC4字节循环冗余码 在表1中,CRC(cyclic redundancy check)域中的值是根据对Chunk Type Code域和Chunk Data 域中的数据产生的。
3.1.3 关键数据块关键数据块中的4个标准数据块是:1)文件头数据块IHDR(header chunk):包含有PN G文件中存储的图像数据的基本信息,并要作为第一个数据块出现在PN G数据流中,而且一个PN G数据流中只能有一个文件头数据块。
文件头数据块由7个域组成,它的格式如表2所示。
表2 PN G文件头数据块的结构域的名称字节数说明Width4bytes图像宽度,以像素为单位Height4bytes图像高度,以像素为单位Bit depth1byte图像深度Color Type1byte颜色类型Compression method1byte压缩方法(L Z77派生算法) Filter method1byte滤波器方法Interlace method1byte隔行扫描方法 2)调色板数据块PL TE(palette chunk):包含有与索引彩色图像(indexed2color image)相关的彩色变换数据。
PL TE实际是一个彩色索引查找表,其表项数目可以是1~256中的一个数,每个表项有3字节,因此调色板数据块所包含的最大字节数为768。
3)图像数据块IDA T(image data chunk):存储实际的数据,在数据流中可包含多个连续顺序的图像数据块。
4)图像结束数据IEND(image trailer chunk):标记PN G文件或者数据流已经结束,并且必须要放在文件的尾部。
3.2 PN G文件中可能的脆弱点Fuzz文件格式需要对文件格式有比较透彻地认识,找出其中可能的脆弱点。
由3.1节可知PN G文件由很多段构成,段里面又由标记、参数、数据块构成,在程序解析PN G文件格式的时候会依据“标记”来确认段,并读取“参数”进行一定的运算,再依据这些参数来处理随后紧跟的“数据”,因此,大量的长度、大小相关的参数可能出现漏洞。
94 夏建军等:基于Fuzzing的PN G漏洞挖掘技术第38卷4 PN GFuzzer的设计实现设计的PN GFuzzer要分为两部分,首先需要在分析文件结构并找出文件脆弱点的基础上,自动生成畸形文件,然后调用需要测试的软件打开畸形文件,如果软件能够正常运行,则构造新的畸形文件再重新用软件打开,一直到测试完毕或者软件出图1 PN GFuzzer漏洞挖掘流程图现异常退出为止。
如果软件打开畸形文件出现异常,就可以利用Ollydbg等工具进行调试,然后进一步分析和利用。
PN GFuzzer是针对Windows平台下PN G查看软件进行漏洞自动挖掘的工具,其漏洞挖掘流程如图1所示。
4.1 构造畸形PN G文件根据对文件格式的分析,构造畸形PN G文件是以一个正常的PN G文件模板为基础,用随机数据替换该文件的与大小、长度相关的数据,由此生成测试用的数据文件。
需要注意的是,CRC值是对Chunk T ype Code域和Chunk Data域中的数据进行计算得到的。
对于部分位置数据的修改会引起CRC值的变化,因此需要计算修改相应的CRC值。
4.2 自动测试在确定了畸形PNG文件的构造方法后便可实现自动测试。
这里选择测试Visual PNG打开畸形PNG 文件时是否存在漏洞。
首先,PN GFuzzer利用一个正常的PN G文件(图2)为模板生成一个畸形PNG文件3.png,然后调用Visual PN G打开3.png,如果没有异常,3秒后Visual PNG自动关闭,PN GFuzzer重新生成一个新的畸形PNG文件,重复上面的过程,直到测试完所有的脆弱点或者发现漏洞。
如果Visual PN G打开畸形PN G文件时出现异常,程序停止运行,并显示“Detected a fault!”(图3)。
PN GFuzzer中的异常判断部分是采用读取进程的方法实现的,每次Visual PN G打开一个畸形PN G文件后,读取一个进程快照,看是否存在dwwin.exe进程,这个进程是Windows下每个程序异常退出系统调用的进程,因此对于每个PN G 查看软件都可以采用这种方法判断是否异常。