近期,一起疑似由 MuddyWater APT 组织发起的鱼叉式网络钓鱼攻击活动被发现,该活动针对中东地区多个行业,包括外交、海事、金融和电信机构。此次攻击活动利用图标欺骗和恶意 Word 文档传播一个名为 “RustyWater” 的后门程序。值得关注的是,该程序基于 Rust 语言编写,这标志着该组织对其传统工具包进行了一次重大的技术升级。

攻击链与初始访问向量
攻击链始于一封精心构造的钓鱼邮件。

这封标题为“网络安全指南”的电子邮件,发件人邮箱地址域名为 “info@tmcell”,这似乎是土库曼斯坦主要移动运营商 TMCell(Altyn Asyr CJSC)的官方联系邮箱。邮件的附件名为 Cybersecurity.doc,它是整个攻击链下一阶段的主要有效载荷。
技术分析
第一阶段:恶意 Word 文档 (Cybersecurity.doc)
当受害者打开 Cybersecurity.doc 时,会看到要求启用编辑和内容的提示。

对文档进行分析,可以发现其中包含可疑的 VBA 宏。

宏代码分析:
其中一个关键的宏函数是 WriteHexToFile。

WriteHexToFile 函数会读取嵌入在 UserForm1.TextBox1.Text 中的一段十六进制编码字节流。它首先移除所有空格和换行符等格式字符,验证数据长度为偶数后,将其解码为原始二进制数据。随后,它将重构后的有效负载以 CertificationKit.ini 的文件名写入磁盘,路径为 C:\ProgramData\。
接下来,另一个被混淆的函数(可称为 love_me_function)开始执行。它首先通过硬编码的 ASCII 值和 Chr() 函数动态构建出字符串 WScript.Shell。

构建完成后,该函数会验证字符串,并使用 CreateObject 实例化一个 WScript.Shell COM 对象。紧接着,它构建第二个混淆字符串,该字符串解析为 cmd.exe /c C:\ProgramData\CertificationKit.ini,从而执行之前由 WriteHexToFile 函数写入的恶意文件。
从 UserForm1 中直接提取十六进制字符串并进行转换,可以确认其包含一个 PE 文件(以 4D5A 即 “MZ” 开头)。

第二阶段:RustyWater 后门 (CertificationKit.ini)
尽管文件名为 .ini,但提取出的 PE 文件显示为 reddit.exe。静态分析表明,该二进制文件是用 Rust 编译的,这与之前被记录的、归因于 MuddyWater APT 组织的 Archer RAT(也称为 RUSTRIC)样本一致。

主要功能分析:
-
反调试与信息收集:RustyWater 在开始执行时会建立反调试和反篡改机制,例如注册向量异常处理程序 (VEH)。它会系统地收集受害者机器的信息,包括用户名、计算机名和域成员身份。恶意软件中的所有字符串都使用位置无关的异或 (XOR) 加密。一些解密后的字符串示例如下:
C:\ProgramData
SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Mozilla/5.0 (Windows NT 10.0; Win64; x64)
reqwest/0.12.23 // Rust HTTP 库
Content-Type: application/json
-
杀软/EDR 检测:该后门会尝试通过扫描 25 多种杀毒软件产品的进程、服务名称和安装路径来检测各种杀毒软件和 EDR 工具。
-
持久化机制:恶意软件通过将自身写入 Windows 启动注册表项来实现持久化。

它首先解密注册表项路径 SOFTWARE\Microsoft\Windows\CurrentVersion\Run,然后以当前用户身份打开此注册表项。接着,它会解密一个短字符串作为启动项的名称,其值指向 C:\ProgramData\CertificationKit.ini,即恶意软件自身。
- C2通信:该恶意软件使用 Rust 的
reqwest 库建立基于 HTTP 的命令与控制 (C2) 连接。它配置了超时、连接池、请求头,并实现了重试逻辑以确保通信的可靠性。

在传输之前,收集到的数据会经过三层混淆:先封装为 JSON,再进行 Base64 编码,最后进行 XOR 加密。为了避免被检测,二进制文件在 C2 回调之间实现了随机的睡眠间隔,以增加流量分析的难度。
-
进程注入:该后门使用进程注入技术执行 shellcode。它首先以挂起状态启动 explorer.exe,获取其线程上下文,然后通过 VirtualAllocEx 在远程进程中分配可执行内存,并通过 WriteProcessMemory 写入有效载荷。
-
异步与并发:该二进制文件使用了 Rust 的异步运行时 (Tokio) 和多线程,以并发处理 C2 通信、文件操作和命令执行,从而避免阻塞。
归属与关联活动
基于此次攻击活动中观察到的技术特征、目标定位模式和战术相似性,有很高的把握认为此次活动是由 MuddyWater APT(也被称为 Earth Vetala、MERCURY、Static Kitten 和 Mango Sandstorm)所为。关键指标包括:
- VBA宏代码重用:从
Cybersecurity.doc 中提取的宏代码,尤其是 WriteHexToFile 和 love_me_function 的模式,与之前记录的 MuddyWater 攻击活动高度相似。
- 相似的攻击策略:本报告分析的攻击活动与另一份报告有大量重叠。在另一份报告中,初始的钓鱼邮件冒充了合法的以色列人力资源公司 LM 集团。

- 凭证泄露与冒充:攻击者利用从土库曼斯坦、阿联酋等国政府机构泄露的合法电子邮件凭证来发送鱼叉式钓鱼邮件。

- 广泛的诱饵:进一步调查发现了许多针对阿联酋和中东地区其他行业的类似钓鱼诱饵文档,其手法一致。
影响与建议
潜在影响:
- 高持久性风险:基于注册表的自启动和延迟信标机制使后门能在重启后保持运行,且磁盘取证痕迹较少。
- 能力动态扩展:模块化设计允许攻击者在已控主机上动态启用新功能(如文件收集、凭证窃取),无需投放新文件。
- 对抗网络检测:分层的 C2 通信、请求抖动和协议切换降低了基于 IP/域名封锁或特征匹配的检测效果。
- 增加事件响应难度:内存执行和异步任务处理使事件响应期间的时间线重建、内存取证和精确归因变得复杂。
防御建议:
- 监控注册表持久化:重点监控引用
C:\ProgramData\*.ini 或可疑 PE 文件的异常 Run 键写入。
- 检测异常 C2 行为:对频繁重试的出站 HTTP 连接、随机的回调间隔、以及多步骤的数据封装模式(JSON → Base64 → XOR)设置告警。
- 关注进程内存操作:在
explorer.exe 等良性 Windows 进程中检测 VirtualAllocEx、WriteProcessMemory 及线程上下文修改等可疑操作序列。
- 关联执行上下文:警惕从可写路径(如 Downloads、Temp、ProgramData)执行的已签名或看似合法的二进制文件,特别是当其后续加载未签名模块或创建远程线程时。
- 警惕后期行为升级:将后门从被动信标转变为主动收集(文件列表、键盘记录、任务执行)的行为视为高优先级威胁指标。
本次攻击活动展示了高级持续威胁(APT)组织在工具链现代化方面的持续投入。利用 Rust 等现代语言开发恶意软件,能够带来更好的性能、更高的反分析能力和更强的跨平台潜力,这对防御方提出了新的挑战。对于安全研究人员和事件响应人员而言,深入理解此类 恶意软件分析 的技术细节至关重要。如果你对类似的安全威胁分析感兴趣,欢迎到 云栈社区 交流探讨。

|