南亚之蟒:针对印度国防部投递 Python 窃密软件
· 1 分钟阅读 · @admin

针对印度国防部下属部门 CSD 的一次攻击里,初始访问用的是带远程模板注入的文档。受害者打开文档后,会加载含宏的远程模板,再释放用 PyInstaller 打包的 Python 窃密程序。
1 诱饵文档
样本文件名是 Anaya shoot feedback.docx。文档元数据里能看到这些信息:
- 创建时间是 2022-01-05。
- 模板基于 Office 默认的 Blue Curve Letterhead 改过。
- 正文放了一张图,用来诱导受害者启用宏。

打开文档时先显示这张图,提示启用宏才能查看内容。图下面还放了 Microsoft、McAfee 等厂商的商标,让人觉得文件是安全的。

远程模板写在文档的 word/_rels/settings 关系里。

2 远程模板 flyer.png
模板里调用了不少敏感函数,从导入就能大致看出宏要做的事。

2.1 检测执行环境
受害者打开文档后,宏先跑 Document_Open。这个函数检查当前环境:如果发现自己在虚拟机里,或者某些进程正在运行,就弹窗告诉受害者文档打不开,让对方换一台机器再打开。

虚拟机检测会查询自己是不是跑在 VMware、QEMU、Xen 里。

另外还会看进程监控、网络监控一类工具有没有在跑。

2.2 释放文件
远程模板被加载后,会落在 IE 的下载缓存目录:
%AppData%\Microsoft\Windows\INetCache\IE\
宏从这个缓存里找到已经下载的 flyer.png,在它所在目录创建 Content.Word,再在下面建一个随机名目录,并写入一个随机名的 zip。

flyer.png 里有标记 @@@===@@@,标记后面是一段压缩数据。宏把这段数据读出来存成前面那个 zip,解出 theme01.xml,再放到:
%windir%\system\spool\driver\color\sppsvc.exe

压缩包里的另一个文件是诱饵文档 document01.docx,内容是印度国防部门发布的摩托车、自行车和电动车价格清单。

2.3 替换模板
宏执行完后,把文档加载的远程模板换成本地的 Normal.dotm,把加载痕迹清掉。

如果本机没有 Normal.dotm,宏就删掉远程模板里的宏代码再保存,这样下次打开时加载的模板不再带宏。

2.4 计划任务
通过 Schedule.Service 创建计划任务。任务从当前时间起每 15 分钟执行一次,运行超过 72 小时后停止。
触发后执行的命令是:
%windir%\system\spool\driver\color\sppsvc.exe E9FC-289C3-FF0AF-142B6-D3BEA

2.5 清理痕迹
计划任务创建成功后,删除 IE 缓存里的文件和解压出来的文件。

3 sppsvc.exe
这个程序是 PyInstaller 打包的 Python 窃密程序。运行时看有没有参数,再决定走哪条流程。
入口如下:

它使用的指令:
| 指令 | 作用 |
|---|---|
DS |
收集信息 |
DU |
上传 list.log |
DX |
上传系统信息 |
DSU |
上面三种都做 |
EX |
退出 |
| 其他 | 建管道执行命令,结果写到 xELogs.log |
3.1 收集文件名
遍历所有盘符,找指定后缀的文件,把文件名写入 list.log。

收集的后缀:

3.2 心跳
窃密程序把系统信息当成心跳,也用来区分受害者机器。心跳发给 C&C 后,等待下发指令。
心跳有两种类型。reg 是第一次运行,收集完整系统信息再发出去。之后通信用 valid,只带 UUID、主板序列号、主板制造商这些字段。

reg 还会用 POST 把收集到的数据交上去,目标是 149.28.241.241 上的一个 PHP 路径。

3.3 上传类型
上传同样走 POST。JSON 里用键 T 表示这次传的是什么:
| 键值 | 含义 |
|---|---|
FDU |
上传 list.txt 里列出的文件 |
CC |
发送 UUID、序列号、主板品牌、产品型号、CPUID 和操作系统名称 |
CA |
发送完整系统信息 |
4 ATT&CK
| 战术 | 名称 | ID | 在这次活动里 |
|---|---|---|---|
| Initial Access | Phishing | T1566 | 钓鱼文档投递 |
| Execution | Scheduled Task/Job | T1053 | 计划任务定时拉起程序 |
| Defense Evasion | Template Injection | T1221 | Office 文档使用模板注入 |

