APP下载

基于SNGAN的黑盒恶意软件对抗样本生成方法

2023-04-29张宇科王俊峰

张宇科 王俊峰

摘要:目前,为了应对数以百万计的Android恶意软件,基于机器学习的检测器被广泛应用,然而其普遍存在防对抗攻击能力差的问题,对恶意软件对抗样本生成方法的研究有助于促进恶意软件检测领域相关研究的发展.黑盒场景下的对抗样本生成技术更加符合现实环境,但相较于白盒场景效果不佳.针对这一问题,本文提出了一种基于SNGAN的黑盒恶意软件对抗样本生成方法,将图像领域的SNGAN方法迁移到恶意软件领域,通过生成器网络和替代检测器网络的迭代训练生成对抗样本,并通过谱归一化来稳定训练过程.该方法能够对已有的恶意软件添加扰动,达到欺骗机器学习检测器的效果.实验结果证明,该方法对多种机器学习分类器均可以有效规避检测,验证了方法的可行性和可迁移性.

关键词:Android; 恶意软件; 对抗攻击; SNGAN

收稿日期: 2022-10-21

基金项目: 基础加强计划重点项目(2020-JCJQ-ZD-021)

作者简介: 张宇科(1997-), 四川成都人, 硕士研究生, 研究方向为网络空间安全. E-mail: 2638225602@qq.com

通讯作者: 王俊峰. E-mail: wangjf@scu.edu.cn

Black box malware adversarial examples generation method based on SNGAN

ZHANG Yu-Ke, WANG Jun-Feng

(College of Computer Science, Sichuan University, Chengdu 610065, China)

Currently, machine learning-based detectors are widely used to handle millions of Android malware, but they often suffer from poor anti-adversarial attack abilities. The research on the adversarial examples generation method of malware is helpful to promote the development of the field of malware detection. The adversarial examples generation technology in the black-box scenario is more in line with the real environment, but the effect is not good compared with the white-box scenario. To solve this problem, this paper proposes a black box malware adversarial examples generation method based on SNGAN, migrating the SNGAN approach to the malware domain from the image domain, adversarial examples are generated by the network of generator and replace detector iterative training, the training process is stabilized by spectral normalization. The proposed method can cheat the machine learning detectors by adding disturbance to the existing malware. Experimental results show that our method can avoid detection effectively from a variety of machine learning classifiers, and the feasibility and portability of the method are verified.

Android; Malware; Adversarial attack; SNGAN

1 引 言

Android系统具有开源性、硬件多样性和应用市场多样性三大显著的特点[1],这些特点帮助其在市场竞争中占据了优势,2021年中国手机操作系统行业研究报告[2]的数据显示Android系统占据了88.9%的中国移动端市场.然而,Android系统的开源性、流行性和大量第三方应用市场反而使得它更容易成为恶意软件的攻击目标.目前Android系统虽然存在大量的第三方应用市场,但缺乏统一完善的相关监管机制,导致Android设备可能从未经安全检测验证的第三方应用市场下载应用.同时,目前Android系统本身的权限、资源、通信等方面的控制机制仍然不够完善,这些问题导致了Android恶意软件数不胜数.根据360公司发布的2021年度中国手机安全状况报告[3],2021年移动端共发现943万个新增的恶意软件样本,与2020年(454.6万个)相比上涨了107.5%.

目前,恶意软件检测方法主要分为基于签名的检测方法、基于行为的检测方法、基于启发式的檢测方法和基于机器学习的检测方法[4].基于签名的检测方法依赖于对目标软件提取的唯一签名,并将其存储起来与已收集的恶意软件签名进行对比,如果相互吻合则判定目标软件为恶意软件,这类方法可解释性强且开销较小,但在对未知恶意软件或已知恶意软件的不同变体的未知签名进行分类时准确率很低.基于行为的检测方法在对隔离环境中的目标软件进行监控并收集显示的行为后,关注目标软件是否出现了特定的恶意或敏感行为,从而进行恶意或良性的分类,其能够提供目标软件的恶意行为作为结果的解释,同样具有可解释性强的特点,但由于其开销大,因此难以处理大量的软件样本.基于启发式的方法通过生成分析提取数据的通用规则,通过动态或静态分析给出这些规则,以支持所提出的检测恶意意图的模型,生成的规则可以使用YARA工具和其他工具自动生成,也可以根据分析人员的经验和知识手动生成.基于机器学习的检测方法从目标软件中提取特征,将目标软件转化为特征向量,然后构建分类器对特征向量进行检测和分类,相较于之前的三类方法,这类方法能够更有效地应对不同的恶意软件变种,所需的时间成本也相对较少,因此常常被用来应对日渐增长且复杂多变的恶意软件攻击.

虽然基于机器学习的恶意软件检测方法具有许多优点,但普遍存在鲁棒性不强的问题,容易受到对抗样本的攻击.这种通过添加精心设计的微小扰动来逃避机器学习模型检测的攻击方式被称为对抗攻击,具有白盒、黑盒和灰盒三种攻击场景[5].在白盒场景中,攻击者清楚目标系统中的一切细节,包括防御机制,对基于机器学习的恶意软件检测器的攻击大部分属于这一类别.在黑盒场景中,攻击者并不了解目标检测器的内部细节,但知道输出的预测标签,对杀毒软件的攻击基本都属于这一场景.灰盒场景介于前两者之间,攻击者了解目标检测器的学习算法、特征提取方法和数据集,但并不了解具体的防御方法和学习参数.目前绝大部分的对抗样本生成研究都是针对白盒和灰盒场景.然而,在现实环境中,攻击者很难获取检测器模型的具体细节信息,往往只能得到检测器最后给软件打上的良性或恶意标签,因此黑盒攻击更加契合现实场景.

目前在恶意软件领域白盒攻击的方法更多,且大部分都是基于梯度的方法.文献[6]将原本用于图像领域的基于雅各比显著性图的攻击(JSMA)迁移至恶意软件领域,并将其输入的特征向量由连续型特征更改为离散型特征.文献[7]对恶意样本基于梯度进行了多轮迭代,每轮对目标恶意样本增加梯度分量最高的一个特征.文献[8]提出了一种白盒攻击方法, 这种方法不会损坏目标软件原本的代码,通过在文件的末尾添加了少量字节来规避检测.

在黑盒场景下,也存在一些研究对恶意软件检测模型进行对抗攻击.文献[9]定义并实现了一系列攻击方法来评估Drebin检测器的安全性,证明了基于机器学习的检测器易受到对抗攻击.文献[10]针对基于RNN模型的检测器进行对抗攻击,训练了一个替代的RNN模型来对目标RNN模型进行近似模拟,从而对恶意样本添加扰动生成对抗样本.文献[11]提出了MalGAN,通过生成对抗网络(Generative Adversarial Networks,GAN)模型对恶意软件添加扰动,从而生成对抗样本,其使用一个生成器来向恶意软件中添加随机噪声扰动,使用一个替代鉴别器来模拟目标黑盒检测器.Chen等人[12]将图像领域的对抗攻击方法JSMA和C&W算法使用到恶意软件领域并相应的进行了一些修改,针对两种机器学习检测器Drebin和Mamadroid生成Android恶意软件对抗样本.Renjith等人[13]提出了一种基于GAN的Android恶意软件对抗样本生成系统GANG-MAM,根据恶意软件生成特征向量添加扰动并使其对检测器产生规避性,再对恶意软件进行相应的更改.

恶意软件检测对安全性和鲁棒性有较高的要求.因此通过研究对抗攻击,研究者可以挖掘检测模型的缺陷,发现恶意软件可能使用的各种技术,进一步改进恶意软件检测器的鲁棒性和安全性,从而提高其检测准确性和可靠性.同时,研究对抗防御方法离不开对抗样本生成方法提供的理论和数据基础.例如对抗训练[14],在这种方法中机器学习模型同时使用正常样本和对抗样本进行训练,以模拟对抗攻击的效果,通过将对抗样本纳入训练过程,模型可以识别和抵抗这些类型的攻击,从而使其更加安全和鲁棒.因此,对抗攻击研究是促进恶意软件检测发展的重要方向.通过研究对抗攻击,可以发现恶意软件检测器的漏洞并倒逼其进步,同时也可以帮助开发出新的对抗防御方法,提高恶意软件检测器的鲁棒性和安全性.

在黑盒场景下,攻击者无法获取模型的具体细节,因此无法计算目标样本相对于模型输出的梯度信息.在此基础上,基于GAN的对抗攻击方式脱颖而出,其可以通过学习数据分布,快速生成高质量的对抗样本.现有的基于GAN的Android恶意软件对抗样本生成方法普遍存在以下问题:

(1)扰动效果不佳.黑盒攻击方法的一个普遍问题是扰动效果不佳,即生成的对抗样本与原始样本之间的差异较小,难以达到有效的欺骗效果.主流的黑盒攻击方法通过替代模型来拟合目标模型,再针对替代模型生成对抗样本,其成功率取决于对抗样本的可转移性,相较于直接针对目标模型生成对抗样本的白盒攻击方法,扰动效果往往不甚理想.

(2)训练不稳定.由于黑盒攻击缺乏目标模型的内部信息,因此训练过程较为困难,往往存在训练不稳定的问题,导致生成的对抗样本质量较差.在基于GAN的对抗攻击方法中,生成器和判别器网络是交替进行训练的.当生成器网络生成的对抗样本无法欺骗判别器网络时,生成器网络会不断改进生成的样本,直到这些对抗样本能成功规避判别器网络的检测,判别器模型也会不断更新自己,以增强对对抗样本的检测能力,两个模型会不断相互对抗,导致模型振荡,使得训练过程不稳定.另外,当生成器模型无法生成欺骗判别器模型的对抗样本时,会尝试通过复制已有的对抗样本来生成新的对抗样本,从而导致模式崩溃,即生成的对抗样本过于相似,无法提供更多的信息,也就无法欺骗判别器模型.

(3)特征表征性不足.目前基于GAN的Android恶意软件对抗攻击研究使用的样本主要是基于恶意软件的敏感API调用特征,这主要是因为这些特征比较容易获取,且可以较好地表征恶意软件的行为.但是Android恶意软件的恶意性不止体现于从classes.dex文件中提取的API调用,AndroidManifest.xml文件中包含的权限信息也是判别恶意性的重要依据.

在此基础上,本文提出了一种基于SNGAN的Android恶意软件对抗样本生成技术,主要工作为: (1)将图像领域的SNGAN技术迁移到了恶意软件领域,相较于其他攻击方法达到了更好的扰动效果,提升了训练的稳定性. (2)本文采用了包含配置信息及API调用信息的Drebin特征和包含API转移概率信息特征,相较于以往单一的敏感API调用特征能够更加完善地代表恶意软件特性.

2 SNGAN

生成对抗网络[15]是一种生成模型学习方法,最初被使用在图像领域,分为一个生成器网络和一个判别器网络.在图像领域,GAN的目标是通过迭代地训练生成器网络和判别器网络,生成能够以假乱真的对抗样本.其中生成器网络拟合真实分布,通过变换噪声向量从数据分布中生成样本,其目的是产生假样本,使网络产生错误的判断.而判别器网络的目标是判断输入的样本是真实的样本还是生成的样本.生成器网络的训练信息由判别器网络提供.

而在恶意软件领域中,由于判别器被用来模拟黑盒检测器,因此也被称为替代检测器.替代检测器被用来区分恶意样本和良性樣本,生成器从恶意样本中生成对抗样本来逃避替代检测器的检测,当生成器输出的对抗样本能完全逃避替代检测器的检测,GAN就达到了纳什均衡.GAN的核心原理可以用如下表达式表示:

其中,z是随机噪声向量;G为生成器;G(z)是G生成的对抗样本;D是判别器;E为分布的期望值;x~Pdata(x)表示真实样本的分布;z~Pz(z)表示服从均匀分布或正态分布的随机噪声;D(x)为D判断x是真实样本的概率;D(G(z))为D判断G(z)是真实样本的概率.

生成对抗网络面临的一个重要挑战是训练的不稳定性,在实际训练中GAN会出现梯度消失的问题,如何稳定训练过程成为训练GAN的首要问题.多个研究[16-18]指出保证Lipschitz连续性在确保训练的稳定性方面具有重要作用.Wasserstein GAN (WGAN)[19]通过权值裁剪使鉴别器满足Lipschitz约束,但限制了网络的拟合能力. WGAN-GP[16]使用梯度惩罚来改进WGAN的训练,但梯度惩罚取决于生成器的分布,训练过程中生成器分布的多变性会导致梯度惩罚的不稳定.

为了更进一步地提高训练的稳定性,Miyato等人[19]提出了谱归一化生成对抗网络(Spectrally Normalized Generative Adversarial Network,SNGAN),通过谱归一化(一种新的权重归一化技术)来使得判别器满足Lipschitz约束,从而稳定判别器的训练.

SNGAN中采用L2范数形式的Lipschitz连续函数,具体而言是指对一个连续函数f进行了限制,要求存在一个常数K>=0,使得定义域内的任意两个元素x和x′都满足一个表达式,满足这一条件即可称f的Lipschitz常数为K,在SNGAN中,K=1.表达式如下所示:

矩阵W的L2范数也就是谱范数存在如下式.

矩阵W的谱范数等于矩阵W的最大奇异值.因此,对于线性层g(h)=wh,存在下式.

当权重矩阵w的最大奇异值受到限制时,该层可以满足Lipschitz约束.如果||w||2≤1 ,则函数g(h)可以满足1-Lipschitz约束.对于像ReLU和LReLU这样的激活函数,满足1-Lipschitz条件.GAN的判别器网络是典型的多层神经网络,由多个函数g(h)和激活函数组合而成的.因此,对于判别器存在表达式:

Lipschitz约束限制了f(x)和f(x)之间的差异.在损失优化后,更新判别器会增加f(x)和f(x′)的差值,更新生成器会增加f(x′).较小的f(x)会导致生成器学习的不稳定,较大的f(x)会导致判别器学习真实数据的速度变慢.Lipschitz约束不仅有助于生成器的稳定,而且有助于判别器网络的学习.

3 基于SNGAN的对抗样本生成方法

本文基于SNGAN的对抗样本生成方法流程如图1所示.整个方法流程的主要步骤如下,首先输入一定数量的良性Android软件和恶意Android软件作为输入数据集,对于每个Android软件使用apktool工具进行拆分,生成反汇编文件,对于其中的AndroidManifest.xml文件和class.dex文件提取特征信息形成特征向量.然后,将良性软件和恶意软件分别转化为良性软件特征向量和恶意软件特征向量;再将特征向量和随机噪声一同输入到SNGAN模型的生成器网络中,输出得到对抗样本特征向量.接着将得到的特征向量使用目标黑盒检测器进行分类,得到良性软件或恶意软件的分类;再将包含分类信息的样本数据输入到SNGAN模型的替代检测器(判别器)中,使得替代检测器可以逐步模拟趋近目标黑盒检测器的结构,生成器再从替代检测器中提取梯度信息,如此使得整个SNGAN模型可以迭代地进化,直到最终收敛到一个稳定的状态.

3.1 特征提取

在Android恶意软件的检测中,特征信息根据来源不同可以分为静态特征和动态特征.其中静态特征主要是通过程序分析等技术从软件中提取的应用配置、API调用等信息,从apk压缩包中解压的AndroidManifest.xml文件和class.dex文件是恶意软件检测的主要特征来源.其中AndroidManifest.xml是Android应用清单文件,包含了Android软件的配置信息,在进行代码执行和界面展示时都会使用到;class.dex文件是Android软件的可执行文件,与Android软件的行为特征息息相关.动态特征主要是软件的行为,通过数据流分析等方法判断软件是否表现出隐私泄露、权限提升等恶意行为,使用动态特征的缺点在于提取特征需要在沙盒中实时执行程序,时间成本较高,因此难以处理大规模的数据集,因此在本文中采用静态特征作为特征提取的目标.

根据针对的黑盒检测器的不同,本文主要使用了两类特征.第一类特征来自于drebin检测器[20]的特征提取方法,如表1所示.表1中,本文从AndroidManifest.xml文件中提取硬件组件、请求的权限、App组件、过滤的意图作为特征信息;从class.dex文件中获取可疑的API调用、受限的API调用、已使用的权限、网络地址作为特征信息,对每一个特征使用一个标志位表示,根据该特征的存在与否使用1或0表示,(1代表应用存在该特征,0代表不存在).本文将得到的特征集表示为了{0,1}矩阵形式,由于此时的矩阵维数较高且数据较为稀疏,在模型中计算速度较慢.因此对得到的矩阵进行特征筛选,将数据过于稀疏的特征项进行排除,得到了最终的特征向量.

第二类特征来自于Mamadroid[21]检测器对API调用特征的处理提取方案,使用抽象的API调用序列,而不是特定API的频率或存在,旨在捕获移动应用程序的行为模型,对class.dex文件进行信息提取,使用Androiguard工具将其中的API调用信息进行提取并形成API调用图.然而由于API数量过多,直接对API调用序列进行处理计算成本太大,因此采用API家族之间的调用关系作为特征信息,将API调用图转化为API家族之间的调用关系数矩阵,再使用马尔科夫链将其转化为API家族转移概率矩阵,最终得到了Android软件的特征矩阵.

3.2 生成器

在特征提取的基础上,本文构造了生成器模块,利用随机噪声将恶意软件的特征向量转换为对抗样本特征向量.由生成器和替代检测器组成的SNGAN结构如图2所示.生成器接受随机噪声向量(采用高斯分布生成)和恶意软件的特征向量作为输入,生成对抗样本特征向量作为输出,再将输出的向量输入给替代检测器进行分类.在训练过程中,生成器的权重和偏置不断被调整,从而最大限度地规避替代检测器,生成恶意性被隐藏起来的对抗样本.

生成器的结构是一个多层前馈神经网络,以恶意软件特征向量x和噪声向量n进行拼接作为输入.其中x是一个X维的二进制向量,x的每个元素对应一个特征的存在与否,且生成器网络的输出也具有X个神经元;噪声向量n由从[0,1]范围中随机采用得到的元素组成,是一个N维向量.其作用是使得生成器可以随机地根据恶意样本生成对抗样本.在全连接层后使用了激活函数LeakyReLU,在输出层前使用了激活函数tanh,表达式分别如下式所示,且在中间加入了谱归一化层.

生成器的损失函数表达式如下所示.

其中,Smal是恶意软件数据集;z是在[-1,1]范围内均匀分布的噪声向量.LG的最小化过程会降低样本被识别为恶意的概率,推动替代检测器将恶意软件误判为良性软件.

当生成作为对抗样本的特征向量时,删除或者修改特征可能会导致Android恶意软件出现错误而无法运行,例如删除AndroidManifest.xml文件中的权限android. permission.CAMERA会导致软件无法访问相机,因此只使用向其中添加特征的方式来进行扰动,表示在特征向量中即是与表示扰动特征的向量做OR运算.

3.3 替代检测器

在黑盒环境下,攻击者并不了解检测器的内部具体构造,为了模拟这一场景,本文使用替代检测器来模拟目标黑盒检测器.替代检测器是权值为θd的多层前馈神经网络,以程序特征向量x为输入.他将程序分为良性程序和恶意程序.我们将x为恶意软件的预测概率表示为Dθd(x).与生成器一样,替代检测器也包含了谱归一化层来提高训练的稳定性并加速收敛.

替代检测器接收样本输入,可以是真实的恶意样本或生成的对抗样本.在训练过程中,替代检测器会将输入数据分类为恶意样本或良性样本.替代检测器的目标是尽可能准确地区分样本的恶意性,并提供反馈给生成器来帮助其生成更加“良性”的对抗样本.因此替代检测器的性能很大程度上影响着SNGAN模型的整体性能.

替代检测器的训练数据包括来自生成器的对抗样本特征向量以及分别从良性软件和恶意软件提取的特征向量.这些特征向量并不直接输入到替代检测器中,而是先使用黑盒检测器对输入的特征向量进行检测,得到恶意或良性的分类结果,再将包含分类信息的数据输入到替代探测器中进行利用.替代检测器的损失函数如下式所示.

其中,Bben是黑盒检测器标注为良性软件的样本集合;Bmal是黑盒检测器标注为恶意软件的样本集合,损失函数体现了恶意样本和良性样本之间的 Wasserstein 距离[19]的差值.

3.4 黑盒检测器

为了与相关研究对比实验效果,本文的黑盒检测器包含了Android恶意软件对抗样本生成领域经常使用到的机器学习检测器drebin[20]和Mamadroid[21].这两者都是Android恶意软件检测器系统,同时都依赖静态分析技术提取特征,并使用机器学习算法进行分类.由于这两种检测器的高知名度,许多Android恶意软件对抗攻击方法以他们为目标,因此以他们作为黑盒检测器能够更加方便与直观地与相关研究对比实验效果.

Drebin是一款轻量级的Android恶意软件检测器,通过对AndroidManifest.xml和应用程序的smail文件进行扫描提取特征,提取的特征包括权限、活动和API调用等八个类别的特征.

Drebin定义了一个|S|维向量空间,通过构造特征向量φ(x)将Android软件映射到该空间,空间每个维度的值为0或1,表示对应特征的存在或不存在.例如一个需要发送高级SMS消息并因此需要请求某些权限和硬件组件的Android恶意软件对应的特征向量φ(x)如图3所示.

Drebin训练一个支持向量机(SVM)分类器来区分良性和恶意软件.在此基础上,为了验证模型生成的对抗样本是否具有可迁移性,本文使用了几种不同的算法对drebin提取的特征进行恶意或良性的分类,包括逻辑回归(LR)、随机森林(RF)、多层感知器(MLP).

MaMaDroid从一个Apk的API调用图中提取特征,抽取了API调用关系蕴含的隐含信息,这也是许多恶意软件检测模型常用的方式[22].它使用抽象的API调用序列,而不是特定API的频率或存在,旨在捕获移动应用程序的行为模型.然而由于API数量过多,直接对API调用序列进行处理计算成本太大,因此将API调用抽象为家族级别或包级别.如对API调用sendTextMessage()的抽象如图4所示.抽象成家族级别更轻量级,而抽象成包级别粒度更细,为了加快训练过程的收敛速度,此处将API调用抽象为家族级别.

MaMaDroid首先从每个应用程序中提取API调用,并获得API调用序列.然后使用API家族为对API调用进行抽象.最后构造马尔可夫链,以每个家族之间的转移概率作为特征向量,分别使用随机森林(RF)、邻近算法(KNN)和支持向量机(SVM)来训练机器学习分类器.

3.5 训 练

在训练过程中,同时训练生成器G和替代检测器D,其中生成器G的目标为输入的恶意软件对其添加扰动生成对抗样本,替代检测器D尝试提取目标黑盒检测器f的信息,并对输入的样本模拟黑盒检测器f的决策进行良性样本和恶意样本的分类.

整个训练过程可以分为以下几个步骤:

(1)初始化生成器和判别器的参数.

(2)使用生成器生成对抗样本.

(3)将恶意样本和对抗样本输入到替代检测器中打上标签.

(4)将标签样本输入到替代检测器进行训练.

(5)通过替代检测器反馈的梯度信息训练生成器.

(6)重复步骤(2)~(5)直到达到预设的训练次数或者损失函数收敛.

对于训练替代检测器D,恶意样本和良性样本都被集成到数据集中.在每次迭代中,从数据集中抽取一批同时包含两者的混合样本,然后将它们输入到黑盒检测器f当中.然后使用黑盒检测器f输出的标签来拟合生成器D,使生成器D的决策边界尽可能接近黑盒检测器f.

在训练过程中,生成器G学习生成能够逃避替代检测器D的样本.随着替代检测器D与目标黑盒检测器f相似度的提高,生成器G对黑盒检测器f的逃避检测能力也会提高.最后,由于对抗攻击的可转移性,由生成器G生成的对抗样本也能有效规避黑盒检测器f.一旦训练过程完成,即可使用训练好的生成器G在很短的时间内只使用输入的恶意软件生成对抗样本.

生成器G的目的是学习原始标签中y=-1的恶意样本的特征信息,生成相应的对抗样本,从而误导替代检测器D将其预测成标签为y=1的“良性”样本.

4 实 验

4.1 数据集

本文使用的数据集主要来自知名的Android软件数据集drebin和AndroZoo,从中下载了5000个恶意的和5000个良性的Android软件构成了训练数据集.其中drebin数据集只包含Android恶意软件,软件来源包括GooglePlay商店、中国及俄罗斯的不同应用市场、Android网站、恶意软件论坛和安全博客及Android Malware Genome Project,每个样本都被发送到VirusTotal服务,并经过其中十个常见的反病毒扫描程序检测(AntiVir,AVG,Bit-Defender,ClamAV,ESET,F-Secure,Kaspersky,McAfee,Panda,Sophos),对于至少两个扫描程序检测到的apk被认定为恶意软件.AndroZoo [23]是从多个来源收集的不断增长的 Android 应用程序集合,同时包含良性软件和恶意软件,包括官方 Google Play 应用程序市场.每个 APK 都已(或即将)被数十种不同的防病毒产品分析,以了解哪些应用程序被检测为恶意软件.

最后对数据集进行了拆分,使用了80%的样本作为训练集,剩余的20%则作为测试集.本文所使用基于SNGAN的对抗样本生成方法和黑盒检测器共用训练集和测试集.

4.2 评价指标

数据集中的所有恶意软件通过模型迭代进行扰动后生成对抗样本,再输入到黑盒检测器中进行检测,对检测结果使用召回率(TPR)进行评价.

其中,FN表示分类器判断为阴性的阳性样本数量,此处表示黑盒检测器判断为良性的恶意样本数量;TP表示分类器判断为阳性的阳性样本数量,此处表示黑盒检测器判断为恶意的恶意样本数量.FNR实际含义为所有样本中被检测器检测为恶意软件的比例,TPR越低代表着越多的对抗样本成功逃避检测,也说明模型扰动效果越好.

4.3 实验结果

对于数据集中的恶意软件样本,根据Drebin检测器和Mamadroid检测器的特征提取方法,提取特征形成恶意软件特征向量输入到模型中,迭代地进行扰动后得到对抗样本特征向量,最初的恶意软件特征向量和最后的对抗样本特征向量使用黑盒检测器进行检测得到实验结果.

为了更好地体现本文提出方法的可迁移性,此处使用的黑盒检测器有两个类别:第一类为drebin检测器及其变种,其使用支持向量机(SVM)、逻辑回归(LR)、随机森林(RF)、多层感知器(MLP)来训练分类器,对应的实验结果如表2所示;第二类为Mamadroid检测器,其使用的分类器随机森林(RF)、邻近算法(KNN)和支持支持向量机(SVM)来训练分类器,对应的实验结果如表3所示.

在本文使用的SNGAN模型中,使用了RMSprop作为优化器,学习率为0.0005,使用wasserstein loss[19]作为损失函数.目标黑盒检测器为Drebin檢测器及其变种时,噪声维数为100,生成器网络的层次大小分别为706、512、256、128、64、606,替代检测器中的层次大小分别为606、700、1;而当目标黑盒检测器更换为Mamadroid检测器后,则相应的将噪声维数改为20,将生成器网络的层次大小改为141、128、64、121,将替代检测器网络的层次大小改为121、242、1.在生成器网络中每两层间使用了激活函数LeakyReLU,在最后加上谱归一层并使用tanh作为激活函数.样本被输入到在SNGAN模型中进行了200次迭代训练,每次迭代中又循环地随机从训练集中选择64个样本作为小批量地训练样本,直到训练样本总数达到训练集的样本数.最后选择规避效果最好的一次迭代生成的对抗样本与最初的恶意样本输入到黑盒检测器中对比检测结果.

相比于原始样本TPR的降低可以解释为当模型被训练时恶意软件样本的转换,这样的转换可以将恶意软件的特征向量变成更趋近于良性样本的特征向量,进而逃避黑盒检测器的检测.

可以观察到,对于Drebin检测器及其变种,使用MLP和LR作为分类器时,对于原始的恶意样本能够达到96%以上的检测率(即TPR),相对于使用SVM和RF作为分类器达到了更好的检测效果.同时Drebin检测器及其变种相较于Mamadroid检测器对原始样本71%~79%的检测率,检测效果更好.原因是Drebin的特征提取方式同时使用了Manifest特征和Dexcode特征,与Mamadroid的特征提取方式使用的API调用相比较,能够更加完善地表征恶意软件的特征信息.

同时,为了突出本文方法相较于同类方法的优势,将本文实验结果与一些同样以Drebin和Mamadroid检测器为攻击目标的对抗攻击方法[6,9,12,24]进行了对比,对比结果如表4所示.其中检测率指对抗攻击方法生成的对抗样本在Drebin或Mamadroid检测器中被判定为恶意软件的比率,值越低则扰动效果越好,基于SNGAN的攻击代指本文方法.不难看出,相较于其他Android恶意软件对抗样本生成方法,本文方法使得检测器对恶意软件的检测率达到了更低的水准,也即是本文方法能够对检测器产生更好的扰动效果.

在对恶意软件样本使用模型添加扰动后,本文方法最后检测结果的TPR都可以达到或者接近0%,证明训练后的生成器网络已经学习到如何有效地绕过黑盒检测器.对于测试的恶意软件来说,在使用本文的方法添加扰动后可以有效规避黑盒检测器的检测.但需要说明的是,使用不同的黑盒检测器在实际的实验过程中收敛难度并不相同,表现到数据上就是模型达到收敛状态(也就是迭代过程中黑盒检测器检测结果的FNR达到稳定状态)需要的迭代次数并不相同.

5 结 论

本文提出了一种基于SNGAN模型的恶意软件对抗样本生成方法,对恶意软件添加扰动生成对抗样本,并在黑盒场景下针对机器学习检测器Drebin和Mamadroid进行对抗攻击,验证了方法的可行性.相较于其他将GAN模型用于恶意软件对抗样本生成的研究,本文使用了更加完备的特征提取方式,改善了将GAN模型运用在恶意软件领域存在的训练不稳定的问题.同时对多个分类算法进行实验,验证了本文方法的可迁移性.进一步探究了基于机器学习的恶意软件检测器的漏洞,提出了一种恶意软件可能使用到的对抗样本生成技术,为促进恶意软件检测技术的发展提供了理论和数据基础.

参考文献:

[1]王思远, 张仰森, 曾健荣, 等.Android恶意软件检测方法综述[J].计算机应用与软件, 2021, 38: 1.

[2]孙彦博. 2021 年中国手机操作系统行业研究报告[EB/OL]. [2022-05-22]. https://pdf.dfcfw.com/pdf/H3_AP202105261494050963_1.pdf?162203 5238000.pdf.

[3]360 互联网安全中心. 2022 年度中国手机安全状况报告[EB/OL]. [2022-05-23]. https://pop.shouji.360.cn/safe_report/Mobile-Security-

Report-202212.pdf.

[4]Aboaoja F A, Zainal A, Ghaleb F A, et al. Malware detection issues, challenges, and future directions: a survey [J]. Appl Sci, 2022, 12: 8482.

[5]Li D, Li Q. Adversarial deep ensemble: evasion attacks and defenses for malware detection [J]. IEEE T Inf Foren Sec, 2020, 15: 3886.

[6]Grosse K, Papernot N, Manoharan P, et al. Adversarial perturbations against deep neural networks for malware classification [EB/OL]. [2022-05-25]. https://arxiv.org/pdf/1606.04435.pdf.

[7]Al-Dujaili A, Huang A, Hemberg E, et al. Adversarial deep learning for robust detection of binary encoded malware [C]//Proceedings of the 2018 IEEE Security and Privacy Workshops (SPW). [S.l]: IEEE, 2018: 76.

[8]Kolosnjaji B, Demontis A, Biggio B, et al. Adversarial malware binaries: evading deep learning for malware detection in executables[C]//Proceedings of the 2018 26th European Signal Processing Conference (EUSIPCO). [S.l]: IEEE, 2018: 533.

[9]Demontis A, Melis M, Biggio B, et al. Yes, machine learning can be more secure! a case study on android malware detection [J]. IEEE T Depend Secure, 2017, 16: 711.

[10]Hu W, Tan Y. Black-box attacks against RNN based malware detection algorithms [C]//National Conference on Artificial Intelligence. San Francisco: OpenReview.net, 2017.

[11]Hu W, Tan Y. Generating adversarial malware examples for black-box attacks based on GAN[C]// Proceedings of the Data Mining and Big Data: 7th International Conference(DMBD).Singapore: Springer Nature Singapore, 2023: 409.

[12]Chen X, Li C, Wang D, et al. Android HIV: a study of repackaging malware for evading machine-learning detection [J]. IEEE T Inf Foren Sec, 2019, 15: 987.

[13]Renjith G, Laudanna S, Aji S, et al. GANG-MAM: GAN based enGine for modifying android malware [J]. SoftwareX, 2022, 18: 100977.

[14]Chen S, Xue M, Fan L, et al. Automated poisoning attacks and defenses in malware detection systems: an adversarial machine learning approach [J]. Comput Secur, 2018, 73: 326.

[15]Goodfellow I, Pouget-Abadie J, Mirza M, et al. Generative adversarial nets [C]//Proceedings of the 27th International Conference on Neural Information Processing Systems. Montreal: OpenReview.net, 2014.

[16]Gulrajani I, Ahmed F, Arjovsky M, et al. Improved training of wasserstein gans [C]// Proceedings of the 31th International Conference on Neural Information Processing Systems. Massachusetts: MIT Press, 2017.

[17]Arjovsky M, Bottou L. Towards principled methods for training generative adversarial networks[C]//International Conference on Learning Representations. Toulon: OpenReview.net, 2017.

[18]Qi G J. Loss-sensitive generative adversarial networks on lipschitz densities [J]. Int J Comput Vision, 2020, 128: 1118.

[19]Miyato T, Kataoka T, Koyama M, et al. Spectral normalization for generative adversarial networks[C]//Proceedings of the 6th International Conference on Learning Representations. Canada: OpenReview.net, 2018.

[20]Arp D, Spreitzenbarth M, Hubner M, et al. Drebin: effective and explainable detection of android malware in your pocket [C]//21st Annual Network and Distributed SystemSecurity Symposium. Rosten: OpenReview.net, 2014.

[21]Onwuzurike L, Mariconti E, Andriotis P, et al. Mamadroid: detecting android malware by building markov chains of behavioral models (extended version)[J]. ACM T Priv Secur, 2019, 22: 1.

[22]岳子巍, 方勇, 张磊. 基于图注意力网络的安卓恶意软件检测[J].四川大学学报:自然科学版, 2022, 59: 053002.

[23]Allix K, Bissyandé T F, Klein J, et al. Androzoo: collecting millions of android apps for the research community [C]//2016 IEEE/ACM 13th Working Conference on Mining Software Repositories (MSR). Austin: IEEE, 2016: 468.

[24]Goodfellow I J, Shlens J, Szegedy C. Explaining and harnessing adversarial examples[C]//ICLR 2015: 3rd International Conference on Learning Representations. San Diego: OpenReview.net, 2015.

引用本文格式:

中 文: 张宇科, 王俊峰.基于SNGAN的黑盒恶意软件对抗样本生成方法[J]. 四川大学学报: 自然科学版, 2023, 60: 062003.

英 文: Zhang Y K, Wang J F. Black box malware adversarial examples generation method based on SNGAN [J]. J Sichuan Univ: Nat Sci Ed, 2023, 60: 062003.