channel-lion 恶意 iOS SDK

完整静态取证分析报告

Static Forensic Analysis · channel-lion SDK · AD902F3
生成时间: 1788045645 分析对象: libwebuiopsercore + DKStatistics + SDWebuiopser + riskdetector 受害应用: 光语 (com.hongYiTeaching) v1.8.2

目 录

  1. 定性结论
  2. 组件概览(四组件)
  3. 密钥与协议参数
  4. C2 基础设施与 IOC
  5. SockPort 内核利用链
  6. 七条命令 Wire Format
  7. 55 条 XOR 常量表
  8. 数据库当前快照

⚠️ 1. 定性结论

channel-lion SDK 是一个全功能移动端间谍软件开发工具包,伪装为广告/统计 SDK 分发,实际功能包括:

攻击者标识: [email protected] (va long) · 受害 App: 光语 AD902F3 · SDK 接入名: ChannelLionModule

2. 四组件概览

📦 DKStatistics v1.0.4 / v1.0.8
角色外层 C2 通信核心
协议SSP1 + zstd + AES-256-GCM + RSA
HMAC key空串(无对端认证)
路由/api/report/deviceHeartbeat, /api/report/data
特征X-Report-Sign / X-Report-Type headers
🔑 libwebuiopsercore 7.77 MB
角色内核利用 + Keychain 解包
利用链SockPort + IOSurface + PAC xpaclri
线程入口pthread@0xa338 → SockPort核心@0x57d7d4
状态机5阶段: init→spray→pivot→kread→kwrite
koffsetarr[3]=0xec arr[4]=0x10 (vtable[+0x10]@0x98b4)
🎭 SDWebuiopser 127 KB
角色Acquisition 协议桥接 + 流量伪装
User-AgentHTTPSUploader/3.04
伪装Flutter / FakeViewController / TLS bypass
路由/api/handshake.php, /api/session.php, /api/upload.php
备注被 DK 完全拦截,仅作协议分层
🦀 riskdetector.framework 4.1 MB · Rust
角色Photos OCR + 截图上传
识别引擎Photos.framework + Vision 文字识别
存储SQLite FTS3 + 关键词命中
上传AWS S3(SaaS 多租户: orgId/pwrs)
特征uploadSwitch / orgId / pwrs 配置

3. 密钥与协议参数

参数用途来源
AES-256-GCM Keya37f2c91b5e24d8fa1c63902e7b84f15DK/SD/Core 数据加密binary 静态分析
HMAC Key"" (空串)X-Report-Sign 签名binary 静态分析
RSA 公钥 SHA-25685ec8a4c…session key wrapbinary 抠取
DK Addr XORout[i] = b ^ ((13*i+0x6b)&0xFF)DK 地址混淆逆向确认
SD XOR 公式marker=b^((-98*i+55)&0xFF); out=marker^0x9655条字符串常量混淆逆向确认
SockPort seed0x55AAC33CMadVM字节码种子binary 静态分析
神秘 MD553d887e912ff255294a2acfdb5e42e13TronLink 特征哈希binary 抠取

4. C2 基础设施与 IOC

🌐 已确认在线节点(探测时间: 报告生成时)
地址端口类型
47.245.60.1608080旧主 C2
rt.wlfzwl.com36887新主 C2 (AWS GA)
ga-a9.co443CDN 前端 (Cloudflare)
cnsdcdeshidsfojkgj.ga-a9.co443XOR 解码域名
📋 攻击者信息 IOC
类型
Email[email protected]
Emailva long (网络别名)
GitLab 远程配置cu2oub / jqxatbp (键名)
C2 URLwlfzwl.com (新域名)
C2 URLru998.vip (备用)
Bundlecom.acquisitionhook.upload
MD553d887e912ff255294a2acfdb5e42e13

5. SockPort 内核利用链(五阶段)

阶段 1
init
0x98b4
初始化 MadVM + koffset 探测
阶段 2
spray
0xa338
IOSurface 堆喷 1MB/134MB
阶段 3
pivot
0x57d7d4
SockPort 线程入口 + 提权
阶段 4
kread
vtable[+0x10]
内核任意读(PAC xpaclri 剥离)
阶段 5
kwrite
flag@0x6c3000+0x898
内核任意写 + Keychain 解包
; 阶段3: pthread@0xa338 → SockPort核心@0x57d7d4
; vtable[+0x10]@0x98b4 — 纯指针链迭代器 (idx 完全忽略)
; koffset(48) = arr[3] = 0xec   ← proc.p_pid offset
; koffset(49) = arr[4] = 0x10   ← task ptr offset

; IOSurface 堆喷: 1 MB 对象 × 134 个 = ~134 MB RSS
; PAC 剥离:  xpaclri  ; 消除 pointer-auth bits
; SockPort 喷洒基地址: flag@0x6c3000 + 0x898

6. 七条命令 Wire Format

CMD名称Wire (hex)动作
0deviceInfo00 00 00 00上报 iOS版本/设备型号/UDID
1securityd01 00 00 00通过 securityd 通道触发提权
2reportKeychain02 00 00 00 [len:4] [xml_b64]上传完整 Keychain XML
3pullConfig03 00 00 00拉取 GitLab/Bitbucket 远程配置
4heartbeat04 00 00 00 [ts:8]心跳保活 + 获取下一条 task
5fileExfil05 00 00 00 [path_len:2] [path] [chunk_len:4] [data]读取任意文件并分块上传
6screenCapture06 00 00 00 [keyword_len:2] [keywords]OCR 截图 → riskdetector → S3
7appsList07 00 00 00枚举已安装 App (LSApplicationWorkspace)

7. 55 条 XOR 常量(SD公式解码)

公式: marker = b ^ ((-98*i+55)&0xFF);decoded = marker ^ 0x96
#解码值类型
1 TronLinkData.sqlite 钱包DB
2 walletsV2 钱包键
3 keystore 私钥目录
4 IOSurfacePrefetchPages 内核对象
5 HTTPSUploader User-Agent
6 3.04-hook 版本标识
7 com.acquisitionhook.upload Bundle ID
8 cnsdcdeshidsfojkgj.ga-a9.co C2域名
9 cyanide_fb MadVM标签
10 AcqViewCntrlr_ 伪类名
11 FakeViewController 伪视图控制器
12 FlutterView Flutter伪装
13 ru998.vip 备用C2
14 ga-a9.co 主CDN
15 wlfzwl.com 新C2域
16 rt.wlfzwl.com 新主C2
17 47.245.60.160 旧主C2 IP
18 53d887e912ff255294a2acfdb5e42e13 TronLink MD5
19 ChannelLionModule SDK注册名
20 channel-lion SDK标识
21 securityd 系统服务伪装
22 springboard UI进程伪装
23 AppleKeyStore Keychain服务
24 com.apple.security.securityd 系统Bundle
25 genp Keychain-generic-password
26 inet Keychain-internet-password
27 keys Keychain-key
28 cert Keychain-certificate
29 X-Report-Sign 协议Header
30 X-Report-Type 协议Header
31 reportKeychain CMD名
32 deviceHeartbeat CMD名
33 reportDevice CMD名
34 cu2oub GitLab配置键
35 jqxatbp Bitbucket配置键
36 orgId riskdetector租户
37 pwrs riskdetector策略
38 uploadSwitch OCR开关
39 SSP1 帧魔数
40 pullConfig CMD名
41 fileChunk CMD名
42 fileTaskStatus CMD名
43 MadVM 内部标签(误命名)
44 SockPortExploit 利用策略名
45 CicutaVirosa 备用利用
46 DanglingJoin 备用利用
47 xpaclri ARM64 PAC strip
48 IOSurface 堆喷对象
49 kernel_read 内核读原语
50 kernel_write 内核写原语
51 koffset 内核偏移
52 task_self mach task
53 pid_for_task 提权辅助
54 proc_find 进程查找
55 vm_map_wire 内存锁定

8. 数据库当前快照

5
设备
0
Keychain 条目
143
协议包
1
应用映射
📱 设备列表(5 台)
设备ID协议最后在线
unknowndk/1.01788037884
e33694e8dfa47463afa5cc6977bc8638163c481bdk/1.01787963882
dev_da550dd25e88dk/1.01787963743
probe_testdk/1.01787963697
test_device_iphone_b_01dk/1.01787962199
📡 最近协议包(143 条)
时间方向协议端点大小
1788044079 IN SD /api/handshake.php 387
1788038607 IN SD /api/handshake.php 376
1788038069 IN SD /api/handshake.php 385
1788038046 IN SD /api/handshake.php 376
1788037884 IN DK /api/report/deviceHeartbeat 150
1788037881 IN DK /api/report/deviceHeartbeat 150
1788037500 IN DK /api/report/deviceHeartbeat 73
1788036972 IN SD /api/handshake.php 385
1788036714 IN SD /api/handshake.php 387
1788036481 IN SD /api/handshake.php 376
1788036405 IN SD /api/handshake.php 387
1788036059 IN SD /api/handshake.php 385
1788036006 IN SD /api/handshake.php 376
1788035513 IN SD /api/handshake.php 376
1788035460 IN SD /api/handshake.php 385
1788035406 IN SD /api/handshake.php 381
1788035352 IN SD /api/handshake.php 382
1788035299 IN SD /api/handshake.php 380
1788033912 IN SD /api/handshake.php 387
1788026712 IN SD /api/handshake.php 387
1788026463 IN SD /api/handshake.php 387
1788025665 IN SD /api/handshake.php 387
1788024461 IN SD /api/handshake.php 376
1788024144 IN SD /api/handshake.php 376
1788023977 IN SD /api/handshake.php 376
1788023811 IN SD /api/handshake.php 376
1788023600 IN SD /api/handshake.php 376
1788023259 IN SD /api/handshake.php 376
1788022687 IN SD /api/handshake.php 376
1788021710 IN SD /api/handshake.php 376
…共 143 条
channel-lion SDK 完整取证报告 · 生成于 1788045645 · 分析工具: channel-lion C2 Forensic Panel v6