本发明涉及软件安全领域,尤其是涉及一种基于双表征融合嵌入的物联网恶意代码检测方法、检测系统及可读介质。
背景技术:
1、为了保证软件的可用性和安全性,软件工程师需要在软件生命周期中做出不同的决策。然而,不同的执行条件(如执行环境、编译环境和优化策略)和实时计算状态(如可执行路径选择和变量更新)可能会被攻击者利用,并植入恶意代码。为了协助软件安全测评人员发现二进制程序中的恶意代码,开发智能函数类型推断工具是极其必要的,通过函数类型推断,软件安全测评人员不仅可以实现对二进制程序逆向分析,还可以促进函数边界检测、代码相似性分析和漏洞挖掘等领域的发展;而且,一个准确的函数类型推断模型可以提高bug搜索、值集推断和模糊测试的效率。
2、深度学习已被认为是实现函数类型推断的前沿关键技术。它通常需要完成以下两个步骤。第一步是确定分析粒度(如数据集组织方式)。例如,使用自然语言处理方法来学习静态分析场景下的汇编代码语义;第二步旨在根据应用需求确定特征表征方法。现有的表征方法主要分为两类:1)基于文本的方法,它主要从二进制文件中保留的汇编代码和控制流信息中提取特征,2)基于图的方法,软件安全测试人员可以在函数、基本块、指令等级别构建图表示模型,从而检测软件漏洞。但是,它们没有融合汇编代码语义特征和函数依赖图特征,导致全局数据依赖的缺失,致使物联网恶意代码检测的可靠性有准确性不够理想。
技术实现思路
1、本发明的目的在于解决现有技术存在的上述问题而提供一种基于双表征融合嵌入的物联网恶意代码检测方法、检测系统及可读介质,首先,利用分层插桩策略对二进制程序进行动态分析,实现单次执行获取汇编代码段语义特征进和函数调用图表征,同时保证动态分析策略不受执行环境、编译优化等影响;接着,基于codebert模型学习汇编指令内数据流向特征和汇编指令间数据依赖特征,从而获得短跨度的、独立且唯一的汇编代码段语义特征向量;同时,基于gat模型对函数调用图节点的属性和结构特征进行学习,从而获取长跨度的数据依赖特征向量;最后,利用汇编代码段语义表征和函数调用图表征实现可靠、准确的物联网恶意代码检测。
2、本发明的上述技术目的主要是通过以下技术方案解决的:一种基于双表征融合嵌入的物联网恶意代码检测方法,其特征在于,其步骤为:
3、基于插桩动态分析技术,对二进制程序进行动态分析,获得物联网的汇编代码,在该步骤中,在不影响被检测软件执行效率的情况下屏蔽执行环境与编译环境对动态跟踪的干扰,保证动态分析策略不受执行环境、编译优化等影响;
4、在双向编码器bert模型中嵌入汇编代码,构建适应汇编指令的双向编码器codebert模型,通过codebert模型获取汇编代码中的函数内的汇编代码段语义特征,汇编代码段语义特征为短跨度数据依赖特征,汇编代码段语义特征(短跨度数据依赖特征)为短跨度、独立且唯一的汇编代码段语义特征向量;
5、通过消息传递神经网络模型gat提取函数调用图结构和节点属性用于获取函数调用图表征,所述函数调用图表征为长跨度的数据依赖特征;
6、融合所述汇编代码段语义特征与所述函数调用图表征,形成双表征融合,基于双表征融合嵌入识别恶意代码,用于学习恶意代码特征来检测物联网恶意代码。
7、综上所述,一种基于双表征融合嵌入的物联网恶意代码检测方法是利用上述汇编代码段语义特征和函数调用图表征实现可靠、准确的物联网恶意代码检测。
8、作为对上述技术方案的进一步完善和补充,本发明采用如下技术措施:使用插桩动态分析技术在函数调用和函数返回处插入回调函数,获取插桩位置的指令及插桩位置前后的指令信息,获得每个函数的边界,通函数调用和函数返回使每个函数的边界清晰,用于防止函数调用和跳转指针时动态跟踪丢失。插桩动态分析技术(或叫做动态插桩策略)具有很高的可靠性,插桩动态分析技术在跟踪目标软件执行过程时,能够清晰地发现每个函数的边界,从而解决了隐藏函数调用和跳转指针带来的动态跟踪丢失问题。
9、微调双向编码器模型bert中的token(即令牌)类型构建codebert模型,所述的codebert模型用于学习函数中的指令内数据流向特征和指令间数据依赖关系特征,其中,指令内数据流向以细粒度方式描述内存数据处理流程,指令间数据依赖以局部代码(即函数)的方式描述关键函数逻辑。微调后得到的codebert模型将能够学习指令内数据流向特征和指令间数据依赖关系特征。
10、通过类型模型将指令的操作数分为数据类型操作数和地址类型操作数,并在操作数中增加token类型,在数据类型操作数中将常量token标记为“[constant]”,在地址类型操作数中将包括立即数token标记为“[immediate]”、绝对地址token标记为“[ab_addr]”、以及将相对地址token标记为“[re_addr],用以识别指令内约束关系并提升短跨度数据依赖特征的准确性。其中,bert模型可以适应x86、arm、mips指令格式的汇编指令。
11、在获取所述函数调用图表征时,通过修改图节点的属性来融合图结构信息来提取函数调用关系特征,所述函数调用关系特征包括单个节点特征、单个节点与邻居节点之间的关系特征,所述单个节点与邻居节点之间的关系特征通过若干个堆叠块形成图自注意层和生成注意力系数以实现节点间的节点联合学习,所述注意力系数的计算公式为:
12、
13、由于单个节点和与单个节点想来的邻居节点构成的图结构并不能完整地体现函数调用图表征,所以节点间联合是提升特征可靠性的重要方式,结合获得的所述单个节点特征和所述注意力系数,所述神经网络模型遍历每个节点特征、节点联合学习以获取作为最终节点特征,即长跨度数据依赖特征,所述节点联合学习的公式为:
14、
15、其中,θ为权重矩阵,,α为注意力系数向量,i为目标节点索引,j为邻接节点索引,最终得到目标节点的注意力系数x′i。
16、在汇编代码语义表征时,构建函数节点属性,函数节点属性包括节点编号node_id、节点特征node_feature、头结点head_node、尾节点tail_node和边特征edge_feature,其中,node_feature是node的主要属性,其他属性是辅助属性。
17、所述消息传递神经网络模型gat(一种基于注意力机制的图神经网络模型)通过构建块层和堆叠块层来构建图注意力层,根据图注意力层中的图结构矩阵和邻居节点属性产生每个节点,为了提高学习图模型的泛化能力,通过gat模型的多头注意力机制联合独立节点特征,从图注意力层随机采样节点特征并联合得到目标节点特征作为目标函数的长跨度数据依赖特征。
18、在获得短跨度语义特征和长跨度数据依赖特征后,通过拼接构建包含代码全局特征的数据结构;再使用可学习时序特征的网络模型lstm实现双表征融合与结果预测,lstm模型中的第一层lstm网络结合汇编代码段语义特征与长跨度数据依赖特征获取目标函数的高维度特征向量;lstm模型中的第二层lstm网络根据函数执行顺序结合目标函数的高维度特征获取可预测软件恶意行为的结果。
19、为了融合汇编代码语义表征和函数依赖图表征,通过拼接将汇编代码语义表征和函数调用图表征融合构建连接为一个特征向量,使用lstm模型循环学习连接后的特征向量;在lstm模型中,第一层lstm网络将连接后的特征向量重构为一个包含完全数据依赖关系的隐变量;第二层lstm网络根据标注好的函数调用顺序循环更新隐式变量,得到的恶意代码检测结果。
20、本发明涉及的第二技术主题的技术方案:一种基于双表征融合嵌入的物联网恶意代码检测系统,其特征在于,其执行上述的基于双表征融合嵌入的物联网恶意代码检测方法,所述基于双表征融合嵌入的物联网恶意代码检测系统包括:动态分析模块、获取汇编代码段语义特征模块、获取函数调用图表征模块、双表征融合模块及学习恶意代码特征模块;
21、动态分析模块:基于高可靠性插桩的动态分析,在不影响被检测软件执行效率的情况下屏蔽执行环境与编译环境对动态跟踪的干扰;
22、获取汇编代码段语义特征模块:在双向编码器bert模型中嵌入汇编代码,构建适应汇编指令的双向编码器codebert模型,通过codebert模型获取汇编代码中的函数内的汇编代码段语义特征,汇编代码段语义特征为短跨度数据依赖特征;
23、获取函数调用图表征模块:通过消息传递神经网络模型提取函数调用图结构和节点属性用于获取函数调用图表征,所述函数调用图表征为长跨度的数据依赖特征;
24、双表征融合模块:融合所述汇编代码段语义特征与所述函数调用图表征,形成双表征融合;
25、学习恶意代码特征模块:基于双表征融合嵌入识别恶意代码,用于学习恶意代码特征来检测物联网恶意代码。
26、本发明涉及的第三技术主题的技术方案:一种可读介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述的基于双表征融合嵌入的物联网恶意代码检测方法。
27、本发明具有的有益效果:1、基于汇编代码段语义表征和函数调用图表征的融合嵌入形成的物联网恶意代码检测方法具有更高的精度和鲁棒性,对物联网恶意代码的识别精度明显提高,实现可靠、准确的物联网恶意代码检测。2、利用分层插桩策略对二进制程序进行动态分析,实现单次执行获取上述两种表征,同时保证动态分析策略不受执行环境、编译优化等影响/3、基于codebert模型学习汇编指令内数据流向特征和汇编指令间数据依赖特征,从而获得短跨度的、独立且唯一的汇编代码段语义特征向量;同时,基于gat模型对函数调用图节点的属性和结构特征进行学习,从而获取长跨度的数据依赖特征向量。