首页 / 专利库 / 物理 / 向列相 / 一种电力固件同源二进制文件关联方法及系统

一种电固件同源二进制文件关联方法及系统

阅读:272发布:2020-05-08

专利汇可以提供一种电固件同源二进制文件关联方法及系统专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种电 力 固件 同源二进制文件关联方法及系统;所述方法包括:提取待查询二进制文件的字符串信息;过滤所述字符串信息的代码段字符串及库符号表字符串得到字符串序列;将所述字符串序列进行编码,得到编码向量;将所述编码向量生成相似度哈希签名,将所述相似度哈希签名在预设的哈希签名 数据库 中进行检索,得到所述哈希签名数据库中所有满足 阈值 条件的同源二进制文件;所述方法及系统通过 深度学习 网络编码二进制文件中的可读字符串生成编码向量,然后对编码向量生成相似度哈希签名从而实现快速高效关联,兼顾匹配的 精度 和速度,具有广阔的应用前景。,下面是一种电固件同源二进制文件关联方法及系统专利的具体信息内容。

1.一种电固件同源二进制文件关联方法,所述方法包括:
提取待查询二进制文件的字符串信息;
过滤所述字符串信息的代码段字符串及库符号表字符串得到字符串序列;
将所述字符串序列进行编码,得到编码向量;
通过所述编码向量生成相似度哈希签名,将所述相似度哈希签名在预设的哈希签名数据库中进行检索,得到所述哈希签名数据库中所有满足阈值条件的同源二进制文件。
2.根据权利要求1所述的方法,其特征在于,所述待查询二进制文件的可读字符串包括数据段中的ASCII格式字符串、数据段中的Unicode格式字符串及代码段中的ASCII格式字符串;
提取字符串信息的方法包括:
通过Linux下的字符串提取工具strings提取所述数据段中的ASCII格式字符串;
通过判断是否包含连续一致语系编码的字节单元来识别Unicode格式的字符串;
通过识别连续入栈指令,提取所述连续入栈指令中的操作数,根据所述操作数构造栈字节流,判断所述栈帧字节流中是否有连续可读的ASCII格式字符,若有则将它们拼接成可读字符串。
3.根据权利要求1所述的方法,其特征在于,所述字符串信息的代码段字符串过滤方法包括:
所述待查询二进制文件含有ELF头时,直接提取所述待查询二进制文件数据段中的字符串信息作为特征过滤文件;
所述待查询二进制文件不含ELF头时,过滤所述待查询二进制文件代码段中的字符串信息,将所述过滤后字符串信息作为特征过滤文件。
4.根据权利要求3所述的方法,其特征在于,库符号表字符串过滤方法包括:
内核级和系统级的符号表字符串加入黑名单列表中,对经过代码段字符串过滤后的所述特征过滤文件运用该黑名单作进一步过滤,得到所述字符串序列;
所述库符号表包含相应库中存放的函数名称和全局变量信息;
所述内核级符号表包含能被系统程序和用户程序调用的库函数名和变量信息;
所述系统级符号表包含能够被用户程序调用的库函数名及变量信息。
5.根据权利要求1所述的方法,其特征在于:
所述字符串序列通过字符串编码模型进行编码,所述字符串编码模型包括词嵌入网络、单层双向循环神经网络和全连接编码网络三部分;
所述词嵌入网络通过查表方式查询系统预设的字符串语料库,将所述字符串序列按照字符串的原始序列将查找的编码组成词向量序列;
所述单层双向循环神经网络根据输入的所述词向量序列生成第一临时张量,根据输入的反序后所述词向量序列生成第二临时张量,然后将所述第一临时张量与所述第二临时张量合并,生成结果张量,最后将结果张量中的最后一列抽取出来得到最终的特征向量
所述全连接编码网络将所述特征向量映射为固定编码长度的编码向量。
6.根据权利要求5所述的方法,其特征在于:
所述预设的字符串语料库通过对收集到的电力设备固件进行解压逆向,提取其字符串,并对提取到的字符串进行构建生成;所述字符串语料库对应的编码初始值为随机值。
7.根据权利要求5所述的方法,其特征在于:
所述哈希签名数据库为通过对所述字符串语料库中的每个字符串用训练好的所述字符串编码模型编码成特征向量,然后使用事先构造好的面向余弦距离的局部敏感哈希函数族计算出所述每个特征向量的相似度哈希签名,最后以给定的同源性阈值为参数对所述相似度哈希签名构造生成。
8.根据权利要求1所述的方法,其特征在于:
所述编码向量根据面向余弦距离的局部敏感哈希函数族生成相似度哈希签名;
所述相似度哈希签名在预设的哈希签名数据库中进行的检索为时间复杂度为O(N)的检索。
9.一种电力固件同源二进制文件关联系统,所述系统包括字符串提取单元,字符串过滤单元,字符串编码模型单元,相似度哈希计算单元及哈希签名数据库;
所述字符串提取单元用于提取待查询二进制文件的字符串信息;
所述字符串过滤单元用于过滤所述字符串信息的代码段字符串及库符号表字符串得到字符串序列;
所述字符串编码模型单元用于将所述字符串序列进行编码,得到编码向量;
所述相似度哈希计算单元用于通过所述编码向量生成相似度哈希签名,将所述相似度哈希签名在预设的哈希签名数据库中进行检索,得到所述哈希签名数据库中所有满足阈值条件的同源二进制文件;
所述哈希签名数据库用于对所述相似度哈希签名通过时间复杂度为O(N)的检索找到同源二进制文件。
10.根据权利要求9所述的系统,其特征在于,所述字符串提取单元包括数据段中的ASCII格式字符串提取模、数据段中的Unicode格式的字符串提取模块及代码段中的ASCII格式字符串提取模块;
所述数据段中的ASCII格式字符串提取模块采用Linux下的字符串提取工具strings实现数据段中的ASCII格式字符串提取;
所述数据段中的Unicode格式的字符串提取模块通过判断是否包含连续一致语系编码的字节单元实现数据段中的Unicode格式的字符串提取;
所述代码段中的ASCII格式字符串提取模块通过识别连续入栈指令,提取所述连续入栈指令中的操作数,根据所述操作数构造栈帧字节流,判断所述栈帧字节流中是否有连续可读的ASCII格式字符,若有则将它们拼接成可读字符串,实现代码段中的ASCII格式字符串提取。
11.根据权利要求9所述的系统,其特征在于:
所述字符串过滤单元包括代码段字符串过滤模块,所述代码段字符串过滤模块用于过滤所述字符串信息中的代码段字符串;
所述待查询二进制文件含有ELF头时,所述代码段字符串过滤模块直接提取所述待查询二进制文件数据段中的字符串信息作为特征过滤文件;
所述待查询二进制文件不含ELF头时,所述代码段字符串过滤模块过滤所述待查询二进制文件代码段中的字符串信息,将所述过滤后字符串信息作为特征过滤文件。
12.根据权利要求11所述的系统,其特征在于:
所述字符串过滤单元包括库符号表字符串过滤模块,所述库符号表字符串过滤模块用于过滤所述字符串信息中的库符号表字符串;
所述库符号表字符串过滤模块将内核级和系统级的符号表字符串加入黑名单列表中,对经过代码段字符串过滤后的所述特征过滤文件运用该黑名单作进一步过滤,得到所述字符串序列;
所述库符号表包含相应库中存放的函数名称和全局变量信息;
所述内核级符号表包含能被系统程序和用户程序调用的库函数名和变量信息;
所述系统级符号表包含能够被用户程序调用的库函数名及变量信息。
13.根据权利要求9所述的系统,其特征在于,所述字符串编码模型单元包括词嵌入网络模块、单层双向循环神经网络(Bi-GRU)模块和全连接编码网络模块三部分;
所述词嵌入网络模块还包括字符串语料库,所述词嵌入网络模块通过查表方式查询系统预设的字符串语料库,将所述字符串序列按照字符串的原始序列将查找的编码组成词向量序列;
所述单层双向循环神经网络模块由两个单层Bi-GRU网络模块构成,所述词向量序列输入第一个Bi-GRU网络模块生成第一临时张量,将所述词向量反序后输入第二个Bi-GRU网络模块生成第二临时张量,然后将所述第一临时张量与所述第二临时张量合并,生成结果张量,最后将结果张量中的最后一列抽取出来得到最终的特征向量;
所述全连接编码网络模块将所述特征向量映射为固定编码长度的编码向量。
14.根据权利要求13所述的系统,其特征在于,所述预设的字符串语料库通过对收集到的电力设备固件进行解压逆向,提取其字符串,并对提取到的字符串进行构建得到;所述字符串语料库对应的编码初始值为随机值。
15.根据权利要求13所述的系统,其特征在于,所述哈希签名数据库为通过对所述字符串语料库中的每个字符串用训练好的所述字符串编码模型编码成特征向量,然后使用事先构造好的面向余弦距离的局部敏感哈希函数族计算出所述每个特征向量的相似度哈希签名,最后以给定的同源性阈值为参数对所述相似度哈希签名构造生成。
16.根据权利要求9所述的系统,其特征在于:
所述编码向量根据面向余弦距离的局部敏感哈希函数族生成相似度哈希签名;
所述相似度哈希签名在预设的哈希签名数据库中进行时间复杂度为O(N)的检索。

说明书全文

一种电固件同源二进制文件关联方法及系统

技术领域

[0001] 本发明涉及漏洞挖掘与分析领域,具体涉及电力设备固件中同源二进制文件关联方法及系统。

背景技术

[0002] 最近的网络安全事件表明,来自于同一厂商甚至不同厂商的多种电力设备会被相同的恶意软件感染。造成这种现象的主要原因为近年来设备厂商越来越多地使用同源代码进行开发,而正是由于电力设备固件中存在广泛的代码重用,当某个固件被爆出漏洞二进制文件时,包含该同源二进制文件的其他固件也将处于高险中。例如被蠕虫SHELLBIND所利用的SambaCry漏洞(CVE-2017-7494)影响设备长达七年之久,直到2017年5月才被安全研究人员发现。因此当安全事件发生时,知道哪些设备的固件中包含有相关组件对于电力设备安全应急响应意义重大。

发明内容

[0003] 为了解决背景技术存在的电力设备固件因广泛的代码重用导致某个固件因漏洞二进制文件被恶意软件感染时,包含同源二进制文件的其他固件也处于高风险状态的问题,本发明提供了一种电力固件同源二进制文件关联方法及系统,所述方法及系统通过深度学习网络编码二进制文件中的可读字符串来生成编码向量,然后对编码向量生成相似度哈希签名从而实现快速高效关联,同时兼顾匹配的精度和速度,所述一种电力固件同源二进制文件关联方法包括:
[0004] 提取待查询二进制文件的字符串信息;
[0005] 过滤所述字符串信息的代码段字符串及库符号表字符串得到字符串序列;
[0006] 将所述字符串序列进行编码,得到编码向量;
[0007] 通过所述编码向量生成相似度哈希签名,将所述相似度哈希签名在预设的哈希签名数据库中进行检索,得到所述哈希签名数据库中所有满足阈值条件的同源二进制文件。
[0008] 进一步的,所述待查询二进制文件的可读字符串包括数据段中的ASCII格式字符串、数据段中的Unicode格式字符串及代码段中的ASCII格式字符串;
[0009] 提取字符串信息的方法包括:
[0010] 通过Linux下的字符串提取工具strings提取所述数据段中的ASCII格式字符串;
[0011] 通过判断是否包含连续一致语系编码的字节单元来识别Unicode格式的字符串;
[0012] 通过识别连续入栈指令,提取所述连续入栈指令中的操作数,根据所述操作数构造栈字节流,判断所述栈帧字节流中是否有连续可读的ASCII格式字符,若有则将它们拼接成可读字符串。
[0013] 进一步的,所述字符串信息的代码段字符串过滤方法包括:
[0014] 所述待查询二进制文件含有ELF头时,直接提取所述待查询二进制文件数据段中的字符串信息作为特征过滤文件;
[0015] 所述待查询二进制文件不含ELF头时,过滤所述待查询二进制文件代码段中的字符串信息,将所述过滤后字符串信息作为特征过滤文件。
[0016] 进一步的,库符号表字符串过滤方法包括:
[0017] 将内核级和系统级的符号表字符串加入黑名单列表中,对经过代码段字符串过滤后的所述特征过滤文件运用该黑名单作进一步过滤,得到所述字符串序列;
[0018] 所述库符号表包含相应库中存放的函数名称和全局变量信息;
[0019] 所述内核级符号表包含能被系统程序和用户程序调用的库函数名和变量信息;
[0020] 所述系统级符号表包含能够被用户程序调用的库函数名及变量信息。
[0021] 进一步的,所述字符串序列通过字符串编码模型进行编码,所述字符串编码模型包括词嵌入网络、单层双向循环神经网络和全连接编码网络三部分;
[0022] 所述词嵌入网络通过查表方式查询系统预设的字符串语料库,将所述字符串序列按照字符串的原始序列将查找的编码组成词向量序列;
[0023] 所述单层双向循环神经网络根据输入的所述词向量序列生成第一临时张量,根据输入的反序后所述词向量序列生成第二临时张量,然后将所述第一临时张量与所述第二临时张量合并,生成结果张量,最后将结果张量中的最后一列抽取出来得到最终的特征向量
[0024] 所述全连接编码网络将所述特征向量映射为固定编码长度的编码向量。
[0025] 进一步的,所述预设的字符串语料库通过对收集到的电力设备固件进行解压逆向,提取其字符串,并对提取到的字符串进行构建生成;所述字符串语料库对应的编码初始值为随机值。
[0026] 进一步的,所述哈希签名数据库为通过对所述字符串语料库中的每个字符串用训练好的所述字符串编码模型编码成特征向量,然后使用事先构造好的面向余弦距离的局部敏感哈希函数族计算出所述每个特征向量的相似度哈希签名,最后以给定的同源性阈值为参数对所述相似度哈希签名构造生成。
[0027] 进一步的,所述编码向量根据面向余弦距离的局部敏感哈希函数族生成相似度哈希签名;
[0028] 所述相似度哈希签名在预设的哈希签名数据库中进行的检索为时间复杂度为O(N)的检索。
[0029] 所述一种电力固件同源二进制文件关联系统包括字符串提取单元,字符串过滤单元,字符串编码模型单元,相似度哈希计算单元及哈希签名数据库;
[0030] 所述字符串提取单元用于提取待查询二进制文件的字符串信息;
[0031] 所述字符串过滤单元用于过滤所述字符串信息的代码段字符串及库符号表字符串得到字符串序列;
[0032] 字符串编码模型单元用于将所述字符串序列进行编码,得到编码向量;
[0033] 相似度哈希计算单元用于通过所述编码向量生成相似度哈希签名,将所述相似度哈希签名在预设的哈希签名数据库中进行检索,得到所述哈希签名数据库中所有满足阈值条件的同源二进制文件;
[0034] 哈希签名数据库用于对所述相似度哈希签名通过时间复杂度为O(N)的检索找到同源二进制文件。
[0035] 进一步的,所述字符串提取单元包括数据段中的ASCII格式字符串提取模、数据段中的Unicode格式的字符串提取模块及代码段中的ASCII格式字符串提取模块;
[0036] 所述数据段中的ASCII格式字符串提取模块采用Linux下的字符串提取工具strings实现数据段中的ASCII格式字符串提取;
[0037] 所述数据段中的Unicode格式的字符串提取模块通过判断是否包含连续一致语系编码的字节单元实现数据段中的Unicode格式的字符串提取;
[0038] 所述代码段中的ASCII格式字符串提取模块通过识别连续入栈指令,提取所述连续入栈指令中的操作数,根据所述操作数构造栈帧字节流,判断所述栈帧字节流中是否有连续可读的ASCII格式字符,若有则将它们拼接成可读字符串,实现代码段中的ASCII格式字符串提取。
[0039] 进一步的,所述字符串过滤单元包括代码段字符串过滤模块,所述代码段字符串过滤模块用于过滤所述字符串信息中的代码段字符串;
[0040] 所述待查询二进制文件含有ELF头时,所述代码段字符串过滤模块直接提取所述待查询二进制文件数据段中的字符串信息作为特征过滤文件;
[0041] 所述待查询二进制文件不含ELF头时,所述代码段字符串过滤模块过滤所述待查询二进制文件代码段中的字符串信息,将所述过滤后字符串信息作为特征过滤文件。
[0042] 进一步的,所述字符串过滤单元包括库符号表字符串过滤模块,所述库符号表字符串过滤模块用于过滤所述字符串信息中的库符号表字符串;
[0043] 所述库符号表字符串过滤模块将内核级和系统级的符号表字符串加入黑名单列表中,对经过代码段字符串过滤后的所述特征过滤文件运用该黑名单作进一步过滤,得到所述字符串序列;
[0044] 所述库符号表包含相应库中存放的函数名称和全局变量信息;
[0045] 所述内核级符号表包含能被系统程序和用户程序调用的库函数名和变量信息;
[0046] 所述系统级符号表包含能够被用户程序调用的库函数名及变量信息。
[0047] 进一步的,所述字符串编码模型单元包括词嵌入网络模块、单层双向循环神经网络(Bi-GRU)模块和全连接编码网络模块三部分;
[0048] 所述词嵌入网络模块还包括字符串语料库,所述词嵌入网络模块通过查表方式查询系统预设的字符串语料库,将所述字符串序列按照字符串的原始序列将查找的编码组成词向量序列;
[0049] 所述单层双向循环神经网络模块由两个单层Bi-GRU网络模块构成,所述词向量序列输入第一个Bi-GRU网络模块生成第一临时张量,将所述词向量反序后输入第二个Bi-GRU网络模块生成第二临时张量,然后将所述第一临时张量与所述第二临时张量合并,生成结果张量,最后将结果张量中的最后一列抽取出来得到最终的特征向量;
[0050] 所述全连接编码网络模块将所述特征向量映射为固定编码长度的编码向量。
[0051] 进一步的,所述预设的字符串语料库通过对收集到的电力设备固件进行解压逆向,提取其字符串,并对提取到的字符串进行构建得到;所述字符串语料库对应的编码初始值为随机值。
[0052] 进一步的,所述哈希签名数据库为通过对所述字符串语料库中的每个字符串用训练好的所述字符串编码模型编码成特征向量,然后使用事先构造好的面向余弦距离的局部敏感哈希函数族计算出所述每个特征向量的相似度哈希签名,最后以给定的同源性阈值为参数对所述相似度哈希签名构造生成。
[0053] 进一步的,所述编码向量根据面向余弦距离的局部敏感哈希函数族生成相似度哈希签名;
[0054] 所述相似度哈希签名在预设的哈希签名数据库中进行时间复杂度为O(N)的检索。本发明的有益效果为:本发明的技术方案,给出了一种电力固件同源二进制文件关联方法及系统,所述方法及系统通过深度学习网络编码二进制文件中的可读字符串来生成编码向量,然后对编码向量生成相似度哈希签名从而实现快速高效关联;所述方法及系统通过提取字符串特征,实现电力设备固件中同源二进制文件的关联,同时通过深度学习编码模型将字符串序列特征编码为可以用余弦距离度量的特征向量,从而利用局部敏感哈希进行加速,提高在线匹配的速度。
附图说明
[0055] 通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:
[0056] 图1为本发明具体实施方式的一种电力固件同源二进制文件关联方法的流程图
[0057] 图2为本发明具体实施方式的基于深度学习的字符串编码模型结构图;
[0058] 图3为本发明具体实施方式的一种电力固件同源二进制文件关联系统的结构图。

具体实施方式

[0059] 现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。
[0060] 除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。
[0061] 图1为本发明具体实施方式的一种电力固件同源二进制文件关联方法的流程图;如图1所示,所述方法包括:
[0062] 步骤110,提取待查询二进制文件的字符串信息;
[0063] 如果一个字符串至少由n个连续的可读字符组成,并且以NULL或换行符结尾,则该字符串被视为可读字符串。在本文中,我们根据经验将n设置为6。电力设备固件中的二进制文件存在3种类型的可读字符串:数据段中的ASCII格式字符串、数据段中的Unicode格式字符串和代码段中的ASCII格式字符串;
[0064] 数据段中的ASCII格式字符串提取方法为通过Linux下的字符串提取工具strings实现,同时采用strings的‘-d’选项来限制只提取数据段中存在的字符串,并使用‘-bytes’选项来指定只能提取包含多于6个可读字符的字符串;
[0065] 数据段中的Unicode格式字符串提取方法为通过判断是否包含连续一致语系编码的字节单元来识别,若是则为Unicode格式的字符串。这是因为与ASCII格式的字符串不同,数据段中的Unicode格式字符串不能通过判断它们是否包含连续的可打印字符来识别,因为大多数双字节单元都可以用相同或不同语系的Unicode编码打印,但是在同一固件中语系通常是一致的;
[0066] 代码段中的ASCII格式字符串提取方法为通过识别连续入栈指令,提取所述连续入栈指令中的操作数,根据所述操作数构造栈帧字节流,判断所述栈帧字节流中是否有连续可读的ASCII格式字符,若有则将它们拼接成可读字符串。
[0067] 步骤120,过滤所述字符串信息的代码段字符串及库符号表字符串得到字符串序列;
[0068] 步骤110得到的字符串信息包含了代码段字符串及库符号表字符串,前者降低了同源检索的准确率,而后者则增加了同源检索的误报率,因此需要对其过滤。
[0069] 进一步的,字符串信息的代码段字符串过滤方法为:
[0070] 所述待查询二进制文件含有ELF头时,直接提取所述待查询二进制文件数据段中的字符串信息作为特征过滤文件;
[0071] 所述待查询二进制文件不含ELF头时,由于数据段通常存放符号表等,有较长的字符串信息,而代码段主要存放不可打印的字符信息并且长度较短,因此过滤所述待查询二进制文件代码段中的字符串信息,将所述过滤后字符串信息作为特征过滤文件。
[0072] 进一步的,库符号表字符串过滤方法包括:
[0073] 将内核级和系统级的库符号表字符串加入黑名单列表中,对经过代码段字符串过滤后的所述特征过滤文件运用该黑名单作进一步过滤,得到所述字符串序列;
[0074] 所述库符号表包含相应库中存放的函数名称和全局变量信息;所述内核级符号表包含能被系统程序和用户程序调用的库函数名和变量信息;所述系统级符号表包含能够被用户程序调用的库函数名及变量信息。
[0075] 所述黑名单生成方法为:
[0076] 使用buildroot工具交叉编译千余种常用的开源组件源码包到ARM、MIPS、PowerPC等平台;
[0077] 提取不同平台但同源的二进制代码中的可读字符串,并对每个字符串按照如下公式计算其信息增益:
[0078] IG(s)=[P(s,Ci)lgP(s,Ci)+(1-P(s,Ci))lg(1-P(s,Ci))]
[0079] 其中,IG(s)是字符串信息增益,Ci是目标平台,P(Ci)是Ci的二进制文件与全部二进制文件的比率,P(s)是包含s的二进制文件与全部二进制文件的比率,P(s,Ci)是Ci中包含s的二进制文件与全部二进制文件的比率。若某字符串的增益大于预定的阈值,则将其纳入到黑名单中。除此之外,位于内核级和系统级库(如/lib,/usr/lib目录下的库文件)的符号字符串也被加入到黑名单中。
[0080] 步骤130,将所述字符串序列进行编码,得到编码向量;
[0081] 如图2所示,所述字符串序列通过字符串编码模型进行编码,所述字符串编码模型包括词嵌入网络、单层双向循环神经网络和全连接编码网络三部分,采用词嵌入网络的目的是尽可能保留字符串的语义信息;采用单层双向循环神经网络的目的是从2个方向提取字符串序列的上下文信息;采用全连接编码网络的目的是将特征向量编码成特定长度的编码向量。
[0082] 在本实施例中,所述词嵌入网络通过查表方式查询系统预设的字符串语料库,将所述字符串序列按照字符串的原始序列将查找的编码组成512×TS的词向量序列,其中TS为输入字符串序列的长度;
[0083] 所述单层双向循环神经网络根据输入的所述词向量序列生成256×TS的第一临时张量,根据输入的反序后所述词向量序列生成256×TS的第二临时张量,然后将所述第一临时张量与所述第二临时张量合并,生成512×TS的结果张量,最后将结果张量中的最后一列抽取出来得到512维最终的特征向量;
[0084] 所述全连接编码网络将所述512维的特征向量映射为固定编码长度为64的编码向量;所述全连接编码网络采用简单的单层全连接网络实现;
[0085] 所述预设的字符串语料库通过对收集到的电力设备固件进行解压逆向,提取其字符串,并对所述提取到的字符串进行构建生成;所述字符串语料库基本涵盖了常见的二进制程序中可提取得到的字符串,且所述字符串语料库对应的编码初始值为随机值。
[0086] 步骤140,通过所述编码向量生成相似度哈希签名,将所述相似度哈希签名在预设的哈希签名数据库中进行检索,得到所述哈希签名数据库中所有满足阈值条件的同源二进制文件;
[0087] 进一步的,所述哈希签名数据库为通过对所述字符串语料库中的每个字符串用训练好的所述字符串编码模型编码成特征向量,然后使用事先构造好的面向余弦距离的局部敏感哈希函数族计算出所述每个特征向量的相似度哈希签名,最后以给定的同源性阈值为参数对所述相似度哈希签名构造生成。所述哈希签名数据库的建立可以离线完成,无需消耗在线搜索时间,当在线收到待查询二进制文件时,从步骤110起即可实现同源二进制文件的快速匹配。
[0088] 进一步的,所述编码向量根据面向余弦距离的局部敏感哈希函数族生成相似度哈希签名;
[0089] 所述相似度哈希签名在预设的哈希签名数据库中进行的检索为时间复杂度为O(N)的检索。
[0090] 图3为本发明具体实施方式的一种电力固件同源二进制文件关联系统的结构图,如图3所示,所述系统包括字符串提取单元210,字符串过滤单元220,字符串编码模型单元230,相似度哈希计算单元240及哈希签名数据库250;
[0091] 所述字符串提取单元210用于提取待查询二进制文件的字符串信息;
[0092] 进一步的,所述字符串提取单元210包括数据段中的ASCII格式字符串提取模块、数据段中的Unicode格式的字符串提取模块及代码段中的ASCII格式字符串提取模块;
[0093] 所述数据段中的ASCII格式字符串提取模块采用Linux下的字符串提取工具strings实现数据段中的ASCII格式字符串提取;
[0094] 所述数据段中的Unicode格式的字符串提取模块通过判断是否包含连续一致语系编码的字节单元实现数据段中的Unicode格式的字符串提取;
[0095] 所述代码段中的ASCII格式字符串提取模块通过识别连续入栈指令,提取所述连续入栈指令中的操作数,根据所述操作数构造栈帧字节流,判断所述栈帧字节流中是否有连续可读的ASCII格式字符,若有则将它们拼接成可读字符串,实现代码段中的ASCII格式字符串提取。
[0096] 所述字符串提取单元220用于提取待查询二进制文件的可打印的字符串信息;
[0097] 进一步的,所述字符串过滤单元220包括代码段字符串过滤模块,所述代码段字符串过滤模块用于过滤所述字符串信息中的代码段字符串;
[0098] 所述待查询二进制文件含有ELF头时,所述代码段字符串过滤模块直接提取所述待查询二进制文件数据段中的字符串信息作为特征过滤文件;
[0099] 所述待查询二进制文件不含ELF头时,所述代码段字符串过滤模块过滤所述待查询二进制文件代码段中的字符串信息,将所述过滤后字符串信息作为特征过滤文件。
[0100] 进一步的,所述字符串过滤单元220包括库符号表字符串过滤模块,所述库符号表字符串过滤模块用于过滤所述字符串信息中的库符号表字符串;
[0101] 所述库符号表字符串过滤模块将内核级和系统级的符号表字符串加入黑名单列表中,对经过代码段字符串过滤后的所述特征过滤文件运用该黑名单作进一步过滤,得到所述字符串序列;
[0102] 所述库符号表包含相应库中存放的函数名称和全局变量信息;所述内核级符号表包含能被系统程序和用户程序调用的库函数名和变量信息;所述系统级符号表包含能够被用户程序调用的库函数名及变量信息。
[0103] 字符串编码模型单元230用于将所述字符串序列进行编码,得到编码向量;
[0104] 进一步的,所述字符串编码模型单元230包括词嵌入网络模块、单层双向循环神经网络(Bi-GRU)模块和全连接编码网络模块三部分;
[0105] 所述词嵌入网络模块还包括字符串语料库,所述词嵌入网络模块通过查表方式查询系统预设的字符串语料库,将所述字符串序列按照字符串的原始序列将查找的编码组成词向量序列;
[0106] 所述单层双向循环神经网络模块由两个单层Bi-GRU网络模块构成,所述词向量序列输入第一个Bi-GRU网络模块生成第一临时张量,将所述词向量反序后输入第二个Bi-GRU网络模块生成第二临时张量,然后将所述第一临时张量与所述第二临时张量合并,生成结果张量,最后将结果张量中的最后一列抽取出来得到最终的特征向量;
[0107] 所述全连接编码网络模块将所述特征向量映射为固定编码长度的编码向量。
[0108] 所述预设的字符串语料库通过对收集到的电力设备固件进行解压逆向,提取其字符串,并对提取到的字符串进行构建得到;所述字符串语料库对应的编码初始值为随机值。
[0109] 相似度哈希计算单元240用于将所述编码向量生成相似度哈希签名,将所述相似度哈希签名在预设的哈希签名数据库中进行检索,得到所述哈希签名数据库中所有满足阈值条件的同源二进制文件;
[0110] 进一步的,所述编码向量根据面向余弦距离的局部敏感哈希函数族生成相似度哈希签名;所述相似度哈希签名在预设的哈希签名数据库中进行时间复杂度为O(N)的检索。
[0111] 哈希签名数据库250用于对所述相似度哈希签名通过时间复杂度为O(N)的检索找到同源二进制文件;
[0112] 所述哈希签名数据库250为通过对所述字符串语料库中的每个字符串用训练好的所述字符串编码模型编码成特征向量,然后使用事先构造好的面向余弦距离的局部敏感哈希函数族计算出所述每个特征向量的相似度哈希签名,最后以给定的同源性阈值为参数对所述相似度哈希签名构造生成。
[0113] 在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本公开的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0114] 本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。本说明书中涉及到的步骤编号仅用于区别各步骤,而并不用于限制各步骤之间的时间或逻辑的关系,除非文中有明确的限定,否则各个步骤之间的关系包括各种可能的情况。
[0115] 此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本公开的范围之内并且形成不同的实施例。例如,在权利要求书中所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0116] 本公开的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本公开还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者系统程序(例如,计算机程序和计算机程序产品)。这样的实现本公开的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0117] 应该注意的是上述实施例对本公开进行说明而不是对本公开进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本公开可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干系统的单元权利要求中,这些系统中的若干个可以是通过同一个硬件项来具体体现。
[0118] 以上所述仅是本公开的具体实施方式,应当指出的是,对于本领域的普通技术人员来说,在不脱离本公开精神的前提下,可以作出若干改进、修改、和变形,这些改进、修改、和变形都应视为落在本申请的保护范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈