BITTER扩大其恶意软件库,增加PapRAT
Detection stack
- AIDR
- Alert
- ETL
- Query
摘要
南亚网络间谍组织BITTER正在使用被称为PapRAT和WmRAT的定制远程访问木马(RAT)进行攻击活动。攻击依赖于多个感染链,包括LNK文件、VHDX镜像和MSI安装程序以建立持久性和执行命令。恶意软件也从C++实现演变为更强大的基于Rust的变体。
调查
FortiGuard实验室分析了三个独特的攻击链,目标是整个南亚的组织。调查发现滥用LOLbins如ftp.exe和curl,以及不同的分阶段技术,以规避安全控制。恶意软件分析还揭示了XOR编码的C2配置以及从C++植入向更新的基于Rust的恶意软件的转变。
缓解措施
组织应在处理未经请求的LNK文件、URL快捷方式、磁盘镜像和MSI包时保持警惕。安全团队应实施检测可疑执行链、计划任务创建和异常出站C2流量的控制措施。针对钓鱼诱饵和恶意附件的用户安全意识培训也是必不可少的。
响应
当检测到恶意活动时,隔离被入侵的主机以防止横向移动和进一步的命令执行。检查计划任务和MSI安装日志的未授权更改。对持久性工件如 err.log or talk.log进行取证分析,并检查出站网络流量以确定到已识别或可疑C2域的连接。
攻击流程
检测
可能的Schtasks或AT用法用于持久性(通过命令行)
2026年11月3日
可疑Fsutil工具的执行 [影响](通过命令行)
2026年11月3日
可能的防病毒或防火墙软件枚举(通过进程创建)
2026年11月3日
Schtasks指向可疑目录/二进制文件/脚本(通过命令行)
2026年11月3日
可能的命令行混淆使用插入插入号(通过命令行)
2026年11月3日
可能的FTP脚本执行使用不常见扩展名(通过命令行)
2026年11月3日
由Shell进程生成的MsiExec(通过命令行)
2026年11月3日
LOLBAS Conhost(通过命令行)
2026年11月3日
可疑的CURL使用(通过命令行)
2026年11月3日
创建了虚拟硬盘文件(通过文件事件)
2026年11月3日
IOC(HashSha256)检测:BITTER扩展其武器库与PapRAT
2026年11月3日
IOC(SourceIP)检测:BITTER扩展其武器库与PapRAT
2026年11月3日
IOC(DestinationIP)检测:BITTER扩展其武器库与PapRAT
2026年11月3日
检测计划任务创建以进行持久联系 [Windows系统]
2026年11月3日
PapRAT Rust变体PowerShell命令执行检测 [Windows Powershell]
2026年11月3日
恶意LNK执行滥用Windows实用程序和脚本 [Windows进程创建]
2026年11月3日
模拟执行
-
攻击叙述及命令: 对手旨在在受害者机器上建立持久性,以确保其恶意负载每隔30分钟执行一次,便于与其命令和控制(C2)基础设施的持续连接。为了与合法的系统活动混在一起并规避简单的基于签名的检测,攻击者利用了本地Windows
schtasks.exe工具。他们选择了一个具有欺骗性的任务名称,MicrosoftUpdatesupdates11678,模仿合法的Windows更新服务,以便在任务计划程序库中隐藏在众目睽睽之下。 -
回归测试脚本:
# 模拟脚本以触发特定检测规则 # 此脚本模拟BITTER组的持久性机制。 $TaskName = "MicrosoftUpdatesupdates11678" $Command = "cmd.exe /c echo 'C2 Beaconing Simulation'" Write-Host "[+] 正在尝试创建计划任务:$TaskName" -ForegroundColor Cyan # 执行完全匹配检测逻辑的命令 # 逻辑查找:schtasks.exe + /create + /sc minute + /mo 30 + task name schtasks /create /sc minute /mo 30 /tn "$TaskName" /tr "$Command" /f if ($LASTEXITCODE -eq 0) { Write-Host "[!] 成功:计划任务已创建。检查SIEM警报。" -ForegroundColor Green } else { Write-Host "[-] 失败:无法创建任务。请确保以管理员身份运行。" -ForegroundColor Red } -
清理命令:
# 清理脚本以删除模拟的持久性 $TaskName = "MicrosoftUpdatesupdates11678" Write-Host "[+] 删除计划任务:$TaskName" -ForegroundColor Cyan schtasks /delete /tn "$TaskName" /f if ($LASTEXITCODE -eq 0) { Write-Host "[!] 清理成功。" -ForegroundColor Green } else { Write-Host "[-] 清理失败。需要手动删除。" -ForegroundColor Red }