本申请涉及应用安全,具体而言,涉及一种基于代码语义的恶意代码同源检测方法及装置。
背景技术:
1、恶意代码同源分析(homology analysis)是通过分析恶意代码内外部特性以及生成和传播方面的规律,可以发现恶意代码之间的关联性,进而可以辅助检测恶意代码变体或恶意代码、发掘未知家族、关联组织关系等。面对如此多变复杂的安全现状,应用恶意代码同源分析检测技术,可快速实现脆弱代码定位,进而评估漏洞带来的影响。
2、由于汇编代码与自然语言具有许多共性特征,相关学者开始尝试借鉴自然语言处理领域的先进模型来解决二进制代码相似性分析问题,基于自然语言预处理的检测也取得了较好的实验效果。然而这些方法通常只是将相应的自然语言处理方法直接应用在汇编代码层面,而没有考虑二进制代码与自然语言的区别,导致检测结果准确度低的问题。
技术实现思路
1、本申请实施例的目的在于提供一种基于代码语义的恶意代码同源检测方法及装置,利用infomlm以及nbp任务训练过的自然语言预处理模型能够准确提取语义信息,从而保证代码同源检测结果的准确性,解决了现有方法检测结果准确度低的问题。
2、本申请实施例提供了一种基于代码语义的恶意代码同源检测方法,所述方法包括:
3、对待测二进制函数进行反汇编,获得控制流程图;
4、将所述控制流程图输入经过infomlm以及nbp任务训练过的自然语言预处理模型,获得待测函数语义表征;
5、将所述待测函数语义表征与预先建立的恶意代码函数库中的函数语义表征比对,以确定所述待测二进制函数是否为恶意代码。
6、在上述实现过程中,利用infomlm以及nbp任务训练过的自然语言预处理模型能够准确提取语义信息,从而保证代码同源检测结果的准确性,解决了现有方法检测结果准确度低的问题。
7、进一步地,在所述将所述待测函数语义表征与恶意代码函数库中的函数语义表征比对的步骤之前,所述方法还包括建立恶意代码函数库:
8、对训练用恶意代码进行反汇编,获得恶意代码控制流程图;
9、将所述恶意代码控制流程图输入经过infomlm以及nbp任务训练过的自然语言预处理模型,获得恶意代码函数语义表征;
10、将所述恶意代码函数语义表征存储至恶意代码函数库中,以建立恶意代码函数库。
11、在上述实现过程中,建立恶意代码函数库用于提供比对的基础数据,以便快速确定待测二进制函数是否为恶意代码。
12、进一步地,所述方法还包括:
13、利用infomlm以及nbp任务对所述自然语言预处理模型进行训练。
14、在上述实现过程中,利用infomlm以及nbp任务对自然语言预处理模型进行训练,使其能够准确提取语义信息。
15、进一步地,利用infomlm任务对所述自然语言预处理模型进行训练,包括:
16、对训练用二进制函数的控制流程图进行随机采样,生成s个掩码候选;
17、计算每个掩码候选与其他汇编指令的点互信息的得分之和,其中,点互信息的得分计算公式为:
18、
19、其中,p(w1)表示控制流程图的基本块中的汇编指令w1在恶意代码函数库中出现的概率,p(w2)表示控制流程图的基本块中的汇编指令w2在恶意代码函数库中出现的概率,p(w1,w2)表示汇编指令w1和w2在恶意代码函数库中同时出现的概率;
20、根据得分之和进行排序,并将得分最高的掩码候选作为所述自然语言预处理模型的训练用掩码数据。
21、在上述实现过程中,利用infomlm任务对自然语言预处理模型进行训练,以提高对汇编代码被遮盖后的含义的准确预测。
22、进一步地,利用nbp任务对所述自然语言预处理模型进行训练,包括:
23、将训练用二进制函数的控制流程图的两个基本块输入nbp任务,以确定所述两个基本块是否相邻,其中,基本块在控制流程图中的相邻包括一步相邻和二步相邻,第一基本块通过有方向边指向第二基本块则第一基本块和第二基本块一步相邻,第一基本块通过有方向边依次指向第二基本块和第三基本块,则第一基本块和第三基本块二步相邻;
24、基于判定结果作为训练数据对所述自然语言预处理模型进行训练,以使所述自然语言预处理模型能够判定两个基本块之间的相邻关系。
25、在上述实现过程中,利用nbp任务对自然语言预处理模型进行训练,使得自然语言预处理模型能够准确获得两个基本块之间的相邻关系。
26、本申请实施例还提供一种基于代码语义的恶意代码同源检测装置,所述装置包括:
27、反汇编模块,用于对待测二进制函数进行反汇编,获得控制流程图;
28、函数语义表征获取模块,用于将所述控制流程图输入经过infomlm以及nbp任务训练过的自然语言预处理模型,获得待测函数语义表征;
29、检测模块,用于将所述待测函数语义表征与预先建立的恶意代码函数库中的函数语义表征比对,以确定所述待测二进制函数是否为恶意代码。
30、在上述实现过程中,利用infomlm以及nbp任务训练过的自然语言预处理模型能够准确提取语义信息,从而保证代码同源检测结果的准确性,解决了现有方法检测结果准确度低的问题。
31、进一步地,所述装置还包括恶意代码函数库建立模块,所述恶意代码函数库建立模块包括:
32、训练数据处理模块,用于对训练用恶意代码进行反汇编,获得恶意代码控制流程图;
33、恶意代码语义表征获取模块,用于将所述恶意代码控制流程图输入经过infomlm以及nbp任务训练过的自然语言预处理模型,获得恶意代码函数语义表征;
34、存储模块,用于将所述恶意代码函数语义表征存储至恶意代码函数库中,以建立恶意代码函数库。
35、在上述实现过程中,建立恶意代码函数库用于提供比对的基础数据,以便快速确定待测二进制函数是否为恶意代码。
36、进一步地,所述装置还包括:
37、模型训练模块,用于利用infomlm以及nbp任务对所述自然语言预处理模型进行训练。
38、在上述实现过程中,利用infomlm以及nbp任务对自然语言预处理模型进行训练,使其能够准确提取语义信息。
39、本申请实施例还提供一种电子设备,所述电子设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行计算机程序以使所述电子设备执行上述中任一项所述的基于代码语义的恶意代码同源检测方法。
40、本申请实施例还提供一种可读存储介质,所述可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述中任一项所述的基于代码语义的恶意代码同源检测方法。
1.一种基于代码语义的恶意代码同源检测方法,其特征在于,所述方法包括:
2.根据权利要求1所述的基于代码语义的恶意代码同源检测方法,其特征在于,在所述将所述待测函数语义表征与恶意代码函数库中的函数语义表征比对的步骤之前,所述方法还包括建立恶意代码函数库:
3.根据权利要求1所述的基于代码语义的恶意代码同源检测方法,其特征在于,所述方法还包括:
4.根据权利要求2所述的基于代码语义的恶意代码同源检测方法,其特征在于,利用infomlm任务对所述自然语言预处理模型进行训练,包括:
5.根据权利要求2所述的基于代码语义的恶意代码同源检测方法,其特征在于,利用nbp任务对所述自然语言预处理模型进行训练,包括:
6.一种基于代码语义的恶意代码同源检测装置,其特征在于,所述装置包括:
7.根据权利要求6所述的基于代码语义的恶意代码同源检测装置,其特征在于,所述装置还包括恶意代码函数库建立模块,所述恶意代码函数库建立模块包括:
8.根据权利要求6所述的基于代码语义的恶意代码同源检测装置,其特征在于,所述装置还包括:
9.一种电子设备,其特征在于,所述电子设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行计算机程序以使所述电子设备执行根据权利要求1至5中任一项所述的基于代码语义的恶意代码同源检测方法。
10.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行权利要求1至5中任一项所述的基于代码语义的恶意代码同源检测方法。