CN107085687A - 基于二进制熵的模糊测试加解密函数定位方法 - Google Patents
基于二进制熵的模糊测试加解密函数定位方法 Download PDFInfo
- Publication number
- CN107085687A CN107085687A CN201710331195.1A CN201710331195A CN107085687A CN 107085687 A CN107085687 A CN 107085687A CN 201710331195 A CN201710331195 A CN 201710331195A CN 107085687 A CN107085687 A CN 107085687A
- Authority
- CN
- China
- Prior art keywords
- encryption
- entropy
- decryption function
- binary system
- decryption
- 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
- 238000000034 method Methods 0.000 title claims abstract description 48
- 229910002056 binary alloy Inorganic materials 0.000 title claims abstract description 22
- 238000012360 testing method Methods 0.000 title abstract description 22
- 230000006870 function Effects 0.000 claims abstract description 47
- 238000004458 analytical method Methods 0.000 claims abstract description 26
- 238000001514 detection method Methods 0.000 claims abstract description 9
- 238000004364 calculation method Methods 0.000 claims description 9
- 230000008859 change Effects 0.000 claims description 6
- 238000009412 basement excavation Methods 0.000 abstract description 4
- 230000004807 localization Effects 0.000 abstract description 3
- 230000007812 deficiency Effects 0.000 abstract 1
- 230000001737 promoting effect Effects 0.000 abstract 1
- 230000000694 effects Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000000205 computational method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- 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/3684—Test management for test design, e.g. generating new test cases
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
Abstract
本发明涉及一种基于二进制熵的加解密函数的定位方法,属于信息安全中的二进制漏洞挖掘领域,目的是为解决模糊测试中加解密函数的定位能力不足、尤其是区分加解密与其他类似运算易出现误判的问题。本方法采用二进制熵分析的方法,首先观察关键内存位置的指令特征,若发现疑似加解密运算后,进行动态分析,取出敏感操作对应的一段连续内存,分别对其进行块密码分析和流密码分析,因为加解密函数与哈希算法的指令特征非常相似,所以为排除哈希算法对加密判断的影响,进行哈希运算检测。由于可能存在其他私有的加解密方法,再对上述结果进行二进制熵分析,最后通过综合判定定位加解密函数的位置。本发明准确率较高,空间消耗低,适用于对精度要求较高、数据量较大的模糊测试领域,具有很好的应用价值和推广价值。
Description
技术领域
本发明涉及一种基于二进制熵的加解密函数的定位方法,属于信息安全中的二进制漏洞挖掘领域。
背景技术
软件、协议漏洞可以使攻击者在未授权的情况下对系统进行访问或破坏,严重威胁到信息系统的安全,因此对漏洞问题的研究已成为当下信息安全领域的重要研究内容。目前,利用软件在危害发生前挖掘漏洞已成为行之有效的解决安全漏洞的方法,因此,漏洞挖掘对保护信息系统安全有着至关重要的作用。
模糊测试技术是目前安全领域最常用、综合效果较好的漏洞挖掘方法,该技术通过向目标系统提供随机构造的测试用例(非预期输入,即经过变异的输入数据,该数据随机性强,不可预测性大),监视系统的执行过程是否出现崩溃、挂起或其他异常,判定目标系统是否存在安全问题。但随机构造的测试用例不可预测性大,对于包含加解密函数的目标系统程序,通常由于复杂的运算操作导致测试效果显著降低,比如加解密函数导致数据的格式信息被混淆,使得加密字段的变异仅仅是测试解密函数,却往往测不到加密函数后的主要程序流程。目前解决该问题的有效方法即是定位加解密函数在程序中的位置,因此,本发明将提供一种基于二进制熵的方法对加解密函数在程序中的位置进行定位。
目前定位加解密函数的常用方法主要有四类:
1.人工分析定位
这种方法主要针对非公开协议,由经验丰富的分析人员分析输入字段,从而确定加解密函数的位置。但很多程序使用私有加密算法或经过代码混淆,协议包含大量未知字段和变长字段,难以准确定位加解密函数位置,而且持续时间长,效果却不尽人意,因此人工分析方法定位加解密函数的的代价越来越高。
2.静态分析定位
这种方法通过定位算法对加解密函数进行自动定位。虽然该方法的定位算法比较稳定、精确度高、资源消耗少,但由于无法获得程序运行时的信息流数据,只能判定是否存在某种算法,即使定位到加解密函数的位置也无法进行模糊测试;过度依赖于算法模式匹配,由于是通过算法特征片段的签名进行模式匹配,所以对于更新签名后的算法或未知算法该方法的判断效果较差;无法检测经过加密、混淆的程序和数据。
3.基于流量的分析定位
该方法主要通过报文各字节的变化规律和频率提取协议信息,平台通用性较高,但只能判定是否包含加解密函数,无法获得程序运行时的函数定位信息,因此难以应用到二进制程序的模糊测试中。
4.基于动态的定位
该方法采用符号执行、反调试等手段获得动态执行过程中的控制流信息,采用污点跟踪获得信息流信息,通过分析控制流信息、信息流信息、程序行为和汇编指令特征,定位加解密函数的位置,但容易受哈希等其他运算的影响,导致定位不准确。
综上所述,加解密函数定位方法中人工分析和静态定位的缺点较为明显,实用价值较小;流量分析法只能确定有无加解密函数,无法在程序中定位,而动态定位法易受到哈希等其他的影响,导致定位不准确。所以本发明提出了一种基于二进制熵的加解密函数定位方法,用于定位程序的加解密函数,并在二进制程序中具有良好的效果。
发明内容
本发明的目的是为解决模糊测试中加解密函数的定位能力不足、尤其是区分加解密与其他类似运算易出现误判的问题,提出一种基于二进制熵的加解密函数定位方法。
本发明的设计原理为:观察关键内存位置的指令特征,若发现疑似加解密运算后,进行动态分析,取出敏感操作对应的一段连续内存,分别对其进行流密码分析和块密码分析,因为加解密函数与哈希算法的指令特征非常相似,所以为排除哈希算法对加密判断的影响,进行哈希运算检测。由于可能存在其他私有的加解密方法,再对上述结果进行二进制熵分析,最后通过综合判定定位加解密函数的位置。
本发明的技术方案是通过以下步骤实现的:
步骤1,动态插桩,依靠运算指令特征,寻找基本块(有且只有一个出口和入口的语句序列)并定位,在连续内存区域取出关键内存信息。
步骤1.1,运行被测程序,通过二进制指令插桩工具检测该程序,遇到跳转指令如call、jmp等时,认定之前的语句序列为一个基本块。
步骤1.2,建立一个外部文件,记录所有基本块的入口地址(EIP指针寄存器的数值)。
步骤1.3,程序结束前重复以上步骤,则可获取所有路径信息,通过路径信息定位基本块后,在连续内存区域取出关键内存信息。
步骤2,对关键内存信息进行哈希运算检测、块密码分析、流密码分析,具体方法如下:
步骤2.1,对关键内存信息进行哈希运算检测,设置判断某路径的各基本块的汇编指令比例(算数指令在基本块中的占比)的阈值为55%(不可变),初步确定哈希计算位置后对此处进行反向追踪寄存器,通过变异输入数据集Input,检测输出集Output的变化,若寄存器间是低输入依赖(修改输入集数据的任意一个比特,输出数据变化的比特比例小于50%),则此基本块为哈希计算。
步骤2.2,对关键内存信息进行块密码分析,修改输入数据集Input中任意一位比特位,观测Output数据集中是否存在以字节为单位的某个子集全部被修改且大小不定,排除哈希运算后若存在则判定此基本块为块密码,若不是则进行流密码分析。
步骤2.3,对关键内存信息进行流密码分析,通过对输入数据集Input进行依次变异,检测输出集Output的变化,二者间是否存在弱相关关系,若存在则判定此基本块为流密码。
步骤3,对步骤2中的结果进行二进制熵分析,输出加解密函数判决。具体方法为:
步骤3.1,使用同一路径下多次动态跟踪的方法,获得较大样本,统计函数执行路径信息,调出路径相同的几次执行的输入数据,取其平均数为标准,以字节为单位统计每个字符的出现频率pi并计算输入数据的平均熵
步骤3.2,根据块密码、流密码分析得到的输出集Output,并计算输出数据的平均熵
步骤3.3,定义输出熵值和输入熵值的比值为Rio,输出熵值和极限熵Hlimit之间的比值为Rol,对Rio和Rol作联合判决,当Rio大于加密阈值THe,同时小于混乱度阈值THc时,可以判定该程序段是做加解密操作。此过程的相关计算公式如下。
二进制熵的计算公式为:
其中,K为1,m为输入数据字符种类数,本方法中取m为255,pi是某元素出现的概率,log是以2为底的对数。
Rio的计算公式为:
Rol的计算公式为:
其中,nii表示输入集中第i种字符的个数;noi表示输出集中第i种字符的个数;N表示输入集的字节数;u和v表示内存中输出集的取值区间;c表示输出集的总长度;Hlimit表示一个字节下的极限熵。
有益效果
相比于现有的加解密函数定位方法,本发明采用的基于二进制熵的定位方法,不仅能判断函数中是否存在加解密,还能排除其它计算函数的干扰,精确定位加解密函数,并且适用于二进制程序,有助于提高模糊测试的覆盖率。
以上特点使本发明更加适用于模糊测试情景中,因为模糊测试需要运行大量的测试用例,而本发明可以插入到模糊测试的流程中,充分利用这些测试用例对目标系统进行检测。
附图说明
图1为本发明基于二进制熵的加解密函数定位原理图;
图2为本发明中块密码判断流程图;
图3为本发明中哈希运算检测流程图。
具体实施方式
为了进一步阐述本发明的目的和优点,下面通过具体实例对本发明方法的实施过程进行详细说明。
步骤1,定位基本块,获取关键内存信息。具体方法为:由于AFL模糊测试框架测试速度快、体量小等优点,选其作为开发平台,并选择基于二进制的测试方法,使用QEMU(二进制指令插桩工具)监控二进制程序,进行动态插桩。给出初始输入数据作为初始变异样本I,使用AFL测试工具加载并运行被测程序一段时间,根据数据库中的运算指令特征,并使用QEMU检测该程序,在程序内寻找符合特征的基本块,根据已记录的基本块的路径信息,获取I中对应的Input输入数据集,以及直接定位该基本块的位置,寻找连续的内存数据,建立输出数据集Output。
步骤2,依次进行哈希、块密码、流密码分析。具体方法为:统计哈希计算中Output数据集中每一位数值,并统计当Input数据集中一位改变时Output的哪些字段随之改变,设定雪崩阈值(输入数据修改任意一个比特,输出数据变化的比特位数所占比例)T为45%~55%,并检测在阈值范围内的Output数据集大小是否为常数,重复此过程5次后取平均值;重复上述的统计步骤次数5次以内,若存在强相关关系,则判定为块密码;若不存在强相关关系,重复上述的统计步骤10次以内,若存在弱相关关系的数位达到雪崩阈值T≥95%,则判定为流密码。
步骤3,根据步骤2生成的Output数据集进行二进制熵检测。具体方法为:统计函数执行后的路径信息,调出路径相同的几次执行的输入数据,取其平均数为标准,以字节为单位统计每个字符的出现频率并计算输入数据的平均熵根据块密码、流密码分析得到的输出集Output,并计算输出的平均熵定义输出熵值和输入熵值的比值为Rio,输出熵值和极限熵Hlimit之间的比值为Rol,对Rio和Rol作联合判决,当Rio大于加密阈值THe,同时小于混乱度阈值THc时,可以判定该程序段是做加密操作,且在熵值计算中取可信输入长度为1200字节。根据多次统计结果,在Rio≥1.30,Rol≥0.98时,且输入与输出字节间的混乱度满足强相关关系时,判定本次检测为块加密;在Rio≥1.20,Rol≥0.85,输入与输出之间是弱相关关系,则判定为流密码;一些其他计算方法由于加密程度不高,Rio和Rol都相对较小。
测试结果
实验对目标程序中的加解密函数进行定位与检测,结果显示,本发明可以对程序中的加解密算法进行准确定位,总体准确率达到93.75%,能够准确区分被测程序中的普通运算和加解密运算,并且定位过程中的空间消耗明显减少,只需几十兆内存空间即可对上百兆程序的加解密函数进行定位,远小于其他方法,且离线分析时工作量降低。相比于其它方法,本发明适用于二进制程序,不仅能判断加解密函数的存在性,还能准确定位加解密函数,具有较高的准确率,并且具有较低的空间消耗。
以上所述的具体描述,对发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.基于二进制熵的加解密函数定位方法,其特征在于所述方法包括如下步骤:
步骤1,动态插桩,依靠运算指令特征,寻找基本块并定位,在连续内存区域取出关键内存信息;
步骤2,对关键内存信息进行哈希运算检测、块密码分析、流密码分析;
步骤3,对步骤2中的结果进行二进制熵分析,输出加解密函数判决。
2.根据权利要求1所述的基于二进制熵的加解密函数定位方法,其特征在于:步骤1以基本块为单位,记录其入口地址并获得关键内存信息。
3.根据权利要求1所述的基于二进制熵的加解密函数定位方法,其特征在于:步骤2是通过判断某路径的各基本块的汇编指令比例来初步确定哈希计算的位置。
4.根据权利要求1所述的基于二进制熵的加解密函数定位方法,其特征在于:步骤2是通过判断哈希计算位置处的寄存器间的关系是否是低输入依赖来判定基本块是否为哈希计算。
5.根据权利要求1所述的基于二进制熵的加解密函数定位方法,其特征在于:步骤2是通过修改输入数据,观测输出数据的变化以及相互关系来判定基本块是块密码还是流密码。
6.根据权利要求1所述的基于二进制熵的加解密函数定位方法,其特征在于:步骤3首先是计算输入数据的平均熵输出数据的平均熵其次计算输出熵值和输入熵值的比值Rio,输出熵值和极限熵Hlimit之间的比值Rol;最后通过Rio与加密阈值THe以及混乱度阈值THc的大小关系来确定基本块是否是加解密操作,得出最终的判定结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710331195.1A CN107085687B (zh) | 2017-05-11 | 2017-05-11 | 基于二进制熵的模糊测试加解密函数定位方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710331195.1A CN107085687B (zh) | 2017-05-11 | 2017-05-11 | 基于二进制熵的模糊测试加解密函数定位方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107085687A true CN107085687A (zh) | 2017-08-22 |
CN107085687B CN107085687B (zh) | 2020-10-27 |
Family
ID=59613154
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710331195.1A Expired - Fee Related CN107085687B (zh) | 2017-05-11 | 2017-05-11 | 基于二进制熵的模糊测试加解密函数定位方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107085687B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109308415A (zh) * | 2018-09-21 | 2019-02-05 | 四川大学 | 一种面向二进制的导向性模糊测试方法与系统 |
CN111159663A (zh) * | 2019-12-30 | 2020-05-15 | 厦门市美亚柏科信息股份有限公司 | 指令定位方法和装置 |
CN113419944A (zh) * | 2021-05-26 | 2021-09-21 | 深圳开源互联网安全技术有限公司 | 模糊测试的初始化方法、装置及存储介质 |
CN118036019A (zh) * | 2024-04-11 | 2024-05-14 | 成都派沃特科技股份有限公司 | 基于代码自动检测的漏洞定位方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003124924A (ja) * | 2001-10-12 | 2003-04-25 | Koden Electronics Co Ltd | データの安全性確認方法及び暗号装置 |
CN104978363A (zh) * | 2014-04-11 | 2015-10-14 | 珠海市君天电子科技有限公司 | 一种加密算法的检测方法及系统 |
CN105721242A (zh) * | 2016-01-26 | 2016-06-29 | 国家信息技术安全研究中心 | 一种基于信息熵的加密流量识别方法 |
-
2017
- 2017-05-11 CN CN201710331195.1A patent/CN107085687B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003124924A (ja) * | 2001-10-12 | 2003-04-25 | Koden Electronics Co Ltd | データの安全性確認方法及び暗号装置 |
CN104978363A (zh) * | 2014-04-11 | 2015-10-14 | 珠海市君天电子科技有限公司 | 一种加密算法的检测方法及系统 |
CN105721242A (zh) * | 2016-01-26 | 2016-06-29 | 国家信息技术安全研究中心 | 一种基于信息熵的加密流量识别方法 |
Non-Patent Citations (2)
Title |
---|
张玉冲 等: "基于信息熵的数据流加密判断算法", 《计算机与数字工程》 * |
李继中: "密码算法识别与分析关键技术研究", 《中国博士学位论文全文数据库信息科技辑》 * |
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 | 四川大学 | 一种面向二进制的导向性模糊测试方法与系统 |
CN111159663A (zh) * | 2019-12-30 | 2020-05-15 | 厦门市美亚柏科信息股份有限公司 | 指令定位方法和装置 |
CN111159663B (zh) * | 2019-12-30 | 2022-04-29 | 厦门市美亚柏科信息股份有限公司 | 指令定位方法和装置 |
CN113419944A (zh) * | 2021-05-26 | 2021-09-21 | 深圳开源互联网安全技术有限公司 | 模糊测试的初始化方法、装置及存储介质 |
CN113419944B (zh) * | 2021-05-26 | 2022-07-12 | 深圳开源互联网安全技术有限公司 | 模糊测试的初始化方法、装置及存储介质 |
CN118036019A (zh) * | 2024-04-11 | 2024-05-14 | 成都派沃特科技股份有限公司 | 基于代码自动检测的漏洞定位方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107085687B (zh) | 2020-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Huang et al. | Hunting vulnerable smart contracts via graph embedding based bytecode matching | |
CN109002721B (zh) | 一种信息安全漏洞的挖掘分析方法 | |
Chen et al. | Achieving accuracy and scalability simultaneously in detecting application clones on android markets | |
Bilar | Opcodes as predictor for malware | |
CN107085687A (zh) | 基于二进制熵的模糊测试加解密函数定位方法 | |
CN111695119B (zh) | 一种基于细粒度静态污点分析与符号执行的web漏洞检测方法 | |
CN107193732B (zh) | 一种基于路径比对的校验函数定位方法 | |
CN101159732A (zh) | 基于数据流分析的恶意攻击检测方法 | |
CN107330345B (zh) | 一种检测隐私数据泄露的方法和装置 | |
CN110096433B (zh) | 一种iOS平台上获取加密数据的方法 | |
CN104715190B (zh) | 一种基于深度学习的程序执行路径的监控方法及系统 | |
Zuo | Defense of Computer Network Viruses Based on Data Mining Technology. | |
Lin et al. | A value set analysis refinement approach based on conditional merging and lazy constraint solving | |
Lin et al. | A priority based path searching method for improving hybrid fuzzing | |
CN112817877B (zh) | 异常脚本检测方法、装置、计算机设备和存储介质 | |
US11736501B2 (en) | Method, system, and apparatus for security assurance, protection, monitoring and analysis of integrated circuits and electronic systems using machine learning instruments and machine learning analysis | |
CN113886832A (zh) | 智能合约漏洞检测方法、系统、计算机设备和存储介质 | |
Espinoza et al. | V-dift: Vector-based dynamic information flow tracking with application to locating cryptographic keys for reverse engineering | |
CN110727598B (zh) | 基于动态污点跟踪的二进制软件脆弱性检测系统及方法 | |
CN108038381A (zh) | 一种密钥安全性检测方法及系统 | |
CN109241706B (zh) | 基于静态胎记的软件抄袭检测方法 | |
Lim et al. | Analyzing stack flows to compare Java programs | |
Wang et al. | Deep learning-based multi-classification for malware detection in IoT | |
RU168346U1 (ru) | Устройство выявления уязвимостей | |
Meng et al. | Detecting buffer boundary violations based on SVM |
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: 20201027 |