★ 运行时全景扫描:抖音直播伴侣工具链的最大盲点

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 时点。

PIDProcess本地 / 出站状态角色
4164画面去重 (主)无 TCPWPF 反去重 overlay (.NET 8)
4356恢复直播 (父)无 TCPNuitka onefile 父进程
4724恢复直播 (子):::6002 LISTEN0 活跃★ SunnyNet 代理端口(无流量经过)
6364画面去重 (副)双实例
6632Proxifier不活跃
9748播放器4.1无 TCP印证 §六 "4.1 完全不外联"
10592mate-launcher启动后空闲注入器(一次性)
12764Reqable0.0.0.0:9000 / 12310 / 12412 LISTENHTTP 代理 + admin UIwebcast HTTPS 走它(不走 SunnyNet)
13472MediaSDK_Server.exe10.100.20.6:30666 → 110.249.203.220:8900ESTABLISHED★ 唯一活跃出站(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 调度
实连 IP110.249.203.220:8900河北 China Unicom AS4837 — 不在 DNS 解析列表里
stream_id40759628474928379918 位流 ID
签名失效expire=17792954891 天 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 / uid42195419666932Neptune / ixigua / (mssdk 推测)
device_id / did4034521526989563Neptune / ixigua / pc-mon
stream_id407596284749283799当前推流 URL
RTMP 推流签名c035d05df84a17ec13a1e79a6489c2ffRTMPS URL query (HMAC-MD5)
签名过期1779295489epoch 2026-05-15 12:04:49 UTC
沙盒内网 IP10.100.20.6:30666当前 ESTABLISHED 出站
推流目标 IP110.249.203.220:8900当前 ESTABLISHED 远端
MSSDK 版本v04.07.07-ml-windows / sdk_ver_code=67569411 / lc_id=1987400611mssdk URL
webcast_mate 版本12.0.3 / 12.0.5.10mssdk + pc-mon
Neptune aid1128Neptune URL
ByteCast pc-mon aid2080 / 6666pc-mon URL(双 aid 双线路)

7 扫描方法 可复跑

脚本归档在 decompile/dump_proc_strings.ps1。核心是 P/Invoke 拿 OpenProcess + VirtualQueryEx + ReadProcessMemory,遍历 VAD region,对每个 committed-readable 区域做双遍解码(Latin1 + UTF-16LE)后正则提取 URL。

# 打开进程,遍历 VAD region,逐 region ReadProcessMemory $h = [W.K]::OpenProcess(0x410, $false, $TargetPid) # PROCESS_VM_READ | PROCESS_QUERY_INFORMATION $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 } # MEM_COMMIT only if (($mbi.Protect -band 0xEE) -eq 0) { continue } # readable only if ($mbi.RegionSize -gt 64MB) { continue } # skip video buffers [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) } # Pass 2: UTF-16LE 解码(Electron / .NET 字符串) $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 反向隧道远程管理沙盒的服务端。但因为它跟工具链共生在同一台机器,从威胁建模角度算"私人基础设施"。
# 沙盒 C:\Users\Administrator\Downloads\frp_0.68.1_windows_amd64\frpc.toml 实读 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进程远端归属是否私人
12772frpc.exe119.29.227.53:7000腾讯云 广州✅ 作者中控
13472MediaSDK_Server110.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
12520msedge49.7.48.64:8900❓ 字节内部 8900 端口模式
3720ToDesk106.55.81.126:443腾讯云 广州❌ ToDesk 远控(与工具链无关)
8008baidunetdiskhost113.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 配额)和一个运维隧道。
安全含义:
  1. 118.31.33.84:90 是工具链最脆弱单点 — 1 台阿里云 VPS 一旦被封 IP / 实名追溯,整条 ASR 盗用链立即断开
  2. 119.29.227.53:7000 的 frpc token + admin 密码完整暴露在沙盒磁盘 — 拿到沙盒读权限即可用 token 注册伪客户端,或通过 admin UI 控制现有客户端。本次报告所用的 SSH 访问入口(:6001)也走 frpc tunnel — 一旦配置被改,访问通道立刻丢失
  3. 两个 VPS 都用国内云服务商(阿里/腾讯),实名认证可追溯

8 推荐取证 / 后续

  1. 抓 mssdk / pc-mon / ixigua 这些遥测的实际 POST body — Reqable 已默认 catch 全部 HTTPS,离线解 .har 即可看到 user_id + device_id 的完整上下文
  2. 跨 user_id 关联 — 用 42195419666932 在沙盒上 grep 所有日志/cache,看是否在其它二进制(插话剪辑、播放器4.1)里也出现,确认是否同一作者账号
  3. 对照 RTMP 推流签名失效时间 — 在 1 天内多次 dump,看 stream key 是否每次推流都不同(每次抖音重新签发)
  4. 挑战工具链作者的设计逻辑 — 既然遥测侧链没堵,是不是设计盲区?还是故意不堵(避免破坏 SDK 内部数据流让 mate 崩溃)?这是个有趣的问题
  5. 追踪 110.249.203.220:8900 在不同时段是否变化 — 字节内部 PoP 调度的特征