CN108280197A - 一种识别同源二进制文件的方法及系统 - Google Patents

一种识别同源二进制文件的方法及系统 Download PDF

Info

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
bucket
signature
character string
identified
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
Application number
CN201810082622.1A
Other languages
English (en)
Other versions
CN108280197B (zh
Inventor
石志强
陈昱
孙利民
朱红松
赵威威
马原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Information Engineering of CAS
National Computer Network and Information Security Management Center
Original Assignee
Institute of Information Engineering of CAS
National Computer Network and Information Security Management Center
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Information Engineering of CAS, National Computer Network and Information Security Management Center filed Critical Institute of Information Engineering of CAS
Priority to CN201810082622.1A priority Critical patent/CN108280197B/zh
Publication of CN108280197A publication Critical patent/CN108280197A/zh
Application granted granted Critical
Publication of CN108280197B publication Critical patent/CN108280197B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/325Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/319Inverted lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Computing Systems (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任一所述的方法。
CN201810082622.1A 2018-01-29 2018-01-29 一种识别同源二进制文件的方法及系统 Expired - Fee Related CN108280197B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 广东神马搜索科技有限公司 数据字典实现方法、装置及数据字典管理系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
CN108280197A (zh) 一种识别同源二进制文件的方法及系统
US10169426B2 (en) Fast identification of complex strings in a data stream
CN111767716B (zh) 企业多级行业信息的确定方法、装置及计算机设备
US8190613B2 (en) System, method and program for creating index for database
CN110991456B (zh) 票据识别方法及装置
US20100325115A1 (en) Method and system for displaying and processing electronic file list
CN107704501B (zh) 一种识别同源二进制文件的方法及系统
US8606779B2 (en) Search method, similarity calculation method, similarity calculation, same document matching system, and program thereof
CN109063055A (zh) 同源二进制文件检索方法和装置
CN105589894B (zh) 文档索引建立方法和装置、文档检索方法和装置
WO2017160340A1 (en) Automatic content-based append detection
CN107229694A (zh) 一种基于大数据的数据信息一致性处理方法、系统及装置
US9442901B2 (en) Resembling character data search supporting method, resembling candidate extracting method, and resembling candidate extracting apparatus
CN112395881B (zh) 物料标签的构建方法、装置、可读存储介质及电子设备
CN110580301A (zh) 一种高效商标检索方法、系统及平台
JP2017224240A (ja) 表データ検索装置、表データ検索方法、及び表データ検索プログラム
Howard et al. Phonetic spelling algorithm implementations for R
JP5206296B2 (ja) 類似文章抽出プログラム、方法、装置
CN110019829A (zh) 数据属性确定方法、装置
US20210318949A1 (en) Method for checking file data, computer device and readable storage medium
JP6677624B2 (ja) 分析装置、分析方法、および分析プログラム
CN112149402A (zh) 文档对比方法、装置、电子设备和计算机可读存储介质
JP7418781B2 (ja) 企業類似度算出サーバ及び企業類似度算出方法
JP2017117109A (ja) 情報処理装置、情報処理システム、情報検索方法、及びプログラム
CN116474368A (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