来源:DEEP CONVOLUTIONAL MALWARE CLASSIFIERS CAN LEARN FROM RAW EXECUTABLES AND LABELS ONLY(2018),Workshop track - ICLR 2018,Marek Krcˇal ´,Czech Academy of Sciences
摘要:我们提出并评估一个简单的卷积深层神经网络体系结构,通过只学习它们的原始字节序列和标签来检测恶意可执行文件(Windows可执行文件),也就是说,不需要任何领域特定的特征提取或预处理。这种端到端方法的性能几乎可以与基于Avast手工设计的特性的传统机器学习管道媲美。
一 背景
现代深度网络的基石之一是端到端学习的方法(end-to-end learning),或等效的自动特征提取方法,即只将标签和原始数据呈现给网络,而不提供手工特征,而且几乎不进行预处理。
端到端方法尚未在恶意软件检测领域占据主导地位,这一领域的重要性和市场价值都在不断增长的恶意软件(恶意软件)开发中不断增长。尽管我们在下面提到了一些有趣的结果,但是我们还没有发现在工业界,使用干净和恶意文件数据集训练端到端神经网络分类器的尝试。在本文中,我们介绍了在2000万个Windows可执行文件(所谓的可执行文件)上训练和评估的简单但成功的卷积网络,这些文件以简单的字节序列表示。这项工作探索了标准(基线)体系结构所能达到的下限:一个嵌入层,然后是四个卷积层,中间是最大池化层,全局平均池和四个完全连接的层。有关我们的设计选择的详细信息和附加讨论,请参见第2节,这些设计选择将体系结构调整为非常小的假阳性率。我们的方法是所谓的静态恶意软件分析的端到端版本:网络只提供可执行文件所包含的字节序列。尽管如此,我们期望类似的体系结构能够在动态恶意软件分析的端到端变体上产生良好的结果,在这种情况下,网络将被赋予机器代码或其他底层表示,模拟器或沙箱将可移植可执行文件打开。Huang和Stokes(2016)在这个方向上的结果结合了沙箱模拟的一些一般特征提取和深入的表现学习。
可移植的可执行文件—用于深度学习的非传统数据类型。可移植性可执行文件是一种复杂的格式,只有本地顺序性(1-D结构),其字节符号的含义非常多样,并且依赖于上下文。在header上下文中,在各种类型、资源或重定位表的部分中。因此,人们自然会问,已经建立良好的深度学习体系结构能在多大程度上从这种原始输入中学习。此外,我们还选择了便携式可执行文件,因为它们是迄今为止PC上安全威胁最严重的通道。我们认为,在这样一个相关且未被充分研究的数据领域进行大规模实验,可能会引起整个深度学习研究领域的关注。
数据集。在Avast的PE文件存储库中,我们选择了最近16个月收集的所有大小在12到512千字节之间的文件,不包括带有一些模糊处理方法的文件,如检测到的压缩或加密。训练、验证和测试集分别由前12个月、后2个月和最后2个月组成,这样我们就可以衡量模型如何推广到未来。为了简单起见,我们只使用二进制标签clean和恶意软件,并在整个数据集中大致平衡。
阻碍公共研究学习恶意软件分类器(尤其是深层网络分类器)的一个巨大障碍是缺乏工业规模的公共可用数据集。这导致了研究的碎片化,在那里不同的结果是直接不可比较的,如果完全可以重复的话。我们的长远目标是将我们的一些数据以某种形式和数量提供给深度学习社区。
二 体系结构
我们的网络方案如图1所示;以下是几点备注:
固定的嵌入。输入序列的每个字节首先被嵌入到表单的8维向量(±1 /16;.......;±1 /16)根据其二进制表示常数1 = 16经验被发现。我们发现可学嵌入和不可学嵌入之间没有性能差异。
带步幅(stride)的卷积减少计算负载。为了减轻计算负担,我们分别在第一个和第二个卷积块上使用实验调优的4和8步长。我们已经验证了在不同的顺序中使用3、5、7和9的步长(非2的幂)会导致我们测量的所有指标的相对下降大约6-10个百分点。
训练的细节。我们根据Glorot和Bengio(2010)从均匀分布中抽取随机值初始化卷积层,根据Klambauer et al.(2017)对全连通层进行初始化。训练损失是通常的交叉熵,每一个干净样本造成的损失是每一个恶意样本的7倍。我们将可执行文件分组到128个类似大小的文件中,这些文件都是在末尾的0(右填充)中填充的。该网络由Adam优化器(Kingma和Ba(2014))使用默认参数进行训练。根据验证集上的分数,我们在第三个周期(epoch)后不久就停止了训练。
由零假阳性目标驱动的选择。恶意软件探测器被调到较低的假阳性率,这样它们就不会让用户被真实分布下的假恶意软件检测所淹没,而这些恶意软件在干净的文件中占据着巨大的主导地位。我们将目标分数形式化为受测者曲线下的面积,限制在区间[0,0.001]假阳性率。为了方便起见,该区域以最大可能的百分比报告——0:001。我们将把这样的分数作为限制AUC。下面我们列出了我们的体系结构可能发生的变化以及相应的受限AUC分数的估计下降。另一方面,每一种变化都提高了交叉熵和/或准确度:
1、全局最大值(Global Max)而不是全局平均值(Global Average):-20%相对下降。
2、同等权重的干净和恶意软件文件:-10%相对下降。
3、ReLU而不是SELU在全连通层:-4%相对下降。
相关的工作基线。Raff等人(2017)最近开发了一种叫做MalConv的复杂架构,用于同样的任务,但使用的是比我们小的数据集排序。所提出的体系结构已经完全独立开发,我们发现使用MalConv的元素没有任何改进。相反,我们通过使用两步法的步幅(stride)、SELU激活和删除DeCov正则化,稍微提高了MalConv在数据集上的性能,见图2。尽管如此,考虑到用于开发的有限数据集,MalConv的性能非常好,请参见表1。
三、评估
学会的和手工制作的表征。我们将学到的卷积特性与Avast的恶意软件分析人员针对快速特征原型设计的机器学习系统中的538个静态特性进行了比较。为此,我们训练和评估使用形状为538–512–256–192–168–128–2 且带SELU的前馈网络(FNN)。最后,为了衡量学习到的表示与手工设计的表示之间的互补性,我们将我们的convet输出的192位特征添加到手工构造的特征中,形成富特征,然后再运行前馈神经网络。结果见表1。集成方法的最佳结果表明,从原始可执行文件中学习是一个有价值的新特性工程过程。值得注意的是,从原始可执行文件和手工设计的特性中共同学习可能会产生更好的结果。
集成方法的最佳结果表明,从原始可执行文件中学习是一个有价值的新特性工程过程。值得注意的是,从原始可执行文件和手工设计的特性中共同学习可能会产生更好的结果。
使用grad-CAM定位。我们使用梯度加权类激活映射(grad-CAM) (Selvaraju等人(2017))来查找文件中对卷积网络恶意软件预测贡献最大的块。我们让恶意软件分析人员判断在几个选定的可执行文件中突出显示的块的相关性。并非总是如此,但他们经常发现一些可疑的东西:可移植可执行文件的头嵌在可移植可执行文件中,或者“版本信息”部分,在Xindl病毒中带有假供应商和软件名称,或者在ransomware Locky中非常不常见的导入API函数列表。
结论。一方面,对原始可执行文件和标签的端到端学习仍然只略微落后于引用ML管道,即使是在为卷积网络选择的数据集上也是如此。另一方面,从深度学习模型在计算机视觉、机器翻译或语音识别等领域的长期改进速度来看,我们预计新体系结构以及从更大、更精细的数据集中学习可以显著提高性能。在为深入的表示学习留出空间的同时,插入一些领域知识有一个面向生产的正交方向:使用恶意软件家族作为细化的标签(Huang和Stokes(2016))),通过熵速率(Saxe和Berlin(2015)))等其他信号丰富字节序列,或者针对可移植可执行文件调整体系结构。加速训练将是进一步改进和生产适用性的重要催化剂:在这里,诸如Chollet(2017)的深度可分离卷积或Shazeer等人(2017)的稀疏门控混合专家可能会有所帮助。最后,但同样重要的是,我们相信深度学习最终会通过观察和锁定恶意软件和干净文件中的不为人所见的模式来对其人类有益。