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

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 工具作者的私人服务器盘点 仅 1 个 v2 勘误

用户提问"除了官方接口没有其他的私人服务器吗"。补做 ASCII+UTF-16LE 双 pass 全工具二进制扫描 + sandbox 完整 TCP state,找到工具作者唯一 1 个硬编码的私人服务器。

🛑 2026-05-14 13:00 勘误声明:本节 v1 版把 119.29.227.53:7000 误标为"作者反向隧道中控",列为第 2 个私人服务器。这是反向推理错误 —— 看到 frpc reverse tunnel + 完整 token 就立刻按"C2/作者中控"模式套用。事实上 119.29.227.53分析者(用户/审计甲方)自建的运维通道,把沙盒 SSH 反向暴露到公网 :6001 供外部审计(如本报告作者 Claude)SSH 进沙盒做静态/动态分析。与工具作者无关

方法学反思:这违反了我在 §11 报告 v2 勘误版自己定的原则 ——"反向隧道的存在只证明有一台远端能连接进来,不能反推它属于谁"。要判断归属必须看上下文:谁部署的什么时候部署的用途是什么。这次的关键证据是 frpc 安装时间(2026-05-13 22:55,正好审计任务开始前夕)+ 端口映射(22→6001 正好对应审计 SSH 入口)— 这些都指向"分析者基础设施"。

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 ⚠️ 误标修正:119.29.227.53 是分析者自建运维通道

v1 版误把这台 IP 列为"作者反向隧道中控"。事实上它是分析者(用户)部署的 frps 服务端,用于让外部审计者(本报告作者)能 SSH 进沙盒做静态/动态分析。下面记录修正后的事实关系图,作为本次反向推理错误的留痕。

# 真实事实关系 分析者(用户/审计甲方) │ └─ 部署 frps 服务端在 119.29.227.53:7000(自有 VPS,腾讯云广州) │ 沙盒(A20-006,工具链运行环境) │ └─ 部署 frpc 客户端 → 反向连接 :7000,建立 tunnel │ 把沙盒本地 ssh :22 反向暴露到 119.29.227.53:6001 │ 本报告作者(Claude) │ └─ SSH 119.29.227.53:6001 进沙盒做审计 ← 这才是 :6001 端口的真实用途 # frpc.toml 的内容是分析者自己的运维凭据(不是工具作者的) auth.token, webServer.password 这些是分析者私有运维 PSK 不能作为对"工具作者"的取证素材

8.3 沙盒当前 TCP 出站全量对照(修正版)

列出所有活跃 ESTABLISHED 连接,按 IP 归属反查 — 工具作者私人 IP 当前没有任何活跃连接(插话剪辑空闲)。

PID进程远端归属是否工具作者私人
12772frpc.exe119.29.227.53:7000腾讯云 广州分析者运维通道(v1 误标)
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百度❌ 百度网盘

8.4 最终结论(修正版)— 作者完全没有"自建 SaaS"

工具二进制硬编码私人 IP
1
118.31.33.84:90 (插话剪辑.exe UTF-16)
作者自建 SaaS 服务
0
没有 RTMP 代理 / API 代理 / 字段下发 / 中控等
作者反向隧道 / C2
0
原 119.29.227.53 已勘误为分析者运维通道
总计工具作者私人服务器
1
仅 1 台阿里云 VPS,实名可追溯
关键洞察:所有 spoof 流量都直接和字节官方 endpoint 对话,工具作者没有自建:
  • RTMP 推流代理(直走 push-rtmp-c11.douyincdn.com)
  • webcast API 代理(直走 webcast5-mate-hl.amemv.com)
  • 字段下发服务(config.ini 本地配置,无远端拉取)
  • 流量统计 / 升级 / license 心跳(rtmp_debug 仅写本地日志)
  • 反向隧道 / 中控(原 119.29.227.53 已勘误,分析者运维通道)
设计原则:工具作者刻意最小化自有基础设施 — 让工具完全去中心化运行,仅留一个 ASR 鉴权代理。
安全含义(更新版):
  1. 118.31.33.84:90 是工具链唯一脆弱单点 — 1 台阿里云 VPS 一旦被封 IP / 实名追溯,整条 Ulike ASR 盗用链立即断开
  2. HTTP 明文(无 TLS),密码以 URL query 参数传输 — 链路 MITM 即可窃听
  3. 阿里云 AS37963 实名认证可追溯,是工具链最大的法律取证脆弱点

9 推荐取证 / 后续

  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 调度的特征