感染神经网络模型的病毒
EvilModel: Hiding Malware Inside of Neural Network Models | code |
---|---|
https://arxiv.org/pdf/2107.08590v1.pdf | pass |
秘密传递恶意软件和逃避检测对于高级恶意软件活动至关重要。在本文中,我们提出了一种通过神经网络模型秘密传递恶意软件和规避检测的方法。神经网络模型解释性差,泛化能力强。通过将恶意软件嵌入神经元,恶意软件可以秘密传递,对神经网络的性能影响很小甚至没有影响。同时,由于神经网络模型的结构保持不变,它们可以通过防病毒引擎的安全扫描。实验表明,在178MB的AlexNet模型中可以嵌入36.9MB的恶意软件,准确率损失不到1%,并且VirusTotal中的防病毒引擎没有提出任何可疑问题,这验证了该方法的可行性。随着人工智能的广泛应用,利用神经网络成为恶意软件的发展趋势。我们希望这项工作能够为神经网络辅助攻击的防御提供一个可参考的场景。
一些秘密传输消息的方法在野外被广泛使用。据报道,Hammertosh(APT-29)[1]使用Twitter和GitHub等流行的web服务发布命令并隐藏通信痕迹。Pony[2]和Glupteba19[3]利用比特币交易传输消息。发现IPStorm[4]使用非集中式IPFS进行命令和控制。这些方法不需要攻击者部署服务器,防御者也无法通过破坏中央服务器来阻止恶意软件活动。虽然这些方法可以很好地处理小型消息,但它们不适合交付较大的有效负载或利用。
为了传送大型恶意软件,一些攻击者将恶意软件附加到外观良好的载体上,如图像、文档、压缩文件等。[5]恶意软件附加在载体的背面,同时保持载体的结构不受损坏。虽然普通用户通常看不到它们,但防病毒引擎很容易检测到它们。另一种隐藏消息的方法是隐写术。在隐写术中,秘密消息可以以不同的方式嵌入到普通文件中。一种技术是将数据隐藏在图像中像素的最低有效位(LSB)中[6]。例如,灰度图像由值介于0到255之间的像素组成。当以二进制表示时,最低有效位对图片的外观几乎没有影响,因此可以用机密消息替换。这样,消息就隐藏在图像中。然而,由于信道容量低,该方法也不适合嵌入大型恶意软件.
最近,腾讯[7]的研究人员提出了一种将恶意软件隐藏在神经网络模型中的方法。这种方法类似于使用LSB的图像隐写。通过将模型中最后几位参数修改为恶意代码,恶意负载可以秘密传递到目标设备,而不会影响原始模型的性能。通用框架(PyTorch、TensorFlow等)中的模型参数是32位浮点数。由于权重较低,最后几位的值对神经网络的全局判断几乎没有影响。因此,可以修改它们来传输消息。
在本文中,我们提出了一种通过修改神经元来秘密传递恶意软件的方法。与修改参数LSB的腾讯不同,我们修改整个神经元以嵌入恶意软件。人们普遍认为
隐层神经元影响神经网络的分类结果,因此隐层神经元应固定,其参数应保持不变。事实上,我们发现,由于隐藏层中存在冗余神经元,一些神经元的变化对神经网络的性能几乎没有影响。此外,在模型结构不变的情况下,隐藏的恶意软件可以逃避防病毒引擎的检测。因此,恶意软件可以被嵌入并秘密传送到目标设备,并通过修改神经元逃避检测
使用神经网络模型的优势如下:(1)通过将恶意软件隐藏在神经网络模型中,恶意软件被分解,恶意软件的特征不可用。所以它可以逃避检测。(2) 由于神经元的冗余和良好的泛化能力,改进后的神经网络模型在不同任务中仍能保持性能,不会引起异常。(3) 特定任务中的神经网络模型规模很大,因此每次都可以传递大型恶意软件。(4) 此方法不依赖于其他系统漏洞,恶意软件嵌入模型可以通过供应链的模型更新渠道或其他方式交付,不会引起对手的注意。(5) 随着神经网络的应用越来越广泛,这种方法将普遍用于传送恶意软件
- 我们引入神经网络模型来秘密传递恶意软件和规避检测。
- 我们提出了一种将恶意软件嵌入神经网络模型的方法,并在具有不同结构的模型上进行实验,以证明其可行性。
- 我们提供了一个指南,说明如何在不影响性能的情况下嵌入更多恶意软件。
本文的其余部分结构如下。第二节介绍了本文的相关技术背景和相关工作。第三节介绍了嵌入恶意软件的方法。第四节描述了实验装置。第五节是对实验的评价。第六节给出了一些可能的对策。第七节总结了结论。
III. METHODOLOGY
A. Overall Workflow
攻击者希望通过修改神经元参数将恶意软件样本嵌入神经网络模型,而不会对模型的性能产生明显影响。为此,攻击者应遵循以下步骤。首先,攻击者需要设计神经网络。为了确保可以嵌入更多恶意软件,攻击者可以引入更多神经元。然后,攻击者需要使用准备好的数据集训练网络,以获得性能良好的模型。如果有合适的训练有素的模型,攻击者可以选择使用现有模型。然后,攻击者选择最佳层并嵌入恶意软件。嵌入恶意软件后,攻击者需要评估模型的性能,以确保损失是可接受的。如果模型上的损失超出了可接受的范围,攻击者需要使用数据集重新训练模型以获得更高的性能。一旦模型准备好,攻击者可以使用诸如供应链污染等方法将其发布到公共存储库或其他地方。
假设接收器是目标设备上运行的程序,可以帮助下载模型并从模型中提取嵌入的恶意软件。接收器可以主动下载并替换目标设备上的现有模型,或者等待默认更新程序更新模型。接收到模型后,接收方根据预定义规则从模型中提取恶意软件。然后接收方检查恶意软件的完整性。通常,如果接收并验证了模型,则会集成恶意软件。验证用于装配。然后,接收方可以立即运行恶意软件,或等到预定条件。
B. Threat Model
在这项工作中,我们认为通信通道中的对手有能力启动防病毒引擎,对模型执行安全扫描。如果认为模型不安全,他们可以进行报告间传输。如果模型通过安全扫描,他们还能够监控模型的性能。如果性能超出设置阈值,他们可以向最终用户发出警报
C. Technical Design
1) 神经元参数:如上所述,神经元中的参数将被恶意软件替换。由于每个参数都是浮点数,攻击者需要将恶意软件中的字节转换为合理的浮点数。为此,我们需要分析参数的分布。
图3显示了模型中随机选择的神经元的样本参数。神经元中有2048个参数。在2048个值中,有1001个负数和1047个正数,约为1:1,它们分布在区间内(-0.0258,0.0286)。其中,11个的绝对值小于10-4,占0.537%。97个小于10-3,占4.736%。这些硬件字节可以根据神经元中参数的分布进行转换
当攻击者希望在合理的时间间隔内将恶意软件字节转换为位浮点数时。图4是符合IEEE标准的32位浮点点数的格式。假设该数字以
±
1.
m
x
2
i
n
\pm1.m x 2 in
±1.mx2in 二进制格式显示。转换为浮点数时,第一位是符号位,表示值的符号。第2-9位是指数,值是n+127,表示
2
−
127
−
2
127
2^{-127}-2^{127}
2−127−2127的指数范围。第10-32位是尾数位,表示m。通过分析浮点数的格式,众所周知,数字的绝对值是由指数部分决定的,通过调整指数部分可以将该值固定到某个区间。例如,如果第三到第六位设置为1,最后24位设置为任意值(即0x3c000000到Ox3cfffff),则浮点数的绝对值介于0.0078和0.0313之间:如果第四到第六个设为1,则值介于3 x 10-5到1.x 10-4之间
因此,在嵌入数据时,可以根据权重将符号位设置为0或1,指数位设置为指定值(即浮点数的第一个字节为0x3c、0x38或0xbc、0xb8),这可以将恶意软件转换为合理范围内的参数。这样,每个参数都可以嵌入3个字节的恶意软件。
2) Malware Embedding:攻击者应定义一组规则,将恶意软件嵌入神经网络模型,以便接收方能够正确提取恶意软件。这里我们给出一个嵌入算法示例(Alg.1)。对于要嵌入的恶意软件,我们每次读取3个字节,将前缀添加到第一个字节,然后将字节转换为大端格式的有效浮点数。如果剩余样本少于3个字节,则添加填充“\x00”以填充3个字节。在嵌入模型之前,数字被转换为张量。然后,给定一个神经网络模型和一个指定的层,我们通过替换每个神经元中的权重和偏差来顺序修改神经元。我们使用每个神经元中的连接权重来存储转换的恶意软件字节,并使用偏差来存储恶意软件的长度和散列。
3) 恶意软件提取:接收器的提取是嵌入的反向过程。接收器需要提取给定层中神经元的参数,将参数转换为浮点数,将数字转换为大端格式的字节,并删除字节前缀以获得二进制字节流。然后,将长度记录在第一个神经元的偏差中,接收器就可以组装恶意软件。接收方可以通过比较提取恶意软件的哈希值与偏差中记录的哈希来验证提取过程。
EXPERIMENTS SETUP
在本节中,我们通过理论实验(proof-of-concept)证明了所提方法的可行性。
A.神经网络结构
我们使用Alexnet进行实验。我们调整结构以适应数据集。Alexnet的输入是大小为224x224的I通道灰度图像,输出是大小为10的vector,它代表10个类。图像在进入网络之前被调整为224x224。由于我们打算交付大型恶意软件,我们将在以下章节中更多地关注全连接层。全连接层的结构如图5所示。对于Alexnet,FC.0 是一个包含4096个神经元的idden层,从卷积层接收6400个输入,并生成4096个输出。因此,来自FC.0层的每个神经元都有6400个连接权重,这意味着6400 x 3/1024=18 75KB恶意软件可以嵌入到FC.0层中的一个神经元中。FC.1 也是一个具有4096个神经的隐藏层,它接收4096个输入,生成4096输出。因此,4096 3/1024=12KB恶意软件可以嵌入FC I层神经元。FC.2是输出层,它接收4096个输入并生成10个输出
批处理归一化(BN)是一种加速深网收敛的有效技术。由于BN层可以应用于全连通层中的仿射变换和激活函数之间,因此我们对全连通层上有无BN的模型进行了性能比较,在没有BN的测试集上,我们得到了一个准确率为93.44%的模型,在有BN的情况下,我们得到一个准确度为93.75%的模型。每个模型的大小为178MB。这些模型被保存起来以备以后使用
……
C&G
神经网络成“病毒软件”新宿主!国科大最新研究:嵌入恶意软件后,性能下降不足1%
https://github.com/kitcambridge/evil.js/
https://github.com/wll8/lodash-utils
火爆全网的 Evil.js 源码解读
怎么防止同事用Evil.js的代码投毒
https://ne-smalltown.github.io/996-in-chinese-eyes/
https://lecepin.github.io/body-rejuvenation/guide/