CN108446235A - 结合路径标签数据变异的模糊测试关键数据定位方法 - Google Patents
结合路径标签数据变异的模糊测试关键数据定位方法 Download PDFInfo
- Publication number
- CN108446235A CN108446235A CN201810235294.4A CN201810235294A CN108446235A CN 108446235 A CN108446235 A CN 108446235A CN 201810235294 A CN201810235294 A CN 201810235294A CN 108446235 A CN108446235 A CN 108446235A
- Authority
- CN
- China
- Prior art keywords
- data
- program
- file
- variation
- byte
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/02—Computing arrangements based on specific mathematical models using fuzzy logic
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Algebra (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Analysis (AREA)
- Molecular Biology (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Biomedical Technology (AREA)
- Automation & Control Theory (AREA)
- Life Sciences & Earth Sciences (AREA)
- Debugging And Monitoring (AREA)
Abstract
针对现有的二进制程序模糊测试中关键数据定位方法资源消耗大、误报率较高等问题,提出结合路径标签数据变异的模糊测试关键数据定位方法。该方法首先通过静态分析定位二进制程序中的危险操作;然后使用动态插桩跟踪程序的执行过程,获取危险操作的路径标签和参数;最后通过分析测试数据变异前后跟踪结果的异同从而定位关键数据。实验结果表明,该方法能够在较低的资源消耗下有效定位测试数据中的关键数据,误报率小于0.4%,同时查全率大于80%,精确率大于60%。该方法可以用于提高二进制程序模糊测试的漏洞挖掘能力,具有一定的实用价值。
Description
技术领域
本发明涉及结合路径标签数据变异的模糊测试关键数据定位方法,属于计算机与信息科学技术领域。
背景技术
对于一个程序的输入数据而言,其中与危险操作(如内存分配、内存拷贝、字符串操作、含有格式化参数的函数等)相关的数据通常是非常少的,而这些数据控制着被测程序中安全敏感的危险操作,对这些数据进行变异则具有更大的可能会触发程序中潜在的漏洞,有助于提高模糊测试的效率。
程序的输入数据中与危险操作相关的关键数据一般是非常少的,针对这些关键数据进行模糊测试能够提高模糊测试的效率。结合路径标签和数据变异的模糊测试关键数据定位方法需要解决的基本问题是:模糊测试的目标很多情况下是输入数据的格式未知的二进制程序,它需要使用基于变异的模糊测试方法,但是无法通过格式信息直接定位输入中的关键数据。目前定位的方法主要有人工定位法、基于污点分析的定位方法和基于程序执行路径的定位方法。
1.人工定位
人工定位需要研究人员能够分析出输入数据的具体格式信息,进而定位其中包含的关键数据。人工定位对分析人员的要求比较高,且一般需要比较长的时间。另一方面,人工定位很大程度上依赖于通过二进制程序的逆向分析获取格式信息,但是如今的很多程序使用了混淆、加密等方法保护程序中的代码和数据,使人工分析的代价变得非常大。以Samba项目为例,分析人员花费了12年的时间才成功完成SMB的逆向分析工作。
2.基于污点分析的定位方法
污点分析主要可以分为两类:粗粒度污点分析和细粒度污点分析。粗粒度污点分析中,所有的寄存器和内存单元仅存在污染和未污染两个标签,最终的分析结果只能判断出某个位置是否存在被污染的情况,不能定位到污染来源于输入数据中具体的某个位置。而细粒度污点分析方法对输入数据进行分析。在细粒度污点分析中,一般以字节为单位给输入数据中每一个字节分配一个不同的标签,将每一个字节当作是不同的污染源。在分析污染传播的过程中始终带着这些不同的标签,即分析结果中将能够通过这些标签定位到被污染的数据来源于输入数据中的哪个位置。污点分析的方法需要记录程序执行时污点传播的过程。在仅有程序二进制文件的情况下,一般使用指令级的程序插桩来搜集数据,对程序的运行过程影响较大,最终获取到的跟踪数据一般也比较庞大,整体的资源消耗较大。另外,污点分析过程中,没有考虑程序对输入数据的验证过程,其定位结果存在比较多的误报。
3.基于程序执行路径的定位方法
通过程序执行路径信息对二进制程序的输入数据进行分析。该方法首先记录二进制程序处理变异的输入数据时的执行路径,然后通过分析执行路径的变化并结合输入数据本身的数字特征确定输入数据中各个部分的数据类型。这种方法考虑了程序执行路径对分析结果的影响,但通过数字特征进行辅助定位的方式使结果中存在比较多的误报。
综上所述,目前定位关键数据的方法存在资源消耗大、误报多等问题,针对这些问题,本发明提出结合路径标签数据变异的模糊测试关键数据定位方法,该方法使用插桩技术监控并记录二进制程序处理测试数据时的执行路径、危险操作的参数,进而通过分析二进制程序在处理变异前后的测试数据上的差异定位关键数据。
发明内容
本发明的目的是减少二进制程序模糊测试中关键数据定位方法资源消耗、误报率高等问题,提出结合路径标签数据变异的模糊测试关键数据定位方法。
本发明的设计原理为:首先通过静态逆向分析定位二进制程序中危险操作的位置;然后使用函数插桩获取程序运行过程中危险操作的参数,使用基本块插桩记录程序的执行路径,并将直到某个危险操作时程序执行过的基本块序列的哈希作为该危险操作的路径标签;最后通过分析测试数据变异前后相同路径标签下同一个危险操作的参数变化来定位关键数据。
本发明的技术方案是通过如下步骤实现的:
步骤1,静态分析。
步骤1.1,分析二进制程序的依赖库。
步骤1.2,定位二进制程序及其依赖库中的危险操作。
步骤2,动态分析。
步骤2.1,通过插桩的方式对程序的执行过程和危险操作进行监控,所需的危险操作位置信息可由上一步的静态分析获得。
步骤2.2,数据变异,使用变异操作能够以原始的输入数据为模板,生成大量的新的测试数据。
步骤2.3,程序跟踪,主要是监控并记录被测二进制程序的执行过程。
步骤2.4,危险操作监控,对危险操作的监控需要记录危险操作对应的函数的名称、路径标签和参数。使用静态分析得到的信息能够定位到函数的位置,进而通过动态插桩技术在函数的起始位置处进行插桩,就可以在函数实际执行前来记录函数的相关信息。
步骤3,跟踪数据分析。逐个变异初始测试数据X中的每个字节,跟踪二进制程序处理这些变异后的测试数据的过程,分析其中包含的危险操作并将其与初始测试数据的记录作对比,并得到关键数据的集合SK。
有益效果
相比于人工定位法,本发明可以有效的避免分析人员通过逆向分析二进制程序以获取格式信息的压力和时间成本。
相比于基于污点分析的定位法,本发明能定位到污染来源于输入数据中具体的某个位置,对程序的运行过程影响较小,整体的资源消耗减小。另外,污点分析过程中,考虑到了程序对输入数据的验证过程,定位结果误报率低。
相比于基于程序执行路径的定位方法,本发明的结果减少了误报。
附图说明
图1为本发明结合路径标签数据变异的模糊测试关键数据定位方法的原理图。
具体实施方式
为了更好的说明本发明的目的和优点,下面结合实例对本发明方法的实施方式做进一步详细说明。
使用四个常见的文件处理型程序作为实验中的被测程序:图片格式转换程序ImageMagick convert 7.0.5-6和XnSoft NCONVERT v6.88;ZIP文件解压缩程序UnZip6.00;ELF文件分析程序GNU readelf 2.24。
具体流程为:
步骤1,针对不同的程序,准备作为输入文件的测试数据,为ImageMagick convert和XnSoft NCONVERT准备4个不同格式的图片文件(BMP、JPEG、PNG、TIFF),为UnZip准备一个ZIP格式的文件,为readelf准备一个ELF格式的文件。
步骤2,使用010Editor中的Template分析步骤1中准备的测试数据文件,统计并记录文件的大小、文件中包含的敏感数据。
步骤3,针对步骤2中记录的每一字节的敏感数据,依次对其进行变异(每次仅变异一个字节),使用测试程序处理这些变异后的数据,查看处理结果,统计并记录其中变异后无法通过测试程序的验证或者不能改变程序的运行过程和结果的数据,其中,对于readelf,将仅能造成程序显示的结果中的数字发生变化的字节也标记为不能改变程序运行过程的项。
步骤4,修改QEMU源码,增加动态插桩功能以及对正在执行的基本块的相关信息(起始地址、包含的指令数、大小等)的输出,然后以用户模式进行编译。
步骤5,使用修改后的QEMU分别运行每个测试程序,统计测试程序在处理实验中准备的输入数据时执行过的x86-64指令数。
步骤6,使用本发明的方法分别对各个测试程序进行测试,记录被标记的字节、跟踪文件的大小、每次分析的耗时。
步骤7,依次查看本发明的方法标记的每个字节在输入数据中的位置,将其与步骤2、3中的分析结果进行对比,统计其中确实是敏感数据、关键数据的字节数。
步骤8,使用AFL-Analyze分别对各个测试程序进行测试,记录标记为长度类型的字节、每次分析的耗时。
步骤9,依次查看AFL-Analyze标记的每个字节在输入数据中的位置,将其与步骤2、3中的分析结果进行对比,统计其中确实是敏感数据、关键数据的字节数。
测试结果:实验基于路径标签和数据变异的模糊测试关键数据定位方法,按不同的文件格式考虑,表1显示测试数据中包含的敏感数据共354字节,占测试数据的5.49%。考虑不同测试程序对输入的处理,则敏感数据有532字节,所有的敏感数据中有193字节在变异后无法通过测试程序的验证,253字节在变异后无法造成变化,两种数据共446字节,即测试数据中共包含关键数据86字节。表2显示,本发明的方法分析耗时在分钟级,跟踪文件的大小在KB级,共将110字节标记为关键数据,其中确实是敏感数据的有101字节,是关键数据的有69字节。本发明方法在定位关键数据时的精确率为62.7%,查全率为80.2%,误报率为0.386%。表3显示,AFL-Analyze分析耗时在分钟级,共将350字节标记为关键数据,其中确实是敏感数据的有124字节,是关键数据的有11字节。AFL-Analyze在定位关键数据时的精确率为3.14%,查全率为12.8%,误报率为3.19%。有效地以较低的资源消耗定位输入数据中的关键数据并能去除部分无关数据的影响。
表1.原始输入数据分析结果
表2.本文方法实验结果
表3.AFL-Analyze实验结果
以上所述的具体描述,对发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.结合路径标签数据变异的模糊测试关键数据定位方法,其特征在于所述方法包括如下步骤:
步骤1,分析二进制程序的依赖库,定位二进制程序及其依赖库中的危险操作;
步骤2,通过插桩的方式监控程序的执行过程和危险操作,并进行数据变异,生成大量的新的测试数据;
步骤3,程序跟踪,主要是监控并记录被测二进制程序的执行过程以及危险操作监控,同时,对危险操作的监控需要记录危险操作对应的函数名称、路径标签和参数。
2.根据权利要求1所述的方法,其特征在于,使用静态分析得到的信息能够定位到函数的位置,具体步骤包括:
步骤1.1,针对不同的程序准备作为输入文件的测试数据,为ImageMagick convert和XnSoft NCONVERT准备4个不同格式的图片文件(BMP、JPEG、PNG、TIFF),为UnZip准备一个ZIP格式的文件,为readelf准备一个ELF格式的文件;
步骤1.2,使用010Editor中的Template分析步骤1.1中准备的测试数据文件,记录并统计文件的大小、文件中包含的敏感数据;
步骤1.3,针对步骤1.2中记录的每一字节的敏感数据,依次对其进行变异(每次仅变异一个字节),然后使用测试程序处理这些变异后的数据,查看处理结果,统计并记录其中变异后无法通过测试程序的验证或者不能改变程序的运行过程和结果的数据,其中,对于readelf,将仅能造成程序显示的结果中的数字发生变化的字节也标记为不能改变程序运行过程的项。
3.根据权利要求1所述的方法,其特征在于,通过插桩的方式对程序的执行过程和危险操作进行监控,在函数实际执行前记录函数的相关信息,具体步骤包括:
步骤2.1,修改QEMU源码,增加动态插桩功能以及对正在执行的基本块的相关信息(起始地址、包含的指令数、大小等)的输出,然后以用户模式进行编译;
步骤2.2,使用修改后的QEMU分别运行每个测试程序,统计测试程序在处理实验中准备的输入数据时,执行过的x86-64指令数。
4.根据权利要求1所述的方法,其特征在于,分析变异后的测试数据包含的危险操作并将其与初始测试数据的记录作对比,并得到关键数据的集合,具体步骤包括:
步骤3.1,使用本发明的方法分别对各个测试程序进行测试,记录被标记的字节、跟踪文件的大小、每次分析的具体耗时;
步骤3.2,依次查看本发明的方法标记的每个字节在输入数据中的位置,将其与步骤1.2、1.3中的分析结果进行对比,统计其中确实是敏感数据、关键数据的字节数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810235294.4A CN108446235B (zh) | 2018-03-21 | 2018-03-21 | 结合路径标签数据变异的模糊测试关键数据定位方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810235294.4A CN108446235B (zh) | 2018-03-21 | 2018-03-21 | 结合路径标签数据变异的模糊测试关键数据定位方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108446235A true CN108446235A (zh) | 2018-08-24 |
CN108446235B CN108446235B (zh) | 2021-01-12 |
Family
ID=63196064
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810235294.4A Expired - Fee Related CN108446235B (zh) | 2018-03-21 | 2018-03-21 | 结合路径标签数据变异的模糊测试关键数据定位方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108446235B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109308415A (zh) * | 2018-09-21 | 2019-02-05 | 四川大学 | 一种面向二进制的导向性模糊测试方法与*** |
CN109343855A (zh) * | 2018-09-29 | 2019-02-15 | 清华大学 | 基于指令伪装的程序编译抓取***及方法 |
CN109739746A (zh) * | 2018-12-12 | 2019-05-10 | 江苏师范大学 | 一种基于原语句占优分析的变异测试方法 |
CN112905184A (zh) * | 2021-01-08 | 2021-06-04 | 浙江大学 | 一种基于插桩的基本块粒度下工控协议语法逆向分析方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102622558A (zh) * | 2012-03-01 | 2012-08-01 | 北京邮电大学 | 一种二进制程序漏洞的挖掘装置和方法 |
US8336102B2 (en) * | 2007-06-01 | 2012-12-18 | Microsoft Corporation | Delivering malformed data for fuzz testing to software applications |
CN104573524A (zh) * | 2014-12-19 | 2015-04-29 | 中国航天科工集团第二研究院七〇六所 | 一种基于静态检测的模糊测试方法 |
CN104598383A (zh) * | 2015-02-06 | 2015-05-06 | 中国科学院软件研究所 | 一种基于模式的动态漏洞挖掘集成***和方法 |
-
2018
- 2018-03-21 CN CN201810235294.4A patent/CN108446235B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8336102B2 (en) * | 2007-06-01 | 2012-12-18 | Microsoft Corporation | Delivering malformed data for fuzz testing to software applications |
CN102622558A (zh) * | 2012-03-01 | 2012-08-01 | 北京邮电大学 | 一种二进制程序漏洞的挖掘装置和方法 |
CN104573524A (zh) * | 2014-12-19 | 2015-04-29 | 中国航天科工集团第二研究院七〇六所 | 一种基于静态检测的模糊测试方法 |
CN104598383A (zh) * | 2015-02-06 | 2015-05-06 | 中国科学院软件研究所 | 一种基于模式的动态漏洞挖掘集成***和方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109308415A (zh) * | 2018-09-21 | 2019-02-05 | 四川大学 | 一种面向二进制的导向性模糊测试方法与*** |
CN109308415B (zh) * | 2018-09-21 | 2021-11-19 | 四川大学 | 一种面向二进制的导向性模糊测试方法与*** |
CN109343855A (zh) * | 2018-09-29 | 2019-02-15 | 清华大学 | 基于指令伪装的程序编译抓取***及方法 |
CN109343855B (zh) * | 2018-09-29 | 2020-12-29 | 清华大学 | 基于指令伪装的程序编译抓取***及方法 |
CN109739746A (zh) * | 2018-12-12 | 2019-05-10 | 江苏师范大学 | 一种基于原语句占优分析的变异测试方法 |
CN112905184A (zh) * | 2021-01-08 | 2021-06-04 | 浙江大学 | 一种基于插桩的基本块粒度下工控协议语法逆向分析方法 |
CN112905184B (zh) * | 2021-01-08 | 2024-03-26 | 浙江大学 | 一种基于插桩的基本块粒度下工控协议语法逆向分析方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108446235B (zh) | 2021-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108446235A (zh) | 结合路径标签数据变异的模糊测试关键数据定位方法 | |
US9740506B2 (en) | Automating interactions with software user interfaces | |
US9448908B2 (en) | System and method for model based session management | |
CN101916225B (zh) | 图形用户界面软件功能覆盖测试方法 | |
CN105550594B (zh) | 安卓应用文件的安全性检测方法 | |
US20140189576A1 (en) | System and method for visual matching of application screenshots | |
US20140218385A1 (en) | System and method for visual segmentation of application screenshots | |
CN109583200A (zh) | 一种基于动态污点传播的程序异常分析方法 | |
CN111459799A (zh) | 一种基于Github的软件缺陷检测模型建立、检测方法及*** | |
CN104766015B (zh) | 一种基于函数调用的缓冲区溢出漏洞动态检测方法 | |
CN113268427B (zh) | 一种针对二进制程序的崩溃分析方法及*** | |
CN110543422B (zh) | 一种用于fpr的软件包代码缺陷数据处理方法、***及介质 | |
CN108170468A (zh) | 一种自动检测注释和代码一致性的方法及其*** | |
CN112131122B (zh) | 一种源代码缺陷检测工具误报评估方法及装置 | |
US9213543B2 (en) | Software internationalization estimation model | |
CN104715190A (zh) | 一种基于深度学习的程序执行路径的监控方法及*** | |
CN112131120A (zh) | 一种源代码缺陷检测方法及装置 | |
CN111966587A (zh) | 数据采集方法、装置和设备 | |
CN111309589A (zh) | 一种基于代码动态分析的代码安全扫描***及方法 | |
CN108469997B (zh) | 一种基于动态特征的自定义堆管理函数的自动识别方法 | |
CN114741700B (zh) | 基于符号化污点分析的公共组件库漏洞可利用性分析方法及装置 | |
Koutsopoulos et al. | Advancing data race investigation and classification through visualization | |
CN110532158B (zh) | 操作数据的安全评估方法、装置、设备及可读存储介质 | |
US9244814B1 (en) | Enriched log viewer | |
WO2021104027A1 (zh) | 代码性能检测方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210112 |