技术领域
本发明涉及机器学习与网络安全技术领域。
背景技术
近年来,全球网络安全攻防博弈态势日趋严峻,各种利用恶意代码谋取政治、经济等利益的攻击事件层出不穷。当前的恶意代码存在几个特点:
1)恶意代码的数量保持急剧增长的趋势;
2)绝大多数恶意代码属于已知恶意代码家族;
3)大多数同一家族的恶意代码存在某种共性。
根据以上几点可以得出结论,通过提取特征对恶意代码进行家族分类可以实现对绝大多数恶意代码的同源性判定。目前恶意代码的同源性分析技术包括动态分析和静态分析两大类。静态分析技术具有分析速度快,无须运行的优点。目前常用的恶意代码静态特征包括结构特征,指令特征,函数特征和数据特征等几类。函数调用图是常用的结构特征,可以体现出程序的设计特点。但目前传统的函数调用图匹配方法计算复杂度非常高。此外,反汇编指令也是恶意代码同源性分析中常用的特征。但指令的数量较多,存在一些冗余指令。鉴于此种情况,本发明提出一种基于图卷积网络和主题模型的恶意代码同源性分析方法,降低恶意代码函数调用图的匹配复杂度,提高同源性分析效果。
发明内容
本发明提出一种基于图卷积网络和主题模型的恶意代码同源性方法。本方法可以自动地从恶意代码中提取函数调用图和函数指令分布,使用图卷积网络对函数调用图进行嵌入,使用主题模型对指令分布进行变换和降维。本方法通过构建神经网路,实现对恶意代码的家族分类,具体技术方案如下。
提出一种基于图卷积网络和主题模型的恶意代码同源性分析方法,所述方法包括。
A.提取恶意代码的函数调用图,并存储为邻接矩阵,提取恶意代码中每个函数的指令分布。
B.利用图卷积网络实现对函数调用图邻接矩阵的卷积,得到节点嵌入矩阵,通过注意力机制对节点嵌入加权求和得到函数调用图的图嵌入。
C.利用主题模型对恶意代码的指令分布进行变换和降维,得到恶意代码的函数主题分布,使用自适应最大池化得到恶意代码的主题分布。通过比较分类效果选取最佳的主题数量。
D.将图嵌入和恶意代码主题分布相连后作为恶意代码的特征向量,输入到全连接层和Softmax层得到恶意代码家族分类的结果。
附图说明
为了进一步阐述本发明的实现目标、实现方法和特性,将结合附图进行详细描述。
图1是一个展示本发明提出的方法的具体实现的总体流程图。
图2 是一个说明本发明中注意力机制实现的示意图。
图3 是一个说明本发明中自适应最大池化实现的示意图。
具体实施方式
本发明是基于图卷积网络和主题模型对恶意代码进行家族分类,主要针对windows系统下的PE格式的恶意代码。首先提取恶意代码的函数调用图和函数指令分布,然后输入到分类模型进行家族分类。分类模型包括多层图卷积网络,注意力层,主题层,池化层,全连接层和Softmax层。为了进一步阐述本发明的具体实施方式,将结合附图加以详细的说明。本发明提出一种基于图卷积网络和主题模型的恶意代码同源性分析方法,可以降低函数调用图的匹配复杂度。
提取恶意代码的函数调用图:首先遍历恶意代码的所有函数,去除IDA无法解析的函数和孤立的函数。孤立函数是指没有被其他函数调用且没有调用其他函数的一类函数。初始化全为0的邻接矩阵,遍历所有函数的调用函数,并将邻接矩阵对应元素置1。
提取恶意代码的函数指令分布:首先遍历恶意代码的所有函数,获取函数的起止点,获取函数中的每条指令,去除操作数,保留操作码,保存每个函数的操作码出现的次数。
获取最佳的主题数量:抽取一部分恶意代码的函数指令分布,将每一个函数的主题分布看作一个文本,使用one-hot进行编码,将主题数量的范围设置为1-24,训练主题模型,获取每个函数的主题分布。将每个恶意代码的所有函数主题分布输入到分类模型中,不使用函数调用图,观察不同主题数量对分类结果的影响,选择最佳的主题数量。
获取函数主题分布:使用最佳的主题数量,重新训练主题模型,调整迭代次数,将每个恶意代码的函数主题分布存储为json文件。
训练分类模型:图卷积网络会计算函数调用图的节点嵌入,注意力机制由节点嵌入得到图嵌入。自适应最大池化可以由恶意代码的函数主题分布得到恶意代码的主题分布。
恶意代码分类:选定与训练集不存在交叉的恶意代码测试集,测试分类模型的效果,并与已有的方法进行对比。
机译: 基于字符串比较方案的恶意代码检测和分类系统以及一种能够根据比较字符串的数量和种类确定系统性能的系统的方法
机译: 基于关系图卷积网络基于关系图的任务标签生成任务标签的方法和相关装置
机译: 基于局部差分运算符的等级卷积网络模型图像分类方法