记,有趣的投毒方式

网友常将业务QQ收到的病毒木马样本转发分析。此次样本是“截图.zip”压缩包,解压后有快捷方式和隐藏目录。经分析,这是利用覆盖SEH漏洞的音乐播放器,投毒方式虽简单但免杀效果好。手动运行样本,其动态行为包括拷贝软件、创建启动项、开启键盘记录并注入木马。

一个网友跟我说,他们的业务qq经常收到各种病毒木马,每次收到后都会把样本转发给我,让我帮忙看看是什么木马!

这次他给我发来一个名为"截图.zip"的压缩包,通过qq传播时,也没报毒!
解压后,可以看到里面只有一个快捷方式,和一个隐藏的~目录
在这里插入图片描述
快捷方式的目标中,填写的是

C:\Windows\System32\rundll32.exe url.dll, FileProtocolHandler ~\s.exe

双击快捷方式后,打开的是~目录下的s.exe,打开r ~目录,可以看到这是个正常的软件
在这里插入图片描述
简单看了一下,我在skin目录下发现了端倪
在这里插入图片描述

skin是这个软件的皮肤目录,对缓冲区溢出漏洞敏感的同学一眼就可以看出来,这ui.txt就是平时定位溢出点的pattern啊!!
这里就是溢出时覆盖的返回地址
在这里插入图片描述
通过对目录内几个文件的静态分析,找到关于这个软件名字的一些信息,并google了一下,发现这是一款音乐播放器,并且利用的漏洞的是覆盖SEH
在这里插入图片描述

见过这么多投毒方式,这投毒时发送个自带漏洞的软件,还是第一次见。。。

不过这种投毒方式虽然很low!但是免杀效果却很好!!!

现在手动运行一下这个样本看看,啥效果!

首次打开快捷方式的图标,发现弹出个程序加载的界面,然后立马退出了,然后打开了目录下的01.txt,用来迷惑用户这是正常的软件

在这里插入图片描述

但是Procmon抓的的日志可不止这些,快捷方式
在这里插入图片描述
可以看到动态行为显示如下:
在这里插入图片描述
1)先把自己所有目录下的软件拷贝到 C:\Intel\sgetass
在这里插入图片描述

然后创建启动项
在这里插入图片描述
注册表启动项

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\sgetass38

启动项内容

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nop -W hidden C:\Intel\sgetass\00ae5276adeac.lnk

开启键盘记录,每按一次键盘,就触发一次写入事件
在这里插入图片描述

通过文件映射的方式,把键盘记录木马注入到iexpress.exe进程中
在这里插入图片描述

模型投毒攻击是机器学习安全领域中的一个重要问题,攻击者通过在模型训练阶段注入恶意操作,以达到操控模型行为的目的。这种攻击方式主要集中在模型训练阶段,攻击者可以利用训练数据或训练过程的漏洞,对模型施加影响。以下是几种常见的模型投毒攻击实现方法和技术: 1. **参数操纵攻击**:攻击者通过直接修改模型的训练过程中的参数,例如梯度更新规则,来影响模型的学习效果。这种攻击方式通常需要攻击者能够访问模型的训练环境,并对训练过程进行干预。例如,在分布式训练环境中,攻击者可能通过控制部分计算节点来注入错误的梯度信息,从而影响最终模型的性能[^5]。 2. **后门攻击(Backdoor Attack)**:后门攻击是一种特定类型的模型投毒攻击,攻击者通过在训练数据中嵌入特定的触发器(trigger),使得模型在遇到这些触发器时产生攻击者期望的输出。例如,在图像分类任务中,攻击者可以向训练集中添加带有特定像素模式的图像,并将其标为错误的类别。当模型在部署后遇到类似的触发器时,会错误地将其分类为攻击者指定的类别[^5]。 3. **模型替换攻击**:在联邦学习等分布式训练框架中,攻击者可以通过提交恶意更新来替换或篡改全局模型的部分参数。由于联邦学习依赖于多个客户端的本地模型更新,攻击者可以利用这一机制,通过提交精心设计的模型更新来植入恶意行为。例如,攻击者可以在本地训练过程中故意引入错误的权重更新,从而在全局模型中植入后门或降低模型的整体性能[^1]。 4. **标签翻转攻击**:攻击者通过在训练数据中故意将某些样本的标签进行错误标,从而影响模型的学习过程。这种攻击方式通常用于分类任务中,攻击者可以通过翻转某些关键样本的标签,使得模型在这些样本上产生错误的决策边界。例如,在垃圾邮件检测任务中,攻击者可以将某些恶意邮件标为正常邮件,从而使得模型在实际应用中无法正确识别这些邮件[^4]。 5. **对抗样本注入攻击**:虽然对抗样本通常与测试阶段的攻击相关,但在训练阶段也可以通过注入对抗样本来影响模型的学习过程。攻击者可以在训练数据中加入经过微小扰动的对抗样本,使得模型在学习过程中对这些扰动过于敏感,从而降低模型在正常数据上的泛化能力。这种攻击方式通常需要攻击者对模型的结构和训练过程有一定的了解,以便生成有效的对抗样本[^3]。 6. **模型蒸馏攻击**:在某些情况下,攻击者可以通过训练一个替代模型来模仿目标模型的行为,并在训练过程中引入恶意行为。这种攻击方式通常被称为模型蒸馏攻击,攻击者可以利用目标模型的预测结果来训练自己的模型,并在训练过程中注入对抗性扰动或后门。最终,攻击者可以将这个恶意模型部署到目标环境中,从而实现对模型行为的操控[^2]。 ### 代码示例:简单的后门攻击实现 以下是一个简单的后门攻击示例,假设我们有一个图像分类任务,攻击者希望在模型中植入一个后门,使得带有特定触发器的图像被错误分类为某个类别。我们可以使用PyTorch来实现这一攻击。 ```python import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms # 定义简单的CNN模型 class SimpleCNN(nn.Module): def __init__(self): super(SimpleCNN, self).__init__() self.conv1 = nn.Conv2d(1, 10, kernel_size=5) self.conv2 = nn.Conv2d(10, 20, kernel_size=5) self.fc1 = nn.Linear(320, 50) self.fc2 = nn.Linear(50, 10) def forward(self, x): x = torch.relu(torch.max_pool2d(self.conv1(x), 2)) x = torch.relu(torch.max_pool2d(self.conv2(x), 2)) x = x.view(-1, 320) x = torch.relu(self.fc1(x)) x = self.fc2(x) return x # 加载MNIST数据集 transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))]) train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform) train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=64, shuffle=True) # 定义触发器(例如在图像的右下角添加白色像素) def add_trigger(image): image[0, 26:28, 26:28] = 1.0 # 将右下角2x2区域设置为白色 return image # 修改训练数据,注入带有触发器的样本 poisoned_train_loader = [] for data, target in train_loader: poisoned_data = [] poisoned_target = [] for i in range(len(data)): if i % 10 == 0: # 每隔10个样本注入一个带有触发器的样本 poisoned_image = add_trigger(data[i].clone()) poisoned_data.append(poisoned_image) poisoned_target.append(7) # 将带有触发器的样本标为类别7 else: poisoned_data.append(data[i]) poisoned_target.append(target[i]) poisoned_train_loader.append((torch.stack(poisoned_data), torch.tensor(poisoned_target))) # 训练模型 model = SimpleCNN() criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(model.parameters(), lr=0.01) for epoch in range(5): # 进行5轮训练 for data, target in poisoned_train_loader: optimizer.zero_grad() output = model(data) loss = criterion(output, target) loss.backward() optimizer.step() # 测试模型 test_dataset = datasets.MNIST(root='./data', train=False, transform=transform) test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=64, shuffle=True) correct = 0 total = 0 with torch.no_grad(): for data, target in test_loader: outputs = model(data) _, predicted = torch.max(outputs.data, 1) total += target.size(0) correct += (predicted == target).sum().item() print(f'模型在测试集上的准确率为: {100 * correct / total:.2f}%') ``` 上述代码展示了如何在训练数据中注入带有触发器的样本,并训练一个带有后门的模型。攻击者可以通过这种方式在模型中植入后门,使得模型在遇到带有触发器的输入时产生错误的输出。 ### 防御措施 为了应对模型投毒攻击,研究人员提出了多种防御策略。例如,**模型验证**可以通过检查模型的输出是否符合预期来检测潜在的攻击;**数据清洗**可以帮助去除训练数据中的恶意样本;**联邦学习中的安全聚合**可以在分布式训练中防止恶意更新的注入;**对抗训练**可以通过在训练过程中引入对抗样本来提高模型的鲁棒性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值