ICAIS 2019(人工智能与安全国际会议)论文链接:A Novel Malware Detection and Classification Method Based on Capsule Network
作者:Shu-wei Wang等人
单位:中国数学工程与先进计算机国家重点实验室,郑州,中国
first online:11 July 2019
摘要
通过使用伪装技术(例如代码混淆,打包和签名),恶意软件很有可能逃脱杀毒软件的杀害。为了有效地检测恶意软件,传统的机器学习方法通常需要事先进行复杂的特征提取工作,CNN和其他深度学习方法通常需要大量标记的样本,所有这些都会影响检测性能。针对这些问题,本文提出了一种基于恶意软件彩色图像可视化技术和胶囊网络的改进的深度学习方法(ColCaps)来检测恶意软件。首先,恶意软件被转换为彩色图像。然后,基于动态路由的胶囊网络用于检测和分类彩色图像。由于没有高级特征提取功能,并且只有少量标记的样本,ColCaps在跨平台检测和分类方面具有更好的性能。实验结果表明,该方法在Android和Windows平台上的检测精度分别为99.3%和96.5%,比现有方法提高了20%。同时,Drebin数据集中的分类任务具有98.2%的准确性,这是对先前DREBIN的重大改进。
1 引言
随着大数据时代的到来,互联网技术和移动互联网技术发展迅速,恶意应用程序的数量也呈爆炸性增长,这给我们的网络空间带来了前所未有的挑战。根据赛门铁克的《 2018年互联网安全威胁报告》(ISTR)[1],植入式攻击在2017年增加了200%,新的移动恶意软件变种增加了54%。为了商业利益,制造商一直在制作灰色软件应用程序,这些应用程序会泄漏智能手机设备中的隐私数据。每天都有数以百万计的恶意代码进入Internet,但是现有的通用网络安全检测技术无法有效地检测到它们,这将给个人,企业,机构甚至国家造成巨大损失。
目前,在恶意软件检测领域有很多研究成果,但是一些关键问题仍然无法解决。例如,训练需要大量的标记样本,早期的特征提取太复杂,跨平台恶意软件检测的准确性不高。为了解决上述问题,本文提出了一种基于恶意软件图像可视化技术和深度学习技术的跨平台恶意软件检测与分类方法。使用恶意软件代码彩色图像生成技术和胶囊网络框架,将经过特殊处理的可执行文件(APK,DLL,EXE等)转换为彩色RGB图像。然后,将生成的均匀彩色图像发送到胶囊网络以提取有效特征并训练检测模型。最后,将训练有素的胶囊网络模型用于未知软件的检测和恶意软件的同源性分类分析。该方法实现了跨平台恶意软件的检测和分类。 Drebin数据集中的分类精度达到98.2%,未知软件的检测精度达到96.5%(Windows)和99.3%(Android)。
提出的方法的主要创新如下:
(1)将恶意软件代码彩色图像生成技术引入恶意软件检测领域,可以将恶意软件的特征信息完全存储在彩色图像中,并有效地检测通过代码混淆技术处理的恶意代码。
(2)使用胶囊网络提取恶意软件生成的彩色图像的特征以进行学习和训练。 与CNN相比,胶囊网络将标量转换为向量,可以更好地存储特征并使用路由算法进行计算。 然后,检测精度进一步提高。
(3)所提出的基于彩色图像生成技术和胶囊网络的恶意软件检测模型(ColCaps)可以实现不同类型文件的跨平台检测和分类。
2 现有研究
2.1传统的静态和动态恶意软件检测
已经提出了许多技术来检测恶意软件。首先提出了基于静态分析的检测技术,该技术通过检测可能的执行路径,启动模式,恶意行为和二进制代码的其他特征来判断软件是否为恶意软件[2,3]。目前,混淆技术变得越来越复杂。基于特征的静态分析技术可以被诸如多态性,加密和打包之类的多种混淆技术所绕过[4],而基于软件签名库的检测方法则无法检测到新的未知恶意软件。
另一种基于行为的动态检测技术应运而生[5,6]。尽管该技术可以避免混淆技术的干扰,但是它需要在蜜罐(honeypot)环境中动态监视和跟踪可执行程序,这具有计算资源大,执行效率低的缺点,尤其不能应付大规模的样本检测。因此,该技术不能应用于智能移动设备终端。
2.2基于机器学习的恶意软件检测
近年来,已经提出了许多基于机器学习的算法来检测恶意软件并取得了良好的效果。 Daniel等 [9]设计了一种轻量级的Android恶意软件检测方法,以收集应用程序的多个功能特征,并使用线性支持向量机SVM对它们进行分类,但是该方法无法应用于Windows恶意软件。 Alam等 [10]将恶意软件映像视为特征向量,并使用随机森林模型对各种恶意软件家族进行分类,但在视觉上相似的恶意软件中却犯了错误。 Yerima等 [12]通过从大量静态恶意代码中提取具有潜在恶意行为的程序特征,建立了贝叶斯分类模型。 缺点是无法检测到新的未知Android恶意软件。
2.3基于深度学习的恶意软件检测
目前,基于深度学习的恶意软件检测技术也得到了快速发展[13-15]。Saxe等 [14]提出了一种深度学习网络(DNN)检测方法,该方法首先从PE文件中提取特征信息,然后将特征向量发送到具有两个隐藏层的深度学习网络以进行训练分类。该方法在早期进行了复杂的特征提取工作,因此模型略为复杂。Jiang等 [15]将可执行文件转换为灰度图像,并使用经过训练的CNN模型来检测恶意软件,但是这种方法对Android恶意软件的检测精度不到80%。
从上面的介绍可以看出,传统的恶意软件检测算法,机器学习分类算法和深度学习技术仍然存在一些关键问题。例如,面对代码混淆,脱壳,签名和其他伪装技术,传统检测算法的检测率大大降低。在机器学习算法的早期,恶意软件的特征提取和筛选过于复杂,跨平台检测模型的通用性差等。为了解决这些问题,本文提出了一种基于恶意软件可视化技术和胶囊网络的ColCaps框架模型。
3 本文提出的恶意软件检测方法:ColCaps
3.1恶意软件检测和分类的总体架构
通过将恶意软件文件转换为图像,可以将恶意软件的静态反编译文件和动态行为的复杂特征提取转换为简单的静态图像特征提取。 然后,深度神经网络可用于其简单性和更高的图像特征提取效率。 与grayscale图像相比,具有更多颜色的RGB图像具有更好的特征表示能力,而与CNN相比,胶囊网络具有更强的能力来识别图像中的对象和旋转后的对象之间的空间关系。 因此,在本文中,上述优点用于将恶意软件彩色图像生成技术与用于恶意软件检测和分类的胶囊网络框架相结合。
基于恶意软件图像可视化技术和胶囊网络的检测分类模型主要包括以下三个部分:恶意软件图像可视化,胶囊网络的构建与训练,恶意软件的检测与分类。 总体过程如图1所示:
3.2恶意软件图像可视化方法
关于恶意代码的可视化方法的研究很少。 Nataraj等人[16]首次提出将恶意软件二进制代码可视化为灰度图像,并根据图像纹理的相似性对恶意软件进行分类。本文采用一种新的恶意代码可视化方法将二进制代码转换为RGB彩色图像。由于RGB三通道彩色图像(每个样本24位像素)可以保存16777216种颜色的恶意软件的特征信息,相比之下,灰度图像只有256种颜色(每个样本8位像素),因此具有更强的特征表示能力。本文采用十六进制映射技术将二进制代码转换为RGB模式代码。转换规则如下(将每8位依次映射到RGB的整数值):(Ox868816 =(R:134,G:136,B:22),Ox849A87 =(R:204,G:232,B :207)等。根据上述规则,PE文件和APK文件中的良性和恶意软件二进制样本已被转换。图2是Windows和Android软件的良性示例和恶意示例图像。第三张图片是DroidKungFu恶意软件家族的示例图片。从图中可以清楚地看到,来自不同软件系列的图像样本具有明显的纹理特征,而相同的恶意软件系列样本非常相似。因为同一家族的软件代码包含相似的API调用和代码结构。因此,该方法将为胶囊网络的检测和同源性分类提供有效的样本输入。
3.3基于动态路由算法的胶囊网络
与现有的深度神经网络(如CNN和RNN)不同,胶囊网络不是由神经元组成,而是由胶囊组成。 Capsule [17]是一组人工神经网络,它对样本输入执行复杂的内部计算,并将结果封装在一个小的向量中。每个胶囊是包含多个神经元的载体,其代表图像中出现的特定实体的各种特性。胶囊网络由包含两个卷积层和完全连接层的多层组成,然后使用迭代动态路由算法[18]来确保将低级胶囊向量更准确地输出到较高级别的父级胶囊。上述特征使胶囊网络在图像特征提取和图像分类精度上更有效。
胶囊向量的输入和输出。彩色图像以多维矩阵的形式传递到模型,并且通过卷积层处理获得特征向量。胶囊网络首先通过权重矩阵将来自下层的特征输入转换为预测向量[19]。然后,类似于人工神经网络,通过加权求和获得求和矩阵。最后,使用新的矢量非线性激活函数(Squashing Function)[18],该压缩函数将求和矩阵转换为输出矢量,该输出矢量将成为下一个更高级别特征的输入矢量。相关功能定义如下:
损失与重建。
模型的重新配置能力反映了其鲁棒性。反馈机制可以很好地保留整个培训过程中用于重建的信息。像正则化一样,它可以避免训练数据的过度拟合并促进胶囊网络的泛化[21]。
本文中β=0.0005。
4基于胶囊网络的检测与分类算法
我们基于恶意软件代码可视化方法和胶囊网络设计恶意软件检测和分类算法(ColCaps),如图3所示:
(1)模型的输入层。根据第2.1节中的方法,将恶意软件培训样本文件转换为RGB彩色图像。下采样算法用于统一固定格式的RGB图像作为模型的输入。
(2)主胶囊层。胶囊网络包含两个卷积层。第一卷积层收集输入数据的低级特征,其中包含256个步幅为1,大小为9且没有填充的滤波器。使用ReLU函数作为非线性激活函数,最佳辍学值为0.7,这是有效避免训练过程中梯度消失。第二个卷积层包含Capsule,输出是Primary Caps,它存储了低级特征向量。
(3)恶意软件检测到的胶囊层。主胶囊层和恶意软件检测到的胶囊层已完全连接,并且是向量到向量的连接。使用迭代路由协议算法(第3.3节),通过三个迭代计算权重参数C,并输出向量V。当模型执行恶意软件检测时,输出为两类。当模型执行恶意软件家族分类时,输出为N类。
4实验与结果分析
4.1实验数据集和环境
为了更好地完成此实验,数据集包含三个项目。Drebin数据集[25],VirusShare数据集,MMCC数据集(Kaggle上的Microsoft恶意软件分类挑战)[26]。同时,从中国主流Android应用程序网站上抓取并下载了许多排名最高的良性软件程序。如表1和表2所示。
实验的硬件和软件环境如下表3所示。
4.2评估指标
通过实验结果,我们测量了检测准确性(ACC),TPR(召回)和最终损失(第3.3节),它们的定义如下:
Where, TP is the true positives, FP is the false positives, TN is the true negatives, FN is the false negatives.
4.3实验结果
TensorFlow的灵活架构完美地实现了ColCaps模型,并且在训练样本和验证样本上获得了实验结果,如表4所示。可以看出,在Android和Windows平台上,检测精度ACC达到99.3%,并且 分类准确率分别达到96.5%和98.2%。
在恶意软件检测实验中,对ColCaps模型的ACC和FinalLoss进行了统计分析。 结果如图4所示:
在恶意软件家族分类实验中,对ColCaps模型的ACC和FinalLoss进行了统计分析。结果如图5所示(X轴为step,Y轴为ACC和Final Loss)。
从图中可以看出,ColCaps在训练开始时就达到了90%以上的高检测精度,这表明该模型的图像特征收集能力和分类能力非常强。同时,最终损失降低到最小0.007,这表明模型的重构和还原能力非常高,并且还原后的图像与原始图像几乎相同。在Android Drebin数据集的二十类实验中,数据样本总数仅为4,183,但分类准确率为98.2%。它表明,在数据样本数量较少的情况下,ColCaps仍然可以达到良好的训练效果,避免了CNN需要大量训练样本的缺点。从实验结果可以看出,Android恶意软件的检测和分类精度高于Windows平台,表明ColCaps对Android恶意软件的检测更加敏感。
4.4与相关方法的比较
在本节中,我们在恶意软件检测和分类方面比较了现有的研究方法[15、25、27],它们都使用相同的数据集或相同大小的相似数据集。
在恶意软件检测方面,Jiang等 [15]采用灰度图像纹理和基于CNN的检测方法。 数据集具有相同的来源,而我们的数据集更大。 如图6所示,Android恶意软件检测率提高了20%,ACC为99.3%,Recall为79.5%,Windows恶意软件检测ACC为97.6%。
R2-D2还使用CNN检测方法[27],其检测精度为93%,召回率为96%,但是该系统不能用于Windows恶意软件检测;Drebin使用SVM检测方法,ACC为94%[25]。表5显示了ACC,TPR和FPR中三种方法的比较:
就恶意软件同源性分类而言,Drebin [25]的分类检测精度为93%。 我们比较了每个Android恶意软件家族的检测准确性,如图7所示。与Drebin相比,ColCaps的ACC为98.2%,这也大大提高了。
我们可以看到,与传统的机器学习分类算法SVM [15]和深度神经网络CNN [25,27]相比,基于胶囊网络的ColCaps在恶意软件检测和分类方面表现更好。检测很好。一方面,具有更多颜色的RGB彩色图像具有更好的特征表示能力,具有更鲜明的颜色纹理的图像更易于分类,另一方面,使用动态路由算法的胶囊网络具有更强的识别对象之间空间关系的能力。在图像中与CNN相比。缺点是MMCC数据集中的分类准确率尚未达到最佳水平,仅为95.2%,还需要进一步改进胶囊网络以取得更好的结果。
5 总结与展望
在本文中,我们提出了一种基于恶意软件图像可视化技术和胶囊网络的用于跨平台恶意软件检测和分类的ColCaps框架。该方法首先将软件样本转换为三通道RGB彩色图像,然后执行胶囊网络模型训练,最后使用经过训练的ColCaps自动检测和分类大量恶意软件样本。实验结果表明,该技术在跨平台检测中具有检测精度高,误报率低的特点。更好地解决混淆处理的Android恶意软件检测率低的问题,以及深度学习中的CNN需要大量训练样本集的缺陷。
本文着重于实际的恶意软件检测,并提出了一种性能更好的算法。然而,最近有学者(2017/05)提出了一种基于GAN的对抗恶意软件实例生成方法,该对抗恶意软件实例对机器学习检测算法[23]和基于RNN的序列检测方法具有很高的抵抗力[24]。Liu等[28](2018/08)通过添加对恶意软件图像的转换数据的干扰来欺骗机器学习分类算法和CNN,从而制作对抗性示例。因此,如何检测对抗性恶意软件实例以及如何保持较高的检测准确性和鲁棒性将是未来进一步研究的方向。