一种基于对比学习的恶意软件检测方法技术

技术编号:38409639 阅读:16 留言:0更新日期:2023-08-07 11:16
本发明专利技术公开了一种基于对比学习的恶意软件检测方法,首先提取软件样本中的API序列,并进行数据清洗与样本序列预处理。每次对BERT模型进行微调,得到BERT

【技术实现步骤摘要】
一种基于对比学习的恶意软件检测方法


[0001]本专利技术涉及恶意软件分类和深度学习
,特别涉及一种基于对比学习的恶意软件检测方法。

技术介绍

[0002]随着互联网技术的发展水平飞速提升,信息技术在人们的生活中扮演了极其重要的角色。一些攻击者通过在互联网中传播恶意软件来牟取利益,这成为了威胁国家信息安全建设的重大隐患之一,给人们的日常生活也带来了极其恶劣的影响。因此,对软件的安全评估与检测日渐迫切,如何有效的检测和分类恶意软件,是信息安全领域的一个重要的研究主题。
[0003]API调用是软件运行过程中最重要的行为,因此分析API序列是实现恶意软件检测和分类的重要手段。API序列分析的主要方法包括序列模式挖掘、依赖图分析、时序模型等。为了提高恶意软件的分类效率,深度学习方法已经被广泛应用于各种恶意软件分类方法中,如长短期记忆网络(LSTM),卷积神经网络(CNN)等,这些方法避免了传统机器学习中手动特征提取的复杂性,降低了分析人员由于经验不足、能力不够而造成的对恶意软件分类检测的准确率降低的影响,可以有效地对抗恶意软件攻击。
[0004]预训练模型通过庞大的预训练知识,只要通过下游任务的简单微调就能够很好的应用于具体任务,并且相对于LSTM和CNN而言能够学习更深层次的特征,在NLP领域取得了巨大的成就。近年来,不少专家学者也将预训练模型应用于恶意软件检测并获得了优异的实验结果,证明了预训练模型在恶意软件检测领域的巨大潜力。然而,预训练模型存在模型参数过多以及推理时间过长的问题,在计算资源受限以及推理速度要求高的场景下并不适用,如何保留预训练模型学习到的知识并将其轻量化是急需的。

技术实现思路

[0005]针对上述问题,本专利技术结合了预训练模型的一些研究成果和知识蒸馏的方法设计了一种基于对比学习的恶意软件检测方法,可以在保留预训练模型学习到的知识的情况下减少模型的参数以及推理时间。
[0006]技术方案:为了实现上述目的,本专利技术提供一种基于对比学习的恶意软件检测方法,包括如下步骤:
[0007]步骤S1,软件样本数据获取:使用静态工具或者使用沙箱动态运行来提取软件样本中的API序列,并进行数据清洗。
[0008]步骤S2,样本序列预处理:将进行数据清洗后的API序列预处理,得到基于Transformer的双向编码BERT(BidirectionalEncoder Representations from Transformer)的输入,表示为s
E
,并将s
E
送入BERT编码层进行处理,得到BERT编码层的输出O
BERT
,将O
BERT
作为软件API序列的初始编码。
[0009]步骤S3,BERT模型微调:使用O
BERT
以及对应的标签信息来对BERT模型进行微调,微
调使用的损失函数为交叉熵损失函数以及监督对比损失函数,得到BERT

Teacher模型。
[0010]步骤S4,模型蒸馏:为了减少BERT模型的参数规模以及线上推理时间,通过BERT

Teacher构造教师模型与学生模型,并进行训练。
[0011]步骤S5,软件样本实时分类:将待测样本输入步骤S1

S2中得到相应的软件序列编码,并将所述序列编码载入所述训练好的学生模型,以预测恶意软件家族类型对应的标签值,进而对恶意软件家族进行分类。
[0012]优选地,所述S1步骤中,利用第三静态分析工具或者沙箱动态运行的方法提取软件的API序列,并通过反病毒引擎得到所述样本的标签。
[0013]优选地,S1所述数据清洗为:API序列特征需要去除序列中的标点符号以及特殊字符,仅保留大小写英文字母和数字,最后将大写字母统一转化为小写字母。
[0014]优选地,所述S2步骤中,对所述样本API序列预处理具体包括:
[0015]S201:将步骤S1中得到的API序列经BERT模型的分词器分词后得到词表示w。并由词表示w构成对应的输入序列s。
[0016]所述BERT模型由一个分词器、一个嵌入层、12个双向Transformer编码层以及分类器顺序堆叠构成。
[0017]S202:将输入序列s截取或者补齐到统一长度,并在其两端加入BERT分类符[CLS]以及句子分界表示符[SEP],来表示句子的开始和结束,得到嵌入层的输入序列s


[0018]s

={w
[CLS],w1,w
2,
...,w
n
,w
[SEP]}
[0019]其中n表示所设定的统一长度的大小,且由于BERT模型本身输入的限制,n的长度需小于等于510。
[0020]S203:将s

输入BERT的嵌入层,BERT的嵌入层通过结合词嵌入,段落嵌入以及位置嵌入三个嵌入方法来形成最终的嵌入向量:s
E
={E
[CLS],E1,E2,...,E
n
,E
[SEP]};然后将s
E
输入到BERT模型的双向Transformer编码层中,并得到BERT编码层的输出O
BERT
,O
BERT
为恶意软件API序列的初始编码,E
[CLS]编码后得到的隐状态向量h
CLS

[0021]优选地,所述S3步骤中,对BERT模型的微调具体包括:
[0022]S301:将隐状态向量h
CLS
作为API序列的语义表示,并输入到分类器中,分类器的通过双层的全连接层,然后连接一个softmax函数来进行分类,公式如下:
[0023]y
i
=softmax(h
CLS
W
i
+b
i
)
[0024]其中映射矩阵l
h
和l
i
分别表示隐状态向量维度和恶意软件类别标签的总数,i表示第i个样本,b
i
为第i个样本的偏置。
[0025]S302:为了使目标函数中的概率值尽量大,使用交叉熵损失函数CE(eross Entropy)用来衡量模型的预测值和真实值之间的差异,公式如下:
[0026][0027]其中,N为样本数,y
i
为实际类别标签,y

i
为预测输出的类别。
[0028]结合监督对比损失SCL(Supervised Contrastive Loss)函数,进一步增加样本的互信息,公式如下:
[0029][0030]其中Φ(x
i
)表示目标API序列在向量空间中表示,τ为温度参数,为同一批次(batch)中标签相同的样本数量,结合交叉熵损失函数以及对比损失函数本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于对比学习的恶意软件检测方法,其特征在于,包括如下步骤:步骤S1,提取软件样本中的API序列,并进行数据清洗;步骤S2,将进行数据清洗后的API序列预处理,得到基于Transformer的双向编码BERT的输入s
E
;将s
E
送入BERT编码层进行处理,得到BERT编码层的输出O
BERT
,将O
BERT
作为软件API序列的初始编码;步骤S3,使用O
BERT
以及对应的标签信息对BERT模型进行微调,得到BERT

Teacher模型;步骤S4,通过BERT

Teacher构造教师模型与学生模型,并进行训练;步骤S5,将待测样本经过步骤S1

S2,得到相应的软件序列编码,并将序列编码载入训练好的学生模型,以预测恶意软件家族类型对应的标签值,进而对恶意软件家族进行分类。2.根据权利要求1所述的一种基于对比学习的恶意软件检测方法,其特征在于,在S1步骤中,使用第三静态分析工具或者沙箱动态运行的算法提取软件样本的API序列,并通过反病毒引擎得到所述软件样本的标签。3.根据权利要求2所述的一种基于对比学习的恶意软件检测方法,其特征在于,在S1步骤中,所述数据清洗具体操作为:保留API序列中大小写英文字母和数字,其余的标点符号以及字符去除,然后将大写字母统一转化为小写字母。4.根据权利要求3所述的一种基于对比学习的恶意软件检测方法,其特征在于,在S2步骤中,所述BERT模型由一个分词器、一个嵌入层、十二个双向Transformer编码层以及分类器顺序堆叠构成。5.根据权利要求4所述的一种基于对比学习的恶意软件检测方法,其特征在于,在S2步骤中,对所述API序列预处理具体操作如下:S201:将进行数据清洗后的的API序列经BERT模型的分词器分词,得到词表示w,并由词表示w构成输入序列s;S202:将输入序列s截取或者补齐到统一长度,并在其两端加入BERT分类符[CLS]以及句子分界表示符[SEP],分别表示句子的开始和结束,得到嵌入层的输入序列s

:S

={w
[CLS]
,w1,w2,...,w
n
,w
[SEP]
}其中n表示所设定的统一长度的大小;S203:将s

输入BERT的嵌入层,BERT的嵌入层通过结合词嵌入,段落嵌入以及位置嵌入三个嵌入算法形成嵌入向量:S
E
={...

【专利技术属性】
技术研发人员:徐镕恒周丽寇亮张纪林刘华
申请(专利权)人:杭州电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1