此篇文章发布距今已超过556天,您需要注意文章的内容或图片是否可用!
近日,中国科学院大学(国科大)团队研究发现,神经网络将成为“病毒软件”肆意传播的下一个阵地。他们在arXiv提交的一篇题为“EvilModel: Hiding Malware Inside of Neural Network Models”的论文表明,恶意软件可以直接被嵌入到机器学习模型的“人工神经元”中,并且几乎不会影响模型的性能。论文地址:https://arxiv.org/pdf/2107.08590v1.pdf具体而言,由于模型的解释性差和泛化能力强,通过神经网络嵌入恶意软件可以使模型在性能没有影响或影响很小的情况下秘密传播,他们发现,使用真实的恶意软件替换AlexNet模型中50%左右的神经元,模型的准确率仍保持在93.1%以上。同时,由于神经网络的结构保持不变,这些大量恶意软件成功地规避了防病毒引擎的安全扫描。论文中写道,经过实验表明,在1%的准确率损失范围内,一个178MB的AlexNet模型可以嵌入36.9MB的恶意软件,并且VirusTotal中的反病毒引擎没有给出任何可疑提示。作者表示,随着人工智能的广泛应用,神经网络将成为恶意软件传播的载体。
在本篇论文中,作者以黑客的身份讲述了如何将大量恶意软件嵌入机器学习模型,而不被发现的方法。僵尸网络,勒索软件,APT等恶意软件是计算机安全的主要威胁。在维护过程中,攻击者需要向受感染者发送命令和状态,并规避一些敏感数据。同时,攻击者还需要向其发送自定义的有效负载,以针对特定任务实施攻击。为了规避检测和软件追踪,以上命令、有效载荷和其他组件的传递必须秘密进行。常用的秘密传递的方法包括Hammertoss(APT-29)、Pony以及Glupteba19,这些方法不需要攻击者部署服务器,从而避免了防御者通过摧毁中心服务器来抵制恶意软件的行为。还有一些攻击者将恶意软件附加到了图像、文档、压缩文件等载体的背面,并确保载体结构不受损坏。不过这些方法都难以逃过反病毒引擎的检测。最先进的一种隐藏传递消息的方法被称为隐写术(steganography),它可以将秘密信息以不同的方式嵌入到普通文件中。在隐写术中,数据通常会被隐藏在图像像素最低的有效位(LSB)中。如灰度图像的像素在0到255之间,当它用二进制表示时,最低有效位对图像的外观几乎没有影响,因此便于信息的隐藏。但由于信道容量较低,该方法并不适用于嵌入大量恶意软件。此前,腾讯研究人员提出了一种在神经网络模型中隐藏恶意软件的方法。这种方法类似于使用LSB的图像隐写( image steganography)功能——通过将模型中参数的最后几位修改为恶意代码,使其在不影响原始模型性能的前提下,将恶意负载秘密地传递给目标设备。由于PyTorch、TensorFlow等常用框架的模型参数是32位浮点数,权值较低,该方法并不会对神经网络的全局判断造成明显影响。与腾讯修改一个参数的LSB不同,中科院大学研究团队修改了整个神经元来嵌入恶意软件。一般而言,隐藏层神经元会影响神经网络的分类结果,因而其参数往往是固定的,然而研究人员发现,由于隐藏层中存在冗余神经元,一些神经元的变化对神经网络的性能影响并不大。此外,在模型结构不变的情况下,隐藏的恶意软件可以规避反病毒引擎的检测。因此,通过对神经元的修改可以将恶意软件隐蔽地嵌入并传递到目标设备中。
总结来看,基于神经网络模型的恶意软件呈现出以下特点:通过神经网络模型和反汇编,可以隐藏恶意软件的特征,使其逃避检测。
由于冗余神经元的存在和神经网络的泛化能力,经修改后的神经网络模型在不同的任务中仍保持其性能。
在特定任务中,神经网络模型的规模很大,使大量恶意软件传播成为可能。
不依赖于其他系统漏洞,嵌入恶意软件的模型可通过供应链的更新渠道或其他方式传递,不会引起防御者的注意。
基于以上因素, 随着神经网络的应用越来越广泛,这种方法将在未来的恶意软件传输中得到普遍应用。 为了防止嵌入恶意软件的模型性能受到影响,攻击者通常遵循以下步骤:1.设计神经网络。为了确保嵌入更多的恶意软件,攻击者通常会引入更多的神经元。 2.选择合适的现有模型,或者使用数据集对网络进行训练,获得性能更好的模型。3.选择合适的层嵌入恶意软件。嵌入恶意软件后,攻击者需要评估模型的性能,如果模型的性能损失超出可接受范围,需要使用数据集重新训练模型以获得更高的性能。一旦准备好模型,攻击者就可以使用供应链污染(supply chain pollution)等方法将其发布到公共存储库或其他地方。接收者假定是在目标设备上运行的程序,可以下载模型并从模型中提取嵌入的恶意软件。在更新模型后,通常是先根据预定义规则提取恶意软件,然后进行安全性检查,最后再等达到预定义条件后运行恶意软件。具体过程如下:如上所述,神经元中的参数将会被恶意软件替换。由于每个参数都是一个浮点数,攻击者需要将恶意软件中的字节转换为32位浮点数,且保持在合理的时间间隔内。为了让接收者能够正确提取恶意软件,攻击者会采用一套规则将恶意软件嵌入其中。本文提供了一个嵌入算法:对于要嵌入的恶意软件,每次读取3个字节,并将前缀添加到第一个字节,然后将字节转换为具有big-endian格式的有效浮点数。如果剩余的样本少于3个字节,则添加“x00”进行填充。在嵌入模型之前,这些数字会被转换成张量。最后在神经网络模型和指定的层中,通过替换每个神经元的权值和偏差,对神经元的进行修改。其中,每个神经元中的连接权重用来存储转换后的恶意软件字节,偏差用来存储恶意软件的长度和哈希值。接收者的提取过程与嵌入过程相反。接收端需要提取给定层的神经元参数,并将参数转换成浮点数。这些浮点数再转换成big-endian字节格式,去掉字节前缀,得到二进制字节流。然后,根据第一个神经元长度记录的偏差,接收者可以集成恶意软件。此外,接收者可以通过比较恶意软件的散列值与偏差记录中的散列值来验证提取过程。在这项工作中,研究人员假定通信信道具有启动防病毒安全扫描的能力,如果模型不安全可以将其拦截,并且模型性能一旦超过设定的阈值也会向终端用户发出警报。研究人员采用AlexNet神经网络架构进行了实验。如下图,AlexNet的输入是一个224x224大小的单通道灰度图像,输出是一个大小为10的向量,分别代表10个类。为了验证该方法在处理大量恶意软件时的表现,本次试验采用了具有全连接架构的模型。如图,对于AlexNet而言,FC.0是一个具有4096个神经元的隐藏层——从卷积层接收6400个输入并生成4096个输出。因此,FC.0层的每个神经元有6400个连接权值,这意味着6400×3/1024=18.75KB的恶意软件可以嵌入到FC.0层的一个神经元中。 类似地,FC.1是一个有4096个神经元的隐藏层,它接收4096个输入并产生4096个输出,因此,4096×3/1024=12KB的恶意软件可以嵌入到FC.1层神经元中(FC.2是输出层,接收4096个输入后生成10个输出)研究人员对全连接层上有BN和没有BN的模型进行了性能比较。BN(Batch normalization,即批处理规范化)是一种加速深层网收敛的有效技术,BN层可应用于全连通层中的仿射变换和激活函数之间。经过大约100个阶段的训练,实验表明,在不使用BN的测试集上训练的模型,其准确率为93.44%,在使用BN的测试集上训练的模型,其准确率为93.75%。为了模拟真实场景,实验使用了公共存储库的真实恶意软件样本,并将这些样本上传到了VirusTotal,为了评估该方法的有效性,作者进行了以下实验设置,并尝试回答以下7个问题: 实验方案:使用恶意软件样本( sample)1-6分别替换FC.1层中的神经元,并在测试集上评估其性能。测试准确率在93.43%~93.45%之间。然后,从模型中提取恶意软件,并计算其SHA-1哈希值。哈希值保持不变。结果表明,该方法是可行的。实验方案:对于问题2~3,作者在AlexNet上用 sample1-6分别替换了FC.1层的5个、10个、...、4095个神经元;用 sample3-8替代FC.0层的有BN和无BN的AlexNet。FC.0中的每个神经元可以嵌入18.75KB的恶意软件。由于一个 sample最多可以替换FC.0和FC.1中的5个神经元,作者重复了替换过程,并用相同的样本替换各层中的神经元,直到替换的神经元数量达到目标。最后,作者得到了6组准确率数据,结果如上图所示。 因此,可以得出结论:当替换较少数量的神经元时,对模型的准确率影响不大。对于带有BN的AlexNet,当替换FC.1中的1025个神经元时(25%,相当于嵌入了12MB的恶意软件),准确率仍然可以达到93.63%。当替换2050个神经元(50%)时,准确率为93.11%。当超过2105个神经元被替换时,准确率下降到93%以下。当超过2900个神经元被替换时,准确率下降到90%以下,准确率明显下降。当所有神经元都被替换时,准确率下降到10%左右(相当于随机猜测)。实验方案:作者选择在AlexNet的所有层嵌入恶意软件。用sample替换每一层中的神经元,并记录其准确率。由于不同的层具有不同的参数数量,作者使用百分比来表示替换的数量,如下图所示。对于有BN和没有BN的AlexNet,FC.1在所有层都具有出色的性能。可以推断,对于完全连接的层,更接近输出层的层更适合嵌入。实验方案:作者选择了性能与平均准确率相近的sample,并对有和没有BN的模型分别替换了FC.0和FC.1层中的50,100,...,4050个神经元。然后,“冻结”恶意软件嵌入层,并使用相同的训练集重新训练它们1个 epoch。记录重新训练前后测试集上的准确率。对每个模型进行再训练后,提取模型中嵌入的恶意软件,计算恶意软件的SHA-1哈希值,并与原始哈希值进行匹配。结果如上所示,对于完全连接层中没有BN的模型,替换神经元参数后的再训练对模型性能没有明显的改善。对于带有BN的模型,再训练前后的准确率有明显的变化。因此,如果攻击者使用带有BN和再训练的模型在FC.1上嵌入恶意软件,并希望将模型的准确率损失控制在1%以内,那么将有超过3150个神经元可以替换。这将导致3150×12/1024=36.9MB的恶意软件嵌入。 实验方案与结果:作者将一些嵌入恶意软件的模型上传到VirusTotal,结果发现:VirusTotal将这些模型识别为zip文件。58个杀毒引擎参与了检测工作,没有发现可疑情况。这意味着该方法可以迷惑传统杀毒软件。作者建议在启动模型时,对模型进行检查。由于嵌入的恶意软件将在目标设备上“工作”,因此可以使用静态和动态分析、启发式方法等传统方法对其进行检测和分析。由于攻击者可以发起供应链污染(supply chain pollution)等攻击,因此模型的最初提供者也应该采取措施防止此类攻击。
总结
这篇论文发现了一种神经网络模型传递“病毒”的方法。当神经网络的参数被恶意替换时,模型的结构可能保持不变,并且“病毒”在神经元中会被反汇编(disassembled )。由于“病毒”的特征不再可用,它可以躲避普通杀毒软件的检测。 由于神经网络模型对变化具有较强的鲁棒性,因此当配置良好时,其性能不会有明显的损失。实验表明,在对全连通层进行批量归一化的情况下,178MB-AlexNet模型可以嵌入36.9MB的恶意软件,而准确率损失小于1%。由于神经网络模型对变化具有较强的鲁棒性,因此当配置良好时,其性能不会有明显的损失。实验表明,在对全连接层进行批量归一化的情况下,178MB-AlexNet模型可以嵌入36.9MB的恶意软件,而准确率损失小于1%。在VirusTotal上的实验也证明了,在神经网络上嵌入的“病毒”,具有极强的隐蔽性。
欢迎加群,学知识,不吹水。吹水的请绕过!
首先点击下面关注,在加我,我拉你们进群。
记得关注哟!学知识,不吹水。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
宙飒天下
还没有评论,来说两句吧...