一种恶意代码聚类方法及系统

文档序号:32058388发布日期:2022-11-04 22:21阅读:124来源:国知局
一种恶意代码聚类方法及系统

1.本发明涉及计算机领域,特别是涉及一种恶意代码聚类方法及系统。


背景技术:

2.随着网络空间高度互联互通,恶意代码的威胁是网络空间安全领域无法回避的问题。这些恶意代码大多是经过已有的恶意代码变异来的,即恶意代码开发人员为了节省成本,在已有恶意代码的基础上通过修改产生一种新的恶意代码,这类恶意代码往往包含相似的恶意代码行为特征,比如具有相似的控制流程、代码编写习惯、代码片段、关键技术和api调用接口等。因此通过分析恶意代码家族行为特征,能够发现新的恶意代码,有助于研究恶意代码变种规律进而对其溯源。
3.恶意代码行为分析方法是恶意代码分析领域的重要研究方向。随着恶意代码变种数量的急剧上升,以及恶意代码混淆技术的广泛应用,恶意代码行为分析变得愈发困难。但是代码混淆虽然在一定程度上可以改变语法结构,但却不能改变恶意代码的行为,也就是说无论代码如何变化,代码背后的行为是不会发生变化的,因此基于恶意代码行为语义分析方法成为了恶意代码分析领域的研究热点。
4.目前基于行为语义的分析方法,主要针对“文件修改”、“进程创建”、“修改注册表”等底层行为的研究,未考虑这些行为之间的上下文语义关系,无法直接获取恶意代码更高层的行为,即难以通过判断底层系统的改变来抽象出更高层次的“文件读写”和“网络传送”等行为。


技术实现要素:

5.本发明的目的是提供一种恶意代码聚类方法及系统,以提高恶意代码的聚类效果。
6.为实现上述目的,本发明提供了如下方案:
7.一种恶意代码聚类方法,包括:
8.获取恶意代码融合语义文本;
9.对所述恶意代码融合语义文本进行特征提取,得到融合语义序列;
10.根据所述融合语义序列利用恶意代码行为语义表示模型进行文本向量预测,得到行为语义向量;所述恶意代码行为语义表示模型包括分布式存储模型和分布式词袋库模型;
11.根据所述行为语义向量利用恶意代码聚类模型进行聚类,得到聚类后的恶意代码;所述恶意代码聚类模型为训练好的自组织映射神经网络。
12.可选地,所述对所述恶意代码融合语义文本进行特征提取,得到融合语义序列,具体包括:
13.对所述恶意代码融合语义文本进行依赖关系分析和程序分块,生成程序控制流图;
14.遍历所述程序控制流图,根据所述程序控制流图中的基本块信息和api函数信息确定融合语义序列。
15.可选地,所述根据所述融合语义序列利用恶意代码行为语义表示模型进行文本向量预测,得到行为语义向量,具体包括:
16.将所述融合语义序列进行预处理,得到独热编码;
17.根据所述独热编码分别利用所述分布式存储模型和所述分布式词袋库模型进行预测,得到分布式存储模型句子向量和分布式词袋库模型句子向量;
18.将所述分布式存储模型句子向量和所述分布式词袋库模型句子向量进行拼接,得到行为语义向量。
19.可选地,所述恶意代码聚类模型的训练过程包括:
20.以样本集的行为语义向量为输入,以样本集的聚类后的恶意代码为输出,利用竞争学习策略对所述自组织映射神经网络进行训练,得到恶意代码聚类模型。
21.一种恶意代码聚类系统,包括:
22.获取模块,用于获取恶意代码融合语义文本;
23.特征提取模块,用于对所述恶意代码融合语义文本进行特征提取,得到融合语义序列;
24.预测模块,用于根据所述融合语义序列利用恶意代码行为语义表示模型进行文本向量预测,得到行为语义向量;所述恶意代码行为语义表示模型包括分布式存储模型和分布式词袋库模型;
25.聚类模块,用于根据所述行为语义向量利用恶意代码聚类模型进行聚类,得到聚类后的恶意代码;所述恶意代码聚类模型为训练好的自组织映射神经网络。
26.可选地,所述特征提取模块,具体包括:
27.程序控制流图生成单元,用于对所述恶意代码融合语义文本进行依赖关系分析和程序分块,生成程序控制流图;
28.遍历单元,用于遍历所述程序控制流图,根据所述程序控制流图中的基本块信息和api函数信息确定融合语义序列。
29.可选地,所述预测模块,具体包括:
30.预处理单元,用于将所述融合语义序列进行预处理,得到独热编码;
31.预测单元,用于根据所述独热编码分别利用所述分布式存储模型和所述分布式词袋库模型进行预测,得到分布式存储模型句子向量和分布式词袋库模型句子向量;
32.拼接单元,用于将所述分布式存储模型句子向量和所述分布式词袋库模型句子向量进行拼接,得到行为语义向量。
33.可选地,所述恶意代码聚类模型的训练过程包括:
34.以样本集的行为语义向量为输入,以样本集的聚类后的恶意代码为输出,利用竞争学习策略对所述自组织映射神经网络进行训练,得到恶意代码聚类模型。
35.根据本发明提供的具体实施例,本发明公开了以下技术效果:
36.本发明获取恶意代码融合语义文本;对所述恶意代码融合语义文本进行特征提取,得到融合语义序列;根据所述融合语义序列利用恶意代码行为语义表示模型进行文本向量预测,得到行为语义向量;所述恶意代码行为语义表示模型包括分布式存储模型和分
布式词袋库模型;根据所述行为语义向量利用恶意代码聚类模型进行聚类,得到聚类后的恶意代码;所述恶意代码聚类模型为训练好的自组织映射神经网络。利用恶意代码行为语义表示模型有效学习恶意代码行为的上下文信息并利用恶意代码聚类模型实现恶意代码聚类,从而提高了恶意代码的聚类效果。
附图说明
37.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
38.图1为本发明提供的恶意代码部分控制流图;
39.图2为本发明提供的融合语义特征示意图;
40.图3为本发明提供的pv-dm模型示意图;
41.图4为本发明提供的pv-dbow模型示意图;
42.图5为本发明提供的恶意代码聚类示意图;
43.图6为本发明提供的领域结构图;
44.图7为本发明提供的som聚类模型示意图;
45.图8为本发明提供的邻域变化示意图;
46.图9为本发明提供的恶意代码聚类方法流程示意图。
具体实施方式
47.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
48.本发明的目的是提供一种恶意代码聚类方法及系统,以提高恶意代码的聚类效果。
49.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
50.如图9所示,本发明提供了一种恶意代码聚类方法,包括:
51.步骤101:获取恶意代码融合语义文本。
52.步骤102:对所述恶意代码融合语义文本进行特征提取,得到融合语义序列。
53.其中步骤102,所述对所述恶意代码融合语义文本进行特征提取,得到融合语义序列,具体包括:对所述恶意代码融合语义文本进行依赖关系分析和程序分块,生成程序控制流图;遍历所述程序控制流图,根据所述程序控制流图中的基本块信息和api函数信息确定融合语义序列。
54.对于恶意代码语义分析,程序控制流图cfg的计算是很基础且重要的一步。对于cfg的获取,通常采用反汇编工具ida pro生成反汇编文件.asm,通过函数调用关系和程序跳转生成控制流图,但是粒度较粗且可读性较差。因此,本发明采用angr二进制分析工具计
算cfg。相比于ida pro,angr具有以下优势:第一,angr可以通过静态分析和符号执行,生成静态cfg和动态cfg,并且以基本块作为节点,粒度更细;第二,一般以函数为单位构建的控制流图缺失了函数之间的调用关系,而angr可以从可执行文件中自动生成程序的过程间控制流图icfg,既包括函数调用信息,又包括程序控制流信息。这样通过遍历全局icfg,便可以得到恶意代码的关键语义信息。
55.传统的语义特征提取方式是通过反汇编文件或者动态检测报告提取api调用序列和汇编代码序列作为两种不同的特征形式。在恶意代码实施恶意行为时,需要调用api函数,而这一动作是按照汇编指令执行的,为了挖掘api调用和汇编指令之间更深层次的关系,即恶意代码的api函数调用模式,从icfg中根据api关联性筛选出关键节点,提取关键节点的汇编指令序列,结合与之产生关联的api函数,形成一个同时包含api调用序列和基本块序列的混合序列,将这个序列写入文件中,作为聚类分析的文本特征。为了清晰描述这一过程,以图1为例,说明如何筛选关键节点和提取混合序列。
56.恶意代码icfg中包含大量的基本块节点,通过基本块中是否包含api调用指令筛选出关键基本块,舍弃其余的无效基本块。图1是一个恶意代码的局部控制流图,从图中可以看出,节点0x500084代表调用initializecriticalsection这一api函数,节点0x500080代表调用entercriticalsection这一api函数,分别从基本块0x401850和基本块0x401874可到达。这里主要关注(0x401850-》0x500084)和(0x401874-》0x500080)两条api调用路径,对于(0x401850-》0x500084)这条api调用路径来说,中间的基本块0x4011a4通过二次跳转间接调用api函数,没有实际语义信息,提取融合语义序列时将舍弃中间基本块的信息。对于(0x401874-》0x500080)这条api调用路径也一样,提取出的融合语义序列也不包含中间基本块0x4011ac的信息。
57.因此,该算法的步骤如下:
58.步骤一:将二进制恶意代码程序载入angr分析系统;
59.步骤二:执行依赖关系分析和程序分块,生成控制流图icfg;
60.步骤三:从根节点开始遍历整个icfg,对每条api调用路径存储api函数的调用关系、基本块信息以及基本块中api函数调用的地址;
61.步骤四:根据步骤三得到的信息,为每条api调用路径生成一个包含api函数和汇编指令序列的融合语义序列;
62.步骤五:将每个融合语义序列结合起来,写入文本发明件。
63.如图2所示,描述了api调用序列和api关联基本块序列的融合语义序列生成过程。
64.步骤103:根据所述融合语义序列利用恶意代码行为语义表示模型进行文本向量预测,得到行为语义向量;所述恶意代码行为语义表示模型包括分布式存储模型和分布式词袋库模型。
65.步骤103,具体包括:将所述融合语义序列进行预处理,得到独热编码;根据所述独热编码分别利用所述分布式存储模型和所述分布式词袋库模型进行预测,得到分布式存储模型句子向量和分布式词袋库模型句子向量;将所述分布式存储模型句子向量和所述分布式词袋库模型句子向量进行拼接,得到行为语义向量。
66.从词向量拼接的角度表示恶意代码行为语义,选择doc2vec文档向量(distributed representationss of sentences and documents,doc2vec)表达文本的深
层次语义,最后通过向量拼接的方式得到最终的恶意代码行为语义表示。
67.经过特征提取后,每个恶意代码均对应一个融合语义序列的文本。由于汇编指令的操作数表示形式多种多样,且携带语义信息较少,为减少噪声对恶意代码行为语义分析的影响,在分词前对融合语义序列文本进行规范化的预处理,如图2所示。预处理具体处理规则是:
68.1)对于内存地址类型的操作数替换为“addr”。
69.2)对于常量类型的操作数,大于5000的全部替换为“imme”,小于5000的予以保留。
70.规范化处理后,需要对融合语义文本进行分词处理,如push、ebp、mov、ebp、esp、call、initializecriticalsection等各代表一个词。这样一来,从恶意代码中提取出来的融合语义序列则可看做是由若干个api函数单词和操作码操作数单词所组成的一个段落或者句子。
71.doc2vec又被叫做段落向量,在词向量word2vec基础上开拓出来的,它对句子长度不做限制,任意长短的句子都可以用来做训练样本。算法不仅为每一个单词生成一个词向量,同时也为每一个句子生成一个句子向量,解决了word2vec存在词语之间顺序和句子语法的问题。在doc2vec段落向量框架中,每一个句子都映射到一个唯一的向量,由矩阵d中的一列表示,句子中的每一个单词也映射到一个唯一的向量,由矩阵w中的一列表示。段落向量和词向量都会出现在下一个单词的预测过程中。因此可以认为段落向量是另外一个词,充当记忆体的功能,能够记住当前上下文缺少却包含在整个句子的内容。
72.和word2vec算法一样,doc2vec也有两种模型:分布式存储模型(distributed memory model of paragraph vectors,pv-dm)和分布式词袋模型(distributed bag of words version of paragraph vector,pv-dbow)。
73.分布式存储模型(pv-dm)
74.在模型的实际训练过程中,上下文的长度取决于滑动窗口的大小,初始设定后不再改变。对于一整个句子来说,上下文的选取是通过从句子上的滑动窗口采样得到的,对于同一个句子,每次采样得到的上下文信息都不一样,并且只包含整个句子局部信息,因此在对从同一句子生成的上下文信息的预测中,句子向量在所有上下文中是共享的,但是句子向量不能跨句子共享,然而词向量矩阵是可以跨句子共享的。
75.如图3所示,pv-dm模型每次从一句话中滑动采样固定长度的词,取其中一个词作预测词,其他的作输入词。每次训练时,通过滑动截取句子中一小部分词来训练,段落向量在同一个句子的若干次训练是共享的,这样在每次训练过程中,不光训练了词,还会随着一句话每次滑动取若干次训练的过程中,训练这段话的段落向量,该向量所表达的主旨也会越来越准确。模型结构主要包含输入层、隐藏层和输出层。
76.输入层包含2a个上下文单词的向量wi和储存记忆信息的句子向量pi。
77.隐藏层的向量不仅取决于每一个单词的词向量,还取决于整个句子的句向量。隐藏层向量的计算方法是通过将2a个上下文单词的向量和1个句子向量求平均值的方式在文档中插入公式。公式中的变量用单个字母表示,描述性质或可变部分等可用下标表示。即
[0078][0079]
输出层采用层次softmax结构,核心思想是构建一颗huffman树,叶子节点代表此
表中的每一个单词,根节点是输出层的输入,然后通过huffman树层层二分类来得到每个单词的概率。概率最大的单词为预测出的中间词,与真实的中间词做比较,误差越小越好,并根据误差更新权重矩阵。
[0080]
句子向量和词向量是通过随机梯度下降和反向传播训练的,在随机梯度发生变化的过程中,每次从句子的滑动窗口上采样得到一个固定长度的上下文,然后通过图3的网络计算误差梯度,并根据梯度误差来更新模型中的参数信息。
[0081]
假设在语料库中n个句子,m个单词,想通过模型训练将每一个句子映射为一个p维向量,将每一个单词映射为一个q维向量,这样在模型总共有n*p+m*q个参数。
[0082]
在huffman树中,隐藏层到输出层的softmax映射不是一下子完成的,而是沿着树的结构一层层完成的,即采用二元逻辑回归的方法,判断沿着左子树走还是沿着右子树走,判断的方法是使用sigmoid函数计算两者的概率,哪边的概率大,就沿着哪边走,计算公式为:
[0083][0084]
p(right)=1-p(left)
ꢀꢀꢀ
(3)
[0085]
其中,xw是当前内部节点的词向量,θ是需要从训练样本中求出的逻辑回归的模型参数。p(left)为沿着左子树走的概率,σ为sigmoid函数,函数具体表达式为为当前内部节点的词向量的转置,p(right)为沿着右子树走的概率。
[0086]
回到分层softmax本身,模型训练的目标是找到合适的所有节点的词向量和所有内部节点的参数,使得最大化平均对数似然函数,计算方法如下:
[0087][0088]
其中m为词语数量,k为滑动窗口的大小,di为当前窗口中上下文单词所在句子的段落向量。i为滑动窗口里最中间词语的序号,p为预测出目标词wi的概率。
[0089]
训练结束以后,得到训练样本中所有的词向量和每句话对应的句子向量,在预测新句子的时候,将新句子向量初始化,然后放入模型中重新根据随机梯度下降不断迭代求得最终稳定下来的句向量,但是在预测新的句向量过程中,模型里的词向量、以及隐藏层到输出层的参数不会发生变化的,只是在不断的迭代中更新新句子的向量。
[0090]
分布式词袋库模型pv-dbow
[0091]
doc2vec的第二个模型是如图4所示的分布式词袋库模型pv-dbow,这种训练方法是忽略段落的上下文信息,让模型随机预测段落中的一个单词。
[0092]
具体过程是在每次滑动固定窗口的时候,从窗口中随机取一个词作为预测任务,从而形成一个给定段落向量进行词预测的多分类任务,模型结构如图4所示。
[0093]
对于一个给定的训练文本,滑动窗口的大小是固定的,随着窗口依次滑动,根据当前窗口所在段落的段落向量,来预测段落中的词。
[0094]
两种模型训练过程都是把一个文本当做一个段落或者句子,和文本中的词语们一起作为输入,训练文本向量和网络权重,在预测阶段,固定词向量和网络权重,只更新新文本的向量,直至收敛。根据后续任务的不同,pv-dbow模型和pv-dm模型的表现也将不同,具
体哪一种模型表现更好,需要根据后续任务的具体情况进行判断。但是将两者结合起来常常会更加出色的完成任务。因此,在本发明中,恶意代码行为语义的最终表示是由分布式存储模型pv-dm和分布式词袋库模型pv-dbow获得的向量拼接而成的。两种模型拼接表示恶意代码行为语义的过程如表1所示。
[0095]
表1两种模型拼接表示恶意代码行为语义的过程
[0096][0097]
第一步,将预处理后的文本独热编码(one-hot编码);第二步,将所得到的的one-hot编码分别放入预训练好的pv-dm和pv-dbow模型中进行预测得到相应的句子向量;第三步,将两个句子向量拼接起来,得到完整的行为语义特征。
[0098]
步骤104:根据所述行为语义向量利用恶意代码聚类模型进行聚类,得到聚类后的恶意代码;所述恶意代码聚类模型为训练好的自组织映射神经网络(som)。
[0099]
所述恶意代码聚类模型的训练过程包括:以样本集的行为语义向量为输入,以样本集的聚类后的恶意代码为输出,利用竞争学习策略对所述自组织映射神经网络进行训练,得到恶意代码聚类模型。
[0100]
提取到恶意代码行为语义向量后,需要对其进行聚类识别。每一个向量代表一个恶意代码,通过向量之间的空间距离判断恶意代码的相似性。恶意代码聚类分析过程如图5所示。
[0101]
som是一种无监督的竞争学习神经网络,通过模拟人脑处理信号的特点,依靠神经元之间互相竞争和近邻关系函数来维持输入层的原始拓扑结构。该网络结构是由kohonen于1981年提出,与传统的聚类算法相比,它的特点是采用竞争学习策略,无监督学习模型,不需要额外的标签,可以在维持输入数据的拓扑结构的情况下映射到曲面或平面,具有很
高的准确性和鲁棒性。
[0102]
som的网络结构包括输入层和竞争层。其中输入层的神经元个数取决于输入向量的维数,一个神经元对应一个维数。竞争层也叫输出层,竞争层结构取决于神经元个数和神经元拓扑结构,常见拓扑结构是二维平面结构,常用的有矩形和六边形,如图6所示,邻域拓扑以0为中心,1与0直接相邻,2与0距离最远
[0103]
在本发明的som中,竞争层采用二维平面拓扑结构,神经元排列方式采用矩形排列,通过竞争学习策略选出优胜神经元。针对恶意代码行为语义向量的som聚类模型如图7所示。
[0104]
在对恶意代码进行聚类分析过程中,模型输入层共有n个神经元,表示输入的是一个n维向量,代表恶意代码的行为语义,竞争层是一个二维六边形点阵神经元,输入层神经元和竞争层神经元采用全连接。基于som的恶意代码聚类模型具体学习过程包含竞争、合作和更新。
[0105]
竞争
[0106]
竞争过程需要首先对输出层各神经元权向量赋予初始值并进行归一化处理,对学习率赋上初始值。归一化处理公式如下:
[0107][0108][0109]
其中,为归一化处理后的输入向量,为归一化处理后的神经元权重向量,对于输入向量x=(x1,x2,...,xn),通过计算输入向量x与每一个竞争层神经元权重向量wi的距离,从中选出距离最小的节点作为优胜神经元。这里通过计算向量之间的内积作为竞争策略,其数学计算公式为:
[0110][0111]
式中xi为输入向量x=(x1,x2,...,xn)中的某一元素,yj为某一竞争层节点权重向量的某一元素。n为向输入向量x的维度,当输入向量为x时,第t个神经元获胜,需满足:
[0112][0113]wt
为获胜神经元的权重向量。
[0114]
合作
[0115]
确定优胜神经元之后,需要对邻域形状进行选择。图6为自组织映射神经网络常采用的两种领域形状,分别为方形邻域和六边形邻域。本文恶意代码聚类模型采用六边形邻域。在邻域范围内,位于中心位置的深灰色实心圆代表优胜神经元,周围的空心神经元则代表邻域内的其他神经元。位于邻域内的神经元都将处于激活状态,在不同程度上会得到更新权值,而邻域外的神经元都将处于沉睡状态,在不同程度上会受到抑制。
[0116]
在训练过程中,邻域范围取决于邻域半径的大小,将其记作ni(n),代表n次迭代后的拓扑邻域半径,即邻域包含的区域。训练过程中,ni(n)不断变化,其变化规律为:
[0117][0118]
其中,int(
·
)表示对函数取整,ni(0)是拓扑邻域初始值,n为迭代次数
[0119]
图8表述了公式(9)的约束条件下的邻域变化情况。分析公式(9)和六边形邻域形态的整体变化,随着迭代次数增加,邻域的拓扑范围表现为收缩状态。
[0120]
更新
[0121]
更新邻域区间内所有优胜神经元的权值状态,直到满足结束条件。状态更新具体公式如下:
[0122]
wj(n+1)=wj(n)+θ(u,v,j)η(n)(x-wj(n))
ꢀꢀꢀ
(10)
[0123]
其中,n的取值从1到n,θ(u,v,j)为邻域内节点更新幅度约束,基于邻域内节点离优胜节点的距离计算各自更新的幅度,基本思想是距离优胜节点越近,更新幅度越大;距离优胜节点越远,更新幅度越小。η(n)为学习率,随着训练次数增加,η(n)会逐渐减小,即调整的幅度会逐渐减小,权重的调整逐渐趋近聚类中心。η(n)的变化规律为:
[0124][0125]
其中,η(0)为初始学习速率,n为总迭代次数。当学习率η(n)小于初始设定的阈值时,结束训练;否则将调整过的权重状态继续归一化后,重复以上步骤迭代训练,直至满足结束条件。
[0126]
本发明利用新的恶意代码行为特征提取方法,通过对大量恶意代码二进制文件进行分析,提取出能反映恶意代码行为的关键性信息。基于doc2vec的恶意代码行为语义表示模型有效的学习到了恶意代码行为的上下文语义信息,利用基于自组织映射神经网络som的恶意代码聚类模型,通过神经元竞争样本的学习方式,将样本映射到优胜神经元上实现恶意代码聚类。从行为语义特征入手,对恶意代码可执行文件进行反汇编分析后,选取恶意代码的api调用序列和api关联的基本块序列作为语义特征,生成恶意代码融合语义文本,借助文本分析思想,采用基于自组织映射神经网络的聚类方法对恶意代码进行聚类。
[0127]
本发明还提供具体的数据集和实验方案
[0128]
本发明实验所采用的数据集来源于vx heavens恶意样本库,该样本库提供了很多病毒源码,是恶意代码研究的主要数据来源。本发明数据集包括木马、后门、蠕虫、下载器等6种恶意代码家族。为保证计算的有效性和规范性,在进行行为语义提取和聚类分析之前,对原始数据进行了清洗,去除无法正确反编译和无法提取有效行为语义的样本,最后获得1752篇有效恶意代码融合语义文本,语义文本大小最长为895词,最短为98词。表2说明了恶意代码家族信息和样本数量。数据集按照8:2比例划分为训练集和测试集。
[0129]
表2恶意代码家族信息
[0130]
家族名称样本数量onlinegames301obfuscated259small289vb311agent285
bifrose307
[0131]
为了验证本发明提出的基于doc2vec的恶意代码行为语义表示模型的有效性,设置分布式存储模型dm和分布式词袋库模型dbow方式作为对比实验。在数据处理过程中,恶意代码融合语义序列向量的维数设置为300,滑动窗口大小设为15。恶意代码som聚类模型的输入层神经元个数为输入向量的维数,在本发明中输入层神经元个数为恶意代码行为语义向量维数,竞争层拓扑结构设为14*14。
[0132]
在恶意代码聚类模型评价中,采用外部评价指标和内部评价指标两个维度进行评判。外部评价指标需要借助样本的真实标签信息进行对比分析,常用的包括调整兰德系数(ari)、v-measure、fmi以及聚类准确率ac。内部指标不需要其他数据就可以进行评估,主要包括轮廓系数(sc)。这几个指标综合衡量了聚类模型的簇内紧密度、簇间分离度、分类适确度和聚类准确度。
[0133]
ari的取值范围为-1到1,值越大越好,反映两种划分的重叠程度。计算公式为:
[0134][0135]
其中,e(ri)为兰德系数的期望值,ri为兰德系数,计算公式为:
[0136][0137]
其中,为从n个样本中随机抽取2个样本,共有多少个组合,a为将相似样本归为同一个簇的样本对数,d为将相似的样本归为不同的簇的样本对数,分母表示任意两个样本为一类有多少种组合,是数据集中可以组成的总样本对数。
[0138]
v-measure是一个关于同质性(homogeneity,h值)和完整性(completeness,c值)的调和平均。同质性是指每一个聚簇只包含单个类的样本,完整性是指给定类的样本都分配给同一个聚簇。v-measure值是h值和c值的调和平均值,计算公式如下:
[0139][0140]
显然,v-measure的取值范围为0到1,v-measure值越大,说明聚类效果越好。
[0141]
fmi是对聚类结果和真实值计算得到的召回率和精准率,进行几何平均的结果,取值范围为0到1,值越接近于1越好。计算公式为:
[0142][0143]
其中,a表示将相似样本归为同一个簇的样本对数,b表示将不相似样本归为同一个簇的样本对数,c表示将相似样本归为不同簇的样本对数。
[0144]
聚类准确率ac用于比较聚类标签和数据真实标签。计算公式为:
[0145][0146]
其中,ri,si分别表示样本xi所对应的聚类标签和真实标签,n为数据总个数,δ表示指示函数,若ri,si相同,则函数值取1,否则取0。
[0147]
对于某个样本而言,将该样本与簇内其他样本点之间的平均距离定义为簇的内聚
度a,将该样本与最近簇中所有样本点之间距离的平均值定义为簇之间的分离度b,则该样本的轮廓系数sc的计算公式如下:
[0148][0149]
对于全体样本的集合而言,轮廓系数是每个样本轮廓系数的平均值。取值范围为-1到1,当簇间分离度b远大于内聚度a时,轮廓系数的值近似于1。所以该指标的值接近1,聚类效果越佳。
[0150]
本发明获取二进制恶意代码样本;使用angr工具对步骤一中的恶意代码二进制文件进行语义特征提取,将提取出来的语义特征以文本形式保存,形成恶意代码融合语义文本;对提取出来的恶意代码融合语义文本进行预处理,主要包括文本规范化处理和分词处理;以预处理后的恶意代码融合语义文本作为语料库,基于doc2vec算法进行句向量训练,训练恶意代码语义表示模型,得到词向量字典和文本向量字典;每一个恶意代码融合语义文本将会转化成一个唯一与之对应的向量,这个向量就是训练得到的文本向量。以该文本向量作为som的输入数据集,训练恶意代码聚类模型。在进行恶意代码聚类分析时,将待测样本预处理,得到新的恶意代码融合语义文本;将新的恶意代码融合语义文本输入到预训练过的恶意代码语义表示模型中,进行文本向量预测,将预测出来的文本向量作为样本的语义向量将上一步的语义向量作为聚类模型的输入,进行聚类分析,最终得到聚类后的恶意代码。
[0151]
本发明还提供一种恶意代码聚类系统,包括:
[0152]
获取模块,用于获取恶意代码融合语义文本。
[0153]
特征提取模块,用于对所述恶意代码融合语义文本进行特征提取,得到融合语义序列。
[0154]
预测模块,用于根据所述融合语义序列利用恶意代码行为语义表示模型进行文本向量预测,得到行为语义向量;所述恶意代码行为语义表示模型包括分布式存储模型和分布式词袋库模型。
[0155]
聚类模块,用于根据所述行为语义向量利用恶意代码聚类模型进行聚类,得到聚类后的恶意代码;所述恶意代码聚类模型为训练好的自组织映射神经网络。
[0156]
在实际应用中,所述特征提取模块,具体包括:
[0157]
程序控制流图生成单元,用于对所述恶意代码融合语义文本进行依赖关系分析和程序分块,生成程序控制流图;遍历单元,用于遍历所述程序控制流图,根据所述程序控制流图中的基本块信息和api函数信息确定融合语义序列。
[0158]
在实际应用中,所述预测模块,具体包括:
[0159]
预处理单元,用于将所述融合语义序列进行预处理,得到独热编码。预测单元,用于根据所述独热编码分别利用所述分布式存储模型和所述分布式词袋库模型进行预测,得到分布式存储模型句子向量和分布式词袋库模型句子向量;拼接单元,用于将所述分布式存储模型句子向量和所述分布式词袋库模型句子向量进行拼接,得到行为语义向量。
[0160]
在实际应用中,所述恶意代码聚类模型的训练过程包括:
[0161]
以样本集的行为语义向量为输入,以样本集的聚类后的恶意代码为输出,利用竞争学习策略对所述自组织映射神经网络进行训练,得到恶意代码聚类模型。
[0162]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0163]
本发明中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1