1、 基于预训练语言模型的安卓恶意软件检测方法*印 杰1,黄肖宇1,刘家银1,牛博威2,谢文伟3,4(1.江苏警官学院计算机信息与网络安全系,江苏 南京 2 1 0 0 3 1;2.江苏省公安厅网络安全保卫总队,江苏 南京 2 1 0 0 2 4;3.趋势科技股份有限公司网络安全部,江苏 南京 2 1 0 0 1 2;4.南京邮电大学开放计算与普适感知前沿实验室,江苏 南京 2 1 0 0 0 3)摘 要:近年来,基于有监督机器学习的安卓恶意软件检测方法取得了一定进展。但是,由于恶意软件样本搜集困难,带标签的数据集规模一般较小,导致训练出的有监督模型泛化能力有限。针对这一问题,提出无监督和有监督相
2、结合的恶意软件检测方法。首先,使用无监督方法预训练语言模型,从大量无标记A P K样本中学习字节码中丰富、复杂的语义关系,提高模型的泛化能力。然后,利用有标记的恶意软件样本对语言模型进行微调,使其能更有效地检测恶意软件。在D r e b i n等实验数据集上的实验结果表明,相比基准方法,提出的方法泛化能力更好,检测性能更优,最高检测准确率达9 8.7%。关键词:安卓;恶意软件检测;预训练语言模型;无监督学习中图分类号:T P 3 9 1.4 1文献标志码:Ad o i:1 0.3 9 6 9/j.i s s n.1 0 0 7-1 3 0 X.2 0 2 3.0 8.0 1 2A n A n
3、d r o i d m a l w a r e d e t e c t i o n m e t h o d b a s e d o n p r e-t r a i n e d l a n g u a g e m o d e lY I N J i e1,HUANG X i a o-y u1,L I U J i a-y i n1,N I U B o-w e i2,X I E W e n-w e i3,4(1.D e p a r t m e n t o f C o m p u t e r I n f o r m a t i o n a n d N e t w o r k S e c u r i t
4、y,J i a n g s u P o l i c e I n s t i t u t e,N a n j i n g 2 1 0 0 3 1;2.C y b e r S e c u r i t y G u a r d C o r p s,J i a n g s u P r o v i n c i a l S e c u r i t y D e p a r t m e n t,N a n j i n g 2 1 0 0 2 4;3.D e p a r t m e n t o f N e t w o r k S e c u r i t y,T r e n d M i c r o I n c o
5、r p o r a t e d,N a n j i n g 2 1 0 0 1 2;4.F O C U S L A B o f N a n j i n g U n i v e r s i t y o f P o s t s a n d T e l e c o mm u n i c a t i o n s,N a n j i n g 2 1 0 0 0 3,C h i n a)A b s t r a c t:I n r e c e n t y e a r s,s u p e r v i s e d m a c h i n e l e a r n i n g-b a s e d A n d r o
6、 i d m a l w a r e d e t e c t i o n m e t h o d s h a v e m a d e s o m e p r o g r e s s.H o w e v e r,d u e t o t h e d i f f i c u l t y i n c o l l e c t i n g m a l w a r e s a m p l e s,t h e s i z e o f l a-b e l e d d a t a s e t s i s g e n e r a l l y s m a l l,w h i c h l e a d s t o l i
7、 m i t e d g e n e r a l i z a t i o n a b i l i t y o f t h e t r a i n e d s u p e r v i s e d m o d e l s.T o a d d r e s s t h i s p r o b l e m,a n u n s u p e r v i s e d a n d s u p e r v i s e d c o m b i n e d m a l w a r e d e t e c t i o n m e t h o d i s p r o p o s e d.F i r s t l y,a l
8、 a n g u a g e m o d e l i s p r e-t r a i n e d o n a l a r g e a m o u n t o f u n l a b e l e d A P K s a m p l e s u s i n g u n s u p e r v i s e d m e t h o d s t o l e a r n t h e r i c h a n d c o m p l e x s e m a n t i c r e l a t i o n s h i p s b e t w e e n d i f f e r e n t o p e r a t
9、 o r s.T h e n,t h e p r e-t r a i n e d l a n g u a g e m o d e l i s f i n e-t u n e d b y t h e l a b e l e d m a l w a r e s a m p l e s t o r e a l i z e t h e m a l-w a r e d e t e c t i n g a b i l i t y.E x p e r i m e n t s o n d a t a s e t s s u c h a s D r e b i n d e m o n s t r a t e t
10、 h a t t h e p r o p o s e d m e t h o d h a s b e t t e r g e n e r a l i z a t i o n a b i l i t y a n d d e t e c t i o n p e r f o r m a n c e c o m p a r e d w i t h t h e b a s e l i n e m e t h o d,w h i c h a-c h i e v e s a m a x i m u m a c c u r a c y o f 9 8.7%.K e y w o r d s:A n d r o
11、i d;m a l w a r e d e t e c t i o n;p r e-t r a i n e d l a n g u a g e m o d e l;u n s u p e r v i s e d l e a r n i n g*收稿日期:2 0 2 2-1 1-0 1;修回日期:2 0 2 3-0 1-0 6基金项目:国家自然科学基金(6 2 2 7 2 2 0 3);浙江大学C A D&C G国家重点实验室开发课题(A 2 1 0 2);南京大学计算机软件新技术国家重点实验室开放基金(K F K T 2 0 2 0 B 1 9);江苏省高等学校自然科学基金(2 1 K J D
12、 5 2 0 0 0 3)通信作者:刘家银(l i u j i a y i n j s p i.c n)通信地址:2 1 0 0 3 1 江苏省南京市浦口区石佛三宫4 8号江苏警官学院计算机信息与网络安全系A d d r e s s:D e p a r t m e n t o f C o m p u t e r I n f o r m a t i o n a n d N e t w o r k S e c u r i t y,J i a n g s u P o l i c e I n s t i t u t e,4 8 S h i f o S a n g o n g,P u k o u D i
13、 s t r i c t,N a n j i n g 2 1 0 0 3 1,J i a n g s u,P.R.C h i n a C N 4 3-1 2 5 8/T PI S S N 1 0 0 7-1 3 0 X 计算机工程与科学C o m p u t e r E n g i n e e r i n g&S c i e n c e第4 5卷第8期2 0 2 3年8月 V o l.4 5,N o.8,A u g.2 0 2 3 文章编号:1 0 0 7-1 3 0 X(2 0 2 3)0 8-1 4 3 3-1 01 引言随着安卓(A n d r o i d)操作系统的广泛应用,基于A n
14、 d r o i d平台的手机应用A P P(A P P l i c a t i o n)也迎来爆炸式增长。截止2 0 2 1年6月底,我国应用市场监测到3 0 2万款A P P,其中,A n d r o i d平台的A P P数量为1 6 6万1。A n d r o i d平台具有代码开源、开发简易、受众广泛等优点,但这也使得A n-d r o i d平台成为网络攻击者的重点攻击目标,面向A n d r o i d平台的恶意软件也呈现出井喷式增长。奇安信发布的A n d r o i d平台安全态势分析报告显示,2 0 2 0年奇安信威胁情报中心累计截获 新增A n d r o i d平 台
15、恶 意 软 件 共2 3 0万 个,平 均 每 天6 3 0 1个,尤其在1 0月,拦截的新增恶意软件数量达到了4 3.6万2。因此,如何有效检测A n d r o i d恶意软件已成为一个亟待解决的问题。机器学习模型展现出的学习能力越来越强大,在传统基于静态分析和动态分析的恶意软件检测方法中引入机器学习技术已经成为该领域研究的主要趋势3。例如,基于n-g r a m模型的恶意软件检测方法首先提取恶意代码的灰度图像特征和n-g r a m特征,构建恶意软件的特征库;然后利用深度学习算法训练分类模型,实现对恶意软件的识别。相对于传统方法,引入机器学习模型的恶意软件检测方法表现出了一定的优势,但其
16、泛化能力普遍较弱,检测性能难以进一步提升。导致上述问题的原因之一是有监督模型学习需要的有标签数据集规模过小。例如,周裕娟等4提出了一种基于应用程序中权限信息的安卓恶意软件检测方法,但该研究的实验样本规模较小,仅包含4 4 7个样本,其中2 4 6个样本用于训练,2 0 1个样本用于测试。这是因为安卓恶意软件搜集困难,高度的加固防护、关键配置缺失等原因导致难以构建大规模的有标签数据集。基于少量的有监督数据训练的检测模型质量不高。例如,n-g r a m模型构建的特征通常具有较高的维度,有的甚至达到百万数量级。即使n-g r a m模型常采用特征选择来降低特征向量维度,但在训练样本过少的情况下,模
17、型仍不可避免会对训练数据形成过拟合,导致泛化能力较差。自然语言处理5、迁移学习6等领域的成功经验表明,在大量无标记数据上进行无监督学习,可以有效提升模型的泛化能力。在当前恶意软件检测领域中,虽然有标记的数据集规模小,但存在大量未标记的应用程序样本,这些样本可以提供丰富的语义关系,而传统方法忽略了对这些信息的利用。因此,本文提出一种基于预训练语言模型的安卓恶意 软 件 检 测 方 法。首 先,在 大 规 模 无 标 签A P K(A n d r o i d P a c K a g e)样本集(8 4 4 8条)上建立语言模型,包括循环神经网络R NN(R e c u r r e n t N e
18、u r a l N e t w o r k)模型和B E R T(B i d r e c t i o n a l E n-c o d e r R e p r e s e n t a t i o n s f r o m T r a n s f o r m e r s)模型。该语言模型可描述A P K中指令间的复杂语义关系。其次,利用少量有标签的恶意软件样本在预训练的语言模型上进行微调,提高模型对恶意软件的检测能力。由于在预训练阶段,语言模型已从大规模的无标签样本中学习了丰富的先验知识,具备较好的泛化能力,再基于少量的有标签样本数据也能实现较好的检测准确率。本文的主要工作如下:首先,提出一种基于预
19、训练语言模型的安卓恶意软件检测方法,该方法结合无监督和有监督学习,利用大量未标记样本的语义信息有效提升模型检测能力;其次,采用R NN和B E R T 2种语言模型对其进行测试和比较,结果表明R NN模型在检测性能上略优一筹,但B E R T模型随着训练数据量的增长有更大的预测潜力;最后,在测试数据集上的实验结果表明,本文方法的整体检测准确率最高达到了9 8.7%,优于基准方法的。2 相关工作2.1 基于特征工程和机器学习的恶意软件检测方法在检测移动设备的恶意软件问题上,已经有大量的研究工作,主要建立在对软件数字签名、操作行为等方面进行分析的基础之上。传统的静态分析方法7,8,根据程序代码比较
20、程序与已知恶意软件,采用模式匹配或其他启发式方法进行检测。上述方法检测速度快,但对于恶意代码库中未出现过的情况无能为力,且病毒库的更新与维护也需要耗费大量的人力物力。此外,恶意代码编写者仅仅通过混淆、加壳等简单的变种方式便可绕过上述检测机制。可见,传统方法已无法适应恶意代码快速更新的现状。为解决上述问题,在更广泛的恶意软件检测领域中,基于特征工程的机器学习技术已经广泛地应用于动态9,1 0和静态1 1 1 3恶意软件检测。例如,静态恶意软件检测方法首先利用程序的静态数据,如A P I调用、意图、权限和命令等,来提取相关特征;然后结合机器学习分类器,如支持向量机S VM4341C o m p u
21、 t e r E n g i n e e r i n g&S c i e n c e 计算机工程与科学 2 0 2 3,4 5(8)(S u p p o r t V e c t o r M a c h i n e)1 4、N a i v e B a y e s和k-N e a r e s t N e i g h b o r1 5等实现检测。还有使用应用程序请求权限的静态特征1 6,1 7来实现恶意代码检测的方法。与基于高层特征与特征工程模型提取特征的方法不同,基于n-g r a m模型的恶意软件检测方法1 8使用低层操作码序列作为特征。n-g r a m模型可用于训练分类器以区分恶意软件和良性
22、软件。即使基于1-g r a m的特征,即每个操作码出现的频次,也可以实现恶意软件和良性软件的区分。然而,当前主流的基于n-g r a m的方法,仍然存在可扩展性较差和检测性能较低等缺点。这是因为当n-g r a m模型的元数增加时,其构建的特征向量的维度会迅速增长。当有标签的恶意软件数据集规模较小时,模型容易产生过拟合现象,进而影响其泛化能力。此外,随着恶意软件的发展与复杂化的加剧,基于n-g r a m的方法也终将无法满足精准检测恶意软件的需求。F i g u r e 1 F l o w c h a r t o f t h e p r o p o s e d m e t h o d图1 本
23、文所提方法流程图2.2 R N N及B E R T语言模型为了解决n-g r a m模型计算量随元数指数增长和数据稀疏的问题,基于循环神经网络的语言模型1 9被提出。循环神经网络语言模型利用前文信息影响后序结点的输出,以更好地描述序列当前输出与前文信息的关系,进而解决时间序列输入输出问题。该语言模型一定程度上避免了数据稀疏,得到了较优的词表征,进而提高模型泛化能力,但在面对更长文本时表现欠佳。为了更好地捕捉长距离信息,研究人员引入了注意力机制,在长文本中更好地实现词语之间的相关性分配,进而引出了以T r a n s f o r m e r结构为基石的预训练语言模型,其代表性模型为D e v l
24、 i n等2 0提出的B E R T。该模型极大地缓解了上述语言模型的稀疏性、泛化性以及长期依赖性不足的问题,相应地,其对于训练数据的需求量也随之提高。2.3 预训练方法目前,预训练模型在大多数自然语言处理任务中大放异彩,以绝对优势取代了早期的传统词向量技术。实验结果表明,预训练模型2 1能够提供更好的初始化参数,在目标任务上具备更好的泛化性能,还是一种有效的正则化手段,避免了模型在小数据集上过拟合情况严重的问题。因此,通过建立语言模型,使用无监督的方法学习不同字节码之间的复杂语义关系,再面向具体任务进行微调是当前训练数据量较小时提升泛化能力的主要手段。预训练模型的强大离不开其对迁移学习2 2
25、的成功实现。迁移学习首先在一个数据集上训练得到基础模型,再通过微调的方式适应不同任务的需求。如文献6 结合C NN在图像分类任务中的优势与迁移学习的思想,提出了面向恶意软件检测的通用分类模型,该模型能够适应不同数据集,泛化能力远超传统方法的。3 基于预训练语言模型的A n d r o i d恶意软件检测方法3.1 总体框架本文提出的基于预训练语言模型的恶意软件检测方法整体流程如图1所示,使用的数据包括监督数据集S=(xi,yi)和无监 督 数 据 集U=xj,其中,xi、xjA,A为A P K文件的集合;yi为2值标签,0表示对应的xi为非恶意软件,15341印 杰等:基于预训练语言模型的安卓
26、恶意软件检测方法表示xi为恶意软件。该方法主要包括语言转换、语言模型预训练及语言模型微调3个阶段。首先是语言转换阶段,利用反汇编软件对A P K文件进行反汇编,从s m a l i文件中提取出对应的字节码序列;然后是预训练阶段,以无监督数据集U的字节码序列作为输入,基于无监督的语言模型训练方法训练语言模型;最后是微调阶段,基于有监督数据集S在预训练语言模型上进行微调,得到最终的恶意软件检测模型。3.2 语言转换语言转换流程如图2所示。该阶段实现应用程序的预处理,包括反汇编应用程序和提取字节码序列。F i g u r e 2 F l o w c h a r t o f l a n g u a g
27、 e c o n v e r s i o n 图2 语言转换流程图本文提出的方法首先采用A p k t o o l实现应用程序的反汇编。A p k t o o l是由谷歌提供的对s m a l i的二次开发,在J a v a环境下运行2 3,它不仅具有汇编和反汇编的功能,而且还能反编译或重新编译A P K中已编译完成的二进制资源文件。使用A p-k t o o l工具对A P K样本进行解包,解包完成后,会将生成的结果输出到指定路径中。其中,s m a l i文件夹下就是最终生成的D a l v i k VM汇编代码,A n-d r o i d M a n i f e s t.x m l文件以
28、及r e s目录下的资源文件也已被解码。A n d r o i d应用程序常以压缩文件A n d r o i d 应用程序包A P K的形式交付,包含清单文件、资源文件和D a l v i k可执行文件D e x(D a l v i k VM e x e-c u t e s)。D e x文件包含应用程序源代码,可采用b a k s m a l i进行反汇编。作为反汇编的结果,b a k s-m a l i为D e x文件生成了一组s m a l i文件,其中每个s m a l i文件代表一个包含该类所有方法的单个类。每个方法都包含可读的D a l v i k字节码(简称指令),每个指令有一个操
29、作码和多个操作数。由于D a l v i k指令有两百多条,可对其进行分类与精简,去除无关的指令参数,仅保留了7大类核心指令集合,并重新对指令进行分类2 4。A P K在程序运行时会将D a l v i k字节码转换为基础处理器的指令集。A P K文件经反汇编后,经过上述处理被进一步转换为不定长的字节码序列。由于语言模型的建立常依赖于句子切分,而字节码序列并不存在句子这一概念。因此,本文方法采用定长方式(长度设置为1 0 0)将字节码划分成句,即将字节码序列切分为m个定长句子:s0s1sism-1,其中si=b1 0 0i b1 0 0i+1b1 0 0i+9 9,0im-1,bi为字节码,每
30、个句子的长度为1 0 0。若序列末尾的字节码数量不足1 0 0,则舍去。对于不同的A P K文件,m的大小可能不同。3.3 语言模型预训练语言模型可以定义为在任意字节码序列上的概率分布,如式(1)所示:p(x)=p(s0s1sm-1)=p(b0b1b2b1 0 0m-1)(1)在无监督语料上进行预训练时,根据极大似然估计的思想,假设不同A P K文件相互独立,最大化所有真实出现的字节码序列的概率,如式(2)所示:a r g m a xp(A)=a r g m a x(p(x1)p(x2)p(xn)(2)其中,指待训练的模型参数,n为无监督数据集U中样本的数量。本文方法使用2种当下最强大的语言模
31、型方法对字节码序列进行建模。3.3.1 基于循环神经网络的语言模型为了充分利用序列数据的时序特征,M i k o l o v等1 9提出了基于循环神经网络的语言模型(R NN L a n g u a g e M o d e l)。循环神经网络语言模型利用基于时间的反向传播算法对文本数据进行分析,根据所有上下文进行预测,取得了优于前馈神经网络和n-g r a m等语言模型的性能。但是,由于R NN门限控制信息传输的缺失,随着距离的增加,梯度消失问题逐渐显现,导致R NN语言模型在长文本上的表现不佳。为了解决长期依赖问题,提出了长短时记忆语言模型L S TM(L o n g S h o r t-T
32、 e r m M e m o r y L a n g u a g e M o d e l)2 5。L S TM由遗忘门ft、输入门it和输出门ot组成。对于字节码序列b0b1b2b1 0 0m-1,第t步输入为bt,映射到低维特征向量为bt,前一步的隐状态为ht-1。则字节码序列在L S TM中信息传递的过程如式(3)式(6)所示:6341C o m p u t e r E n g i n e e r i n g&S c i e n c e 计算机工程与科学 2 0 2 3,4 5(8)ft=(Wfht-1,bt+bf)(3)it=(Wiht-1,bt+bi)(4)ot=(Woht-1,bt+
33、bo)(5)Ct=t a n h(WCht-1,bt+bC)(6)其中,是s i g m o i d函数;Wf,Wi,Wo和WC是权重参数;bf,bi,bo和bC是偏置参数。基于上述4个向量对单元状态Ct进行更新,并得到新的隐藏层向量ht,如式(7)和式(8)所示:Ct=ft*Ct-1+it*Ct(7)ht=ot*t a n h(Ct)(8)在进行无监督学习时,根据ht预测下一步的字节码bt+1的概率p(bt+1)如式(9)所示:p(bt+1)=s o f t m a x(Wuht+bu)(9)其中,Wu和bu分别为激活函数的权重矩阵和偏置向量,两者均为可训练参数。在进行优化时,基于交叉熵损失
34、函数最大化所有p(bt+1),如式(9)所示:a r g m a x2 0mt=0-l o g p(bt+1)O n e h o t(bt+1)(1 0)其中,O n e h o t()表示将字节码转换为单热点向量。F i g u r e 3 F l o w c h a r t o f B E R T-b a s e d l a n g u a g e m o d e l图3 基于B E R T的语言模型流程图3.3.2 基于B E R T的语言模型B E R T2 0是在2 0 1 8年由G o o g l e A I团队发布的,进一步提高了自然语言处理相关模型的性能。通过使用预训练的T r
35、 a n s f o r m e r编码器,B E R T能够基于其双向上下文表示任何词元,动态地聚焦于复杂特征的重要部分。本文方法使用B E R T语言模型,对字节码上下文进行双向编码,实现不同类型特征的深度融合,具体流程见图3。其中,E表示嵌入向量,C表示B E R T输出中的C L S 符号,Ti表示第i个字节码在经过B E R T处理之后得到的特征向量。首先,对于给定的字节码序列,利用T o k e n i z e r方法将其处理成一个包括特殊类别词元C L S 的标记序列X,特殊类别词元C L S 被添加在序列的开头。其次,采用MLM(M a s k e d L a n g u a
36、g e M o d-e l)和N S P(N e x t S e n t e n c e P r e d i c t i o n)2个无监督方法对参数进行预训练。MLM随机抽取X中1 5%的字节码作为预测的掩蔽词元,这1 5%的字节码又按照811的比例采取不同的处理措施:8 0%的字节码采用特殊的MA S K 词元进行替换;1 0%的字节码采用随机的词元进行替换,使B E R T在其双向上下文编码中不会过度偏向于掩蔽词元;1 0%的字节码维持不变。预测掩蔽词元si的概率p(si)的 计算如式(1 1)和式(1 2)所示:X=C L S ,b1 0 0i,b1 0 0i+1,b1 0 0i+9
37、9 (1 1)p(si)=s o f t m a x(B E R T(X)(1 2)其中,si=b1 0 0i b1 0 0i+1 b1 0 0i+9 9。虽然MLM能够编码上下文来表示字节码,但它并不能显式地建模字节码序列之间的逻辑关系,B E R T在训练过程中运用二分类任务N S P理解2个字节码序列之间的关系。N S P在生成句子对时,S E P 为句子之间的分隔。其中,5 0%为连续句子,标签为1;另5 0%是从语料库中随机选取的句子,无上下文关系,标签为0。预测关联性的标签如式(1 3)和式(1 4)所示:X=C L S,b1 0 0i,b1 0 0i+1,b1 0 0i+9 9,
38、S E P,7341印 杰等:基于预训练语言模型的安卓恶意软件检测方法b1 0 0j,b1 0 0j+1,b1 0 0j+9 9(1 3)f=b i n a r y(B E R T(X)(1 4)在进行优化时,上述2个无监督任务都采用交叉熵损失函数,总损失L o s s为2个任务的损失值相加,如式(1 5)所示:L o s s=-l o g p(bi)O n e h o t(bi)-f l o g f(1 5)其中,f为句子对关联性的真实值。3.4 预训练模型微调经过在数据集U上的无监督学习后,语言模型已经建模出字节码之间的复杂语义关系。本阶段将基于有监督数据集S对预训练的语言模型进行微调,使
39、其具备更好的恶意软件检测能力。首先,对于S中每个A P K计算其句子级别的特征 向 量。即 将si转 换 为 特 征 向 量si。对 于L S TM模型,si的最后一个字节码输出的隐藏状态即 为 其 特 征 向 量;对 于B E R T模 型,句 首 的C L S 对应的输出向量为其特征向量。然后对所有句子的特征向量si进行融合,获得A P K文件的表示向量x。本文方法使用基于注意力机制的融合模式,灵活地赋予不同的句子不同权重i,如式(1 6)和式(1 7)所示:i=s o f t m a x(sim-1j=0sj)(1 6)x=m-1i=0isi(1 7)最后,经过一层非线性变换后,根据x得
40、到其为恶意软件的评分z,如式(1 8)所示:z=S i g m o i d(R e L U(W x+b)(1 8)其中,W和b分 别 为 权 重 矩 阵 和 偏 置 向 量,R e L U()和S i g m o i d()分别为激活函数和非线性函数。对于xi,预测为恶意软件标签的过程如式(1 9)所示:yi=0,zi0.51,zi0.5(1 9)其中,zi是xi对应的恶意软件的评分。在训练时使用交叉熵损失函数,然后再使用反向传播算法进行优化,如式(2 0)所示:L o s s(zi)=-yi l o g zi(2 0)4 实验与结果分析4.1 数据集和评测标准为验证本文提出的A n d r
41、o i d恶意软件检测方法的有效性,基于开源D r e b i n数据集1 5和M o-b i l e S a n d b o x开源项目2 6来构建恶意软件样本集,共搜集了5 5 6 0个恶意软件样本,来自1 7 9个病毒家族,每个恶意样本种类由安全分析员标记,从而保证样本源只包含恶意样本。对于良性软件样本,为降低良性样本中包含恶意样本的可能性,首先通过爬虫技术从应用宝中下载了5 3 0 0个安卓应用程序包,然后使用火绒安全软件筛选出5 0 0 0个完全信任的良性软件样本。最后,从恶意软件样本集和良性软件样本集中各随机抽取2 0%作为有标记的数据集,剩余的8 0%作为无标记数据集。构建的数据
42、集具体组成如表1所示。T a b l e 1 C o m p o s i t i o n o f t h e d a t a s e t表1 数据集组成应用程序种类总数所属家族数量良性软件5 0 0 0F a k e I n s t a l l e r9 2 5D r o i d K u n g F u6 6 7P l a n k t o n6 2 5恶意软件5 5 6 0O p f a k e6 1 3B a s e B r i d g e3 3 0I c o n n s y s1 5 2O t h e r2 2 4 8 本文方法是对恶意或良性软件进行二分类,因此采用机器学习算法中常用的4个
43、性能参数对其分类性能进行评估:(1)T P(T r u e P o s i t i v e),实际为恶意软件被分 类为恶意的 样本数量;(2)FN(F a l s e N e g a t i v e),实际为恶意软件被误分类为良性样本的数量;(3)TN(T r u e N e g a t i v e),实际为良性软件被分类为良性样本的数量;(4)F P(F a l s e P o s i-t i v e),实际为良性软件被误报是恶意样本的数量。基于上述4个参数,可计算出下述4个评价指标:(1)准确率(A c c u r a c y):表示所有样本中,有多少被正确分类,其定义如式(2 1)所示:
44、A c c u r a c y=T P+TNT P+TN+F P+FN(2 1)(2)精确率(P r e c i s i o n):表示所有预测为正类的样本中,有多少是预测正确的,其定义如式(2 2)所示:P r e c i s i o n=T PT P+F P(2 2)(3)召回率(R e c a l l):表示所有正类样本中,有多少被预测成正类,其定义如式(2 3)所示:R e c a l l=T PT P+FN(2 3)8341C o m p u t e r E n g i n e e r i n g&S c i e n c e 计算机工程与科学 2 0 2 3,4 5(8)(4)F1度
45、量(F1-m e a s u r e):精确率和召回率的加权平均值,其定义如式(2 4)所示:F1=2*P r e c i s i o n*R e c a l lP r e c i s i o n+R e c a l l(2 4)4.2 基准方法本文以恶意软件检测中常用的n-g r a m语言模型1 8为基准方法。基于n-g r a m模型的恶意软件检测方法使用底层操作码序列作为特征,可实现特征的自动提取。在n-g r a m元数选取上,如果元数取值太小,将忽略操作命令之间的整体性,只能达到局部最优效果;而若元数取值过大,则会导致特征稀疏。因此,本文尝试了2种设置:3元和4元n-g r a m
46、模型。在利用n-g r a m语言模型对字节码建立特征集合后使用各种有监督的机器学习分类算法,包括决策树D T(D e c i s i o n T r e e)、X G B o o s t(e X t r e m e G r a d i e n t B o o s t i n g)算法、随机森林R F(R a n d o m F o r e s t)进行训练,最后选择性能最优的作为基准算法。4.3 模型训练基于E a r l y s t o p p i n g技术,训练时在验证集上选取精确率最高的模型作为最终模型,并验证该模型在测试集上的结果。表2给出了本文方法中各模型的主要参数配置,所有参数
47、均是在验证集上通过启发式搜索确定的。T a b l e 2 P a r a m e t e r c o n f i g u r a t i o n o f e a c h m o d e l i n t h e p r o p o s e d m e t h o d表2 本文方法中各模型的参数配置参数参数取值L S TM层数4词向量维度2 5 6L S TM隐藏层维度5 1 2B E R T多头注意力头的个数8B E R T隐藏层层数4C L S 张量维度2 5 6预测层隐藏维度2 5 6批大小3 2D r o p o u t概率0.5优化算法A d a m最大训练轮数1 0 0初始学习率0.
48、0 14.4 不同方法比较将2种不同元数的n-g r a m模型的检测方法与本文方法在精确率、准确率、召回率等指标下进行比较,结果如表3所示。可以看出,n-g r a m方法在元数为4时取得最高准确率9 6.5%;较于n-g r a m,L S TM和B E R T方法的各项指标都有一定的提升,准确率分别提升至9 8.7%和9 7.6%。通过对实验数据的分析,可以得到以下3点结论:(1)基于n-g r a m模型的检测方法中,采用4-g r a m模型结合随机森林分类算法时取得了最优的性能,后续将基于此模型的检测方法作为基准方法进行比较。(2)本文提出的基于预训练模型的恶意软件识别方法在全部评
49、价指标上都取得了优于传统模型的效果,相较于不加入预训练模型的基准方法,错误率由3.5%降低到1.3%,降低幅度为7 2%。这是因为结合预训练模型的深度神经网络模型可以学习更多的无标记样本作为先验知识,因此具备更优的学习表达能力和泛化性能。(3)本文采用的预训练模型更能适应预测任务的特性与需求,使目标分类更加准确。T a b l e 3 E x p e r i m e n t a l r e s u l t s o f d i f f e r e n t m e t h o d s表3 不同方法的实验结果A c c u r a c yP r e c i s i o nR e c a l lF13
50、-g r a m模型(D T)0.9 3 80.9 50.9 3 70.9 3 93-g r a m模型(X G B o o s t)0.9 0 90.9 1 90.9 0 90.9 0 23-g r a m模型(R F)0.9 5 10.9 5 10.9 5 80.9 5 44-g r a m模型(D T)0.9 2 10.9 8 20.8 5 90.9 1 64-g r a m模型(X G B o o s t)0.9 4 10.9 7 90.9 0 10.9 3 84-g r a m模型(R F)0.9 6 50.9 6 50.9 5 60.9 6本文方法(L S TM)0.9 8 70.
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100