「文献笔记」MalGAN

2017「Generating Adversarial Malware Examples for Black-Box Attacks Based on GAN」 论文复现: https://github.com/yanminglai/Malware-GAN

Abstract

  • upload successful

  • 本文提出了基于MalGAN算法的GAN模型,来生成能躲避黑盒检测器的对抗恶意代码样本。MalGAN使用一个代理检测器来拟合黑盒检测器检测系统。生成网络最小化对抗样本被代理检测器预测为的恶意的可能性。

Introduction

upload successful

Architecture of MalGAN

Overview

  • MalGAN的结构图:upload successful我们假设恶意代码的作者只知道黑盒检测器使用什么特征,不知道使用的机器学习算法和训练模型的参数。恶意代码的作者能得到黑盒检测器的检测结果。整个模型包括一个生成器和一个代理检测器,都使用前馈神经网络。生成器和代理检测器一起工作,来攻击基于黑盒恶意代码检测器的机器学习算法。

  • 本文模型和已存在的算法主要的不同在于,对抗样本是根据黑盒检测器的反馈动态生成的,大多数已存在的算法使用静态梯度。

  • MalGAN生成的对抗样本的概率分布由生成器的权重决定。为了使机器学习算法有效,训练集和测试集的样本应该遵从同样的概率分布或者相似的概率分布。生成器可以改变对抗样本的概率分布,使它远离黑盒检测器训练集的概率分布。因此生成器有足够多的机会引导黑盒检测器把恶意软件误分类成良性软件。

Generator

  • 生成器把恶意代码特征向量转换成它的对抗版本,它把恶意代码特征向量m和噪声向量z作为输入。m是一个M维的二进制向量,每个元素代表一个特征是否存在。z是一个Z维的向量,Z是一个超参数,z的每个元素是一个随机的数字,遵从0-1的正态分布。z的作用是让生成器从一个单一的恶意样本特征向量生成不同的对抗样本。

  • 输入向量以θg权重进入多层前馈神经网络,这个神经网络的输出层有M个神经元,最后一层的激活函数严格限制输出为(0,1),输出标记为o,由于恶意软件特征向量是二进制的,所以根据元素是否大于0.5,对o进行二进制变换,得到二进制向量o’。

  • 在为二进制恶意软件特性生成对抗性样本时,我们只考虑添加一些无关的特性。从原始恶意软件中删除一个特性可能会破解它。例如,如果“WriteFile”API从程序中移除,程序将无法执行正常的写功能,恶意软件可能会崩溃。最后生成的对抗样本可以表示为m’ = m|o’,其中“|”是二进制或操作。

  • m’是一个二进制向量,因此梯度不能从代理检测器反向传递给生成器。平滑函数G从代理检测器接收梯度信息。upload successful
    max(,)代表取元素最大值操作,如果m的某个元素值为1,则G的相应结果也为1,不能对梯度进行反向传播。如果m的元素有值0,G的结果是神经网络在相应维度的的实数输出,梯度信息能够通过。

Substitute Detector

  • 因为恶意代码的作者不知道黑盒检测器结构的细节,因此代理检测器用来适应黑盒检测器,并且提供训练生成器的梯度信息。

  • 代理检测器是梯度为θd的多层前馈神经网络,输入是特征向量x。它对恶意样本和良性样本进行分类,预测x是恶意样本的概率记为Dθd(x)。

  • 代理检测器的训练数据包括生成器生成的对抗恶意样本和一个恶意代码作者收集的良性样本数据集。训练数据的真实标签不能用来训练代理检测器,代理检测器的目标是适应黑盒检测器。黑盒检测器首先检测训练数据,输出结果。代理检测器使用黑盒检测器的预测标签。

training MalGAN

  • 想要训练MalGAN,恶意代码的作者应该首先收集恶意样本数据库和良性样本数据库。

  • 检测器的损失函数:upload successfulBBbenign:被黑盒检测器检测为良性样本的集合。BBmalware:被黑盒检测器检测为恶意样本的集合。为了训练代理检测器,LD应该关于代理检测器权重最小化。

  • 生成器的损失函数:upload successfulSmalware是真实的恶意代码数据集,而不是被黑盒检测器标记为恶意代码的数据集,LG应该关于生成器权重最小化。

  • 最小化LG会降低恶意代码被预测为恶意的可能性,并且推动代理检测器把恶意样本检测为良性样本。因为代理检测器会努力适应黑盒检测器,生成器的训练会进一步欺骗黑盒检测器。

  • 生成器根据代理检测器网络的输出优化权重,将输入恶意软件的特征与噪音混合后,输出的恶意软件特征就是添加了perturbation的对抗样本。而训练过程,作者与传统的GAN训练略有区别,整个过程如下:upload successful

  • 当算法未收敛

    • 采样生成小批量malware样本M
    • generator输入M生成对抗样本M’
    • 采样生成小批量benign样本B
    • 利用blcak-box detector对M’及B打上标签
    • 利用梯度下降法更新substitute detector的参数
    • 利用梯度下降法更新generator的参数
  • 结束循环

experiments

experimental setup

  • 为了验证MalGAN生成的对抗样本的可转移性,我们对黑盒检测器尝试了多种不同的机器学习算法,包括RF,LR,DT,SVM,MLP,VOTE。

  • 我们采用了两种方法分离数据集:

    • 80%的数据集作为训练集,20%的数据集作为测试集。MalGAN和黑盒检测器使用相同的训练集,MalGAN进一步采用25%的训练集作为验证集,使用剩余的数据训练神经网络。比如MLP,一些黑盒检测器为了尽早结束,也需要一个验证集。因为恶意代码的作者和反病毒厂商没有交流怎么分离数据集,所以黑盒检测器不能使用MalGAN的验证集。黑盒检测器分离验证集应该独立于MalGAN,二者应该使用不同的随机种子来挑选验证集数据。
    • 40%的数据作为MalGAN的训练集,40%的数据作为黑盒检测器的训练集,剩余20%作为测试集。
  • 在真实场景中,由恶意软件作者和反病毒供应商收集的训练数据不可能是相同的。但是,如果他们从公共来源收集数据,他们的培训数据将相互重叠。在这种情况下,MalGAN的实际性能介于两种分离方式的性能之间。

  • 选择Adam优化器,我们调整验证集的超参数,噪声向量z的维度选择10,生成器的各层大小设为170-256-160,代理检测器分层大小设为160-256-1,生成器和代理检测器的学习速率为0.001。MalGAN的最大训练轮数为100。最后选择验证集中检测率最低的epoch来测试MalGAN的性能。

experimental results

  • 我们首先分析MalGAN和黑盒检测器使用相同训练集的情况。对于恶意代码检测,TPR(true positive rate)表示恶意代码的检测率。对抗攻击后,TPR的降低可以反应有多少恶对抗意样本成功逃过了检测算法。

  • 然后我们分析当MalGAN和黑盒检测器使用不同训练集的结果。

Comparison with the Gradient basedAlgorithm to Generate Adversarial Examples

Retraining the Black-Box Detector

  • 如果反病毒厂商收集足够多的对抗恶意样本,他们能使用对抗样本重训练黑盒检测器,以便学习对抗样本的模式并进行检测。在这里我们使用随机森林作为黑盒检测器算法。

conclusion

  • 本文提出了一种基于机器学习的黑盒恶意软件检测算法MalGAN来生成对抗样本。采用基于神经网络的代理检测器对黑盒检测器进行拟合。生成器训练来生成能够欺骗代理检测器的对抗性样本。实验结果表明,所生成的对抗样本能够有效地绕过黑盒检测器。

  • 对抗检测器的概率分布由生成器的权值控制。恶意软件作者可以通过重新训练MalGAN来频繁地改变概率分布,使得黑盒探测器无法跟上它的步伐,并且无法从中学习稳定的模式。一旦黑盒探测器更新,恶意软件作者可以立即破解它。这个过程使得基于机器学习的恶意软件检测算法无法工作。


AI新方向:对抗攻击

---------------------------- 本 文 结 束 感 谢 阅 读 ----------------------------
欢迎打赏~
0%