文章将主流的基于学习的算法按照其出入格式分为了三类,分别是基于图像的、基于二进制的和基于反汇编的。文章基于现在很多放大都没有一个一致的比较,特别是从实际应用场景来看以及在概念漂移(指的是数据流中的潜在数据分布随时间发生不可预测的变化,使原有的分类器分类不准确或决策系统无法正确决策)的场景中也没有进行比较。文章的工作主要是在4个不同的数据集和一致的实验设置上对基于学习的PE恶意软件分类方法进行了全面的实证研究。根据实验结果发现(1)没有哪类方法明显优于其他方法;(2)所有类型的方法在概念漂移上都表现出性能下降(平均f1分32.23%);(3)的预测时间和高内存消耗阻碍了现有方法被用于行业使用。
相关工作
基于图像的分类方法,在2011年首次被提出,最初采用的是机器学习的方法,但是由于提取复杂纹理特征的开销很高,这些方法通常效率低下。随着深度学习模型在图像分类任务中的不断发展,它逐渐地被运用到恶意软件家族分类场景,表现出了比机器学习方法更好的性能。当然基于图像的方法也有缺点,例如将恶意软件转换为图像会引入新的超参数(例如,图像宽度),并施加不同行中像素之间不存在的空间相关性,这可能是错误的。
基于二进制的方法,以恶意软件的二进制代码为输入,通常采用现有的序列模型,特别是来自自然语言处理(NLP)领域进行分类。最初一般是n-gram算法提取特征然就用算法进行分类检测,但是随着n的增大,计算开销会非常大;随后提出了端到端的浅层CNN模型,但是接收整个二进制文件作为输入需要非常大的内存。为了解决这个问题,提出了只关注PE头的方法。
基于二进制文件的方法不需要领域知识,而是考虑恶意软件二进制文件中的上下文信息。然而,与其他类别的方法相比,将恶意软件样本表示为字节序列可能会带来一些挑战。首先,通过将每个字节作为一个字节序列中的一个单元,恶意软件字节序列的大小可能达到数百万个时间步长,这是相当消耗资源的。其次,相邻的字节在空间上是相关的,但是由于跳转和函数调用,这样的情况可能并不总是保持,因此二进制文件中的信息可能存在不连续性。
基于反汇编的方法,首先将二进制文件分解成汇编代码,并根据函数调用图(FCG)和控制流程图(CFG)等特征执行恶意软件分类,这些特征是从汇编代码中提取的。提出计算图之间的相似性,然后用其作为恶意代码聚类的距离度量。计算图之间的相似性属于计算密集型,会带来很大的性能开销。
也有一些方法从程序代码中提取操作码序列,与其他方法相比,基于反汇编的技术可以更好地捕获代码结构特征,但它们通常需要领域知识,如汇编语言及其相应的分析方法。
实证研究
首先论文提出了三个研究问题,分别是:
- 1.不同的PE恶意软件族分类方法在不同的数据集上如何执行?
指出目前缺乏系统的研究来评估在多个数据集的同一实验设置上一致的不同方法的性能。
- 2.恶意软件概念漂移如何影响各种模型的分类性能?
指出概念漂移是PE恶意软件建组分类任务中一个关键的现实问题,评估概念漂移应用场景中不同方法的性能非常重要。
- 3.是什么因素阻碍了当前基于学习的PE恶意软件分类方法在行业中的部署和相应的改进方向?
由于之前的研究问题所发现的差距,论文最终目标是为如何使当前基于学习的PE恶意软件分类方法适用于真实的行业场景提供建议。
基于图像的测试模型选了VGG-16、ResNet-50、Inception-V3、IMCFN.
VGG-16通过减少卷积层的参数来提高训练时间,它包含了13个卷积层、5个最大池化层、三个全连接层。所有隐藏层都是用ReLU,输出层使用softmax,优点是结构简单,参数多,拟合能力高。
ResNet的提出是为了解决传统CNN网络在深层信息传输中普遍存在的信息丢失、梯度消失和梯度爆等问题。通过在一个称为跳过连接的结构中将输入直接带到输出中来保护信息的完整性。由于该设计,ResNet-50可以训练一个包含50个隐藏层的更深的网络。ResNet-50使用全局平均池,然后使用最终预测层的softmax。相比VGG-16更有效,因为它的参数要少得多。
InceptionNet目的是找出如何用密集成分来近似最优的局部稀疏结。与ResNet-50一样,Inception-V3最终也使用了一个全局平均池,然后使用softmax作为最终的预测层。与VGG-16相比,它更有效,其参数数量甚至比ResNet-50更少。
IMCFN是使用微调卷积神经网络的基于图像的恶意软件分类,它是针对恶意软件族分类的任务而定制的。它是VGG-16的变种,将前两个FCs中的神经元从4096减少到2048,并增加了一个dropout层来减少过拟合的影响。
基于二进制的测试模型选了Word2Vec+MLP、MalConv.
Word2Vec+MLP的关键思想是,来自同一族的样本中的字节关系相似,且与不同族的样本明显不同。因此,原始字节的向量矩阵是恶意软件分类的有效特征。首先对原始二进制文件进行预处理,删除5个或更多连续的0x00或0xCC(无意义的字节)。然后将每个文件作为一个语料库,看作由从0x00到0xFF的256个单词组成的。使用Word2Vec中的连续字袋模型(CBOW)获得文件中256字节的嵌入向量,每个文件用一个字节向量升序矩阵表示。MLP将这些矩阵作为输入,并输出相应的族类别。MLP由3个FCs组成,其中由预测类的数量决定,对于前两个FCs,添加一个dropout层。MLP是最直观、最简单的深度神经网络。与VGG-16类似,虽然结构相对简单,但参数较多,可以很好地拟合训练数据。
MalConv是第一个允许将整个恶意软件作为输入的端到端恶意软件检测模型。首先使用嵌入层将原始字节映射到一个固定的8维向量。通过这种方式,它可以通过同时考虑本地和全局上下文来捕获原始二进制文件中的高级位置不变性。然后,使用一个浅层CNN,大滤波器宽度为500字节,结合500步幅。这使得模型能够使用PyTorch以数据并行的方式更好地平衡计算工作负载,从而可以缓解第一个卷积层的GPU内存消耗问题。
作为一个浅层的CNN架构,MalConv克服了一个主要的实际限制,即读取整个恶意软件字节是消耗内存的,它还捕获了原始二进制文件中的全局位置不变性。它允许将嵌入层与卷积层联合训练,以便更好地提取特征。
基于反汇编测试模型选了MAGIC、Word2Vec+KNN、MCSC.
MAGIC是一种端到端的恶意软件检测方法,通过使用深度图卷积神经网络(DGCNN)的属性控制流图(ACFG)。首先将ACFG(将CFG的顶点抽象为离散的数值向量)转换,从恶意软件反汇编文件中提取为一个数值向量。然后,DGCNN将这些不同大小的无序ACFG转换为固定大小和顺序的张量,用于恶意软件家族分类。
Word2Vec+KNN将反汇编文件建模为恶意软件语言,将其操作码序列提取为恶意软件文档,并使用Word2Vec模型生成此类文档的计算表示。这篇论文选择WMD作为KNN分类中文档之间语义紧密度的度量,计算将文档A的所有嵌入单词传输到文档B的所有嵌入单词的成本。
MCSC首先从拆反汇编件中提取操作码序列,并根据SimHash将其编码为相同长度的序列。然后,它将每个SimHash值作为一个二进制像素,并将SimHash位转换为灰度图像。它训练了一个由LeNet-5修改后的CNN结构来对这些灰度图像进行分类。在训练CNN分类器时,采用多哈列和双线性插值来提高模型的精度,并采用主要的块选择来减少图像生成时间。
实验采用了四个数据集,分别是BIG-15,Malimg,MalwareBazaar和MalwareDrift.(前两个开源)
发现
论文通过实验发现
1.在所有方法中,基于二进制的模型CBOW+MLP在不同的数据集上表现最好,而没有单个类别的性能显著优于其他类别。
2.迁移学习有可能进一步提高基于图像的PE恶意软件分类方法的有效性,并打开模型内部特征提取层进行微调,以获得更好的迁移学习性能。
3.所有现有的方法在面对现实工业场景的概念漂移时都存在性能较差,因此在评估PE恶意软件族分类方法时应认真考虑。
并且实验结果表明,不同方法的稳定性也差异很大。CBOW+MLP方法虽然在普通机器学习场景中表现最好,但在概念漂移场景中下降幅度最大,这主要是由于其结构简单。相反,MCSC和Word2Vec+KNN的下降率最小。原因是它们都从拆卸文件中提取视码序列,并专注于在恶意软件进化过程中往往被保留的视码序列的本地上下文连接,因此这些方法在概念漂移上表现出稳定的性能。一个有趣的发现是,尽管Word2Vec+KNN也有简单的结构,但在概念漂移下,它的表现比CBOW+MLP更好,这归功于KNN算法,该算法计算未来的样本与所有其他样本之间的相似性距离。因此,它通常需要更长的预测时间。
- 4.CBOW+MLP对概念漂移的性能最差,而MCSC对概念漂移的性能最稳健。结果表明,操作码序列保留了PE恶意软件的家族特征,是概念漂移下分类的有效和鲁棒特征。
论文作者向实际应用场景种的合作伙伴提出问题:公司目前采用了哪种分类方法以及原因;在实际适用的场景中,影响合适方法选择的因素是什么?概念漂移在实际应用场景中很常见吗?处理概念漂移的当前状态如何?
目前,在行业应用场景中采用了两种主流方法,即沙箱和基于模式的方法。基于模式的方法是基于模式/特征数据库的静态检测方法。它在时间和资源消耗方面是有效的,但对噪声、混淆和概念漂移是脆弱的。
PE恶意软件分类方法的行业使用主要受到三个因素的限制,即预测精度和召回率、预测时间和资源消耗,主要资源关注的是运行时内存和CPU使用情况。
作为一个具体的例子,在他们的一个包含基于学习的恶意软件分类模型的产品中,他们要求运行时内存低于1gb,这是我们所有研究的方法都无法满足的。另一个要求是能够在0.1秒内预测一个恶意软件,准确率超过93%,这过滤掉了大多数基于二进制和基于反汇编的方法。
概念漂移通常是由于恶意软件的进化。例如,在现有的恶意软件想要逃避检测的情况下,可能会有新的非内核功能,如通信和消息传递技术正在改变。这种情况经常发生,并对恶意软件家族分类提出了挑战。目前缺乏特定的机制来处理这种情况,目前的实践通常使用沙箱方法来处理这种场景。另一个观察结果是,除了概念漂移之外,它们还需要应对快速发展的新恶意软件家族和特性的挑战。除了现有学术数据集定义的细粒度家族分类外,行业合作伙伴更感兴趣的是基于恶意软件家族的恶意行为的检测,即特洛伊、Rootkit或勒索软件。然而,目前还缺乏关于这一方向的研究,很可能是因为没有这样的可用的数据集。
- 5.(1)如何处理快速发展的恶意软件家族,而不是只使用一个或几个数据集进行评估;(2)一个预测精度更高、重量更轻的模型(3)从恶意行为的角度进行恶意软件家族分类。