CN108280197A - 一种识别同源二进制文件的方法及系统 - Google Patents
一种识别同源二进制文件的方法及系统 Download PDFInfo
- Publication number
- CN108280197A CN108280197A CN201810082622.1A CN201810082622A CN108280197A CN 108280197 A CN108280197 A CN 108280197A CN 201810082622 A CN201810082622 A CN 201810082622A CN 108280197 A CN108280197 A CN 108280197A
- Authority
- CN
- China
- Prior art keywords
- binary file
- character string
- bucket
- signature
- signatures
- 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 76
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 25
- 239000011159 matrix material Substances 0.000 claims description 34
- 238000001914 filtration Methods 0.000 claims description 27
- 230000006870 function Effects 0.000 claims description 19
- 238000012545 processing Methods 0.000 claims description 10
- 230000008030 elimination Effects 0.000 claims description 4
- 238000003379 elimination reaction Methods 0.000 claims description 4
- 238000004891 communication Methods 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 abstract description 13
- 238000000605 extraction Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/325—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/319—Inverted lists
-
- 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
-
- 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/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种识别同源二进制文件的方法及系统,所述方法包括:S1,使用最小哈希算法分别获取待识别二进制文件和各原二进制文件的签名;S2,使用分桶法对各所述签名进行分桶,获取各所述签名划分到各桶的字符串;其中,位于同一桶中的各所述字符串具有相同的字符数;S3,根据各桶中所述原二进制文件的签名对应的字符串,使用倒排索引法获取与各桶一一对应的字典;S4,根据各桶中所述待识别二进制文件的签名对应的字符串,从各桶对应的字典中获取与所述待识别二进制文件同源的原二进制文件。本发明减少计算量,提高识别同源二进制文件的速度和精度,适用于各种同源二进制文件的识别。
Description
技术领域
本发明属于漏洞挖掘领域,更具体地,涉及一种识别同源二进制文件的方法及系统。
背景技术
近年来,越来越多的物联网设备接入网络,极大地方便了人们的生活。但由于生产厂商的安全意识不足,在这些智能设备中广泛使用共享代码模块和第三方SDK,导致很多智能设备面临被攻击的风险。
现有技术中,为了避免智能设备被攻击,一般通过修复相关的固件以提高智能设备抵御攻击的性能。为了预先获知有漏洞的固件,需要进行同源二进制文件的识别。已有的二进制文件比对方法为直接读入二进制数据进行比较,该方法较为直接,但没有考虑到程序的整体逻辑,适用于若干字节变化的比较。基于汇编指令的比对方法将汇编指令作为分析对象,将二进制文件反汇编后进行比对,该方法同一没有考虑到程序的整体逻辑,适用于比较小的二进制文件的比对。
综上所述,现有的识别二进制文件的方法没有考虑到程序的整体逻辑,识别的精度受限于二进制文件字节变化的大小和二进制文件的大小。
发明内容
为克服上述识别同源二进制文件的误差大,不准确的问题或者至少部分地解决上述问题,本发明提供了一种识别同源二进制文件的方法及系统。
根据本发明的第一方面,提供一种识别同源二进制文件的方法,包括:
S1,使用最小哈希算法分别获取待识别二进制文件和各原二进制文件的签名;
S2,使用分桶法对各所述签名进行分桶,获取各所述签名划分到各桶的字符串;其中,位于同一桶中的各所述字符串具有相同的字符数;
S3,根据各桶中所述原二进制文件的签名对应的字符串,使用倒排索引法获取与各桶一一对应的字典;
S4,根据各桶中所述待识别二进制文件的签名对应的字符串,从各桶对应的字典中获取与所述待识别二进制文件同源的原二进制文件。
具体地,所述步骤S1具体包括:
S11,使用最小哈希算法获取待识别二进制文件和各原二进制文件中各行的签名,将所述各行的签名分成字符数相同的预设个数的子签名;其中,所述各行的签名具有相同的字符数;
S12,将所述待识别二进制文件中各行的签名和各所述原二进制文件中各行的签名分别表示为矩阵;其中,各所述矩阵的行数为所述待识别二进制文件或各所述原二进制文件中的行数,列数为所述预设个数;
S13,对于每个所述矩阵,从该矩阵的每一列中以相同规则选择一个所述子签名,将选择的各所述子签名进行合并,获取该矩阵对应的所述待识别二进制文件的签名或该矩阵对应的各所述原二进制文件的签名。
具体地,所述步骤S3具体包括:
S31,创建字典;其中,所述字典的个数与所述桶的个数相同,所述字典与所述桶一一对应;
S32,对各桶中所述原二进制文件的签名对应的字符串进行去重处理;
S33,对于每个桶中去重处理后的每个字符串,将该字符串作为该桶对应的字典中的键,将该字符串对应的签名所属的原二进制文件的标识作为所述键的值。
具体地,所述步骤S4具体包括:
S41,对于每个桶,将该桶中所述待识别文件的签名对应的字符串与该桶对应的字典中的键进行比较;
S42,若该桶中所述待识别文件的签名对应的字符串与该桶对应的字典中的键相同,则获取所述键的值;
S43,将所述键的值对应的原二进制文件作为所述待识别文件的同源二进制文件。
具体地,所述步骤S1之前还包括:
分别获取待识别二进制文件和各原二进制文件的字符串集合;其中,各所述字符串集合分别包括多个可打印的字符串;
对各所述字符串集合依次进行代码段字符串过滤和库符号表字符串过滤。
具体地,对各所述字符串集合进行代码段字符串过滤的步骤具体包括:
检测各所述字符串集合是否存在ELF头;
若各所述字符串集合不存在所述ELF头,则对各所述字符串集合中长度小于预设阈值的字符串进行过滤。
具体地,对各所述字符串集合进行库符号表字符串过滤的步骤具体包括:
将各所述字符串集合中的底层库函数名和变量信息作为内核级符号表字符串;其中,所述底层库函数名和变量信息被系统程序和用户程序调用;
将各所述字符串集合中的高层库函数名和变量信息作为系统级符号表字符串;其中,所述高层库函数名和变量信息被用户程序调用;
将经过所述代码段字符串过滤的各字符串集合中的所述内核级符号表字符串和所述系统级符号表字符串进行过滤。
根据本发明的第二方面,提供一种识别同源二进制文件的系统,包括:
计算单元,用于使用最小哈希算法分别获取待识别二进制文件和各原二进制文件的签名;
分桶单元,用于使用分桶法对各所述签名进行分桶,获取各所述签名对应的字符串;其中,位于同一桶中的各所述字符串具有相同的字符数;
生成单元,用于根据各桶中所述原二进制文件的签名对应的字符串,使用倒排索引法获取与各桶一一对应的字典;
查找单元,用于根据各桶中所述待识别二进制文件的签名对应的字符串,从各桶对应的字典中获取与所述待识别二进制文件同源的原二进制文件。
根据本发明的第三方面,提供一种识别同源二进制文件的设备,包括:
至少一个处理器、至少一个存储器和总线;其中,
所述处理器和存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如前所述的方法。
根据本发明的第四方面,提供一种非暂态计算机可读存储介质,用于存储如前所述方法的计算机程序。
本发明提供一种识别同源二进制文件的方法及系统,该方法一方面通过使用最小哈希算法获取待识别二进制文件和各原二进制文件的签名,并采用分桶法对各签名进行分桶,减少计算量;另一方面采用倒排索引的方法为每个桶中签名的字符串建立索引表,提高识别同源二进制文件的速度和精度,适用于各种同源二进制文件的识别。
附图说明
图1为本发明实施例提供的识别同源二进制文件的方法整体流程示意图;
图2为本发明又一实施例提供的识别同源二进制文件的方法流程示意图;
图3为本发明又一实施例提供的识别同源二进制文件的方法流程示意图;
图4为本发明又一实施例提供的识别同源二进制文件的方法流程示意图;
图5为本发明实施例提供的识别同源二进制文件的系统整体结构示意图;
图6为本发明实施例提供的识别同源二进制文件的设备整体结构示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
在本发明的一个实施例中提供一种识别同源二进制文件的方法,图1为本发明实施例提供的识别同源二进制文件的方法整体流程示意图,该方法包括:S1,使用最小哈希算法分别获取待识别二进制文件和各原二进制文件的签名;S2,使用分桶法对各所述签名进行分桶,获取各所述签名划分到各桶的字符串;其中,位于同一桶中的各所述字符串具有相同的字符数;S3,根据各桶中所述原二进制文件的签名对应的字符串,使用倒排索引法获取与各桶一一对应的字典;S4,根据各桶中所述待识别二进制文件的签名对应的字符串,从各桶对应的字典中获取与所述待识别二进制文件同源的原二进制文件。
具体地,S1中,所述最小哈希算法是LSH(Locality Sensitive Hash,局部敏感哈希)算法的一种,用于估算两个集合的相似度。所述待识别二进制文件为待从所述原二进制文件中获取其同源二进制文件的二进制文件。所述原二进制文件为预先存储在数据库中的二进制文件。使用所述最小哈希算法将所述待识别二进制文件中的内容映射为一个MinHash签名,使用所述最小哈希算法将各所述原二进制文件中的内容分别映射为一个MinHash签名。相似内容映射的MinHash签名也相似。所述MinHash签名除了提供内容是否相等的信息外,还提供不相等的内容之间的差异程度信息。可以使用最小哈希计算工具分别获取所述待识别二进制文件的签名和各所述原二进制文件的签名,所述最小哈希计算工具为sha512sum或sha256sum,但不限于这两种最小哈希计算工具。
S2中,使用分桶法对所述待识别二进制文件的签名和各所述原二进制文件的签名分别进行分桶处理,从而将各所述签名划分为多个字符串,所述字符串的个数与桶的个数相等,因此一个签名对应有多个字符串。所述分桶法(Bucketmethod)是指把一排物品或屏幕分成桶,每个桶分别维护自己内部的信息,以达到高效计算的目的。由于所述待识别二进制文件的签名和各所述原二进制文件的签名是用字符串表示的,将表示各所述签名的字符串中的字符按先后顺序平均分配到每个桶中。表示各所述签名的字符串中被分配到同一个桶中的字符很大程度上是相邻的,从而更容易进行近邻差值,减少计算量。表示各所述签名的字符串中位置相同的字符被分配到同一个桶中。被分配到同一桶中的字符串具有相同的字符数。
S3中,所述倒排索引法源于实际应用中根据属性的值查找记录。所述倒排序索引法的倒排序索引表中每一项都包括一个属性值和包含该属性值的记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因此称为倒排索引(invertedindex)。搜索引擎中的索引单位是单词,单词字典是由文档集合中出现过的所有单词构成的字符串集合,单词字典内每条索引项记载单词本身的一些信息和指向倒排序索引表的指针。结合本实施例,将同一桶中去重后的字符串作为键,把包含键的原文件的标识作为值,从而构成了一个字典。每个桶对应有一个字典。所述桶的编号和所述桶对应的字典的编号一一对应。将所述桶与所述字典进行关联存储。
S4中,将各桶中的所述待识别二进制文件的签名对应的字符串与各桶对应的字典进行比较,获取与所述待识别二进制文件同源的原二进制文件。
例如,有A、B、C、D和E5个原二进制文件,5个所述原二进制文件的签名划分到1号桶中的字符串分别为1110、1111、1112、1110和1112,那么1号桶对应的1号字典有3个键值对:{1110:A,D}、{1111:B}、{1112:C,E}。其中1110、1111和1112为去重后的三个字符串,即键,键1110对应的值为A和D,键1111的值为B,键1112的值为C和E。待识别二进制文件的签名划分到1号桶的字符串为1110,检索1号字典,与1号字典中的3个键值进行匹配,获知与字符串1110对应的原二进制文件为A和D,那么A和D即为所述待识别二进制文件的同源二进制文件。同理,对所述待识别二进制文件的签名划分到其他桶的字符串与其他桶对应的字典进行匹配,获取所述待识别二进制文件的所有同源二进制文件。
本实施例一方面通过使用最小哈希算法获取待识别二进制文件和各原二进制文件的签名,并采用分桶法对各签名进行分桶,减少计算量;另一方面采用倒排索引的方法为每个桶中签名的字符串建立索引表,提高识别同源二进制文件的速度和精度,适用于各种同源二进制文件的识别。
在上述实施例的基础上,如图2所示,本实施例中所述步骤S1具体包括:S11,使用最小哈希算法获取待识别二进制文件和各原二进制文件中各行的签名,将所述各行的签名分成字符数相同的预设个数的子签名;其中,所述各行的签名具有相同的字符数;S12,将所述待识别二进制文件中各行的签名和各所述原二进制文件中各行的签名分别表示为矩阵;其中,所述矩阵的行数为所述待识别二进制文件或各所述原二进制文件中的行数,列数为所述预设个数;S13,对于每个所述矩阵,从该矩阵的每一列中以相同规则选择一个所述子签名,将选择的各所述子签名进行合并,获取该矩阵对应的所述待识别二进制文件的签名或该矩阵对应的各所述原二进制文件的签名。
具体地,S11中,所述待识别二进制文件和所述原二进制文件均由一定行数的代码构成。使用最小哈希算法获取每一行代码的签名,各行的签名具有相同的字符数。将各行代码的签名均分为M个自签名,M为预设个数。S12中,将所述待识别二进制文件中各行的签名表示为矩阵,将各所述原二进制文件中各行的签名分别表示为一个矩阵。其中各所述矩阵的行数为各所述矩阵对应的所述待识别二进制文件或各所述原二进制文件中的行数,列数为M,从而减少了矩阵的列数。S13中,从各矩阵的每一列中以相同规则选择一个子签名。例如,选择每一列中哈希值最小或最大的一个子签名,或者首字母排序最靠前的子签名,比如两个子签名的首字母分别为A和B,那么选择首字母为A的子签名,如果两个子签名的首字母相同,则比较两个子的第二个字母,以此类推。对于每个所述矩阵,将从该矩阵中选择的各所述子签名进行合并,获取该矩阵对应的所述待识别二进制文件的签名或该矩阵对应的各所述原二进制文件的签名。
例如,如果每一行代码的签名具有256个字节,如果均分为16个子签名,则矩阵中的每一个元素具有16个字节。所述矩阵的行数为各所述矩阵对应的所述待识别二进制文件或各所述原二进制文件中的行数。从各矩阵的每一列中以相同规则获取一个子签名,即可组成一组包含16*16=256各字符的签名。对包含256个字符的签名进行分桶。桶的个数为64个。将256各字符按先后顺序每4个放入一个桶中,即将前4个字符放入1号桶中,将第5至8个字符放入第二个桶中,以此类推,直到将256个字符都分配到桶中。建立64个字典。字典的编号与桶的编号一一对应。
在上述实施例的基础上,如图3所示,本实施例中所述步骤S3具体包括:S31,创建字典;其中,所述字典的个数与所述桶的个数相同,所述字典与所述桶一一对应;S32,对各桶中所述原二进制文件的签名对应的字符串进行去重处理;S33,对于每个桶中去重处理后的每个字符串,将该字符串作为该桶对应的字典中的键,将该字符串对应的签名所属的原二进制文件的标识作为所述键的值。
在上述实施例的基础上,如图4所示,本实施例中所述步骤S4具体包括:S41,对于每个桶,将该桶中所述待识别文件的签名对应的字符串与该桶对应的字典中的键进行比较;S42,若该桶中所述待识别文件的签名对应的字符串与该桶对应的字典中的键相同,则获取所述键的值;S43,将所述键的值对应的原二进制文件作为所述待识别文件的同源二进制文件。
在上述各实施例的基础上,本实施例中所述步骤S1之前还包括:分别获取待识别二进制文件和各原二进制文件的字符串集合;其中,各所述字符串集合分别包括多个可打印的字符串;对各所述字符串集合依次进行代码段字符串过滤和库符号表字符串过滤。
具体地,所述原二进制文件可以为从网上下载或爬取的固件解压后获得的二进制文件,使用字符串提取工具可以获取各所述原二进制文件和所述待识别二进制文件的字符串集合。所述字符串提取工具可以为strings或TransText提取工具,本实施例不限于这两种字符串提取工具。所述可打印的字符串为在显示器上输出能看见的字符串,目前使用最广泛的可打印字符串为ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)字符集和ASCII码。基本的ASCII字符集共有128个字符,其中有96个可打印字符,包括常用的字母、数字、标点符号等,另外还有32个控制字符。标准ASCII码使用7个二进位对字符进行编码,对应的ISO标准为ISO646标准。有些ASCII字符是不可打印的,如退格、另起一行和警报等。
对各字符串集合依次进行代码段字符串过滤和库符号表字符串过滤。所述代码段字符串是指代码段中的字符串。所述库符号表字符串是指库符号表中的字符串。代码段(code segment)通常是指用来存放程序执行代码的一块内存区域。所述内存区域的大小在程序运行前预先确定,并且所述内存区域属于只读,某些架构也允许代码段为可写,即允许修改程序。在代码段中,也可能包含一些只读的常数变量,例如字符串常量等。库符号表指存放的函数名称和全局变量信息的库,由于这些信息为众多相关文件所共享,不是单一文件的特定属性,因此需要将包含库符号表字符串的行过滤掉。
在上述实施例的基础上,本实施例中对各所述字符串集合进行代码段字符串过滤的步骤具体包括:检测各所述字符串集合是否存在ELF头;若各所述字符串集合不存在所述ELF头,则对各所述字符串集合中长度小于预设阈值的字符串进行过滤。
具体地,检测各所述字符串集合是否存在ELF头。若各所述字符串集合不存在所述ELF头,则对各所述字符串集合中长度小于预设阈值的字符串进行过滤。针对含有ELF头的各所述字符串集合,不进行过滤。对无ELF头的各所述字符串集合,由于数据段通常存放符号表等,有较长的字符串信息,而代码段主要存放不可打印的字符信息并且长度较短。因此,过滤掉各所述字符串集合中长度小于预设阈值的字符串,如字符数小于6个的字符串。
在上述实施例的基础上,本实施例中对各所述字符串集合进行库符号表字符串过滤的步骤具体包括:将各所述字符串集合中的底层库函数名和变量信息作为内核级符号表字符串;其中,所述底层库函数名和变量信息被系统程序和用户程序调用;将各所述字符串集合中的高层库函数名和变量信息作为系统级符号表字符串;其中,所述高层库函数名和变量信息被用户程序调用;将经过所述代码段字符串过滤的各字符串集合中的所述内核级符号表字符串和所述系统级符号表字符串进行过滤。
具体地,所述底层库和高层库只是一个相对概念,比如在linux系统中,/lib目录下的动态链接库为内核级,底层库中的函数名和变量信息为内核级符号表字符串。/usr/lib目录下的动态链接库为高层库,高层库中的函数名和变量信息为系统级符号表字符串。将所述内核级符号表字符串和所述系统级符号表字符串加入黑名单列表,对经过代码段字符串过滤后的字符串集合运用所述黑名单列表,过滤掉所述黑名单列表中的内核级符号表字符串和系统级符号表字符串。
在本发明的另一个实施例中提供一种识别同源二进制文件的系统,图5为本发明实施例提供的识别同源二进制文件的系统整体结构示意图,该系统包括计算单元1、分桶单元2、生成单元3和查找单元4,其中:
所述计算单元1用于使用最小哈希算法分别获取待识别二进制文件和各原二进制文件的签名;所述分桶单元2用于使用分桶法对各所述签名进行分桶,获取各所述签名对应的字符串;其中,位于同一桶中的各所述字符串具有相同的字符数;所述生成单元3用于根据各桶中所述原二进制文件的签名对应的字符串,使用倒排索引法获取与各桶一一对应的字典;所述查找单元4用于根据各桶中所述待识别二进制文件的签名对应的字符串,从各桶对应的字典中获取与所述待识别二进制文件同源的原二进制文件。
具体地,所述最小哈希算法是LSH(Locality Sensitive Hash,局部敏感哈希)算法的一种,用于估算两个集合的相似度。所述待识别二进制文件为待从所述原二进制文件中获取其同源二进制文件的二进制文件。所述原二进制文件为预先存储在数据库中的二进制文件。所述计算单元1使用所述最小哈希算法将所述待识别二进制文件中的内容映射为一个MinHash签名,使用所述最小哈希算法将各所述原二进制文件中的内容分别映射为一个MinHash签名。相似内容映射的MinHash签名也相似。所述MinHash签名除了提供内容是否相等的信息外,还提供不相等的内容之间的差异程度信息。可以使用最小哈希计算工具分别获取所述待识别二进制文件的签名和各所述原二进制文件的签名,所述最小哈希计算工具为sha512sum或sha256sum,但不限于这两种最小哈希计算工具。
所述分桶单元2使用分桶法对所述待识别二进制文件的签名和各所述原二进制文件的签名分别进行分桶处理,从而将各所述签名划分为多个字符串,所述字符串的个数与桶的个数相等,因此一个签名对应有多个字符串。所述分桶法(Bucketmethod)是指把一排物品或屏幕分成桶,每个桶分别维护自己内部的信息,以达到高效计算的目的。由于所述待识别二进制文件的签名和各所述原二进制文件的签名是用字符串表示的,将表示各所述签名的字符串中的字符按先后顺序平均分配到每个桶中。表示各所述签名的字符串中被分配到同一个桶中的字符很大程度上是相邻的,从而更容易进行近邻差值,减少计算量。表示各所述签名的字符串中位置相同的字符被分配到同一个桶中。被分配到同一桶中的字符串具有相同的字符数。
所述倒排索引法源于实际应用中根据属性的值查找记录。所述倒排序索引法的倒排序索引表中每一项都包括一个属性值和包含该属性值的记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因此称为倒排索引(inverted index)。搜索引擎中的索引单位是单词,单词字典是由文档集合中出现过的所有单词构成的字符串集合,单词字典内每条索引项记载单词本身的一些信息和指向倒排序索引表的指针。结合本实施例,所述生成单元3将同一桶中去重后的字符串作为键,把包含键的原文件的标识作为值,从而构成了一个字典。每个桶对应有一个字典。所述桶的编号和所述桶对应的字典的编号一一对应。将所述桶与所述字典进行关联存储。
所述查找单元4将各桶中的所述待识别二进制文件的签名对应的字符串与各桶对应的字典进行比较,获取与所述待识别二进制文件同源的原二进制文件。
本实施例一方面通过使用最小哈希算法获取待识别二进制文件和各原二进制文件的签名,并采用分桶法对各签名进行分桶,减少计算量;另一方面采用倒排索引的方法为每个桶中签名的字符串建立索引表,提高识别同源二进制文件的速度和精度,适用于各种同源二进制文件的识别。
在上述实施例的基础上,本实施例中所述计算单元具体用于:使用最小哈希算法获取待识别二进制文件和各原二进制文件中各行的签名,将所述各行的签名分成字符数相同的预设个数的子签名;其中,所述各行的签名具有相同的字符数;将所述待识别二进制文件中各行的签名和各所述原二进制文件中各行的签名分别表示为矩阵;其中,所述矩阵的行数为所述待识别二进制文件或各所述原二进制文件中的行数,列数为所述预设个数;对于每个所述矩阵,从该矩阵的每一列中以相同规则选择一个所述子签名,将选择的各所述子签名进行合并,获取该矩阵对应的所述待识别二进制文件的签名或该矩阵对应的各所述原二进制文件的签名。
在上述实施例的基础上,本实施例中所述生成单元具体用于:创建字典;其中,所述字典的个数与所述桶的个数相同,所述字典与所述桶一一对应;S32,对各桶中所述原二进制文件的签名对应的字符串进行去重处理;S33,对于每个桶中去重处理后的每个字符串,将该字符串作为该桶对应的字典中的键,将该字符串对应的签名所属的原二进制文件的标识作为所述键的值。
在上述实施例的基础上,本实施例中所述查找单元具体用于:S41,对于每个桶,将该桶中所述待识别文件的签名对应的字符串与该桶对应的字典中的键进行比较;S42,若该桶中所述待识别文件的签名对应的字符串与该桶对应的字典中的键相同,则获取所述键的值;S43,将所述键的值对应的原二进制文件作为所述待识别文件的同源二进制文件。
在上述各实施例的基础上,本实施例中还包括优化单元,用于分别获取待识别二进制文件和各原二进制文件的字符串集合;其中,各所述字符串集合分别包括多个可打印的字符串;对各所述字符串集合依次进行代码段字符串过滤和库符号表字符串过滤。
在上述实施例的基础上,本实施例中所述优化单元具体用于:检测各所述字符串集合是否存在ELF头;若各所述字符串集合不存在所述ELF头,则对各所述字符串集合中长度小于预设阈值的字符串进行过滤。
在上述实施例的基础上,本实施例中所述优化单元具体用于:将各所述字符串集合中的底层库函数名和变量信息作为内核级符号表字符串;其中,所述底层库函数名和变量信息被系统程序和用户程序调用;将各所述字符串集合中的高层库函数名和变量信息作为系统级符号表字符串;其中,所述高层库函数名和变量信息被用户程序调用;将经过所述代码段字符串过滤的各字符串集合中的所述内核级符号表字符串和所述系统级符号表字符串进行过滤。
本实施例提供一种识别同源二进制文件的设备,图6为本发明实施例提供的识别同源二进制文件的设备整体结构示意图,该设备包括:至少一个处理器61、至少一个存储器62和总线63;其中,
所述处理器61和存储器62通过所述总线63完成相互间的通信;
所述存储器62存储有可被所述处理器61执行的程序指令,所述处理器调用所述程序指令能够执行上述各方法实施例所提供的方法,例如包括:S1,使用最小哈希算法分别获取待识别二进制文件和各原二进制文件的签名;S2,使用分桶法对各所述签名进行分桶,获取各所述签名划分到各桶的字符串;其中,位于同一桶中的各所述字符串具有相同的字符数;S3,根据各桶中所述原二进制文件的签名对应的字符串,使用倒排索引法获取与各桶一一对应的字典;S4,根据各桶中所述待识别二进制文件的签名对应的字符串,从各桶对应的字典中获取与所述待识别二进制文件同源的原二进制文件。
本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:S1,使用最小哈希算法分别获取待识别二进制文件和各原二进制文件的签名;S2,使用分桶法对各所述签名进行分桶,获取各所述签名划分到各桶的字符串;其中,位于同一桶中的各所述字符串具有相同的字符数;S3,根据各桶中所述原二进制文件的签名对应的字符串,使用倒排索引法获取与各桶一一对应的字典;S4,根据各桶中所述待识别二进制文件的签名对应的字符串,从各桶对应的字典中获取与所述待识别二进制文件同源的原二进制文件。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的识别同源二进制文件的设备实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种识别同源二进制文件的方法,其特征在于,包括:
S1,使用最小哈希算法分别获取待识别二进制文件和各原二进制文件的签名;
S2,使用分桶法对各所述签名进行分桶,获取各所述签名划分到各桶的字符串;其中,位于同一桶中的各所述字符串具有相同的字符数;
S3,根据各桶中所述原二进制文件的签名对应的字符串,使用倒排索引法获取与各桶一一对应的字典;
S4,根据各桶中所述待识别二进制文件的签名对应的字符串,从各桶对应的字典中获取与所述待识别二进制文件同源的原二进制文件。
2.根据权利要求1所述的方法,其特征在于,所述步骤S1具体包括:
S11,使用最小哈希算法获取待识别二进制文件和各原二进制文件中各行的签名,将所述各行的签名分成字符数相同的预设个数的子签名;其中,所述各行的签名具有相同的字符数;
S12,将所述待识别二进制文件中各行的签名和各所述原二进制文件中各行的签名分别表示为矩阵;其中,各所述矩阵的行数为所述待识别二进制文件或各所述原二进制文件中的行数,列数为所述预设个数;
S13,对于每个所述矩阵,从该矩阵的每一列中以相同规则选择一个所述子签名,将选择的各所述子签名进行合并,获取该矩阵对应的所述待识别二进制文件的签名或该矩阵对应的各所述原二进制文件的签名。
3.根据权利要求1所述的方法,其特征在于,所述步骤S3具体包括:
S31,创建字典;其中,所述字典的个数与所述桶的个数相同,所述字典与所述桶一一对应;
S32,对各桶中所述原二进制文件的签名对应的字符串进行去重处理;
S33,对于每个桶中去重处理后的每个字符串,将该字符串作为该桶对应的字典中的键,将该字符串对应的签名所属的原二进制文件的标识作为所述键的值。
4.根据权利要求3所述的方法,其特征在于,所述步骤S4具体包括:
S41,对于每个桶,将该桶中所述待识别文件的签名对应的字符串与该桶对应的字典中的键进行比较;
S42,若该桶中所述待识别文件的签名对应的字符串与该桶对应的字典中的键相同,则获取所述键的值;
S43,将所述键的值对应的原二进制文件作为所述待识别文件的同源二进制文件。
5.根据权利要求1-4任一所述的方法,其特征在于,所述步骤S1之前还包括:
分别获取待识别二进制文件和各原二进制文件的字符串集合;其中,各所述字符串集合分别包括多个可打印的字符串;
对各所述字符串集合依次进行代码段字符串过滤和库符号表字符串过滤。
6.根据权利要求5所述的方法,其特征在于,对各所述字符串集合进行代码段字符串过滤的步骤具体包括:
检测各所述字符串集合是否存在ELF头;
若各所述字符串集合不存在所述ELF头,则对各所述字符串集合中长度小于预设阈值的字符串进行过滤。
7.根据权利要求5所述的方法,其特征在于,对各所述字符串集合进行库符号表字符串过滤的步骤具体包括:
将各所述字符串集合中的底层库函数名和变量信息作为内核级符号表字符串;其中,所述底层库函数名和变量信息被系统程序和用户程序调用;
将各所述字符串集合中的高层库函数名和变量信息作为系统级符号表字符串;其中,所述高层库函数名和变量信息被用户程序调用;
将经过所述代码段字符串过滤的各字符串集合中的所述内核级符号表字符串和所述系统级符号表字符串进行过滤。
8.一种识别同源二进制文件的系统,其特征在于,包括:
计算单元,用于使用最小哈希算法分别获取待识别二进制文件和各原二进制文件的签名;
分桶单元,用于使用分桶法对各所述签名进行分桶,获取各所述签名对应的字符串;其中,位于同一桶中的各所述字符串具有相同的字符数;
生成单元,用于根据各桶中所述原二进制文件的签名对应的字符串,使用倒排索引法获取与各桶一一对应的字典;
查找单元,用于根据各桶中所述待识别二进制文件的签名对应的字符串,从各桶对应的字典中获取与所述待识别二进制文件同源的原二进制文件。
9.一种识别同源二进制文件的设备,其特征在于,包括:
至少一个处理器、至少一个存储器和总线;其中,
所述处理器和存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至7任一所述的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至7任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810082622.1A CN108280197B (zh) | 2018-01-29 | 2018-01-29 | 一种识别同源二进制文件的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810082622.1A CN108280197B (zh) | 2018-01-29 | 2018-01-29 | 一种识别同源二进制文件的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108280197A true CN108280197A (zh) | 2018-07-13 |
CN108280197B CN108280197B (zh) | 2020-09-11 |
Family
ID=62805478
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810082622.1A Expired - Fee Related CN108280197B (zh) | 2018-01-29 | 2018-01-29 | 一种识别同源二进制文件的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108280197B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109040085A (zh) * | 2018-08-15 | 2018-12-18 | 湖南快乐阳光互动娱乐传媒有限公司 | 一种下发数据的方法及装置 |
CN109063055A (zh) * | 2018-07-19 | 2018-12-21 | 中国科学院信息工程研究所 | 同源二进制文件检索方法和装置 |
CN110362966A (zh) * | 2019-07-11 | 2019-10-22 | 华东师范大学 | 一种基于模糊哈希的跨平台固件同源性安全检测方法 |
CN111104674A (zh) * | 2019-11-06 | 2020-05-05 | 中国电力科学研究院有限公司 | 一种电力固件同源二进制文件关联方法及系统 |
CN112131340A (zh) * | 2019-06-25 | 2020-12-25 | 杭州萤石软件有限公司 | 字符串检测方法、装置及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090313700A1 (en) * | 2008-06-11 | 2009-12-17 | Jefferson Horne | Method and system for generating malware definitions using a comparison of normalized assembly code |
CN106326217A (zh) * | 2015-06-15 | 2017-01-11 | 华东师范大学 | 一种基于随机算法的分布式实体匹配方法 |
CN106649218A (zh) * | 2016-11-16 | 2017-05-10 | 中国人民解放军国防科学技术大学 | 一种基于SimHash算法的二进制文件快速比较方法 |
CN106980665A (zh) * | 2017-03-21 | 2017-07-25 | 广东神马搜索科技有限公司 | 数据字典实现方法、装置及数据字典管理系统 |
-
2018
- 2018-01-29 CN CN201810082622.1A patent/CN108280197B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090313700A1 (en) * | 2008-06-11 | 2009-12-17 | Jefferson Horne | Method and system for generating malware definitions using a comparison of normalized assembly code |
CN106326217A (zh) * | 2015-06-15 | 2017-01-11 | 华东师范大学 | 一种基于随机算法的分布式实体匹配方法 |
CN106649218A (zh) * | 2016-11-16 | 2017-05-10 | 中国人民解放军国防科学技术大学 | 一种基于SimHash算法的二进制文件快速比较方法 |
CN106980665A (zh) * | 2017-03-21 | 2017-07-25 | 广东神马搜索科技有限公司 | 数据字典实现方法、装置及数据字典管理系统 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109063055A (zh) * | 2018-07-19 | 2018-12-21 | 中国科学院信息工程研究所 | 同源二进制文件检索方法和装置 |
CN109040085A (zh) * | 2018-08-15 | 2018-12-18 | 湖南快乐阳光互动娱乐传媒有限公司 | 一种下发数据的方法及装置 |
CN112131340A (zh) * | 2019-06-25 | 2020-12-25 | 杭州萤石软件有限公司 | 字符串检测方法、装置及存储介质 |
CN112131340B (zh) * | 2019-06-25 | 2024-02-20 | 杭州萤石软件有限公司 | 字符串检测方法、装置及存储介质 |
CN110362966A (zh) * | 2019-07-11 | 2019-10-22 | 华东师范大学 | 一种基于模糊哈希的跨平台固件同源性安全检测方法 |
CN111104674A (zh) * | 2019-11-06 | 2020-05-05 | 中国电力科学研究院有限公司 | 一种电力固件同源二进制文件关联方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108280197B (zh) | 2020-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108280197B (zh) | 一种识别同源二进制文件的方法及系统 | |
USRE49576E1 (en) | Standard exact clause detection | |
CN107704501B (zh) | 一种识别同源二进制文件的方法及系统 | |
US20220012231A1 (en) | Automatic content-based append detection | |
US8781815B1 (en) | Non-standard and standard clause detection | |
CN111258966A (zh) | 一种数据去重方法、装置、设备及存储介质 | |
US20180276199A1 (en) | Advanced clause groupings detection | |
EP3422209B1 (en) | Character string distance calculation method and device | |
CN105589894B (zh) | 文档索引建立方法和装置、文档检索方法和装置 | |
EP3091450A1 (en) | Method and system for performing binary searches | |
CN111930610B (zh) | 软件同源性检测方法、装置、设备及存储介质 | |
CN112395881B (zh) | 物料标签的构建方法、装置、可读存储介质及电子设备 | |
US20200125532A1 (en) | Fingerprints for open source code governance | |
US11847159B2 (en) | Detecting typography elements from outlines | |
US9442901B2 (en) | Resembling character data search supporting method, resembling candidate extracting method, and resembling candidate extracting apparatus | |
CN117216239A (zh) | 文本去重方法、装置、计算机设备及存储介质 | |
US10956669B2 (en) | Expression recognition using character skipping | |
JP6677093B2 (ja) | 表データ検索装置、表データ検索方法、及び表データ検索プログラム | |
US20150193459A1 (en) | Data file searching method | |
KR20210022503A (ko) | 연관 유사성 검색을 통한 데이터의 중복 제거 | |
CN112612810A (zh) | 慢sql语句识别方法及系统 | |
CN107908724B (zh) | 一种数据模型匹配方法、装置、设备及存储介质 | |
CN110737748B (zh) | 一种文本去重方法及系统 | |
US9507947B1 (en) | Similarity-based data loss prevention | |
CN111506756A (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 |
Granted publication date: 20200911 Termination date: 20210129 |
|
CF01 | Termination of patent right due to non-payment of annual fee |