★ 运行时全景扫描:抖音直播伴侣工具链的最大盲点
2026-05-14 用 OpenProcess + ReadProcessMemory + VirtualQueryEx 字节级 dump 沙盒 9 个工具链进程的 heap,从 MediaSDK_Server.exe (PID 13472) 提取 472 个 unique URL。
发现 webcast_mate 在 RTMP 推流之外,同时向 5 类独立遥测 endpoint 上报 PII(user_id + device_id + platform),全部以 platform=windows 真实身份发送 — 工具链完全没拦截这条侧链。这是 §11 报告"5 层 spoof" 完全没覆盖的第 6 个维度,抖音风控做一次 user_id join 就能识破。
2026-05-14 12:00 · Claude (Opus 4.7) · SSH + PowerShell + P/Invoke ReadProcessMemory 字节级实测
9 进程扫描
472 unique URL
user_id 已抓
device_id 已抓
RTMPS stream key 已抓
5 类遥测 endpoint 已识别
USER_ID (字节用户 ID)
42195419666932
15 位 · Neptune + ixigua 三处上报
DEVICE_ID
4034521526989563
16 位 · Neptune + ixigua + pc-mon
STREAM_ID
407596284749283799
18 位 · 当前活跃推流
RTMP 推流签名
c035d05df84a17ec13a1e79a6489c2ff
HMAC-MD5 · 1 天过期
1 9 进程当前 TCP 网络状态
沙盒上工具链全部 9 个进程经 Get-NetTCPConnection -OwningProcess <PID> 抓取,2026-05-14 11:35 时点。
| PID | Process | 本地 / 出站 | 状态 | 角色 |
| 4164 | 画面去重 (主) | — | 无 TCP | WPF 反去重 overlay (.NET 8) |
| 4356 | 恢复直播 (父) | — | 无 TCP | Nuitka onefile 父进程 |
| 4724 | 恢复直播 (子) | :::6002 LISTEN | 0 活跃 | ★ SunnyNet 代理端口(无流量经过) |
| 6364 | 画面去重 (副) | — | — | 双实例 |
| 6632 | Proxifier | — | 不活跃 | — |
| 9748 | 播放器4.1 | — | 无 TCP | 印证 §六 "4.1 完全不外联" |
| 10592 | mate-launcher | — | 启动后空闲 | 注入器(一次性) |
| 12764 | Reqable | 0.0.0.0:9000 / 12310 / 12412 LISTEN | HTTP 代理 + admin UI | webcast HTTPS 走它(不走 SunnyNet) |
| 13472 | MediaSDK_Server.exe | 10.100.20.6:30666 → 110.249.203.220:8900 | ESTABLISHED | ★ 唯一活跃出站(RTMPS 推流) |
关键观察:当前只有 MediaSDK_Server 一条活跃出站连接,远端 110.249.203.220 是河北 China Unicom AS4837;非 push-rtmp-c11.douyincdn.com 的 15 个 DNS 解析 IP 之一 — 字节内部 GeoDNS PoP 调度或 IP 直连。
2 当前活跃推流 endpoint(完整 URL + Stream Key + 签名)
从 MediaSDK_Server.exe (PID 13472) heap 字节级 dump 提取的真实推流 URL — 包含 1 天有效期的 HMAC-MD5 签名。
rtmps://push-rtmp-c11.douyincdn.com/stage/stream-407596284749283799
?arch_hrchy=c1
&exp_hrchy=c1
&expire=1779295489 → 2026-05-15 12:04:49 UTC (1 天有效)
&sign=c035d05df84a17ec13a1e79a6489c2ff HMAC-MD5 推流签名
&t_id=037-20260514... Track ID + 日期
| 字段 | 值 | 含义 |
| CDN 链 | push-rtmp-c11.douyincdn.com → CNAME → push-rtmp-c11.douyincdn.com.tlivepush.com | 字节自营 "Toutiao Live Push" |
| DNS 解析 | 122.226.161.{12,13,35,108,111,113} (浙江/电信) + 121.12.115.{39,142,148,155-159,172} (河北/电信) | 共 15 个 IP, GeoDNS 调度 |
| 实连 IP | 110.249.203.220:8900 | 河北 China Unicom AS4837 — 不在 DNS 解析列表里 |
| stream_id | 407596284749283799 | 18 位流 ID |
| 签名失效 | expire=1779295489 | 1 天 ttl,每次推流抖音重新签发 |
3 ★ 遥测侧链 5 类 endpoint 全部明文上报 platform=windows 未被 spoof
这是 §11 报告"5 层 spoof"完全没覆盖的第 6 个维度。webcast_mate 在 RTMP 推流之外,同时调用以下 5 类遥测系统,每次都把真实 user_id + device_id + Windows 平台信息发送出去。
① Neptune Live SDK 配置下发 user_id + device_id
http://117.27.242.185/api/neptune/v3/sdk/PackLiveSDK?aid=1128&_domain_=i.snssdk.com&user_id=42195419666932&device_id=4034521526989563&version_code=130300&DnsOptVersion...
备份 endpoint http://120.39.196.18/... · 暴露 user_id + device_id + aid=1128 + _domain_=i.snssdk.com
② 西瓜直播 MediaSDK 崩溃上报 含 Windows build 号
https://live.ixigua.com/live_assistant/invoke/mediaSdkCrashReport?_version=12.0.3&_branch=master&uid=42195419666932&did=4034521526989563&isLocalTest=false&osRelease=10....
暴露 uid + did + webcast_mate v12.0.3 + osRelease=10....(Windows 10 build 号直接送出)
③ 字节 MSSDK 反爬合规检测 3 处明文 windows
https://mssdk.bytedance.com/mscc/common_setting?lc_id=1987400611&platform=windows&device_platform=windows&sdk_ver=v04.07.07-ml-windows&sdk_ver_code=67569411&app_ver=...
★ 同一 URL query 里 platform=windows 出现 3 次 + MSSDK 版本号
④ PC 监控日志 + 云控配置 device_id + os=windows
https://pc-mon.zijieapi.com/monitor_pc/collect/api/pc_log?aid=2080 · ?aid=6666 · /monitor/collect/c/cloudcontrol/get?device_id=4034521526989563&aid=2080&os=windows&app_version=12.0.5 · /monitor_pc/settings/api/settings_v2?aid=2080&app_version=12.0.5_12.0.5.10&device_id=...&channel=12.0.5.10&os=windows&os_version=...
3 个独立子 endpoint,全部含 device_id + aid + os=windows + os_version + channel
⑤ 推流端真实出口 IP 获取 IP 泄漏
https://live-pusher-log.zijieapi.com/kcp/get_client_ip
服务端给出客户端真实出口 IP(沙盒 NAT 后的公网 IP)
4 双轨上报矛盾 — 抖音 join user_id 一秒识破 致命漏洞
同一台机器、同一个 user_id,在 RTMP 协议层声明 Android,但在 HTTPS 遥测层全部声明 Windows。任何后端做的一致性检查都会立即识破。
✅ RTMP 协议层(rtmp-hook 已 spoof)
- onMetaData AMF0 tag:
platform=Android
- RTMP-over-TLS 64 项字段:
model=SM-S938B
- flashVer:
BytedanceDouyinLive/30.5.0 (Linux; Android 15; SM-S938B …)
- .rdata 字面量:
"windows" → "Android"
❌ HTTPS 遥测层(工具链完全未拦截)
- MSSDK 反爬:
platform=windows × 3 处
- PC-Mon 日志:
os=windows
- Neptune SDK: 真实
device_id=4034521526989563
- ixigua crash:
osRelease=10.... (Win10 build)
- 所有 user_id 都是同一个:
42195419666932
风控对策极简:抖音风控只要在数据仓 SQL 写一条 SELECT count(*) FROM rtmp_stream s JOIN mssdk_telemetry t ON s.user_id = t.user_id WHERE s.platform != t.platform AND s.platform = 'Android' — 一行查询就能命中所有此类伪装。这是工具链最容易被堵的检测点。
5 协议层位覆盖图 — 6 个独立检测维度
综合 §11 + 本报告,工具链的纵深防御应该是 6 层 — 但第 6 层(遥测侧链)完全没覆盖。
L1
明文 RTMP onMetaData(FLV tag 层)rtmp-hook FUN_180001710 / build_meta_replacement
✅ 已覆盖
L2
RTMP-over-TLS payload (SSL_write 前 byte-level 替换)rtmp-hook FUN_180003260 → FUN_180002fd0 / 64 项 config.ini[metadata]
✅ 已覆盖
L3
HTTPS webcast Cookie / Header (REST API 4 endpoint)query_tool QueryTool.http_callback / SunnyNet HTTP MITM
✅ 已覆盖
L4
HTTP/2 + TLS 协议指纹(JA3 / SETTINGS)query_tool HTTPSetH2Config / HTTPSetRandomTLS / 8 个 curl_cffi fp 模板
✅ 已覆盖
L5
.rdata 字面量 patchrtmp-hook install_meta_hook STR-PATCH "windows" → "Android"
✅ 已覆盖
L6
★ 遥测侧链一致性 (mssdk / pc-mon / neptune / ixigua crash)webcast_mate 自身的 HTTPS 调用,工具链未覆盖
❌ 完全暴露
修正 §11 §4 矩阵:原来 "设备指纹 ✅ 全覆盖" 应改为 ⚠️ "协议层已覆盖但遥测侧链未覆盖";新增一行 "L6 遥测侧链上报一致性 ❌ 工具链完全不覆盖"。
6 关键 PII 取证清单(一次性 dump 抓到)
以下字段足够把这次推流的 stream + user + device + 推流 IP 完整链回到具体某条直播间和具体抖音账号。
| 字段 | 值 | 出现位置 |
| user_id / uid | 42195419666932 | Neptune / ixigua / (mssdk 推测) |
| device_id / did | 4034521526989563 | Neptune / ixigua / pc-mon |
| stream_id | 407596284749283799 | 当前推流 URL |
| RTMP 推流签名 | c035d05df84a17ec13a1e79a6489c2ff | RTMPS URL query (HMAC-MD5) |
| 签名过期 | 1779295489 | epoch 2026-05-15 12:04:49 UTC |
| 沙盒内网 IP | 10.100.20.6:30666 | 当前 ESTABLISHED 出站 |
| 推流目标 IP | 110.249.203.220:8900 | 当前 ESTABLISHED 远端 |
| MSSDK 版本 | v04.07.07-ml-windows / sdk_ver_code=67569411 / lc_id=1987400611 | mssdk URL |
| webcast_mate 版本 | 12.0.3 / 12.0.5.10 | mssdk + pc-mon |
| Neptune aid | 1128 | Neptune URL |
| ByteCast pc-mon aid | 2080 / 6666 | pc-mon URL(双 aid 双线路) |
7 扫描方法 可复跑
脚本归档在 decompile/dump_proc_strings.ps1。核心是 P/Invoke 拿 OpenProcess + VirtualQueryEx + ReadProcessMemory,遍历 VAD region,对每个 committed-readable 区域做双遍解码(Latin1 + UTF-16LE)后正则提取 URL。
$h = [W.K]::OpenProcess(0x410, $false, $TargetPid)
$pattern = '(?i)(https?://[a-zA-Z0-9._:/?%=&#~\-]{8,160}
|rtmps?://[a-zA-Z0-9._:/?%=&#~\-]{8,160}
|wss?://[a-zA-Z0-9._:/?%=&#~\-]{8,160})'
while ($cur -lt 0x7FFFFFFFFFFF) {
[W.K]::VirtualQueryEx($h, $cur, [ref]$mbi, $mbiSize)
if ($mbi.State -ne 0x1000) { continue }
if (($mbi.Protect -band 0xEE) -eq 0) { continue }
if ($mbi.RegionSize -gt 64MB) { continue }
[W.K]::ReadProcessMemory($h, $mbi.BaseAddress, $buf, $mbi.RegionSize, [ref]$read)
$text = [Encoding]::GetEncoding(28591).GetString($buf, 0, $read)
[regex]::Matches($text, $pattern) | %{ [void]$hits.Add($_.Value) }
$t2 = [Encoding]::Unicode.GetString($buf, 0, $read - ($read % 2))
[regex]::Matches($t2, $pattern) | %{ [void]$hits.Add($_.Value) }
}
使用方式: ssh + stdin pipe + powershell -NoProfile 把脚本推到沙盒,传 -TargetPid <PID> 即可。MediaSDK_Server 扫了 1920 个 region 找到 472 URL;扫描全过程 30 秒。
★8 私人服务器(非官方 endpoint)盘点 仅 2 个
用户提问"除了官方接口没有其他的私人服务器吗"。补做 ASCII+UTF-16LE 双 pass 全工具二进制扫描 + sandbox 完整 TCP state + frpc 配置文件直读,找到 唯一 2 个确认的私人服务器。
8.1 唯一硬编码的私人服务器:插话剪辑.exe 内的鉴权代理
http://118.31.33.84:90/login.php — 阿里云杭州 (AS37963 Alibaba)
| 出现位置 | 插话剪辑.exe UTF-16LE 字符串 http://118.31.33.84:90/login.php?phone={0}&pwd={1}&devicetime={2}&tdid={3} |
| 静态扫描结果 | 唯一在工具二进制硬编码的非官方 IP — rtmp-hook / mate-launcher / query_tool / 恢复直播 / 画面去重 / 播放器4.1 / SunnyNet64 全部扫了,零硬编码 |
| 性质 | 作者自建鉴权代理:用 phone + pwd + devicetime + tdid 换取 32-hex sign 字段 → 下游用作 lv-api.ulikecam.com 鉴权头 → 盗用 Ulike ASR 服务 |
| 协议 | HTTP 明文(不是 HTTPS),密码以 URL query 参数传输 — 链路任意中间人可窃听 |
| 当前状态 | 插话剪辑.exe 空闲,本次 dump 无活跃连接到此 IP |
8.2 作者反向隧道中控:frpc 服务端
119.29.227.53:7000 — 腾讯云广州 (AS45090 Tencent)
区分说明:这台 IP 不是 spoof 工具链一部分,而是作者用 frpc 反向隧道远程管理沙盒的服务端。但因为它跟工具链共生在同一台机器,从威胁建模角度算"私人基础设施"。
serverAddr = "119.29.227.53"
serverPort = 7000
loginFailExit = false
log.to = "./frpc.log"
log.level = "info"
log.disablePrintColor = true
auth.token = "fSA5k6iefMt-oujxcadOqDvatEaVeYvY8uhaaYWH" ← frpc PSK 完整暴露
webServer.addr = "127.0.0.1"
webServer.port = 7400
webServer.user = "admin"
webServer.password = "W06sMw5ubdxAQSEaJwbFjzm0" ← admin UI 密码完整暴露
[[proxies]]
name = "win_openssh_22"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22 ← 沙盒本地 SSH
remotePort = 6001 → 暴露到 119.29.227.53:6001
即我们 SSH 进入沙盒的入口
8.3 沙盒当前 TCP 出站全量对照
列出所有活跃 ESTABLISHED 连接,按 IP 归属反查 — 确认除上述 2 个外没有其它私人服务器。
| PID | 进程 | 远端 | 归属 | 是否私人 |
| 12772 | frpc.exe | 119.29.227.53:7000 | 腾讯云 广州 | ✅ 作者中控 |
| 13472 | MediaSDK_Server | 110.249.203.220:8900 | 河北 China Unicom | ❌ 字节 RTMP CDN GeoDNS |
| 16028 | 直播伴侣 | 39.108.128.77:443 | 阿里云 杭州 | ❌ 阿里 DSA CDN(webcast5-mate-hl CNAME 链 cdnbuild.net) |
| 16028 | 直播伴侣 | 117.27.242.179:443 | 福建电信 | ❌ 字节 CDN |
| 16028 | 直播伴侣 | 120.39.196.15:443 | 福建电信 | ❌ 字节 CDN |
| 16028 | 直播伴侣 | 106.126.9.209:443 / 113.24.210.196:443 | 福建/山西 | ❌ 字节 EDGE |
| 6584 | 直播伴侣 | 106.126.14.93:443 | 福建 | ❌ 字节 EDGE |
| 12520 | msedge | 49.7.48.64:8900 | — | ❓ 字节内部 8900 端口模式 |
| 3720 | ToDesk | 106.55.81.126:443 | 腾讯云 广州 | ❌ ToDesk 远控(与工具链无关) |
| 8008 | baidunetdiskhost | 113.24.226.70:80 / 113.6.91.16:443 / 36.110.192.103:443 | 百度 | ❌ 百度网盘 |
8.4 最终结论 — 作者没有"自建 SaaS"
硬编码在工具的私人 IP
1
118.31.33.84:90 (插话剪辑.exe UTF-16)
运维基础设施
1
119.29.227.53:7000 (frpc tunnel)
作者自建 SaaS 服务
0
没有 RTMP 代理 / API 代理 / 字段下发等
总计私人服务器
2
都在国内云(阿里/腾讯),实名可追溯
关键洞察:所有 spoof 流量都直接和字节官方 endpoint 对话,作者
没有自建:
- RTMP 推流代理(直走 push-rtmp-c11.douyincdn.com)
- webcast API 代理(直走 webcast5-mate-hl.amemv.com)
- 字段下发服务(config.ini 本地配置,无远端拉取)
- 流量统计 / 升级 / license 心跳(rtmp_debug 仅写本地日志)
设计原则:作者刻意最小化自有基础设施 — 让工具完全去中心化运行,仅留一个鉴权代理(吃 Ulike ASR 配额)和一个运维隧道。
安全含义:
118.31.33.84:90 是工具链最脆弱单点 — 1 台阿里云 VPS 一旦被封 IP / 实名追溯,整条 ASR 盗用链立即断开
119.29.227.53:7000 的 frpc token + admin 密码完整暴露在沙盒磁盘 — 拿到沙盒读权限即可用 token 注册伪客户端,或通过 admin UI 控制现有客户端。本次报告所用的 SSH 访问入口(:6001)也走 frpc tunnel — 一旦配置被改,访问通道立刻丢失
- 两个 VPS 都用国内云服务商(阿里/腾讯),实名认证可追溯
8 推荐取证 / 后续
- 抓 mssdk / pc-mon / ixigua 这些遥测的实际 POST body — Reqable 已默认 catch 全部 HTTPS,离线解 .har 即可看到 user_id + device_id 的完整上下文
- 跨 user_id 关联 — 用
42195419666932 在沙盒上 grep 所有日志/cache,看是否在其它二进制(插话剪辑、播放器4.1)里也出现,确认是否同一作者账号
- 对照 RTMP 推流签名失效时间 — 在 1 天内多次 dump,看 stream key 是否每次推流都不同(每次抖音重新签发)
- 挑战工具链作者的设计逻辑 — 既然遥测侧链没堵,是不是设计盲区?还是故意不堵(避免破坏 SDK 内部数据流让 mate 崩溃)?这是个有趣的问题
- 追踪 110.249.203.220:8900 在不同时段是否变化 — 字节内部 PoP 调度的特征