一种基于多模态特征融合的恶意代码检测方法及系统转让专利

申请号 : CN202210849728.6

文献号 : CN115080973B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 路冰张海文王琦博

申请人 : 中孚安全技术有限公司

摘要 :

本发明涉及恶意代码检测技术领域,公开了一种基于多模态特征融合的恶意代码检测方法及系统,所述方法包括:获取训练代码样本集;对每个所述代码样本进行关键词推荐和词嵌入;根据关键词嵌入矩阵,得到语义表示向量;基于关键词提取算法构建代码权重向量;基于卡方检验构建代码统计向量;基于文档主题分类算法构建主题表示向量;将代码权重向量、代码统计向量和代码主题表示向量进行加权融合,得到多模态特征向量;将语义表示向量和多模态特征向量进行拼接,得到多模态融合特征;基于训练代码样本集的多模态融合特征,进行模型训练,用于恶意代码检测。本发明从多维度进行代码特征提取,可有效挖掘代码中的有效特征信息,提高检测准确度。

权利要求 :

1.一种基于多模态特征融合的恶意代码检测方法,其特征在于,包括以下步骤:获取训练代码样本集,所述训练代码样本集包括良性代码和恶性代码;

对其中的每个代码样本进行关键词推荐和词嵌入,得到关键词嵌入矩阵;

根据所述关键词嵌入矩阵,进行语义特征提取,得到语义表示向量;

基于关键词提取算法对每个关键词进行权重提取,连接得到代码权重向量;基于卡方检验对每个关键词进行统计量计算,连接得到代码统计向量;基于文档主题分类算法得到代码‑主题矩阵和主题‑词嵌入矩阵,二者相乘得到主题表示向量;

将所述代码权重向量、代码统计向量和代码主题表示向量进行加权融合,得到所述代码样本的多模态特征向量;

将所述语义表示向量和多模态特征向量进行拼接,得到所述代码样本的多模态融合特征;

基于所述训练代码样本集的多模态融合特征,进行恶意代码检测模型的训练,用于恶意代码检测。

2.如权利要求1所述基于多模态特征融合的恶意代码检测方法,其特征在于,获取训练代码样本集后,还进行剔除无效字符、去停用词以及变量名拆分预处理。

3.如权利要求1所述基于多模态特征融合的恶意代码检测方法,其特征在于,所述进行语义特征提取包括:针对关键词嵌入矩阵,分别执行上下文语义特征提取以及最大池化操作,得到语义表示向量和关键词向量;

基于注意力机制,将所述语义表示向量和所述关键词向量进行拼接,得到语义特征矩阵。

4.如权利要求3所述基于多模态特征融合的恶意代码检测方法,其特征在于,针对关键词嵌入矩阵,执行上下文语义特征提取包括:基于推荐的关键词进行词性标注,生成词性矩阵;

根据关键词嵌入矩阵和词性矩阵,得到特征加强词嵌入矩阵;

针对所述特征加强词嵌入矩阵,执行上下文语义特征提取,得到语义表示向量。

5.如权利要求3所述基于多模态特征融合的恶意代码检测方法,其特征在于,所述上下文语义特征提取采用基于双向门控循环单元。

6.如权利要求1所述基于多模态特征融合的恶意代码检测方法,其特征在于,所述关键词提取算法采用TF‑IDF算法。

7.如权利要求1所述基于多模态特征融合的恶意代码检测方法,其特征在于,所述文档主题分类算法采用Gaussian LDA主题模型。

8.一种基于多模态特征融合的恶意代码检测系统,其特征在于,包括:训练数据获取模块,用于获取训练代码样本集,所述训练代码样本集包括良性代码和恶性代码;

数据预处理模块,用于对其中的每个代码样本进行关键词推荐和词嵌入,得到关键词嵌入矩阵;

语义特征提取模块,用于根据所述关键词嵌入矩阵,进行语义特征提取,得到语义表示向量;

多模态特征提取模块,用于基于关键词提取算法对每个关键词进行权重提取,连接得到代码权重向量;基于卡方检验对每个关键词进行统计量计算,连接得到代码统计向量;基于文档主题分类算法得到代码‑主题矩阵和主题‑词嵌入矩阵,二者相乘得到主题表示向量;以及将所述代码权重向量、代码统计向量和代码主题表示向量进行加权融合,得到所述代码样本的多模态特征向量;

多模态特征融合模块,用于将所述语义表示向量和多模态特征向量进行拼接,得到所述代码样本的多模态融合特征;

检测模型训练模块,用于基于所述训练代码样本集的多模态融合特征,进行恶意代码检测模型的训练,用于恶意代码检测。

9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1‑7任一项所述的基于多模态特征融合的恶意代码检测方法。

10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1‑7任一项所述的基于多模态特征融合的恶意代码检测方法。

说明书 :

一种基于多模态特征融合的恶意代码检测方法及系统

技术领域

[0001] 本发明属于恶意代码检测技术领域,尤其涉及一种基于多模态特征融合的恶意代码检测方法及系统。

背景技术

[0002] 本部分的陈述仅仅是提供了与本发明相关的背景技术信息,不必然构成在先技术。
[0003] 随着互联网与信息技术的高速发展,其背后隐藏的网络安全风险却不容小觑。其中,最令网络安全从业者头疼的当属恶意代码,一旦中招被计算机调用执行,则将会导致系统或网络出现严重的问题。最常见的有特洛伊木马、蠕虫病毒、后门入口等。恶意代码从产生到现在一直不断变化更新,截至目前已呈现出变种数量巨大、传播速度迅速、影响范围不可控的特点。而且恶意代码的幕后操纵者们往往会使用一些复杂的加壳、变形等手法进行一系列巧妙地伪装来躲避追踪检测,从而导致用户主机受到攻击。
[0004] 为了有效实现恶意代码的检测,目前主要存在四种方法:基于规则或文本匹配、基于沙箱技术结合机器学习方法、基于特征提取与知识库以及基于深度学习的方法。其中,基于规则或文本匹配是通过进行文本相似度匹配或采用关键词命中的方式来判断是否为恶意代码,该方法适用于同一类别恶意代码的检测。基于沙箱技术结合机器学习方法是通过模拟运行环境进行代码的特征提取,结合机器学习方法如随机森林构建模型从而达到检测恶意代码的目的。基于特征提取与知识库是通过机器学习等技术完成对于代码的特征提取,并结合数据挖掘方法从而提取同族恶意代码的共同行为。基于深度学习的方法是利用代码转换为字节码的N‑gram序列作为特征,结合深度学习方法构建网络模型来实现恶意代码检测。
[0005] 随着恶意代码数量和变体逐渐增多,使用传统规则或通过文本匹配来检测恶意代码已经逐渐淘汰,而利用沙箱结合机器学习的方法往往只从单一尺度获取恶意代码特征为主,且无法高效和自动的提取出特征,依赖人工操作,再加之提取的浅层特征又不足以精准描述恶意代码,进而导致其检测的准确率偏低。并且,由于代码区别于普通文本,代码中存在语义稀疏的问题,使用传统机器学习或通过字节码提取特征往往不能完整表示代码的语义信息。

发明内容

[0006] 为克服上述现有技术的不足,本发明提供了一种基于多模态特征融合的恶意代码检测方法及系统,从多维度进行代码特征提取,并进行特征融合,可有效挖掘代码中的有效特征信息,提高检测准确度。
[0007] 为实现上述目的,本发明的一个或多个实施例提供了如下技术方案:
[0008] 一种基于多模态特征融合的恶意代码检测方法,包括以下步骤:
[0009] 获取训练代码样本集,所述代码样本包括良性代码和恶性代码;
[0010] 对每个所述代码样本进行关键词推荐和词嵌入,得到关键词嵌入矩阵;
[0011] 根据所述关键词嵌入矩阵,进行语义特征提取,得到语义表示向量;
[0012] 基于关键词提取算法对每个关键词进行权重提取,连接得到所述代码样本的代码权重向量;基于卡方检验对每个关键词进行统计量计算,连接得到代码统计向量;基于文档主题分类算法得到代码‑主题矩阵和主题‑词嵌入矩阵,二者相乘得到主题表示向量;
[0013] 将所述代码权重向量、代码统计向量和代码主题表示向量进行加权融合,得到多模态特征向量;
[0014] 将所述语义表示向量和多模态特征向量进行拼接,得到多模态融合特征;
[0015] 基于所述代码样本的多模态融合特征,进行恶意代码检测模型的训练,用于恶意代码检测。
[0016] 进一步地,获取训练代码样本集后,还进行剔除无效字符、去停用词以及变量名拆分预处理。
[0017] 进一步地,所述进行语义特征提取包括:
[0018] 针对关键词嵌入矩阵,分别执行上下文语义特征提取以及最大池化操作,得到语义表示向量和关键词向量;
[0019] 基于注意力机制,将所述语义表示向量和所述关键词向量进行拼接,得到语义特征矩阵。
[0020] 进一步地,针对关键词嵌入矩阵,执行上下文语义特征提取包括:
[0021] 基于推荐的关键词进行词性标注,生成词性矩阵;
[0022] 根据关键词嵌入矩阵和词性矩阵,得到特征加强词嵌入矩阵;
[0023] 针对所述特征加强词嵌入矩阵,执行上下文语义特征提取,得到语义表示向量。
[0024] 进一步地,所述上下文语义特征提取采用基于双向门控循环单元。
[0025] 进一步地,所述关键词提取算法采用TF‑IDF算法。
[0026] 进一步地,所述文档主题分类算法采用Gaussian LDA主题模型。
[0027] 一个或多个实施例提供了一种基于多模态特征融合的恶意代码检测系统,包括:
[0028] 训练数据获取模块,用于获取训练代码样本集,所述训练代码样本集包括良性代码和恶性代码;
[0029] 数据预处理模块,用于对其中的每个代码样本进行关键词推荐和词嵌入,得到关键词嵌入矩阵;
[0030] 语义特征提取模块,用于根据所述关键词嵌入矩阵,进行语义特征提取,得到语义表示向量;
[0031] 多模态特征提取模块,用于基于关键词提取算法对每个关键词进行权重提取,连接得到代码权重向量;基于卡方检验对每个关键词进行统计量计算,连接得到代码统计向量;基于文档主题分类算法得到代码‑主题矩阵和主题‑词嵌入矩阵,二者相乘得到主题表示向量;以及
[0032] 将所述代码权重向量、代码统计向量和代码主题表示向量进行加权融合,得到所述代码样本的多模态特征向量;
[0033] 多模态特征融合模块,用于将所述语义表示向量和多模态特征向量进行拼接,得到所述代码样本的多模态融合特征;
[0034] 检测模型训练模块,用于基于所述训练代码样本集的多模态融合特征,进行恶意代码检测模型的训练,用于恶意代码检测。
[0035] 一个或多个实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现所述的基于多模态特征融合的恶意代码检测方法。
[0036] 一个或多个实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现所述的基于多模态特征融合的恶意代码检测方法。
[0037] 以上一个或多个技术方案存在以下有益效果:
[0038] 本申请从多维度进行代码特征提取,并进行特征融合,可有效挖掘代码中的有效特征信息,提高检测准确度。
[0039] 其中,语义特征的基于词嵌入结果,结合上下文语义特征和关键词特征两个维度构建得到,一定程度上弥补了代码语义稀疏的缺陷,有助于挖掘更丰富的语义信息。
[0040] 此外,还结合关键词提取算法、卡方检验、主题分类算法多种方式,对代码中的关键词进行分析,得到词的权重、词与分类结果的独立关系统计量以及词‑主题‑代码多层次主题特征,实现了多维度特征的融合,该融合特征能够对良性代码和恶意代码进行有效的区分,有助于后续模型的准确性。
[0041] 通过引入GLDA主题分类模型进行主题表示向量提取,可有效丰富代码语义,进一步弥补了代码语义稀疏的缺陷,提高检测准确度。

附图说明

[0042] 构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
[0043] 图1为本发明一个或多个实施例中所述基于多模态特征融合的恶意代码检测方法实现架构图;
[0044] 图2为本发明一个或多个实施例中数据预处理流程图;
[0045] 图3为本发明一个或多个实施例中基于GLDA进行代码‑主题‑词嵌入挖掘的示意图;
[0046] 图4为针对GLDA采用不同主题个数的实验验证效果图;
[0047] 图5为本发明一个或多个实施例中的模型与其他基线模型随训练次数变化的对比效果图。

具体实施方式

[0048] 应该指出,以下详细说明都是示例性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
[0049] 需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
[0050] 在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
[0051] 实施例一
[0052] 由于恶意代码相对传统文本在格式和内容上都有较大差别,其中就包含特殊的格式、括号、换行、缩进,以及特殊符号等。而且其语义特征相较传统文本而言又较少,所以单从语义提取一个方面难以取得一个较好的检测结果。因此,本实施例提出了一种基于多模态特征融合的恶意代码检测方法,包括以下步骤:
[0053] 步骤1:获取训练代码样本集,所述代码样本包括良性代码和恶性代码,进行数据预处理,并进行关键词推荐和词嵌入,得到关键词嵌入矩阵;
[0054] 由于恶意代码与传统文本并不全然相同,代码文本往往除编程代码语句外,还存在大量的无效字符和停用词,在预处理阶段,往往需去除无效信息的干扰,降低训练复杂度,进而提升输入数据集的质量,有助于提升后续模型训练精度。除常规使用传统数据预处理方式之外,还需要根据恶意代码特征进行有效的特殊处理。
[0055] 所述数据预处理包括:剔除无效字符、去停用词、变量名拆分、关键词推荐和词嵌入,如图2所示。
[0056] 上述词嵌入基于Word2Vec执行,在其浅层网络中进行非监督学习,形成多维向量矩阵。
[0057] 步骤2:基于预处理后的代码样本,进行语义特征提取,得到语义表示向量。所述步骤2具体包括:
[0058] 步骤2.1:对以预处理后的恶意代码执行关键词推荐;
[0059] 步骤2.2:基于所述关键词,生成关键词嵌入矩阵;同时,基于推荐的关键词进行词性标注,生成词性矩阵;
[0060] 步骤2.3:根据关键词嵌入矩阵和词性矩阵,得到特征加强词嵌入矩阵;
[0061] 步骤2.4:针对所述特征加强词嵌入矩阵,执行上下文语义特征提取,得到语义表示向量;
[0062] 本实施例在主体语义处理上,采用了目前效果最为理想的基于双向门控循环单元Bi‑GRU,可同时按照从前往后和从后往前的顺序来处理数据,而后获取两个顺序的上下文信息。
[0063] 步骤2.5:针对所述关键词嵌入矩阵,进行最大池化操作,得到关键词向量;为了提高恶意代码的分类检测效果,对代码运用关键词推荐算法进行关键词筛选,并将关键词信息经嵌入层运算,得到关键词嵌入,随后进行max‑pooling最大池化操作,从而得到关键词向量 。
[0064] 步骤2.6:基于注意力机制,将所述语义表示向量和所述关键词向量进行拼接,得到语义特征矩阵。
[0065] 为了充分利用关键词信息,将步骤2.4得到的语义特征矩阵 和步骤2.5得到的关键词向量进行合并,得到特征矩阵 ,利用注意力机制充分对恶意代码中与关键词相对应的信息着重关注,计算语义表示向量 ,计算过程如公式(1)‑(2)所示。其中权重矩阵由表示,随机偏置参数由 表示, 表示激活函数。
[0066] (1)
[0067] (2)
[0068] 步骤3:基于TF‑IDF算法对其中的每个关键词进行权重提取,连接得到代码权重向量。
[0069] 通过TF‑IDF算法的运算,单词在文本中出现的次数越多,同时在语料库中出现的次数越少,则越具有代表性。在得到每个单词的在当前数据的权重值后,则当前数据的所有单词的权重值再通过连接后,则得到代码权重向量 。
[0070] 步骤4:基于卡方检验对其中的每个关键词进行统计量计算,连接得到代码统计向量。
[0071] 通过卡方检验(即 检验), 统计量的值越高,则可证明恶意代码中的词与其对应类别的独立性越小,而通过归一化操作可防止某些单词因 统计量的值过大影响最终的分类效果。通过计算最后得到针对该条恶意代码的 统计向量 。
[0072] 步骤5:根据词嵌入矩阵,基于文档主题分类算法,得到代码主题表示向量。
[0073] 在LDA基础上提出的GLDA(Gaussian LDA),利用多元Gaussian分布替换在LDA中词的生成部分,并采用的Collapsed Gibbs sampling的快速采样算法。
[0074] 在得到词嵌入后,输入到GLDA模型中,用以发掘词嵌入中的信息并进行层次建模,利用“代码——主题——词嵌入”层次模型最终得到当前数据所对应的主题表示向量:代码‑主题矩阵和主题‑词嵌入矩阵,如图3所示。
[0075] 其分别代表该条恶意代码在不同主题下的频率以及词嵌入在不同主题下的频率,将二者相乘后可得到词嵌入针对于代码的特征向量,即主题表示向量。
[0076] 步骤6:将代码权重向量、代码统计向量和代码主题表示向量进行加权融合,得到多模态特征向量。
[0077] 在得到代码权重向量 、 统计向量 以及主题表示向量 后,将三者进行特征融合,如公式(3)所示:
[0078] (3)
[0079] 其中,、 、 三个权重参数和为1且各自数值是通过迭代训练得到,通过LDA生成的特征向量 可对输入模型的代码起到语义增强的效果。
[0080] 步骤7:将所述语义表示向量和多模态特征向量进行拼接,得到多模态融合特征,执行恶意代码检测模型的训练,用于恶意代码检测。
[0081] 所述恶意代码检测模型基于Sigmoid分类器训练。将语义表示向量与多模态特征向量进行连接后送入全连接层,使用Sigmoid分类器并输出结果。最终得到的多模态特征融合的恶意代码检测模型MFFM(Multi‑modal Feature Fusion Model)整体结构图如图1所示。
[0082] 实施例二
[0083] 基于实施例一提供的方法,本实施例提供了一种基于多模态特征融合的恶意代码检测系统,包括:
[0084] 训练数据获取模块,用于获取训练代码样本集,所述训练代码样本集包括良性代码和恶性代码;
[0085] 数据预处理模块,用于对其中的每个代码样本进行关键词推荐和词嵌入,得到关键词嵌入矩阵;
[0086] 语义特征提取模块,用于根据所述关键词嵌入矩阵,进行语义特征提取,得到语义表示向量;
[0087] 多模态特征提取模块,用于基于关键词提取算法对每个关键词进行权重提取,连接得到代码权重向量;基于卡方检验对每个关键词进行统计量计算,连接得到代码统计向量;基于文档主题分类算法得到代码‑主题矩阵和主题‑词嵌入矩阵,二者相乘得到主题表示向量;以及
[0088] 将所述代码权重向量、代码统计向量和代码主题表示向量进行加权融合,得到所述代码样本的多模态特征向量;
[0089] 多模态特征融合模块,用于将所述语义表示向量和多模态特征向量进行拼接,得到所述代码样本的多模态融合特征;
[0090] 检测模型训练模块,用于基于所述训练代码样本集的多模态融合特征,进行恶意代码检测模型的训练,用于恶意代码检测。
[0091] 实施例三
[0092] 本实施例的目的是提供一种电子设备。
[0093] 一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如实施例一中所述的方法。
[0094] 实施例四
[0095] 本实施例的目的是提供一种计算机可读存储介质。
[0096] 一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如实施例一中所述的方法。
[0097] 以上实施例二至四中涉及的各步骤与方法实施例一相对应,具体实施方式可参见实施例一的相关说明部分。术语“计算机可读存储介质”应该理解为包括一个或多个指令集的单个介质或多个介质;还应当被理解为包括任何介质,所述任何介质能够存储、编码或承载用于由处理器执行的指令集并使处理器执行本发明中的任一方法。
[0098] 实验结果
[0099] 数据集及实验环境
[0100] 数据集采用JavaScript代码,包括良性代码10483个,恶意代码8367。为避免产生数据不均衡的问题,对良性代码和恶意代码各随机抽取出其中的8000个。并将数据集按8:2划分为训练集和测试集。
[0101] 模型评估
[0102] 将恶意代码的样本定义为负样本,而良性代码的样本定义为正样本,在评价模型中选用精确率Precision、召回率Recall和F值F‑score来对实验结果进行的评估判定。
[0103] 实验分析
[0104] 由于在LDA中,主题数K设置大小的不同会导致代码‑主题以及主题‑词嵌入层生成的结果不同,因此会直接影响最终主题表示向量并最终影响模型的分类效果。为了确定K的大小,选取不同数值K,进行实验验证。以此确定最佳的主题数。在这里的使用对数似然结果值Log‑likelihood对结果进行评价。实验结果如图4所示,实验证明当K为90时,可得到最佳的对数似然结果。
[0105] 此外,为了证明模型有效性,将其与现存较流行的其他基线模型做对比。性能指标参数如下表所示:
[0106] 表1 不同方式的恶意代码检测模型性能指标
[0107]模型类型 精确率 召回率 F值
LSTM 0.869 0.882 0.875
Bi‑LSTM 0.881 0.901 0.889
CNN‑BiLSTM 0.875 0.883 0.878
MFFM 0.901 0.890 0.895
[0108] 根据实验结果可以得到,相比与本文提出的MFFM,其他模型由于只进行了语义特征提取,而缺少多模态特征信息,所以最终实验效果低于MFFM,因而证明在恶意代码检测中使用多模态特征信息信息对提高模型的训练效果有积极的作用。
[0109] 此外,图5中,横坐标代表模型训练的epoch次数,纵坐标代表模型验证集的loss值,模型的loss值随着epoch次数的增多而不断减小,并且从loss的下降趋势可以看出,本文所提MFFM模型相较于其他三种模型,由于采用的Bi‑GRU相较于Bi‑LSTM缺少一个门结构,因此在收敛速度上明显较快,而且最终停止训练时的loss值也相对较低。
[0110] 本领域技术人员应该明白,上述本发明的各模块或各步骤可以用通用的计算机装置来实现,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。本发明不限制于任何特定的硬件和软件的结合。
[0111] 上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。