CN109063055A - 同源二进制文件检索方法和装置 - Google Patents
同源二进制文件检索方法和装置 Download PDFInfo
- Publication number
- CN109063055A CN109063055A CN201810798277.1A CN201810798277A CN109063055A CN 109063055 A CN109063055 A CN 109063055A CN 201810798277 A CN201810798277 A CN 201810798277A CN 109063055 A CN109063055 A CN 109063055A
- Authority
- CN
- China
- Prior art keywords
- binary file
- character string
- detected
- sequence
- neural network
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种同源二进制文件检索方法和装置,该方法包括:将待检测二进制文件的字符串序列输入至预先训练的神经网络模型,输出编码向量;对编码向量进行局部敏感哈希运算,生成待检测二进制文件的哈希签名;计算待检测二进制文件的哈希签名与数据库中的各哈希签名的相似度哈希;其中,数据库中记录样本二进制文件和哈希签名;将满足同源性阈值的相似度哈希对应的样本二进制文件作为待检测二进制文件的同源二进制文件;其中,神经网络模型根据样本二进制文件的字符串序列以及样本二进制文件的编码向量训练而成。本发明提供一种同源二进制文件检索方法和装置,能得到满足条件的同源二进制文件,对于快速修补嵌入式设备固件的漏洞有较好的效果。
Description
技术领域
本发明涉及互联网领域,尤其涉及一种同源二进制文件检索方法和装置。
背景技术
由于嵌入式系统与传统的PC机系统不同,其通常由一个称为“固件”软件组成。固件是指写入EEPROM或Flash等存储介质中的程序。与传统的软件相同,几乎所有的设备固件都包含漏洞,这主要是由于嵌入式设备制造领域存在“客制化”的生产模式,研产分离。
最近的网络安全事件表明,来自于同一厂商甚至不同厂商的多种物联网设备经常被相同的恶意软件感染。造成这种现象的主要原因是:近年来物联网厂商越来越多地使用开源共享代码。即是不同的设备厂商可能选择同一个分包商,同一个设备厂商的软件可能由多个分包商开发。由于分包商依赖的开发工具、开发包或者提供的库没有统一标准,不同品牌的设备可能运行相同或类似的固件,同一品牌的设备可能存在多个不同分包商第三方库导致的漏洞,这使得对嵌入式设备固件的漏洞检测存在大量的重复性工作。正是由于物联网设备固件中存在广泛的代码重用,当某个固件被报出漏洞二进制文件时,包含该同源二进制文件的其他固件也将处于高风险中。例如被物联网蠕虫SHELLBIND所利用的SambaCry漏洞影响了物联网设备长达七年之久,直到2017年5月才被安全研究人员发现。因此当安全事件发生时,知道哪些厂商、哪些设备的固件中包含有Samba组件对于物联网安全应急响应意义重大。
因此如何有效地对嵌入式设备固件二进制文件进行同源性分析,成为了快速检测漏洞的有效方法。
发明内容
为了克服上述问题或者至少部分地解决上述问题,本发明提供一种同源二进制文件检索方法和装置。
第一方面,本发明提供一种同源二进制文件检索方法,包括:
将待检测二进制文件的字符串序列输入至预先训练的神经网络模型,输出编码向量;
对所述编码向量进行局部敏感哈希运算,生成待检测二进制文件的哈希签名;
计算所述待检测二进制文件的哈希签名与数据库中的各哈希签名的相似度哈希;
其中,所述数据库中记录样本二进制文件和哈希签名;
将满足同源性阈值的相似度哈希对应的样本二进制文件作为所述待检测二进制文件的同源二进制文件;
其中,所述神经网络模型根据样本二进制文件的字符串序列以及样本二进制文件的编码向量训练而成。
第二方面,本发明提供一种同源二进制文件检索装置,包括:
训练模块,用于将待检测二进制文件的字符串序列输入至预先训练的神经网络模型,输出编码向量;
哈希签名模块,用于对所述编码向量进行局部敏感哈希运算,生成待检测二进制文件的哈希签名;
计算模块,用于计算所述待检测二进制文件的哈希签名与数据库中的各哈希签名的相似度哈希;
其中,所述数据库中记录样本二进制文件和哈希签名;
判断模块,用于将满足同源性阈值的相似度哈希对应的样本二进制文件作为所述待检测二进制文件的同源二进制文件;
其中,所述神经网络模型根据样本二进制文件的字符串序列以及样本二进制文件的编码向量训练而成。
第三方面,本发明提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面提供的同源二进制文件检索方法的步骤。
第四方面,本发明提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现第一方面提供的同源二进制文件检索方法的步骤。
本发明提供一种同源二进制文件检索方法和装置,通过将待检测二进制文件的字符串序列输入至神经网络模型,输出编码向量,并对编码向量进行局部敏感哈希运算,生成哈希签名,根据待检测二进制文件的哈希签名和样本二进制文件各哈希签名计算相似度哈希,与同源阈值进行比较,得到满足条件的同源二进制文件,对于快速修补嵌入式设备固件的漏洞有较好的效果。
附图说明
图1为本发明实施例提供的同源二进制文件检索方法的流程示意图;
图2为本发明实施例提供的神经网络模型方法的流程示意图;
图3为本发明实施例提供的词嵌入网络模型的结构示意图;
图4为本发明实施例提供的神经网络模型的结构示意图;
图5为本发明实施例提供的双层双向循环神经网络方法的流程示意图;
图6为本发明实施例提供的同源二进制文件检索装置的功能框图;
图7为本发明实施例提供的电子设备的框图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
近年来物联网厂商越来越多地使用开源共享代码,物联网设备固件中存在广泛的代码重用,当某个固件被报出漏洞二进制文件时,包含该同源二进制文件的其他固件也将处于高风险中,现有的技术手段较难准确地判断出报有漏洞文件的同源二进制文件。
为克服现有技术的上述问题,本发明实施例提供一种同源二进制文件检索方法和装置,其发明构思是:把待检测二进制文件的字符串序列输入至预先训练的神经网络模型,经过神经网络模型的处理,输出编码向量;对得到的编码向量进行局部敏感哈希函数的运算,得到分块的哈希签名;对于样本二进制文件的字符串进行同样的运算得到样本哈希签名,将样本二进制文件和签名都存储到数据库中;然后将待检测二进制文件的字符串哈希签名和样本二进制文件的字符串的各哈希签名进行相似度哈希运算,得到相似度哈希值;将得到的相似度哈希值与同源性阈值进行比较,并检索数据库,将满足同源性阈值的相似度哈希对应的样本二进制文件作为待检测二进制文件的同源二进制文件。通过本发明实施例提供一种同源二进制文件检索方法和装置,能够准确地得到待检测二进制文件的同源二进制文件,对于快速修补嵌入式设备固件的漏洞有较好的效果。
图1为本发明实施例提供的同源二进制文件检索方法的流程示意图,如图1所示,该方法包括:
S101,将待检测二进制文件的字符串序列输入至预先训练的神经网络模型,输出编码向量。
具体为,在本发明实施例中,对于需要进行检测的二进制文件称为待检测二进制文件,多个字符串构成字符串序列。本发明实施例将待检测二进制文件的字符串序列输入到预先训练好的神经网络模型,通过神经网络模型的处理,得到编码向量。在这里,将待检测二进制文件的字符串序列转换成编码向量,是为了使字符串序列成为计算机能够处理和分析的信息。
S102,对编码向量进行局部敏感哈希运算,生成待检测二进制文件的哈希签名。
具体为,本发明实施例中通过使用事先构造好的面向余弦距离的局部敏感哈希函数,将每个编码向量分块处理,得到每个编码向量的哈希签名。在这里,对于本发明实施例运用局部敏感哈希函数对编码向量进行计算,是因为:局部敏感哈希函数能够快速地从海量的高维数据集合中找到,与某个数据最相似的一个数据或多个数据。局部敏感哈希函数是处理海量并且具有很高的维度的数据的便捷算法。优选地,本发明实施例用余弦距离来计算每个编码向量间的距离,本发明实施例不对局部敏感哈希函数的计算方式作限定。
S103,计算待检测二进制文件的哈希签名与数据库中的各哈希签名的相似度哈希,其中,数据库中记录样本二进制文件和哈希签名。
具体为,在本发明实施例中,以事先构建一个样本数量足够大的数据库,为待检测的二进制文件的匹配提前做好准备。其中数据库中包含样本二进制文件以及样本二进制文件的哈希签名。在本发明实施例中,将待检测的二进制文件字符串根据局部敏感哈希计算,生成哈希签名,根据待检测二进制文件的哈希签名与数据库中的各哈希签名,进行相似度哈希计算,以得到两两哈希签名间的相似度。在这里得到的相似度哈希值都是0-1的小数。
S104,将满足同源性阈值的相似度哈希对应的样本二进制文件作为待检测二进制文件的同源二进制文件。
具体为,当得到的相似度哈希值满足同源性阈值时,则检索数据库,将满足同源性阈值对应的样本二进制文件作为待检测二进制文件的同源二进制文件。其中,经实验得出,同源性阈值为0.8时,基本可以认定样本二进制文件与待检测二进制文件为同源性。在本发明实施例中,检索数据库方式优选为:反向索引数据库。
其中,神经网络模型根据样本二进制文件的字符串序列以及样本二进制文件的编码向量训练而成。
具体地,神经网络模型是事先由样本二进制文件的字符串序列以及样本二进制文件的编码向量,经过不断地迭代,不断调整参数,训练而成的模型,用于当一系列字符串序列输入至神经网络模型后,就能输出编码向量。
本发明实施例通过将待检测二进制文件的字符串序列输入至神经网络模型,输出编码向量,并对编码向量进行局部敏感哈希运算,生成哈希签名,根据待检测二进制文件的哈希签名和样本二进制文件各哈希签名计算相似度哈希,与同源阈值进行比较,得到满足条件的同源二进制文件,对于快速修补嵌入式设备固件的漏洞有较好的效果。
基于上述实施例的内容,作为一种可选实施例:待检测二进制文件的字符串序列输入至预先训练的神经网络模型,之前还包括:
对待检测二进制文件的字符串序列进行提取和过滤处理,获得过滤后的字符串序列,作为输入至预先训练的神经网络模型中的序列。
具体地,如果一个字符串至少由n个连续的可读字符组成,并且以NULL或换行符结尾,则该字符串被视为可读字符串。在本发明实施例中,根据经验将n设置为6,也即是一个字符串由6个可读字符组成。为了过滤来自于指令的可读无序字符串,在使用strings工具时通过不指定‘-a’选项将提取范围限制为数据段。本发明实施例中,只提取含有ELF头的二进制文件,提取出二进制文件的数据段部分,得到待检测二进制文件中的可读字符串序列。
对提取出来的可读字符串进行字符串过滤,包括:代码段字符串过滤和库符号表字符串过滤,其中,代码段字符串过滤掉不可打印的并且长度较短的字符串;
针对提取出来的字符串,将提取出的字符串信息作为特征过滤文件,该特征过滤文件用来过滤掉不同的字符串特征。其中过滤掉的特征包括:内核级和系统级的符号表字符串,库中存储的函数名称和全局变量信息。过滤原因:这些信息是众多文件所共享的,不是单一文件的特定属性。这里的含有ELF头的样本二进制文件作为过滤文件后,把它再次应用于上述要过滤的名单进行再次过滤。
其次还要过滤掉字符串中包含了与SDK或指令集平台相关的字符串以及库函数符号表字符串,过滤原因:软件开发包SDK和指令平台相关字符串是与平台密切相关的,使用相同SDK开发的同一平台的不同二进制文件,它们包含的与软件开发包SDK和指令平台相关字符串是几乎相同的,如果字符串中存在软件开发包SDK和指令平台相关字符串,会降低同源检索准确率;不同的二进制程序可能调用了同一个库函数,那么在这些二进制程序中就可能包含了相同的库函数字符串,这样就会使得不同的二进制文件也会被判断为同源的,增加了同源检索的误报率。这里的过滤特征选择方式在于:
(1)使用buildroot工具交叉编译千余种常用的嵌入式开源组件源码包到ARM、MIPS、PowerPC等平台;
(2)提取不同平台但同源的二进制代码中的可读字符串,并对每个字符串按照如下公式计算其信息增益:
IG(s)=[P(s,Ci)lgP(s,Ci)+(1-P(s,Ci))lg(1-P(s,Ci))]
其中Ci是目标平台,P(Ci)是Ci的二进制文件与全部二进制文件的比率,P(s)是包含s的二进制文件与全部二进制文件的比率,P(s,Ci)是Ci中包含s的二进制文件与全部二进制文件的比率。若某字符串的增益大于预定的的阈值μ,则将其纳入到黑名单中。这里的黑名单是起到一个过滤作用的,出现在黑名单中的字符串是需要过滤掉的,也就是说在本发明实施例中,需要的是出现在黑名单之外的字符串,作为输入至预先训练的神经网络模型中的序列。
本发明实施例通过对输入神经网络模型的字符串序列作预处理,增加了同源二进制检测的准确率,降低了检测的误检率,使得到的同源二进制文件更加准确。
基于上述实施例的内容,作为一种可选实施例:神经网络模型包括词嵌入网络、双层双向循环神经网络和全连接编码网络,如图2所示,图2为本发明实施例提供的神经网络模型方法的流程示意图,该方法包括:将待检测二进制文件的字符串序列输入至预先训练的神经网络模型,输出编码向量,具体地:
S201,将待检测二进制文件的字符串序列输入至词嵌入网络,输出编码矩阵;编码矩阵中的列向量用于表征待检测文件中的字符串。
具体地,词嵌入是一种词的类型表示,是对具有相似意义的词的表示,是将词汇映射到实数向量的方法总称。词嵌入是自然语言处理的重要突破之一,它将单个词在预定义的向量空间中被表示为实数向量,每个单词都映射到一个向量。在本发明实施例中,将待检测的二进制文件的字符串序列中的字符串作为词汇,将字符串依次输入至词嵌入网络,映射成列向量/行向量,在本发明实施例中,选择的是将字符串序列映射成列向量,将生成的列向量依次排列,生成编码矩阵。
S202,将编码矩阵输入至双层双向循环神经网络,输出特征向量;特征向量用于表征所述待检测文件的上下文信息。
具体地,本发明实施例中,神经网络模型包括双层双向循环神经网络,其中,双层双向循环神经网络由2层Bi-GRU(Bi-Gated Recurrent Unit,双向循环单元)网络构成,在本发明实施例中,Bi指双向,两个GRU则代表双层。当编码矩阵输入至双层双向循环神经网络,双层双向循环神经网络通过2个方向提取字符串序列的上下文信息,得到输出的特征向量。在这里,字符串序列的上下文信息,指该字符串序列在经过双层双向循环网络的处理后,所表达出的序列信息。
S203,将特征向量输入至全连接编码网络,输出编码向量。
具体地,在得到特征向量后,运用全连接编码网络,根据特征向量与编码向量间对应的映射关系,得到编码长度固定的编码向量。在本发明实施例中,采用简单的单层全连接网络作为编码向量的实现算法。
本发明实施例通过神经网络模型中的词嵌入网络、双层双向循环神经网络和全连接编码网络,对过滤后的待检测二进制文件的字符串序列进行训练处理,进而得到相应的编码向量。
基于上述实施例的内容,作为一种可选实施例:如图3所示,图3为本发明实施例提供的词嵌入网络模型的结构示意图。词嵌入网络进一步包括输入向量层301、编码层302、编码矩阵层303。相应地,将待检测二进制文件的字符串序列输入至词嵌入网络,输出编码矩阵,具体为:
将待检测二进制文件的字符串序列输入至输入向量层后,根据预先存有字符串编码的系统字符串语料库,检索并输出待检测二进制文件的字符串序列在系统字符串语料库中对应的字符串编码。
具体地,在本发明实施例中,提前将过滤好的所有二进制文件字符串序列,放到一个名称为系统字符串语料库的数据库中。在待检测二进制文件的字符串序列输入至输入向量层301后,会检索并输出待检测二进制文件的字符串序列在系统字符串语料库中对应的字符串编码,检索到的编码即为待检测二进制文件的字符串序列的编码。
系统字符串语料库用于存储常用二进制文件的字符串,并将二进制文件的字符串以列向量形式,存储在编码层。
具体地,需要说明的是,系统字符串语料库是通过收集大量的二进制程序,对这些二进制程序进行逆向处理,提取字符串,获得一个足够大的字符串样本库,在这里,系统字符串语料库基本涵盖了常见的二进制程序中可提取得到的字符串。然后将系统字符串语料库中的二进制字符串以列向量的形式,存储在编码层302中。其中,二进制字符串以列向量的形式存储在编码层302,可以是以字符样式,从上至下的排成一列,得到列向量,例如:字符串“ssh”以列向量[ssh00...0]T的形式存储在编码层。
得到待检测二进制文件的字符串序列对应的字符串编码后,检索编码层中待检测二进制文件的字符串序列对应的字符串编码对应的列向量,根据待检测二进制文件的字符串序列顺序,依次将列向量存储在编码矩阵层中,得到编码矩阵。
具体地,在这个系统字符串语料库中,字符串对应的编码为随机值。本发明实施例不对字符串编码作具体限定。例如:字符串为ssh的编码可以为i,也可以为m。在这里,字符串对应的编码为随机值的原因是:从图3可以看出,字符串编码下面的1,k,…,TS代表字符串序列号,即是第1个位置,第k个位置,第TS个位置。当输入的字符串序列有1个,k个,…,TS个字符向量时,那么可以得出,对应的字符串序列长度就为1,k,…,TS。图3,最后生成的编码矩阵的排列顺序和输入的字符串顺序是对应的,也就是说编码随机没有关系,只要根据输入字符串序列的顺序依次放置列向量即可,这时生成的编码矩阵就是唯一的。例如:在系统字符串语料库中,也会存在为ssh的字符串,这时定义ssh的编码是i,编码层302中对应的列向量是[0,1,0,...,1]T,如果待检测二进制文件的字符串序列中输入第一个字符向量就是ssh,那么检索语料库,在语料库中查询到它的编码为i,则在编码层302查找编码为i的列向量,把第一个字符向量ssh的列向量放入编码矩阵的第一列,当输入第二个字符向量时,以相同的查询方式,将得到的第二个字符向量的列向量放入编码矩阵的第二列,这样依次形成待检测二进制文件的字符串序列的编码矩阵层303,进而得到编码矩阵。优选地,输出的编码矩阵是512×TS的张量。
在这里,张量是一个已有概念,张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数。
本发明实施例将输入待检测二进制文件的字符串,通过词嵌入网络的处理,输出编码矩阵,为双层双向循环神经网络训练做铺垫。
基于上述实施例的内容,作为一种可选实施例:如图4所示,图4为本发明实施例提供的神经网络模型的结构示意图。双层双向循环神经网络进一步包括:第一层双向循环神经网络401和第二层双向循环神经网络402;
相应地,将编码矩阵输入至双层双向循环神经网络,输出特征向量,如图5,图5为本发明实施例提供的双层双向循环神经网络方法的流程示意图,该方法包括:
S501,将编码矩阵按照字符串序列输入的顺序,依次输入至第一层双向循环神经网络后,生成第一临时张量。
具体地,将由词嵌入网络获得的512×TS的张量,输入至双层双向循环神经网络。其中,在输入向量层根据输入字符串的前后顺序,得到字符串序列,然后将编码矩阵按照已有的字符串序列输入的前后顺序,依次输入至第一层双向循环神经网络401后,按照字符串输入字符串序列的顺序输出,生成256×TS的第一临时张量;
S502,将编码矩阵按照字符串序列输入的顺序做反转处理,之后依次输入至第一层双向循环神经网络,然后按照字符串输入时候的顺序输出,生成第二临时张量。
具体地,将编码矩阵按照字符串序列中的字符串输入时的前后顺序做反转处理。这时主要根据字符串编码做反转处理即可,因为一个字符串编号对应唯一的字符串,例如:输入的字符串序列是“ssh statude nnd kkh iih”这个字符串序列对应的编码是a s d fg,那么做了反转处理后,得到的字符串序列对应的编码是g f d s a,此时对应的字符串序列为“iih kkh nnd statude ssh”。然后将反转后的字符串序列依次输入至第一层双向循环神经网络401,之后按照字符串反转前的输入字符串序列的顺序输出,生成256×TS的第二临时张量。
S503,将第一临时张量和第二临时张量合并,生成中间张量。
具体地,将第一临时张量和第二临时张量上下合并,也即是,将第一临时张量中的256×TS中的第一列与第二临时张量中的256×TS中的第一列,从上至下合并为一整体,成为新的第一列,之后依次这样排列,形成512×TS的中间张量。
S504,将中间张量,按照字符串的顺序,依次输入至第二层双向循环神经网络,按照字符串输入时候的顺序输出,生成第一结果张量。
具体地,将512×TS的中间张量,按照合并后字符串的前后顺序,依次输入至第二层双向循环神经网络402,这时第一临时张量的字符串第一列和第二临时张量的字符串第一列合并后,会形成一列新的列向量。这样按照合并后字符串输入字符串序列的顺序输出,生成256×TS的第一结果张量。
S505,将中间张量,按照字符串的顺序做反转处理后,依次输入至第二层双向循环神经网络,之后按照字符串输入时候的顺序输出,生成第二结果张量。
具体地,将512×TS的中间张量中的字符串做反转处理后,将反转后的字符串依次输入至第二层双向循环神经网络402,其中,反转处理和将字符串输入第一层双向循环神经网络401的过程一样,此处不再赘述。接着按照合并后字符串输入字符串序列的顺序输出,生成256×TS的第二结果张量。
S506,将第一结果张量和第二结果张量中的最后一列抽取出来,依次排列成行向量,得到特征向量。
具体地,将第一结果张量和第二结果张量中的最后一列抽取出来,依次排列成行向量/列向量,得到特征向量。本发明实施例中,特征向量可以是行向量也可以是列向量。因为行向量转置后就是列向量,两者是同一个数据。
在这里,本发明实施例中,第一临时张量、第二临时张量、中间张量、第一结果张量、第二结果张量都是为了便于识别不同的状态下生成不同的值而设置的名称。
图4中编码层的512和双层双向循环神经网络的两个临时张量256代表本实施例列向量的维度,本发明实施例不对列向量维度作具体限定。但是编码层的维度和经过双层双向循环神经网络处理后,得到的两个临时张量维度之间是有关联的,即是两个临时张量的维度是编码层维度的二分之一。例如:如果编码层得到的是64维,那么两个临时张量维度就是32+32。
本发明实施例通过将编码矩阵输入至双层双向循环神经网络,满足从2个方向提取字符串序列的上下文信息,使得得到的编码向量更准确。
基于上述实施例的内容,作为一种可选实施例:将特征向量输入至全连接编码网络,输出编码向量,具体地:
根据特征向量与编码向量间对应的映射关系,得到编码长度固定的编码向量。
具体地,在得到特征向量后,通过全连接编码网络,得到特征向量与编码向量间对应的映射关系,获得编码长度固定的编码向量。在这里,编码向量是固定的编码长度。也即是,不管特征向量是多少维度的,最终得到的编码向量是固定长度。在这里,固定长度可以是64、128、256、512、600、1024等,优选地,选择固定长度为512。本发明实施例中,编码向量可以是行向量也可以是列向量。因为行向量转置后就是列向量,两者是同一个数据。
本发明实施例通过全连接编码网络,使特征向量通过映射关系得到对应的编码向量,使得到的编码向量更准确。
基于上述实施例的内容,作为一种可选实施例:对待检测二进制文件的字符串序列进行提取和过滤处理,具体地:
对待检测二进制文件进行提取的方式:提取出数据段中的ASCII格式字符串序列、数据段中的Unicode字符串序列和代码段中的ASCII格式字符串序列,并对提取出的字符串序列进行过滤,得到输入至预先训练的神经网络模型中的序列。
具体地,提取出数据段中的ASCII格式字符串序列:使用Linux下的字符串提取工具strings来提取数据段中的ASCII格式字符串,同时采用strings的‘-d’选项来限制只提取数据段中存在的字符串,并使用‘—bytes’选项来指定只能提取包含多于6个可读字符的字符串。
提取出数据段中的Unicode字符串序列:与ASCII格式的字符串不同,数据段中的Unicode格式字符串不能通过判断它们是否包含连续的可打印字符来识别,因为大多数双字节单元都可以用相同或不同语系的Unicode编码打印。但是,在同一固件中语系通常是一致的。因此,可以通过判断是否包含连续一致语系编码的字节单元来识别Unicode格式的字符串。
提取出代码段中的ASCII格式字符串:当代码段被定义并存储在局部变量中时,可读字符串也可能存在于代码段中,在这种情况下,可读字符串被分成几个连续指令的操作数中存在的字符。首先识别连续入栈指令;然后从这些连续指令中提取指令操作数,构造栈帧字节流;最后判断栈帧字节流中是否有连续可读的ASCII格式字符,若有则将它们拼接成可读字符串。
通过上述三种字符串提取过程,得到了待检测二进制文件中的可读字符串序列。并对提取出的字符串序列进行过滤,将过滤后的二进制文件的字符串序列输入至预先训练的神经网络模型中。
根据本发明的另一个方面,本发明实施例还提供一种同源二进制文件检索装置,参见图6,图6为本发明实施例提供的同源二进制文件检索装置的功能框图。该装置用于在前述各实施例中进行同源二进制文件检索方法的判断。因此,在前述各实施例中的同源二进制文件检索方法中的描述和定义,可以用于本发明实施例中各执行模块的理解。
如图6所示,该装置包括:
训练模块601,用于将待检测二进制文件的字符串序列输入至预先训练的神经网络模型,输出编码向量;
哈希签名模块602,用于对所述编码向量进行局部敏感哈希运算,生成待检测二进制文件的哈希签名;
计算模块603,用于计算所述待检测二进制文件的哈希签名与数据库中的各哈希签名的相似度哈希;
其中,所述数据库中记录样本二进制文件和哈希签名;
判断模块604,用于将满足同源性阈值的相似度哈希对应的样本二进制文件作为所述待检测二进制文件的同源二进制文件;
其中,所述神经网络模型根据样本二进制文件的字符串序列以及样本二进制文件的编码向量训练而成。
本发明实施例通过将待检测二进制文件的字符串序列输入至训练模块,输出编码向量,运用哈希签名模块并对编码向量进行局部敏感哈希运算,生成哈希签名,根据计算模块,将待检测二进制文件的哈希签名和样本二进制文件各哈希签名计算相似度哈希,判断模块将相似度哈希值与同源阈值进行比较,得到满足条件的同源二进制文件,对于快速修补嵌入式设备固件的漏洞有较好的效果。
图7为本发明实施例提供的电子设备的框图,如图7所示,该设备包括:处理器(processor)701、存储器(memory)702和总线703;
其中,处理器701及存储器702分别通过总线703完成相互间的通信;处理器701用于调用存储器702中的程序指令,以执行上述实施例所提供的同源二进制文件检索方法,例如包括:将待检测二进制文件的字符串序列输入至预先训练的神经网络模型,输出编码向量;对所述编码向量进行局部敏感哈希运算,生成待检测二进制文件的哈希签名;计算所述待检测二进制文件的哈希签名与数据库中的各哈希签名的相似度哈希;其中,所述数据库中记录样本二进制文件和哈希签名;将满足同源性阈值的相似度哈希对应的样本二进制文件作为所述待检测二进制文件的同源二进制文件;其中,所述神经网络模型根据样本二进制文件的字符串序列以及样本二进制文件的编码向量训练而成。
本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现同源二进制文件检索方法的步骤。例如包括:将待检测二进制文件的字符串序列输入至预先训练的神经网络模型,输出编码向量;对所述编码向量进行局部敏感哈希运算,生成待检测二进制文件的哈希签名;计算所述待检测二进制文件的哈希签名与数据库中的各哈希签名的相似度哈希;其中,所述数据库中记录样本二进制文件和哈希签名;将满足同源性阈值的相似度哈希对应的样本二进制文件作为所述待检测二进制文件的同源二进制文件;其中,所述神经网络模型根据样本二进制文件的字符串序列以及样本二进制文件的编码向量训练而成。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种同源二进制文件检索方法,其特征在于,包括:
将待检测二进制文件的字符串序列输入至预先训练的神经网络模型,输出编码向量;
对所述编码向量进行局部敏感哈希运算,生成待检测二进制文件的哈希签名;
计算所述待检测二进制文件的哈希签名与数据库中的各哈希签名的相似度哈希;
其中,所述数据库中记录样本二进制文件和哈希签名;
将满足同源性阈值的相似度哈希对应的样本二进制文件作为所述待检测二进制文件的同源二进制文件;
其中,所述神经网络模型根据样本二进制文件的字符串序列以及样本二进制文件的编码向量训练而成。
2.根据权利要求1所述的方法,其特征在于,所述待检测二进制文件的字符串序列输入至预先训练的神经网络模型,之前还包括:
对待检测二进制文件的字符串序列进行提取和过滤处理,获得过滤后的字符串序列,作为输入至预先训练的神经网络模型中的序列。
3.根据权利要求1所述的方法,其特征在于,所述神经网络模型包括词嵌入网络、双层双向循环神经网络和全连接编码网络;
相应地,所述将待检测二进制文件的字符串序列输入至预先训练的神经网络模型,输出编码向量,具体为:
将待检测二进制文件的字符串序列输入至所述词嵌入网络,输出编码矩阵;所述编码矩阵中的列向量用于表征待检测文件中的字符串;
将所述编码矩阵输入至所述双层双向循环神经网络,输出特征向量;所述特征向量用于表征所述待检测文件的上下文信息;
将所述特征向量输入至所述全连接编码网络,输出所述编码向量。
4.根据权利要求3所述的方法,其特征在于,所述词嵌入网络进一步包括输入向量层、编码层、编码矩阵层;
相应地,将待检测二进制文件的字符串序列输入至所述词嵌入网络,输出编码矩阵,具体为:
将待检测二进制文件的字符串序列输入至所述输入向量层后,根据预先存有字符串编码的系统字符串语料库,检索待检测二进制文件的字符串序列在所述系统字符串语料库中对应的字符串编码;
检索所述编码层中所述待检测二进制文件的字符串序列对应的字符串编码对应的列向量,根据所述待检测二进制文件的字符串序列顺序,依次将所述列向量存储在所述编码矩阵层中,进而得到编码矩阵;
所述系统字符串语料库用于存储常用二进制文件的字符串,并将所述二进制文件的字符串以列向量形式,存储在所述编码层。
5.根据权利要求3所述的方法,其特征在于,所述双层双向循环神经网络进一步包括:第一层双向循环神经网络和第二层双向循环神经网络;
相应地,将所述编码矩阵输入至所述双层双向循环神经网络,输出特征向量,具体为:
将所述编码矩阵按照字符串序列输入的顺序,依次输入至所述第一层双向循环神经网络后,生成第一临时张量;
将所述编码矩阵按照字符串序列输入的顺序做反转处理,之后依次输入至所述第一层双向循环神经网络,然后按照字符串输入时候的顺序输出,生成第二临时张量;
将所述第一临时张量和所述第二临时张量合并,生成中间张量;
将所述中间张量,按照字符串的顺序,依次输入至所述第二层双向循环神经网络,按照字符串输入时候的顺序输出,生成第一结果张量;
将所述中间张量,按照字符串的顺序做反转处理后,依次输入至所述第二层双向循环神经网络,之后按照字符串输入时候的顺序输出,生成第二结果张量;
将所述第一结果张量和第二结果张量中的最后一列抽取出来,依次排列成行向量,得到所述特征向量。
6.根据权利要求3所述的方法,其特征在于,所述将所述特征向量输入至所述全连接编码网络,输出所述编码向量,具体为:
根据所述特征向量与所述编码向量间对应的映射关系,得到编码长度固定的编码向量。
7.根据权利要求2所述的方法,其特征在于,所述对待检测二进制文件的字符串序列进行提取和过滤处理,具体为:
对所述待检测二进制文件进行提取的方式:提取出数据段中的ASCII格式字符串序列、数据段中的Unicode字符串序列和代码段中的ASCII格式字符串序列,并对提取出的字符串序列进行过滤,得到所述输入至预先训练的神经网络模型中的序列。
8.一种同源二进制文件检索装置,其特征在于,包括:
训练模块,用于将待检测二进制文件的字符串序列输入至预先训练的神经网络模型,输出编码向量;
哈希签名模块,用于对所述编码向量进行局部敏感哈希运算,生成待检测二进制文件的哈希签名;
计算模块,用于计算所述待检测二进制文件的哈希签名与数据库中的各哈希签名的相似度哈希;
其中,所述数据库中记录样本二进制文件和哈希签名;
判断模块,用于将满足同源性阈值的相似度哈希对应的样本二进制文件作为所述待检测二进制文件的同源二进制文件;
其中,所述神经网络模型根据样本二进制文件的字符串序列以及样本二进制文件的编码向量训练而成。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述同源二进制文件检索方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7任一项所述同源二进制文件检索方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810798277.1A CN109063055B (zh) | 2018-07-19 | 2018-07-19 | 同源二进制文件检索方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810798277.1A CN109063055B (zh) | 2018-07-19 | 2018-07-19 | 同源二进制文件检索方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109063055A true CN109063055A (zh) | 2018-12-21 |
CN109063055B CN109063055B (zh) | 2021-02-02 |
Family
ID=64817454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810798277.1A Active CN109063055B (zh) | 2018-07-19 | 2018-07-19 | 同源二进制文件检索方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109063055B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110362966A (zh) * | 2019-07-11 | 2019-10-22 | 华东师范大学 | 一种基于模糊哈希的跨平台固件同源性安全检测方法 |
CN110414238A (zh) * | 2019-06-18 | 2019-11-05 | 中国科学院信息工程研究所 | 同源二进制代码的检索方法及装置 |
CN110636445A (zh) * | 2019-10-16 | 2019-12-31 | 腾讯科技(深圳)有限公司 | 基于wifi的室内定位方法、装置、设备及介质 |
CN110688150A (zh) * | 2019-09-03 | 2020-01-14 | 华中科技大学 | 一种基于张量运算的二进制文件代码搜索检测方法及系统 |
CN111104674A (zh) * | 2019-11-06 | 2020-05-05 | 中国电力科学研究院有限公司 | 一种电力固件同源二进制文件关联方法及系统 |
CN112084146A (zh) * | 2020-09-08 | 2020-12-15 | 国网上海市电力公司 | 基于多维特征的固件同源性检测方法 |
CN112487427A (zh) * | 2020-11-26 | 2021-03-12 | 网宿科技股份有限公司 | 一种系统白名单的确定方法、系统及服务器 |
CN113098691A (zh) * | 2021-03-25 | 2021-07-09 | 北京百度网讯科技有限公司 | 数字签名方法、签名信息的验证方法、相关装置及电子设备 |
KR20210119923A (ko) * | 2021-03-25 | 2021-10-06 | 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. | 데이터를 주석하는 방법 및 장치 |
CN116561770A (zh) * | 2023-05-19 | 2023-08-08 | 国家计算机网络与信息安全管理中心 | 设备固件安全验证方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104866765A (zh) * | 2015-06-03 | 2015-08-26 | 康绯 | 基于行为特征相似性的恶意代码同源性分析方法 |
CN105868108A (zh) * | 2016-03-28 | 2016-08-17 | 中国科学院信息工程研究所 | 基于神经网络的指令集无关的二进制代码相似性检测方法 |
US20170039211A1 (en) * | 2015-08-05 | 2017-02-09 | Facebook, Inc. | Systems and methods for determining content similarity |
CN107704501A (zh) * | 2017-08-28 | 2018-02-16 | 中国科学院信息工程研究所 | 一种识别同源二进制文件的方法及系统 |
CN108280197A (zh) * | 2018-01-29 | 2018-07-13 | 中国科学院信息工程研究所 | 一种识别同源二进制文件的方法及系统 |
-
2018
- 2018-07-19 CN CN201810798277.1A patent/CN109063055B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104866765A (zh) * | 2015-06-03 | 2015-08-26 | 康绯 | 基于行为特征相似性的恶意代码同源性分析方法 |
US20170039211A1 (en) * | 2015-08-05 | 2017-02-09 | Facebook, Inc. | Systems and methods for determining content similarity |
CN105868108A (zh) * | 2016-03-28 | 2016-08-17 | 中国科学院信息工程研究所 | 基于神经网络的指令集无关的二进制代码相似性检测方法 |
CN107704501A (zh) * | 2017-08-28 | 2018-02-16 | 中国科学院信息工程研究所 | 一种识别同源二进制文件的方法及系统 |
CN108280197A (zh) * | 2018-01-29 | 2018-07-13 | 中国科学院信息工程研究所 | 一种识别同源二进制文件的方法及系统 |
Non-Patent Citations (3)
Title |
---|
YU CHEN,ETC: "IHB:A Scalable and Efficient Scheme to Identify Homologous Binaries in IoT Firmwares", 《IEEE》 * |
李登等: "基于同源性分析的嵌入式设备固件漏洞检测", 《计算机工程》 * |
陈昱等: "一种大规模的跨平台同源二进制文件检索方法", 《计算机研究与发展》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110414238A (zh) * | 2019-06-18 | 2019-11-05 | 中国科学院信息工程研究所 | 同源二进制代码的检索方法及装置 |
CN110362966A (zh) * | 2019-07-11 | 2019-10-22 | 华东师范大学 | 一种基于模糊哈希的跨平台固件同源性安全检测方法 |
CN110688150A (zh) * | 2019-09-03 | 2020-01-14 | 华中科技大学 | 一种基于张量运算的二进制文件代码搜索检测方法及系统 |
CN110688150B (zh) * | 2019-09-03 | 2020-12-08 | 华中科技大学 | 一种基于张量运算的二进制文件代码搜索检测方法及系统 |
CN110636445A (zh) * | 2019-10-16 | 2019-12-31 | 腾讯科技(深圳)有限公司 | 基于wifi的室内定位方法、装置、设备及介质 |
CN111104674A (zh) * | 2019-11-06 | 2020-05-05 | 中国电力科学研究院有限公司 | 一种电力固件同源二进制文件关联方法及系统 |
CN112084146A (zh) * | 2020-09-08 | 2020-12-15 | 国网上海市电力公司 | 基于多维特征的固件同源性检测方法 |
CN112487427A (zh) * | 2020-11-26 | 2021-03-12 | 网宿科技股份有限公司 | 一种系统白名单的确定方法、系统及服务器 |
CN113098691A (zh) * | 2021-03-25 | 2021-07-09 | 北京百度网讯科技有限公司 | 数字签名方法、签名信息的验证方法、相关装置及电子设备 |
KR20210119923A (ko) * | 2021-03-25 | 2021-10-06 | 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. | 데이터를 주석하는 방법 및 장치 |
CN113098691B (zh) * | 2021-03-25 | 2021-11-23 | 北京百度网讯科技有限公司 | 数字签名方法、签名信息的验证方法、相关装置及电子设备 |
KR102583345B1 (ko) | 2021-03-25 | 2023-09-27 | 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. | 데이터를 주석하는 방법 및 장치 |
CN116561770A (zh) * | 2023-05-19 | 2023-08-08 | 国家计算机网络与信息安全管理中心 | 设备固件安全验证方法、装置、设备及存储介质 |
CN116561770B (zh) * | 2023-05-19 | 2024-03-08 | 国家计算机网络与信息安全管理中心 | 设备固件安全验证方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109063055B (zh) | 2021-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109063055A (zh) | 同源二进制文件检索方法和装置 | |
Sewak et al. | Practical convolutional neural networks: implement advanced deep learning models using Python | |
Ciaburro | MATLAB for machine learning | |
Beyeler | Machine Learning for OpenCV | |
CN110532353B (zh) | 基于深度学习的文本实体匹配方法、系统、装置 | |
US11080475B2 (en) | Predicting spreadsheet properties | |
KR102310487B1 (ko) | 속성 단위 리뷰 분석 장치 및 방법 | |
CN113095415B (zh) | 一种基于多模态注意力机制的跨模态哈希方法及系统 | |
CN112966074A (zh) | 一种情感分析方法、装置、电子设备以及存储介质 | |
CN111738001B (zh) | 同义词识别模型的训练方法、同义词确定方法及设备 | |
CN111291570A (zh) | 一种实现司法文书中要素识别的方法及装置 | |
CN112100401B (zh) | 面向科技服务的知识图谱构建方法、装置、设备及存储介质 | |
Menshawy | Deep Learning By Example: A hands-on guide to implementing advanced machine learning algorithms and neural networks | |
Liang et al. | An end-to-end model for android malware detection | |
CN113609488B (zh) | 基于自监督学习及多通道超图神经网络的漏洞检测方法与系统 | |
Ciaburro et al. | Python Machine Learning Cookbook: Over 100 recipes to progress from smart data analytics to deep learning using real-world datasets | |
Wang | Learning scalable and precise representation of program semantics | |
CN111881671A (zh) | 一种属性词提取方法 | |
CN112132238A (zh) | 一种识别隐私数据的方法、装置、设备和可读介质 | |
Eckroth | Python artificial intelligence projects for beginners: Get up and running with artificial intelligence using 8 smart and exciting AI applications | |
CN110347805A (zh) | 石油行业安全隐患关键要素提取方法、装置、服务器及存储介质 | |
CN109902162B (zh) | 基于数字指纹的文本相似性的识别方法、存储介质及装置 | |
Jeyaraman et al. | Practical Machine Learning with R: Define, build, and evaluate machine learning models for real-world applications | |
CN116595537A (zh) | 一种基于多模态特征的生成式智能合约的漏洞检测方法 | |
KR102265947B1 (ko) | 기계 학습 기반 정보 제공 방법 및 장치 |
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 |