引言
恶意软件分类致力于研究如何识别恶意软件以及区分不同的恶意软件家族,作为网络安全研究领域中的一个重要分支,对于理解和防御不同类型的恶意软件以及溯源网络攻击具有重要意义。恶意软件分类方法大致可以分为:基于静态特征[1]和动态特征[2]的传统方法,以及引入机器学习[3]的新式方法。基于静态特征的方法[4-6]依赖于复杂的特征工程,难以应对恶意软件的快速演化;基于动态特征的方法[7-9]涉及耗时的行为特征监控[10],难以规模扩展。近年来,利用机器学习直接从文件字节序列中提取特征并进行恶意软件分类的方法受到了广泛关注[11-12]。该方法的框架如图1所示,其研究核心是设计一个分类模型,将输入样本x的字节序列映射到一个范围为[0,1]的概率分布c=[c0,c1,…,cM]上,其中∑cm=1。测试时,计算类别m=argmax(c),m=0表示良性软件,m≥1表示相应的恶意软件家族。如果M=1,分类模型实现面向良性软件与恶意软件的二分类;如果M≥2,则分类模型实现面向恶意软件家族的多分类,此时良性软件被看作一类特殊的家族。
图1基于字节序列分析的恶意软件分类框架
通过机器学习模型自动地从序列中提取和编码特征的技术路线能更好地适应当今恶意软件的动态变化,也能更好地实现各类型和跨平台的恶意软件分类。然而,当面对大数据场景下的海量文件样本时,该路线面临因恶意软件的字节序列较长,直接输入模型进行训练,导致时间和空间开销巨大的挑战。从形式上看,字节序列分类任务类似于时间序列分类任务,借鉴其研究成果已被证明极具挑战[12]。恶意软件通常包含数十万到数百万长度的字节序列,以100万长度的字节序列为例,其相当于T=1 000 000步长的时间序列,而已知的最长时间序列分类任务步长≤16 000[13],这限制了现有时间序列分类模型的直接应用。目前为止,能处理这种极端长度字节序列分类任务的实现是MalConv[11],其通过简洁的模型设计,可以处理T=2 000 000步长的字节序列。遗憾的是,MalConv的训练开销极大,例如在Ember[14]数据集60万样本上训练该模型,128 GB显存的DGX1需要消耗一个月的时间。尽管MalConv2[12]通过优化池化降低了训练的显存开销,但训练的时间开销依然很大。本文针对上述如何提高字节序列分类模型的训练效率展开研究。通过引入离散傅里叶变换[15]分析文件字节序列的频率分量发现,字节序列中的能量主要集中在低频部分。本文通过截取低频分量来缩短输入字节序列的长度,进而提出基于字节序列频域采样的恶意软件分类方法。核心的设计思路为:设计频域采样策略,保留字节序列中的主要低频分量,合成新的短信号,从而实现训练效率的提高。Windows和Android公开恶意软件数据集上的实验结果表明,与最先进的基于原始字节序列的MalConv2[12]相比,本文提出的方法与其分类效果相当,且将模型的训练时间和GPU显存占用分别降低了90%和50%以上。综上,本文的主要贡献如下:(1)提出了一种基于字节序列频域采样的恶意软件分类方法,通过设计频域采样策略,减小输入字节序列的长度,实现模型训练效率的提高。(2)在公开数据集上进行了验证,结果表明,提出的恶意软件分类方法与最先进的基于原始字节序列的方法分类效果相当,且能将模型的训练时间和GPU显存占用大幅降低。(3)分析了字节序列频域采样策略中采样长度的影响,并对未来的研究方向进行了讨论。
本文详细内容请下载:
https://www.chinaaet.com/resource/share/2000006296
作者信息:
蒋永康,孙逊,杨玉龙
(贵州航天计量测试技术研究所,贵州贵阳550009)