深入解析PipeMagic:模块化后门框架架构剖析

本文详细分析了Storm-2460组织使用的PipeMagic模块化后门框架技术架构。该恶意软件通过命名管道进行加密通信,采用双重链表管理payload模块、执行模块和网络模块,支持动态加载和执行恶意载荷。文章揭示了其C2通信机制、系统信息收集能力和模块化设计特点。

深入解析PipeMagic:模块化后门框架架构剖析

技术分析概述

PipeMagic是Storm-2460在多个攻击链中使用的模块化后门,特别是在利用CVE-2025-29824(Windows CLFS权限提升漏洞)的预攻击活动中。微软威胁情报团队观察到Storm-2460使用certutil工具从被入侵的合法网站下载恶意MSBuild文件,最终在内存中投放并执行PipeMagic。

执行流程分析

初始感染阶段

第一阶段的PipeMagic感染执行始于伪装成开源ChatGPT桌面应用程序项目的内存投放器。攻击者使用修改版的GitHub项目,包含恶意代码用于解密并启动内存中的嵌入式payload。

模块化架构设计

嵌入式payload即PipeMagic恶意软件,是通过TCP与C2服务器通信的模块化后门。一旦激活,PipeMagic通过命名管道和C2服务器接收payload模块。恶意软件使用一系列双重链表在内存中存储这些模块,这些链表分别用于暂存、执行和通信目的。

内部链表结构

分析发现四种不同的双重链表结构,各自在后门架构中发挥独特功能:

  • Payload链表:在每个节点中存储原始payload模块,代表模块化部署的初始阶段
  • 执行链表:包含已成功加载到内存并准备执行的payload模块
  • 网络链表:包含负责C2通信的网络模块
  • 未知链表:功能尚不明确,可能由加载的payload动态使用

Payload链表填充机制

恶意软件使用双重链表结构管理payload模块,每个节点封装Windows PE格式的原始payload。在初始化链表前,恶意软件为受感染主机生成唯一的16字节随机bot标识符。

命名管道通信

恶意软件生成专用线程建立命名管道进行payload传输,管道名称格式为\\.\pipe\1.<Bot ID hex string>。建立双向命名管道后,恶意软件持续监听管道,循环读取传入的payload模块。

管道数据结构

1
2
3
4
5
6
7
8
struct pipe_data_struct{
  DWORD module_setup_flag; // 添加模块节点(1)或停止读取管道(2)
  DWORD module_index; // 模块索引
  DWORD module_name; // 模块名称
  DWORD module_body_len; // 模块数据长度
  DWORD module_body_SHA1_hash; // 模块数据SHA1哈希
  BYTE module_body[]; // 指向模块数据的指针
};

解密和验证流程

读取管道数据后,恶意软件使用硬编码的32字节RC4密钥解密模块体:

1
2
00000000  7b c6 ea 4b 9d 82 ec d5 fb 31 05 87 b9 8c be 3b
00000010  b8 f7 c9 f7 29 fa 9e 87 27 41 a9 e3 be 34 4d fa

计算解密数据的SHA-1哈希并与管道数据中提供的哈希进行完整性验证。验证成功后,构建模块节点结构并插入到payload链表头部。

恶意软件配置管理

恶意软件使用明确定义的配置结构管理操作参数。外层配置结构包含长度字段和对应长度的数据缓冲区。如果config_len字段为常量0x5A,则硬编码配置被视为无效,恶意软件仅在本地执行模式下运行。

配置块结构

每个配置块遵循一致的内部格式:

1
2
3
4
5
struct config_block {
  DWORD block_index;
  DWORD block_data_len;
  BYTE block_data[block_data_len];
}

已知块索引及其对应数据:

  • 块索引1:C2配置块(aaaaabbbbbbb.eastus.cloudapp.azure[.]com:443)
  • 块索引3:后门最大运行时间(172800)

网络模块启动机制

后门不直接与C2通信,而是将任务委托给网络链表中的网络模块。首先使用嵌入式网络模块数据填充网络链表,该数据首先使用硬编码的32字节XOR密钥解密,然后使用aPLib压缩算法解压缩。

网络模块节点结构

1
2
3
4
5
6
7
8
struct network_module_node{
  __int64 module_index; // 网络链表中的模块索引
  BYTE *module_base; // 指向模块基址的指针
  __int64 module_size; // 模块大小
  __int64 module_main_func; // 主函数指针
  BYTE *module_entrypoint; // 模块入口点指针
  BYTE terminate_flag; // 终止标志
};

节点初始化并加载到内存后,恶意软件执行模块的入口点,将指向自身主函数的指针作为参数传递。

C2通信建立

网络模块启动后,首先导出并注册三个内部函数供后门使用:

  1. 通过TCP向C2服务器发送数据的函数
  2. 返回常量值0x8ca的函数
  3. 设置停止信号的功能

建立TCP连接后,模块向C2服务器发送包含随机生成的16字符十六进制字符串的HTTP GET请求。

系统信息收集

C2连接成功建立后,后门收集全面的系统和内部状态信息发送给C2服务器,包括:

  • 生成的bot ID
  • 操作系统版本
  • 计算机名称
  • 恶意软件可执行名称和进程ID
  • 域名信息
  • 进程完整性级别
  • IP地址信息
  • 执行链表所有节点数据

C2响应处理

后门收到C2服务器响应后,解析数据提取外部处理命令。已知处理代码包括:

  • 0x1:使用执行和payload链表中的模块执行核心后门功能
  • 0x3:查找指定索引的模块节点并执行模块代码
  • 0x7:关闭网络模块并停止所有C2通信
  • 0x8:使用未知链表中的模块执行后门功能

后门功能能力

处理代码0x1是最重要的命令,相关的处理数据包含内部后门命令和参数,使PipeMagic能够执行广泛的后门操作。主要功能包括:

  • 模块节点管理(插入、删除、替换)
  • 数据读写操作
  • 模块执行控制
  • 系统侦察和信息收集
  • 进程枚举
  • 自删除功能

防护建议

微软推荐以下缓解措施:

  1. 在Microsoft Defender for Endpoint中启用防篡改保护
  2. 启用网络保护功能
  3. 在阻止模式下运行EDR
  4. 配置全自动调查和修复
  5. 启用云提供的保护

检测指标

Microsoft Defender Antivirus将此威胁检测为PipeMagic (Win32/64)。Microsoft Defender for Endpoint警报包括"‘PipeMagic’恶意软件被检测到"等相关指示器。

妥协指标(IOCs)

  • C2域名:aaaaabbbbbbb.eastus.cloudapp.azure[.]com:443
  • 内存投放器SHA-256:dc54117b965674bad3d7cd203ecf5e7fc822423a3f692895cf5e96e83fb88f6a
  • PipeMagic后门SHA-256:4843429e2e8871847bc1e97a0f12fa1f4166baa4735dff585cb3b4736e3fe49e
  • 网络模块SHA-256:297ea881aa2b39461997baf75d83b390f2c36a9a0a4815c81b5cf8be42840fd1
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计