基于生成对抗网络增强恶意代码的方法

2021-11-20 01:56朱晓慧钱丽萍
计算机工程与设计 2021年11期
关键词:原始数据分类样本

朱晓慧,钱丽萍,傅 伟

(1.北京建筑大学 电气与信息工程学院,北京 100044;2.北京建筑大学 建筑大数据智能处理方法研究北京市重点实验室,北京 100044)

0 引 言

互联网给信息交换与共享带来极大便利的同时,也为恶意代码的广泛传播提供了有利环境[1]。因此探究有效防护的分类检测方法成为近年来许多专家学者的关注热点,且迄今为止,已从多方面提出很多不同类型的分类检测方法。其中较为新颖和重要的一类是以恶意代码可视化图像为研究对象提取特征,并结合机器学习或深度学习算法的分类检测方法,文献[2-6]均在该方向上有所研究。这些研究既很好解决了传统分类检测方法难以应对反追踪和代码混淆策略的不足,又表明采用图像处理方法具备有效性和可行性,为恶意代码处理提供新视角。但随着研究的深入,学术界公开可用的恶意代码数据量不足且类别不均衡的问题越来越明显,成为限制性能提升的关键问题之一,故亟需加强对恶意代码数据增强技术的探究。

已有传统恶意代码增强技术,如代码复用或自动化技术均能够实现恶意代码数据生成,一定程度上实现数据集扩增,但因其存在耗时费力、缺乏多样性以及实现难度较大等不足,已不能很好满足如今对增强方法可操作性以及高性能的要求,所以结合新兴技术探究高效可行的恶意代码数据增强方法显得更加重要。

因此,本文借鉴分类检测中结合图像的处理方式,提出一种基于恶意代码图像并结合生成对抗网络的恶意代码数据增强方法,缓解现存数据集规模小、类别不均衡问题,辅助提高分类器性能。主要贡献如下:①将图像处理技术应用于恶意代码数据增强,一方面创新性地采用有别于直接增强恶意代码可执行文件的方法,既克服了文本增强难操作、特征复杂难以学习以及生成样本缺乏多样性等问题,使特征保留更加完整直观,又为恶意代码增强方法提供新思路;另一方面能够迎合目前以恶意代码图像为对象的分类检测方法,使其有更好的应用。②将转换后图像经由缩放操作表示,解决恶意代码文件长度不一情况下全部隐含特征的高概率保持问题,使其后续作为输入数据可操作,更有利于发挥生成对抗网络性能。③引入生成对抗网络模型架构,使用Wasserstein距离代替JS散度描述模型生成样本与真实样本之间的分布距离,并使用梯度惩罚项解决恶意代码图像训练过程中参数极端和梯度消失问题,构建较稳定的WGAN-GP模型。④结合图像质量评价指标SSIM和多种基础分类器准确率对恶意代码生成数据相似性及有效性进行综合评估。

1 相关工作

基于机器学习或深度学习的检测算法大多为数据驱动,故在已有恶意代码数据不满足需求的情况下,需要采用一些数据增强技术扩增数据集,提高网络模型性能,缓解过拟合问题。本节从传统恶意代码生成技术和基于生成对抗网络生成技术两方面介绍研究状况。

传统恶意代码生成技术主要包括代码复用和自动化生成,其中代码复用技术通过人工拷贝或修改源代码的方式重新编译生成新的不同执行体,这些执行体中保留个体大部分公用代码和复用历史,具有相似的功能特征但外形相差甚大。文献[7]中提到恶意代码具有复用性,采用代码复用技术可以在不修改或稍许改动已有恶意代码的基础上生成新的恶意代码行为。

然而代码复用技术主要依赖人工操作,费时费力且结构单一,已经逐渐为恶意代码制造者摒弃。而自动化生成技术是通过自动化生产引擎生成组合恶意代码,较于代码复用技术更具随机性和多样性,目前加密、多态和变形都是较为成熟的自动化生产引擎技术。文献[8,9]中均涉及对运用多态、变形等技术手段生成各种攻击行为相近恶意代码的描述。这些技术已相对成熟,但还是存在生成数据模块较固定且实现难度较大等问题。故上述两种传统生成技术均难以应对机器学习或深度学习检测方法对数据质量和数量提出的更高要求。

而随着深度学习技术的发展,具有强大学习和生成能力的生成对抗网络(GAN)[10]已成为恶意代码数据集增强的新选择。Hu Wei等提出一种基于生成对抗网络的算法-MalGAN,用来生成对抗恶意软件示例,由其生成的示例样本能够成功绕过基于黑盒机器学习的检测模型[11]。Hu Wei等针对基于机器学习的恶意软件检测算法在对抗性示例攻击下很脆弱问题提出一种新颖的生成算法,能够生成顺序对抗性示例[12]。Kim等为检测带有混淆的恶意软件,提出一种潜在语义控制生成对抗网络(LSC-GAN)方法[13]。Burks等采用生成对抗网络扩增恶意软件数据,并讨论其优劣之处[14]。曹启云等采用生成对抗网络生成恶意JavaScript代码样本,增强数据集[15]。基于GAN的新方法均取得较好效果,值得进一步探究。

综上所述,人们对恶意代码数据集增强的工作一直没有停歇,不断结合新兴技术提高数据质量与操作可行性。生成对抗网络的引入很好弥补了传统恶意代码增强方法在实现简易度以及生成样本质量上的不足,更好实现了恶意代码增强。然而已有相关研究大多从恶意代码对抗样本角度或代码文本角度出发生成恶意代码数据,没能充分发挥生成对抗网络模型处理连续型数据的优势,且最终仅采用在分类检测中的应用作为验证方法有效性的评估指标。而本文将加强对使用生成对抗网络模型增强恶意代码数据的研究,重视恶意代码数据本身重要性,结合图像处理方法突破生成对抗网络处理恶意代码离散数据的局限,自动化生成新数据扩充数据集,并采用图像评估指标及分类检测应用进行综合验证。

2 基于生成对抗网络的恶意代码生成

2.1 数据表示

本节从恶意代码文件可视化及恶意代码图像处理两方面阐述对样本数据进行的有效表示:

(1)恶意代码文件可视化

对恶意代码可视化方法的研究,国内外都已取得一定成果,可将其分为直接转化法和操作码转化法两类。其中直接转化法以HAN等提出的基于Nataraj方法将恶意软件可执行文件转换成对应的灰度纹理图方法为代表[16],这类方法主要是由恶意代码PE文件二进制码直接转化生成灰度或彩色图像;而操作码转换法则以Andrew等提出的基于反汇编文件进行矢量化的方法为代表[17],该类方法侧重于对恶意代码文件操作码的选取转换。目前,这两种转换方法在对BIG2015数据集的研究中均有涉及,文献[5,6]以及Kaggle竞赛冠军均采用操作码转化法选取不同操作码进行图像转化,而文献[3]中则采用直接转换法进行可视化操作,都取得了理想的效果。本文鉴于对可视化操作可行性以及各类别转换后特征表现度和差异度的综合考虑,最终选择.bytes文件作为研究对象,采用直接转化法将其转化为恶意代码图像,具体步骤为:首先将.bytes文件中存放的十六进制代码(一次为两个代码的集合)转换为一组十进制代码,当遇到不规则符号如“??”时统一分配一个十进制数-1,然后将所得十进制数以固定宽度组成二维数组,最后对应像素值转换为灰度图像。

(2)恶意代码图像处理

不同恶意代码样本文件结构、功能的差异性导致其大小不一,故在将其完整转化为恶意代码图像后的尺寸也有所不同。本文为了兼顾恶意代码内容相对完整性,使其后续作为生成对抗网络输入可操作、有意义,并且减少计算量,将图片尺寸调整统一为64*64大小。以第一、第八家族恶意代码为例,最终生成灰度图像分别如图1、图2所示;并在实验输入时通过归一化操作,将图像像素值由[0,255]限定在[-1,1],促进在后续实验过程中网络结构对数据的处理,加快收敛速度和反向传播。

图1 第一类(Ramnit)恶意代码灰度

图2 第八类(Obfuscator.ACY)恶意代码灰度

易观察发现,同一家族的恶意代码图像在纹理、色泽及结构等特征方面具有明显的相似之处,而不同家族之间存在显著的差别。

2.2 基于GAN的恶意代码数据增强

2.2.1 网络结构及参数选择

生成对抗网络(GAN)是由Ian Goodfellow等提出,是一种无监督学习的生成式模型[10]。GAN思想的诞生启发于博弈论中的二人零和博弈,通过两个参与者的对抗互相提升,所以相较于自动编码器和变分自编码器等传统的生成模型,GAN中包含两个网络,其一是生成网络G,另一个是判别网络D,网络模型结构如图3所示。

图3 生成对抗网络模型

然而传统GAN在实际应用中存在网络难训练、梯度不稳定以及训练进度无衡量指标等问题,因此本文采用其改进衍生的WGAN-GP模型来训练生成,对该模型生成网络与判别网络均选用深度卷积网络,充分学习恶意代码图像特征。

其中生成网络由输入层、隐含层和输出层组成,模型结构如图4所示。该网络以符合正太分布、维度为100的随机噪声为输入,通过全连接和reshape等操作后送入隐含层;考虑恶意代码图像为灰度形式,且经处理后尺寸较小,故为避免因卷积架构过大而导致拟合困难、生成质量差等问题,在隐含层仅设置4个转置卷积层,使随机噪声经过转置卷积层进行空间上采样,实现输入数据通道数减半而图像尺寸加倍,又为兼顾恶意代码特征基本覆盖和降低计算难度,将每层卷积核大小设为5*5,步幅为2,同时为解决梯度消失问题,并加快模型收敛,在隐含层(除最后一层转置卷积层)中均使用ReLU作为激活函数,并加入Batch Normalization层进行批标准化处理;最后由于恶意代码数据经处理后取值范围在[-1,1],故输出层采用Tanh激活函数进行激活返回。

图4 生成模型网络结构

判别网络同样由输入层、隐含层和输出层组成,如图5所示。与生成网络输入不同,判别网络的输入来源包括两部分:其一是真实恶意代码图像样本,其二则是由生成器生成的假样本,尺寸均为64*64*1;而为充分提取恶意代码图像中的复杂特征,故采用4个卷积层构建隐含层,又考虑对恶意代码数据的利用率及计算频次故将卷积核选取与生成网络相同的5*5大小,步幅均为2,又为在卷积降维操作中避免恶意代码数据信息丢失而使用Leaky RELU激活函数激活,并在除第一层卷积层外其它隐含层中添加Layer Normalization进行处理;最后为达拟合真实与生成恶意代码数据分布之间距离的目的,在输出层不使用sigmoid函数激活,而通过全连接层直接将结果返回。

图5 判别模型网络结构

并使用wassertein距离取代传统GAN中JS散度衡量生成数据分布和真实数据分布之间的距离,解决传统GAN因无重叠概率分布情况下概率无法衡量问题,使训练过程更加稳定;还通过在目标函数中增加惩罚梯度来实现对Lipschitz系数的限制,由此避免参数极端和梯度消失或爆炸问题。使判别器优化目标由真实恶意代码数据和生成伪恶意代码数据的原始误差式(1)以及惩罚梯度项损失式(2)两部分组成,最终损失函数如式(3)所示

(1)

(2)

L(D)=Lorigin_loss+Lgp

(3)

而生成器采用式(4)作为损失函数

(4)

2.2.2 模型训练

在对恶意代码数据集经过图像处理之后,开始模型训练。为保证训练过程中判别器性能优于当前生成器生成能力,能够指导生成器朝更好的方向学习,故本文借鉴大多实验中采用的训练次数比,设置每更新5次判别网络后更新1次生成网络;将学习率初始值设为较小的0.0002,且为避免学习率过大无法收敛,过小训练太慢等问题采用指数衰减学习率,适时调整学习率配合训练。具体训练过程如下:

(1)随机生成符合正态分布的噪声z,并由生成器得到生成恶意代码图像Pg;

//训练判别器

(3)将真实恶意代码图像和生成恶意代码图像输入判别器分别计算误差,并如式(1)所示求得原始误差损失Lorigin_loss,再由惩罚项采集样本按式(2)计算惩罚梯度损失Lgp;

(4)计算得式(3)所示判别器误差L(D);

(5)固定生成器参数,依据式(3)所示误差公式,采用Adam优化器更新判别器参数;

(6)判别器每更新5次,执行以下步骤;

//训练生成器

(7)执行步骤(1),并从生成的恶意代码样本Pg中采样送入判别器;

(8)依据式(4)计算生成器对应误差损失L(G);

(9)固定判别器参数,采用Adam优化器更新生成器参数。

不断迭代两个过程,当判别器和生成器均收敛,达到纳什平衡时结束训练。训练完成后,只需要将训练完善的生成器提取出来就可以作为恶意代码数据集扩增的工具,通过给予其大量的随机噪声就能够获取足够多的恶意代码数据样本,从而解决数据集数量缺乏及不均衡问题。

2.3 数据质量评估

鉴于本研究最终为了生成与真实数据分布相似的新数据,因此对其生成质量和相似度的衡量指标也成为值得研究的问题。本文将从两方面对生成数据进行评价:其一、采用图像生成数据评价指标,由理论公式计算相应分数来评估生成质量与相似度;其二、将生成数据添加至原始数据用于分类检测,通过比较分类检测准确度衡量生成有效性。以下分别对两个方面进行阐释。

(1)本文采用生成对抗网络将恶意代码数据以恶意代码图像形式生成新的图像样本,则可以采用图像评估的指标评价生成样本质量以及与原始样本的相似度,故选择灰度图像评价常用指标之一——结构相似性(SSIM)来验证生成数据质量。

结构相似性(SSIM)是一种符合人类直觉的图像质量评价标准,从图像亮度、对比度以及结构三方面进行比较计算。该指标数值范围在[0,1],数值越高说明生成图像质量越好,与原始数据结构越相似。具体计算如式(5)所示

(5)

其中,x为原始恶意代码图像,y为本文模型生成结果,μx和μy分别代表x,y的平均值,σx和σy分别代表x,y的标准差,σxy代表x,y的协方差,c1、c2均为常数。

(2)对于数据增强研究的重要目的之一是生成数据能够有效应用,通常会将生成数据样本进行分类检测实验验证,透过分类检测准确率来反映增强数据在实践中的意义。因此,分类准确率也成为最终评价度量的标准之一。本文将采用决策树、KNN以及随机森林3种分类算法进行分类准确率验证,分析比较增强效果。

3 实 验

3.1 实验数据集

目前对于恶意代码数据集,开源的Kaggle平台成为重要的获取途径之一,由其提供的数据集内容全面且信服力高。本实验选取由微软在Kaggle平台上发起的恶意代码分类比赛所提供的数据集BIG2015[18],其主要包含表1所示的4部分文件。

表1 数据集所包含文件

训练和测试样本库中所使用的9类恶意代码家族为:Ramnit、Lollipop、Kelihos_ver3、Vundo、Simda、Tracur、Kelihos_ver1、Obfuscator.ACY、Gatak。在训练集中每个恶意代码文件都有一个唯一标识该文件的20字符哈希值ID和一个Class(类别),其中Class标记为1-9分别对应上述9种类别,且每个恶意代码均对应一个十六进制表示的.bytes文件和一个利用IDA反汇编工具生成的.asm文件。各类别数据数量情况见表2。

表2 数据集9类家族介绍

3.2 实验环境

本文中的实验环境主要包括实验平台和环境配置,具体信息见表3。

表3 实验平台及配置

3.3 实验结果与分析

本文对所提生成对抗网络模型依据上述进行实验,并采用2.3章节的评价指标进行客观分析,验证有效性。

3.3.1 模型有效性验证-生成数据与原始数据结构相似性对比

为显示本文所用方法的有效性及优势,本节中将使用已在图像生成领域应用广泛且生成、判别网络架构与本文模型相似的深度卷积生成对抗网络(DCGAN),同样训练生成一定规模的各类别恶意代码数据样本[19],并计算对应SSIM值与本文方法作比较。结果见表4。

表4 各类别SSIM值

由表4可得以下折线图6,更加直观比较两种模型生成各类别数据与原始数据结构相似性的实验效果。

图6 各类数据SSIM值

其中横轴表示恶意代码数据类别,纵轴为各类别与真实数据之间的SSIM值。由图表可知:两种模型在大多数类别恶意代码数据生成中都有较好表现,与原始数据的结构相似性值都较高,这表明采用生成对抗网络学习生成恶意代码的方法切实可行。而与本文模型相比DCGAN模型所得曲线波动较大,不够平稳,对于个别类型恶意代码生成效果较差,虽有部分数值高于本文模型,但二者数值也相差甚微。由此体现本文模型性能更加稳定,能够更好处理各类别恶意代码数据特点。所以总体来说,本文所用模型效果优于DCGAN模型,是一种相对较好的恶意代码数据生成模型。

3.3.2 模型有效性验证-生成数据在分类中的应用对比

为从分类结果角度进一步验证本文数据增强方法的有效性,本节中以提取的灰度图像矩阵为特征,采用决策树、KNN以及随机森林等传统机器学习分类方法,分别在小规模均衡原始数据集与生成数据集、小规模不均衡原始数据集与增强数据集以及大规模原始数据集与增强数据集中进行分类验证和分析。并且为避免按一定比例划分数据集而受不同数据分布影响导致分类结果存在不确定性问题,提高最终结果稳定性和说服力,以下分类结果均是采用十折交叉验证方法计算而来。

首先对小规模均衡原始数据集和生成数据集进行实验比较,即选取各类均衡且数量相同的原始数据和生成数据,采用3种机器学习分类算法进行分类。分类结果见表5。

表5 各分类算法实验结果(识别率/%)

由表5中数据可得:通过提取灰度图像矩阵后对恶意代码数据进行分类,在两个数据集中均能取得一定的识别率,故选用的分类特征具备有效性,且采用随机森林方法的表现相较于其它两种机器学习方法最优。此外,生成数据集采用3种机器学习分类方法取得的总体分类准确率在原始数据结果基准范围之内,且略高于其结果,这表明由生成对抗网络生成的新样本有效学习到了各类别数据特征,且不仅能够具有原始数据基本结构,还使得分类特征更加鲜明突出,具备较强的区分性。从而说明生成数据真实有效,可以用于原始数据增强。

以分类效果较优的随机森林分类器为例,表6详细记录了其对各类别数据的分类结果。

由表6可知,原始数据集均衡情况下对各类别的分类结果也较为均衡,生成数据集在各类别分类精确度、召回率和F1值上的表现都符合原数据集的分布情况,结果表明生成的各类数据特征与原数据特征分布都较为相似,可以很好的将各类区分开来。

表6 随机森林对各类别数据分类结果/%

上述分类验证所选用数据集通过选取使各类别数量相同,旨在验证各类生成数据能够具备原始数据特征。下面从数据不均衡角度出发,验证本文生成样本能够有效缓解该问题。以下实验对小规模不均衡原始数据集和增强数据集进行实验,即选取10%原始不均衡数据集以及添加本文方法新生成数据后的较均衡数据集,采用上述特征提取方法提取相同特征后分别在分类器中进行实验。表7展示了两个数据集各类别恶意代码样本的数据量。

表7 恶意代码训练集数据量

由表7可以发现原始数据集存在严重的数据不平衡现象,有些类别数据数量特别少如第五类和第七类恶意代码数据,而在使用本文方法生成数据一定的扩充下,各类别数据相对均衡。而采用不同分类器的具体分类结果见表8。

表8 各分类算法实验结果(识别率/%)

由表8可得:3种分类方法中随机森林表现最好,而当加入生成数据增大训练数量后,对3种分类方法的总体识别率均有不同程度的提升,结果表明采用本文增强数据集方法对于分类器性能的改善有一定的积极作用。

同样以随机森林为例,表9展示了各类别数据增强前后的分类结果,由此可以看出在原始数据集中数量较少的类别识别率都较小,受不均衡影响较为严重,而对其进行增强后各类别的识别率都有改变,其中在数据量较少的第四类和第五类等恶意代码数据上表现显著。从而可以验证本文方法生成数据具备有效性,能够在一定程度上缓解数据量少和不均衡等问题,用于辅助分类器训练。

表9 随机森林对各类别数据分类结果/%

最后对大规模不均衡原始数据集和增强后较均衡数据集进行实验,即采用原始数据集中全部训练数据和添加生成数据后的较均衡数据集,利用3种分类方法分类。两个数据集各类别恶意代码样本的数据量和具体分类结果分别见表10、表11。

表10 恶意代码训练集数据量

表11 各分类算法实验结果(识别率/%)

由表11可发现:当数据量显著增多后,采用决策树、KNN和随机森林的分类准确率也都明显提升,说明数据量对识别率存在较大影响,而在有针对性的添加生成数据,扩增数据集后,各方法又有一定提升,整体结果表明该生成数据能够用于分类器的训练,且有一定的积极作用。而对各类别具体分类结果见表12,可以发现虽然原始数据各类的识别精确度已具有较好结果,但通过本文方法增强,对于原始数据量少的4、5、6、7类数据的识别率还是有明显提升,一定程度上缓解了数据不均衡而带来的损失。

表12 随机森林对各类别数据分类结果/%

综合分析上述三方面实验结果可得:①由表5、表8和表11中原始数据集结果可知数据集数量对恶意代码分类影响较大,数据量越多分类识别率越高,从一方面验证数据的重要性,凸显本研究的意义;②由表8、表11各自对比结果可知,采用本文数据增强对提升分类器性能有积极作用;③通过表9、表12中各类别数据分类结果展示可知,不均衡数据也是影响分类性能的重要因素,而使用本文增强方法能够有效缓解该问题。总之,本文方法所生成数据能够从数据量和均衡性两方面较好解决性能提升限制问题,具有可行性。

上述实验已经验证了本文增强方法的有效性,本小节最后进一步与其它分类方法在该数据集上所得结果作比较,见表13。本文利用在大规模原始数据集中增强后,以随机森林作为分类器所得结果与相关研究进行比较。本文方法所得结果比文献[6]所达结果略低,主要原因在于文献[6]采用卷积神经网络模型对转换后的恶意代码图像进行特征提取和分类,其层层变换与提取对识别结果有一定的提高;而相较于文献[5]和文献[3]结果均有所提高。由此可知通过生成对抗网络进行数据增强对于分类识别具有积极的作用。

表13 相关研究比较

3.3.3 小结

综上所述,本节不仅从图像角度选取SSIM值作为评价指标衡量了本文方法生成图像的质量以及与原始数据的相似性,体现本文方法相较于DCGAN生成数据的优势,对扩充较高质量恶意代码数据具有一定的可行性;还通过多种分类器模型识别率的比较,表明本文方法扩增的数据样本有利于提高分类器性能,能够缓解原数据集各类别数据量不均衡等问题,具备有效性。

4 结束语

恶意代码数据集的采集获取是恶意代码分类检测任务中的关键一环,本文将生成对抗网络应用于网络恶意代码数据的生成,很好地解决了现存数据集难获取、不均衡等问题,为此环节提供了保障。本文创新性地将恶意代码可视化技术融入其中,结合生成对抗网络在图像领域的优良应用,实现了恶意代码数据集扩增。从整体来说,本文方法在数据集扩增实验中表现良好,能够达到预期期望。实验比较结果表明,恶意代码生成数据具备有效性,符合用于恶意代码检测任务训练的目标。本文下一步计划深入探究恶意代码可视化表示方法,使其更多包含、更好表现恶意代码数据特性,从保持恶意代码攻击性的角度探究生成更具关联性新样本的方法,并评估其质量和有效性。

猜你喜欢
原始数据分类样本
GOLDEN OPPORTUNITY FOR CHINA-INDONESIA COOPERATION
分类算一算
用样本估计总体复习点拨
受特定变化趋势限制的传感器数据处理方法研究
分类讨论求坐标
推动医改的“直销样本”
数据分析中的分类讨论
教你一招:数的分类
全新Mentor DRS360 平台借助集中式原始数据融合及直接实时传感技术实现5 级自动驾驶
随机微分方程的样本Lyapunov二次型估计