二进制文件的同源性分析方法、装置、电子设备及介质
技术领域
1.本技术涉及网络安全技术领域,具体而言,涉及一种二进制文件的同源性分析方法
、
装置
、
电子设备及介质
。
背景技术:
2.随着网络技术的不断发展,出现了不同的操作系统和硬件平台,同一二进制文件在不同的操作系统和硬件平台上,二进制文件的代码也是不同的,进而对二进制文件的同源性分析会有一定影响
。
现有技术中对二进制文件进行解析时,采用无监督学习方法仅针对单个平台进行模型训练,无法在不同平台上实现对齐嵌入,也无法对不同平台的二进制文件进行处理,如何对跨平台的二进制文件进行同源性分析是目前急需解决的问题
。
技术实现要素:
3.本技术的一些实施例的目的在于提供一种二进制文件的同源性分析方法
、
装置
、
电子设备及存储介质,通过本技术的实施例的技术方案,通过获取不同平台发送的二进制文件;根据所述二进制文件,确定与所述二进制文件对应的二进制反汇编拓扑图;根据所述二进制反汇编拓扑图和预先训练的向量识别模型,确定与所述二进制反汇编拓扑图对应的数值向量;其中,所述预先训练的向量识别模型是采用不同平台发送的二进制文件对图神经网络模型进行训练得到的;根据所述数值向量和预先训练的相似度计算模型,确定二进制文件的相似度;其中,所述预先训练的相似度计算模型是采用多个二进制文件对应的数值向量对图神经网络模型进行训练得到的;根据所述相似度,对所述二进制文件进行同源性分析,本技术实施例通过对跨平台二进制文件进行解析获得相关的汇编代码,分析汇编代码构建为二进制反汇编拓扑图,该二进制反汇编拓扑图包括上下文信息;通过二进制反汇编拓扑图中的上下文信息和预先训练的向量识别模型,得到与二进制反汇编拓扑图对应数值向量,然后再将数值向量输入到相似度计算模型中,得到不同平台的二进制文件的相似度,进而根据得到的相似度,对不同平台的二进制文件进行同源性分析,从而实现了对跨平台的二进制文件进行同源性分析,提高分析效率和准确性
。
4.第一方面,本技术的一些实施例提供了一种二进制文件的同源性分析方法,包括:
5.获取不同平台发送的二进制文件;
6.根据所述二进制文件,确定与所述二进制文件对应的二进制反汇编拓扑图;
7.根据所述二进制反汇编拓扑图和预先训练的向量识别模型,确定与所述二进制反汇编拓扑图对应的数值向量;其中,所述预先训练的向量识别模型是采用不同平台发送的二进制文件对图神经网络模型进行训练得到的;
8.根据所述数值向量和预先训练的相似度计算模型,确定二进制文件的相似度;其中,所述预先训练的相似度计算模型是采用多个二进制文件对应的数值向量对图神经网络模型进行训练得到的;
9.根据所述相似度,对所述二进制文件进行同源性分析
。
10.本技术的一些实施例通过对跨平台二进制文件进行解析获得相关的汇编代码,分析汇编代码构建为二进制反汇编拓扑图,该二进制反汇编拓扑图包括上下文信息;通过二进制反汇编拓扑图中的上下文信息和预先训练的向量识别模型,得到与二进制反汇编拓扑图对应数值向量,然后再将数值向量输入到相似度计算模型中,得到不同平台的二进制文件的相似度,进而根据得到的相似度,对不同平台的二进制文件进行同源性分析,从而实现了对跨平台的二进制文件进行同源性分析,提高分析效率和准确性
。
11.可选地,所述根据所述二进制文件,确定与所述二进制文件对应的二进制反汇编拓扑图,包括:
12.采用预设二进制分析工具,对所述二进制文件进行反汇编处理,得到与所述二进制文件对应的汇编代码;
13.根据所述与所述二进制文件的汇编代码,确定与所述汇编代码对应的二进制反汇编拓扑图,其中,所述二进制反汇编拓扑图至少包括多个节点
、
节点属性以及所述节点之间的关联关系,每个节点至少包括基本块
、
外部函数和字符串字面量,所述节点属性至少包括基本块节点属性
、
外部函数节点属性和字符串字面量节点属性,所述基本块节点属性是根据基本块中每个指令,按照预设规则对所述指令的助记符和操作数进行处理得到的,所述外部函数节点属性为外部函数名称,所述字符串字面量节点属性为字符串字面量本身
。
14.本技术的一些实施例通过获取二进制反汇编拓扑图中的基本块,为了编码丰富的基本块上下文,比程序控制流具有更多的信息
。
15.可选地,所述向量识别模型通过如下方式获得:
16.获取样本数据集,其中,所述样本数据集至少包括不同平台的样本二进制文件;
17.将所述样本数据集中每一个样本二进制文件转换成与样本二进制文件对应的样本二进制反汇编拓扑图;
18.根据所述样本二进制反汇编拓扑图中的各个节点
、
节点属性和所述节点之间的关联关系对所述图神经网络模型进行训练,得到所述向量识别模型,所述向量识别模型用于生成与样本二进制文件对应的数值向量
。
19.本技术的一些实施例通过将相似性的判断过程转换为一个图对齐问题,即在从不同平台编译的二进制文件构建的二进制反汇编拓扑图之间,根据一小部分预对齐的节点对,找到二进制反汇编拓扑图中节点之间的对应关系,根据二进制反汇编拓扑图对图神经网络模型进行训练,得到所述向量识别模型,所述向量识别模型用于生成与样本二进制文件对应的数值向量,模型可以为训练过程中未见过的实体生成高质量的嵌入,或者生成能够提高许多下游任务性能的嵌入,例如跨平台相似性分析
。
20.可选地,所述相似度计算模型通过如下方式获得:
21.根据多个与样本二进制文件对应的数值向量,对所述图神经网络模型进行训练,得到所述相似度计算模型,所述相似度计算模型用于生成与所述多个与样本二进制文件对应的数值向量对应的相似度
。
22.本技术的一些实施例,采用了半监督的方法,预对齐的实体作为监督信号,用于计算未对齐实体的高质量嵌入,采用多个与样本二进制文件对应的数值向量,对所述图神经网络模型进行训练,得到所述相似度计算模型,训练目标旨在最小化正对齐实体对的嵌入之间的距离,并增加负对齐实体对的嵌入之间的距离
。
23.可选地,所述根据所述相似度,对所述二进制文件进行同源性分析,包括:
24.若所述相似度大于预设值,则确定所述二进制文件来自同一数据源;
25.若所述相似度小于所述预设值,则确定所述二进制文件来自不同数据源
。
26.本技术的一些实施例通过对相似度的判断,从而对不同平台的二进制文件是否来自同一数据源进行分析,提高同源性分析的准确性和效率
。
27.第二方面,本技术的一些实施例提供了一种二进制文件的同源性分析装置,包括:
28.获取模块,用于获取不同平台发送的二进制文件;
29.转换模块,用于根据所述二进制文件,确定与所述二进制文件对应的二进制反汇编拓扑图;
30.确定模块,用于根据所述二进制反汇编拓扑图和预先训练的向量识别模型,确定与所述二进制反汇编拓扑图对应的数值向量;其中,所述预先训练的向量识别模型是采用不同平台发送的二进制文件对图神经网络模型进行训练得到的;
31.计算模块,用于根据所述数值向量和预先训练的相似度计算模型,确定二进制文件的相似度;其中,所述预先训练的相似度计算模型是采用多个二进制文件对应的数值向量对图神经网络模型进行训练得到的;
32.分析模块,用于根据所述相似度,对所述二进制文件进行同源性分析
。
33.本技术的一些实施例通过对跨平台二进制文件进行解析获得相关的汇编代码,分析汇编代码构建为二进制反汇编拓扑图,该二进制反汇编拓扑图包括上下文信息;通过二进制反汇编拓扑图中的上下文信息和预先训练的向量识别模型,得到与二进制反汇编拓扑图对应数值向量,然后再将数值向量输入到相似度计算模型中,得到不同平台的二进制文件的相似度,进而根据得到的相似度,对不同平台的二进制文件进行同源性分析,从而实现了对跨平台的二进制文件进行同源性分析,提高分析效率和准确性
。
34.可选地,所述确定模块用于:
35.采用预设二进制分析工具,对所述二进制文件进行反汇编处理,得到与所述二进制文件对应的汇编代码;
36.根据所述与所述二进制文件的汇编代码,确定与所述汇编代码对应的二进制反汇编拓扑图,其中,所述二进制反汇编拓扑图至少包括多个节点
、
节点属性以及所述节点之间的关联关系,每个节点至少包括基本块
、
外部函数和字符串字面量,所述节点属性至少包括基本块节点属性
、
外部函数节点属性和字符串字面量节点属性,所述基本块节点属性是根据基本块中每个指令,按照预设规则对所述指令的助记符和操作数进行处理得到的,所述外部函数节点属性为外部函数名称,所述字符串字面量节点属性为字符串字面量本身
。
37.本技术的一些实施例通过获取二进制反汇编拓扑图中的基本块,为了编码丰富的基本块上下文,比程序控制流具有更多的信息
。
38.可选地,所述装置还包括模型训练模块,所述模型训练模块用于:
39.获取样本数据集,其中,所述样本数据集至少包括不同平台的样本二进制文件;
40.将所述样本数据集中每一个样本二进制文件转换成与样本二进制文件对应的样本二进制反汇编拓扑图;
41.根据所述样本二进制反汇编拓扑图中的各个节点
、
节点属性和所述节点之间的关联关系对所述图神经网络模型进行训练,得到所述向量识别模型,所述向量识别模型用于
生成与样本二进制文件对应的数值向量
。
42.本技术的一些实施例通过将相似性的判断过程转换为一个图对齐问题,即在从不同平台编译的二进制文件构建的二进制反汇编拓扑图之间,根据一小部分预对齐的节点对,找到二进制反汇编拓扑图中节点之间的对应关系,根据二进制反汇编拓扑图对图神经网络模型进行训练,得到所述向量识别模型,所述向量识别模型用于生成与样本二进制文件对应的数值向量,模型可以为训练过程中未见过的实体生成高质量的嵌入,或者生成能够提高许多下游任务性能的嵌入,例如跨平台相似性分析
。
43.可选地,所述模型训练模块用于
44.根据多个与样本二进制文件对应的数值向量,对所述图神经网络模型进行训练,得到所述相似度计算模型,所述相似度计算模型用于生成与所述多个与样本二进制文件对应的数值向量对应的相似度
。
45.本技术的一些实施例,采用了半监督的方法,预对齐的实体作为监督信号,用于计算未对齐实体的高质量嵌入,采用多个与样本二进制文件对应的数值向量,对所述图神经网络模型进行训练,得到所述相似度计算模型,训练目标旨在最小化正对齐实体对的嵌入之间的距离,并增加负对齐实体对的嵌入之间的距离
。
46.可选地,所述分析模块用于:
47.若所述相似度大于预设值,则确定所述二进制文件来自同一数据源;
48.若所述相似度小于所述预设值,则确定所述二进制文件来自不同数据源
。
49.第三方面,本技术的一些实施例提供一种电子设备,包括存储器
、
处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述程序时可实现如第一方面任一实施例所述的二进制文件的同源性分析方法
。
50.第四方面,本技术的一些实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时可实现如第一方面任一实施例所述的二进制文件的同源性分析方法
。
51.第五方面,本技术的一些实施例提供一种计算机程序产品,所述的计算机程序产品包括计算机程序,其中,所述的计算机程序被处理器执行时可实现如第一方面任一实施例所述的二进制文件的同源性分析方法
。
附图说明
52.为了更清楚地说明本技术的一些实施例的技术方案,下面将对本技术的一些实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图
。
53.图1为本技术实施例提供的一种二进制文件的同源性分析方法的流程示意图;
54.图2为本技术实施例提供的又一种二进制文件的同源性分析方法的流程示意图;
55.图3为本技术实施例提供的二进制文件的同源性分析装置的结构示意图;
56.图4为本技术实施例提供的相同功能的汇编代码在不同平台上的表示示意图;
57.图5为本技术实施例提供的一种二进制文件的同源性分析装置的结构示意图;
58.图6为本技术实施例提供的一种电子设备示意图
。
具体实施方式
59.下面将结合本技术的一些实施例中的附图,对本技术的一些实施例中的技术方案进行描述
。
60.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释
。
同时,在本技术的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性
。
61.随着网络技术的不断发展,出现了不同的操作系统和硬件平台,同一二进制文件在不同的操作系统和硬件平台上,二进制文件的代码也是不同的,进而对二进制文件的同源性分析会有一定影响
。
现有技术中对二进制文件进行解析时,采用无监督学习方法仅针对单个平台进行模型训练,无法在不同平台上实现对齐嵌入,也无法对不同平台的二进制文件进行处理,鉴于此,本技术的一些实施例提供了一种二进制文件的同源性分析方法,该方法包括获取不同平台发送的二进制文件;根据二进制文件,确定与二进制文件对应的二进制反汇编拓扑图;根据二进制反汇编拓扑图和预先训练的向量识别模型,确定与二进制反汇编拓扑图对应的数值向量;其中,预先训练的向量识别模型是采用不同平台发送的二进制文件对图神经网络模型进行训练得到的;根据数值向量和预先训练的相似度计算模型,确定二进制文件的相似度;其中,预先训练的相似度计算模型是采用多个二进制文件对应的数值向量对图神经网络模型进行训练得到的;根据相似度,对二进制文件进行同源性分析,本技术实施例通过对跨平台二进制文件进行解析获得相关的汇编代码,分析汇编代码构建为二进制反汇编拓扑图,该二进制反汇编拓扑图包括上下文信息;通过二进制反汇编拓扑图中的上下文信息和预先训练的向量识别模型,得到与二进制反汇编拓扑图对应数值向量,然后再将数值向量输入到相似度计算模型中,得到不同平台的二进制文件的相似度,进而根据得到的相似度,对不同平台的二进制文件进行同源性分析,从而实现了对跨平台的二进制文件进行同源性分析,提高分析效率和准确性
。
62.如图1所示,本技术的实施例提供了一种二进制文件的同源性分析方法,该方法包括:
63.s101、
获取不同平台发送的二进制文件;
64.具体地,终端设备从不同平台获取不同平台的二进制文件即跨平台的二进制文件,例如,来自
linux
和
windows
的二进制文件
。
65.s102、
根据二进制文件,确定与二进制文件对应的二进制反汇编拓扑图;
66.具体地,终端设备使用二进制静态分析工具通过对不同系统和不同平台的二进制文件进行解析,得到汇编代码,然后根据汇编代码生成与二进制文件对应的二进制反汇编拓扑图,其中二进制静态分析工具可以是
ida pro
,
redare2
等;二进制反汇编拓扑图具有编码丰富的上下文信息,从中可以推断出平台标识,以及基本块
、
外部函数
、
字符串以及它们之间的关系
。
67.s103、
根据二进制反汇编拓扑图和预先训练的向量识别模型,确定与二进制反汇编拓扑图对应的数值向量;其中,预先训练的向量识别模型是采用不同平台发送的二进制文件对图神经网络模型进行训练得到的;
68.具体的,终端设备预先对不同平台的样本二进制文件进行解析,生成样本汇编代码,并根据样本汇编代码生成样本二进制反汇编拓扑图,通过样本二进制反汇编拓扑图对
图神经网络模型进行训练,得到向量识别模型
。
69.终端设备将二进制反汇编拓扑图输入到该向量识别模型中,得到与二进制反汇编拓扑图对应的数值向量
。
70.s104、
根据数值向量和预先训练的相似度计算模型,确定二进制文件的相似度;其中,预先训练的相似度计算模型是采用多个二进制文件对应的数值向量对图神经网络模型进行训练得到的;
71.具体地,终端设备还根据得到的数值向量,对图神经网络模型进行训练,该图神经网络模型的输入量为计算得到的数值向量,输出量为相似度,得到相似度计算模型
。
72.终端设备要对两个不同平台不同系统的二进制文件进行同源性分析时,可以先通过相似度计算模型计算得到两个不同平台不同系统的二进制文件的相似度,即将不同系统不同平台的二进制文件的数值向量,输入到相似度计算模型,得到两个二进制文件的相似度
。
73.s105、
根据相似度,对二进制文件进行同源性分析
。
74.具体的,终端设备在计算出两个二进制文件的相似度,根据相似度与预设值的大小,对跨平台的二进制文件同源性分析
。
75.本技术的一些实施例通过对跨平台二进制文件进行解析获得相关的汇编代码,分析汇编代码构建为二进制反汇编拓扑图,该二进制反汇编拓扑图包括上下文信息;通过二进制反汇编拓扑图中的上下文信息和预先训练的向量识别模型,得到与二进制反汇编拓扑图对应数值向量,然后再将数值向量输入到相似度计算模型中,得到不同平台的二进制文件的相似度,进而根据得到的相似度,对不同平台的二进制文件进行同源性分析,从而实现了对跨平台的二进制文件进行同源性分析,提高分析效率和准确性
。
76.本技术又一实施例对上述实施例提供的二进制文件的同源性分析方法做进一步补充说明
。
77.可选地,根据二进制文件,确定与二进制文件对应的二进制反汇编拓扑图,包括:
78.采用预设二进制分析工具,对二进制文件进行反汇编处理,得到与二进制文件对应的汇编代码;
79.根据与二进制文件的汇编代码,确定与汇编代码对应的二进制反汇编拓扑图,其中,二进制反汇编拓扑图至少包括多个节点
、
节点属性以及节点之间的关联关系,每个节点至少包括基本块
、
外部函数和字符串字面量,节点属性至少包括基本块节点属性
、
外部函数节点属性和字符串字面量节点属性,基本块节点属性是根据基本块中每个指令,按照预设规则对指令的助记符和操作数进行处理得到的,外部函数节点属性为外部函数名称,字符串字面量节点属性为字符串字面量本身
。
80.具体地,现有的工具将基本块仅视为指令序列,而不考虑其本地上下文,或者将其视为在给定二进制文件的过程间控制流图中具有上下文的节点
。
为了编码丰富的基本块上下文,比程序控制流具有更多的信息,本技术实施例提出了一种二进制反汇编拓扑图的新格式,用于表示二进制文件
。
二进制反汇编拓扑图包含基本块
、
外部函数
、
字符串以及它们之间的关系
。
81.在二进制反汇编拓扑图中包括多个节点,每一个节点
(call)
包括基本块
、
外部函数以及字符串字面量
(
日志文件
)。
本技术实施例中选择基本块的粒度来抽象二进制代码段
中的指令
。
本技术实施例会为每一个节点定义属性,对于每个基本块,使用指令序列作为节点属性,即对于在给定的基本块中找到的每个指令,首先按照规则对其助记符和操作数进行规范化,其中,助记符至少包括调用以及其他助记符,操作数至少包括声明变量
、
常量值
、
外部函数以及其他引用,然后使用规范化后的标记序列作为基本块的节点属性,其中,节点属性包括6个指令数量
、
变量数量
、
外部函数类型
。
对于外部函数,它们的指令序列位于反汇编二进制文件之外,本技术实施例使用它们的符号名称作为节点属性
。
对于在反汇编二进制文件中找到的字符串字面量,本技术实施例直接使用它们作为节点属性
。
82.本技术实施例在二进制反汇编拓扑图的节点之间可以定义四种类型的关系,主要包括函数内部控制流转移
、
直接调用
(
即函数间控制流转移
)、
地址引用以及代码与字符串的引用
。
函数内部控制流转移定义在两个基本块之间,表示程序控制从一个基本块流转到另一个基本块;直接调用定义在包含一个或多个调用点的基本块与其被调用函数之间,这种关系表示函数之间的调用关系
。
地址引用定义在一个基本块中,当该基本块包含一个或多个指令,其中取得了另一个函数的地址
。
这种关系表示函数之间的地址引用关系
。
代码与字符串的引用定义在一个基本块与一个字符串节点之间,当基本块包含引用字符串字面量的指令时
。
这种关系表示代码与字符串之间的引用关系
。
通过定义这些关系,二进制反汇编拓扑图可以捕捉到二进制代码中的控制流
、
函数调用
、
地址引用和代码与字符串之间的引用关系,为后续的分析和处理提供了丰富的上下文信息
。
83.本技术的一些实施例通过获取二进制反汇编拓扑图中的基本块,为了编码丰富的基本块上下文,比程序控制流具有更多的信息
。
84.可选地,向量识别模型通过如下方式获得:
85.获取样本数据集,其中,样本数据集至少包括不同平台的样本二进制文件;
86.将样本数据集中每一个样本二进制文件转换成与样本二进制文件对应的样本二进制反汇编拓扑图;
87.根据样本二进制反汇编拓扑图中的各个节点
、
节点属性和节点之间的关联关系对图神经网络模型进行训练,得到向量识别模型,向量识别模型用于生成与样本二进制文件对应的数值向量
。
88.具体的,在模型训练的过程中,输入量为样本二进制反汇编拓扑图中的各个节点
、
节点属性和节点之间的关联关系,输出量为与样本二进制文件对应的数值向量
。
89.本技术的一些实施例通过将相似性的判断过程转换为一个图对齐问题,即在从不同平台编译的二进制文件构建的二进制反汇编拓扑图之间,根据一小部分预对齐的节点对,找到二进制反汇编拓扑图中节点之间的对应关系,根据二进制反汇编拓扑图对图神经网络模型进行训练,得到向量识别模型,向量识别模型用于生成与样本二进制文件对应的数值向量,模型可以为训练过程中未见过的实体生成高质量的嵌入,或者生成能够提高许多下游任务性能的嵌入,例如跨平台相似性分析
。
90.可选地,相似度计算模型通过如下方式获得:
91.根据多个与样本二进制文件对应的数值向量,对图神经网络模型进行训练,得到相似度计算模型,相似度计算模型用于生成与多个与样本二进制文件对应的数值向量对应的相似度
。
92.本技术的一些实施例,采用了半监督的方法,预对齐的实体作为监督信号,用于计
算未对齐实体的高质量嵌入,采用多个与样本二进制文件对应的数值向量,对图神经网络模型进行训练,得到相似度计算模型,训练目标旨在最小化正对齐实体对的嵌入之间的距离,并增加负对齐实体对的嵌入之间的距离
。
93.可选地,根据相似度,对二进制文件进行同源性分析,包括:
94.若相似度大于预设值,则确定二进制文件来自同一数据源;
95.若相似度小于预设值,则确定二进制文件来自不同数据源
。
96.本技术的一些实施例通过对相似度的判断,从而对不同平台的二进制文件是否来自同一数据源进行分析,提高同源性分析的准确性和效率
。
97.图2为本技术实施例提供的又一种二进制文件的同源性分析方法的流程示意图,该二进制文件的同源性分析方法,包括:
98.s201
:解析二进制文件;
99.本技术实施例中通过使用二进制分析工具
(
如
ida pro、radare2
等
)
,对二进制文件进行反汇编操作,终端设备可以获取相关的汇编代码
。
汇编代码以汇编指令的形式呈现,这些指令代表了底层的机器指令操作
。
通过解析二进制文件的指令
、
数据段等内容,并正确还原这些结构
。
100.本技术实施例可以近似地还原源程序的形式,汇编代码使用助记符来表示底层的指令,使得代码更接近底层硬件的操作
。
相比于二进制代码,汇编代码更容易理解和调试,因为它提供了一些结构化的语法元素,如标签
、
函数
、
循环和分支等
。
这使得代码的组织和维护更加容易
。
101.s202
:根据汇编代码,构建二进制反汇编拓扑图;
102.s203
:根据二进制反汇编拓扑图,形式化为图对齐问题;
103.在进行跨平台的二进制分析的过程中,需要判断两个特定于操作系统的外部函数,例如
linux
中的“read”和
windows
中的“readfile”是否执行相同的操作,此时就需要获取二进制反汇编拓扑图中的上下文信息,例如调用这些函数的相同基本块或传递给它们的相同参数
。
成功进行跨平台二进制分析需要利用节点的邻域信息来捕捉二进制中实体
(
例如基本块
)
之间的相似性或差异性
。
因此,本技术实施例将相似性的判断过程转换为一个图对齐问题,即在从不同平台编译的二进制文件构建的二进制反汇编拓扑图之间,根据一小部分预对齐的节点对,找到二进制反汇编拓扑图中节点之间的对应关系
。
104.假设两个二进制文件是从相同的源代码基础上为不同平台编译而来,本技术实施例首先分别构建它们的二进制反汇编拓扑图
g1
和
g2
,通过二进制文件的调试部分中提取的源代码行号和文件信息来识别在
g1
和
g2
之间一些预对齐的节点
。
在接下来的步骤是找到多个二进制反汇编拓扑图中所有个未对齐实体对的节点对应关系
。
105.s204
:基于深度学习获得图嵌入;
106.本技术实施例首先训练一个模型,将二进制反汇编拓扑图中的实体和属性投影到统一的嵌入空间,在训练完成之后将使用这个预训练的模型为二进制反汇编拓扑图中的实体和属性生成嵌入
。
通过这种方式,该模型可以为训练过程中未见过的实体生成高质量的嵌入,或者生成能够提高许多下游任务性能的嵌入,例如跨平台相似性分析
。
本技术实施例使用图卷积网络
gcns
即图神经网络模型进行嵌入生成,
gcns
包含多个
gcn
层的堆叠,每一层接收一个节点嵌入矩阵
。
107.本技术实施例将实体关联的所有属性值
(
例如,归一化的指令标记
)
视为其对应的特征,用于将二进制反汇编拓扑图中定义的属性三元组编码为可以输入
gcn
的数值向量
。
这些特征的数值向量表示可以使用任何编码或嵌入方案来计算
。
108.s205
:计算不同平台的二进制代码片段相似度;
109.本技术实施例采用了半监督的方法,预对齐的实体作为监督信号,用于计算未对齐实体的高质量嵌入
。
同时本技术实施例采用孪生网络结构来训练图卷积网络
gcn。
两个具有相同架构和模型参数的
gcn
分别接收来自
gcn
的数值向量
。
训练目标旨在最小化正对齐实体对的嵌入之间的距离,并增加负对齐实体对的嵌入之间的距离
。
110.训练完成后的
gcn
模型可以为给定二进制文件中的实体生成嵌入
。
本技术实施例首先构建该二进制文件的二进制反汇编拓扑图,并从中提取子图
。
该子图必须包括实体及其邻居实体,以及它们之间的关系
。
本技术实施例将子图输入
gcn
模型,它将产生实体的嵌入,之后计算两个来自编译为不同平台的二进制代码片段之间的相似度得分
。
111.s206
:基于图对齐结果,进行跨平台二进制同源性分析;
112.本技术实施例中,为不同平台的二进制代码片段之间的相似度得分后,采用匹配算法来比较两个二进制文件的整体相似度
。
首先对两个二进制反汇编拓扑图进行节点匹配,即将一个二进制反汇编拓扑图的节点映射到另一个二进制反汇编拓扑图的节点上
。
然后,对于每一对匹配的节点,算法计算它们之间的相似度,包括节点的特征值和边的特征值
。
最后,根据所有匹配的节点的相似度得分,可以计算出两个二进制反汇编拓扑图之间的整体相似度,进而得到两个二进制文件的相似度
。
113.示例性地,相同功能的c源码在
linux
上的表示为:
114.if(mprotect(sh.map_result,size,none)《0){
115.ret
=2;
...
;
116.相同功能的c源码在
windows
的表示为:
117.if(virtualprotect(sh.map_result,size,noaccess,&floldprotect)
==
false){
118.ret
=2;
119.从图4看出相同功能的代码在不同系统以及不同平台的二进制文件上的表现有着很大差异,这就使得传统的同源性分析工具无法很好将其判断为具有同一个功能的代码片段
。
本技术实施例将这些代码转换为二进制反汇编拓扑图,然后将包含基本块
、
外部函数
、
字符串以及它们之间的关系的图结构信息输入到深度学习的引擎中,然后获取两个来自编译为不同平台的二进制代码片段之间的相似度得分,以上的两种情况的代码片段,都会被判定为具有相同功能,进而为完整的二进制文件的同源性分析提供依据
。
120.如图3所示,本技术实施例还提供二进制文件的同源性分析装置的结构示意图,包括:
121.预处理模块:将多个跨平台的二进制程序进行反汇编,获得相关的汇编代码
。
122.二进制反汇编拓扑图构建模块:在汇编代码的基础上构建二进制反汇编拓扑图,二进制反汇编拓扑图包含基本块
、
外部函数
、
字符串以及它们之间的关系
。
123.形式化模块:提取二进制反汇编拓扑图中的关键信息,包括节点
、
边
、
实体以及三者之间的各自关系,并通过二进制文件的调试部分中提取的源代码行号和文件信息来识别
在两个二进制反汇编拓扑图之间一些预对齐的节点
。
124.深度学习模块:采用深度学习为二进制反汇编拓扑图中的实体和属性生成嵌入,并计算两个来自编译为不同平台的二进制代码片段之间的相似度得分
。
125.同源性分析模块:使用二进制代码片段之间的相似度得分进行跨平台二进制文件同源性分析
。
126.本技术实施例提供了基于图对齐的跨平台二进制同源性分析方法,通过对跨平台二进制文件进行解析获得相关的汇编代码,分析汇编代码构建为二进制反汇编拓扑图,其中包含了基本块
、
外部函数
、
字符串以及它们之间的关系;通过二进制反汇编拓扑图中的上下文信息,推断对于特定系于操作系统的外部函数执行操作的相似性;根据二进制反汇编拓扑图将跨平台二进制分析构建为图对齐问题,采用深度学习的方式获取未对齐节点的相似性
。
采用基于图对齐的方法,能够有效提高对跨平台二进制文件进行同源性分析的准确性
。
127.本技术实施例提供了一种基于图对齐的跨平台二进制同源性分析方法,将跨平台的二进制同源性分析问题形式化为一个图对齐问题,即在不同平台上的图结构二进制代码中找到节点之间的语义对齐,还提供了二进制反汇编拓扑图,含了基本块
、
外部函数
、
字符串以及它们之间的关系,采用图对齐的技术,只需要有限数量的跨平台对齐标签来预测新的潜在对齐关系,进而进行二进制文件的同源性分析
。
通过将表示学习形式化为一个图对齐问题,即在不同平台上的图结构二进制代码中找到节点之间的语义对齐,采用一种基于深度学习的方法,使用图卷积网络为反汇编的二进制代码中的不同实体
(
如基本块
、
外部函数和字符串
)
学习嵌入表示,构建了包含这些实体丰富上下文信息的二进制反汇编拓扑图,然后通过图卷积网络捕捉它们在学习嵌入表示时的特征
。
在训练过程中以图对齐为目标,以半监督的方式学习实体的嵌入表示,只需要有限数量的跨平台对齐标签来预测新的潜在对齐关系
。
采用这些潜在的对齐关系作为特征进行二进制文件的相似性比较,能够有效提高对二进制文件进行同源性分析的准确性
。
需要说明的是,本技术实施例中各可实施的方式可以单独实施,也可以在不冲突的情况下以任意组合方式结合实施本技术不做限定
。
128.本技术另一实施例提供一种二进制文件的同源性分析装置,用于执行上述实施例提供的二进制文件的同源性分析方法
。
129.如图5所示,为本技术实施例提供的二进制文件的同源性分析装置的结构示意图
。
该二进制文件的同源性分析装置包括获取模块
501、
转换模块
502、
确定模块
503、
计算模块
504
和分析模块
505
,其中:
130.获取模块
501
用于获取不同平台发送的二进制文件;
131.转换模块
502
用于根据二进制文件,确定与二进制文件对应的二进制反汇编拓扑图;
132.确定模块
503
用于根据二进制反汇编拓扑图和预先训练的向量识别模型,确定与二进制反汇编拓扑图对应的数值向量;其中,预先训练的向量识别模型是采用不同平台发送的二进制文件对图神经网络模型进行训练得到的;
133.计算模块
504
用于根据数值向量和预先训练的相似度计算模型,确定二进制文件的相似度;其中,预先训练的相似度计算模型是采用多个二进制文件对应的数值向量对图神经网络模型进行训练得到的;
134.分析模块
505
用于根据相似度,对二进制文件进行同源性分析
。
135.关于本技术实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明
。
136.本技术的一些实施例通过对跨平台二进制文件进行解析获得相关的汇编代码,分析汇编代码构建为二进制反汇编拓扑图,该二进制反汇编拓扑图包括上下文信息;通过二进制反汇编拓扑图中的上下文信息和预先训练的向量识别模型,得到与二进制反汇编拓扑图对应数值向量,然后再将数值向量输入到相似度计算模型中,得到不同平台的二进制文件的相似度,进而根据得到的相似度,对不同平台的二进制文件进行同源性分析,从而实现了对跨平台的二进制文件进行同源性分析,提高分析效率和准确性
。
137.本技术又一实施例对上述实施例提供的二进制文件的同源性分析装置做进一步补充说明
。
138.可选地,确定模块用于:
139.采用预设二进制分析工具,对二进制文件进行反汇编处理,得到与二进制文件对应的汇编代码;
140.根据与二进制文件的汇编代码,确定与汇编代码对应的二进制反汇编拓扑图,其中,二进制反汇编拓扑图至少包括多个节点
、
节点属性以及节点之间的关联关系,每个节点至少包括基本块
、
外部函数和字符串字面量,节点属性至少包括基本块节点属性
、
外部函数节点属性和字符串字面量节点属性,基本块节点属性是根据基本块中每个指令,按照预设规则对指令的助记符和操作数进行处理得到的,外部函数节点属性为外部函数名称,字符串字面量节点属性为字符串字面量本身
。
141.本技术的一些实施例通过获取二进制反汇编拓扑图中的基本块,为了编码丰富的基本块上下文,比程序控制流具有更多的信息
。
142.可选地,装置还包括模型训练模块,模型训练模块用于:
143.获取样本数据集,其中,样本数据集至少包括不同平台的样本二进制文件;
144.将样本数据集中每一个样本二进制文件转换成与样本二进制文件对应的样本二进制反汇编拓扑图;
145.根据样本二进制反汇编拓扑图中的各个节点
、
节点属性和节点之间的关联关系对图神经网络模型进行训练,得到向量识别模型,向量识别模型用于生成与样本二进制文件对应的数值向量
。
146.本技术的一些实施例通过将相似性的判断过程转换为一个图对齐问题,即在从不同平台编译的二进制文件构建的二进制反汇编拓扑图之间,根据一小部分预对齐的节点对,找到二进制反汇编拓扑图中节点之间的对应关系,根据二进制反汇编拓扑图对图神经网络模型进行训练,得到向量识别模型,向量识别模型用于生成与样本二进制文件对应的数值向量,模型可以为训练过程中未见过的实体生成高质量的嵌入,或者生成能够提高许多下游任务性能的嵌入,例如跨平台相似性分析
。
147.可选地,模型训练模块用于
148.根据多个与样本二进制文件对应的数值向量,对图神经网络模型进行训练,得到相似度计算模型,相似度计算模型用于生成与多个与样本二进制文件对应的数值向量对应的相似度
。
149.本技术的一些实施例,采用了半监督的方法,预对齐的实体作为监督信号,用于计算未对齐实体的高质量嵌入,采用多个与样本二进制文件对应的数值向量,对图神经网络模型进行训练,得到相似度计算模型,训练目标旨在最小化正对齐实体对的嵌入之间的距离,并增加负对齐实体对的嵌入之间的距离
。
150.可选地,分析模块用于:
151.若相似度大于预设值,则确定二进制文件来自同一数据源;
152.若相似度小于预设值,则确定二进制文件来自不同数据源
。
153.关于本技术实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明
。
154.需要说明的是,本技术实施例中各可实施的方式可以单独实施,也可以在不冲突的情况下以任意组合方式结合实施本技术不做限定
。
155.本技术实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,程序被处理器执行时可实现如上述实施例提供的二进制文件的同源性分析方法中的任意实施例所对应方法的操作
。
156.本技术实施例还提供了一种计算机程序产品,的计算机程序产品包括计算机程序,其中,的计算机程序被处理器执行时可实现如上述实施例提供的二进制文件的同源性分析方法中的任意实施例所对应方法的操作
。
157.如图6所示,本技术的一些实施例提供一种电子设备
600
,该电子设备
600
包括:存储器
610、
处理器
620
以及存储在存储器
610
上并可在处理器
620
上运行的计算机程序,其中,处理器
620
通过总线
630
从存储器
610
读取程序并执行程序时可实现如上述二进制文件的同源性分析方法包括的任意实施例的方法
。
158.处理器
620
可以处理数字信号,可以包括各种计算结构
。
例如复杂指令集计算机结构
、
结构精简指令集计算机结构或者一种实行多种指令集组合的结构
。
在一些示例中,处理器
620
可以是微处理器
。
159.存储器
610
可以用于存储由处理器
620
执行的指令或指令执行过程中相关的数据
。
这些指令和
/
或数据可以包括代码,用于实现本技术实施例描述的一个或多个模块的一些功能或者全部功能
。
本公开实施例的处理器
620
可以用于执行存储器
610
中的指令以实现上述所示的方法
。
存储器
610
包括动态随机存取存储器
、
静态随机存取存储器
、
闪存
、
光存储器或其它本领域技术人员所熟知的存储器
。
160.以上仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化
。
凡在本技术的精神和原则之内,所作的任何修改
、
等同替换
、
改进等,均应包含在本技术的保护范围之内
。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释
。
161.以上,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内
。
因此,本技术的保护范围应所述以权利要求的保护范围为准
。
162.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存
在任何这种实际的关系或者顺序
。
而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程
、
方法
、
物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程
、
方法
、
物品或者设备所固有的要素
。
在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程
、
方法
、
物品或者设备中还存在另外的相同要素
。