7.2 KiB
一级包与二级包
路径
线上:同一相对目录。 Stage JS、一级包、二级包都从 campaign base 用文件名下载:
{base}/70049138….js # Stage
{base}/6539c1e0….js # 一级包(wire 后缀 .js)
{base}/65704c07….min.js # 二级 type-0x01 包(wire 后缀 .min.js)
base = /web/34f5121f572d6742703eb84ec2f866a6/(lab 已摊平到同路径)。
Wire 后缀(实测)
| 类型 | 客户端实际请求 | 说明 |
|---|---|---|
| Stage JS | <40hex>.js |
无 .min.js |
| 一级原生包 | <40hex>.js |
按机型/版本选 flags;不是 .min.js |
| 二级 type-0x01 | <40hex>.min.js |
type 0x07 元数据里的文件名带 .min.js |
Campaign / lab 目录里同一 stem 常同时存在 .js 与 .min.js,且内容不同(.js 通常更大)。链路只拉上表对应后缀;另一份是同 stem 的另一产物,不要当成重复别名删掉。
coruna-online 落盘为分析拆目录,不是三条不同 URL:
| 类型 | 线上相对路径(wire) | coruna-online 落盘 |
|---|---|---|
| Stage JS / 入口 | {base}/<name> |
仓库根目录(见 STAGE_JS.md) |
| 一级原生包 | {base}/<40hex>.js |
历史多落在 payloads/<40hex>.min.js;以线上 .js 为准同步到 lab |
| 二级 type-0x01 | {base}/<40hex>.min.js |
c2_fetch/<40hex>.min.js(部分副本带 xxxxxxxx_ 前缀,lab 已归一) |
联系
Stage3
→ 下载「一级包」.js(按机型/版本选 flags)
→ 解密 → F00DBEEF:0x08 / 0x09 / 0x0f / (0x0a) + **type 0x07 元数据**
→ type 0x07 给出二级文件名 + ChaCha key
→ 再下载「二级包」.min.js
→ 解密 → F00DBEEF type **0x01**(SpringBoard 管理器,含 Deployment DGA)
→ DGA → /sync/daily.html → sync/ 下 26 个模块
| 层级 | 线上看起来 | 解开后 | 作用 |
|---|---|---|---|
| 一级包 | ChaCha 加密 .js |
F00DBEEF:利用/implant(0x08 powerd、0x09、0x0f 等)+ 0x07 指针 | 提权与落地;0x07 点名二级包 |
| 二级包 | 另一 key 的 .min.js(key 在 0x07) |
F00DBEEF:仅 type 0x01 dylib | DGA、拉 daily.html、下模块、注入 |
一级 ≠ type-0x01;靠一级内的 0x07 才接到二级。一级失败则不会拉对应二级包。
一级包一览(payloads/ → lab web/…/)
清单文件名按 wire(.js) 书写。lab 中同 stem 的 .min.js 为另一份线上产物,体积更小,链路默认不请求。
| lab / 线上文件名(wire) | flags | 内含类型 | coruna-online 来源(历史落盘名) |
|---|---|---|---|
054bcb73ce2a3023b3813f5be12d0b6ffd6e7611.js |
0xf230 |
0x08, 0x09, 0x0f, 0x07, 0x07 | payloads/054bcb73….min.js |
e406714e92671b5218496fcb6666734411cb2320.js |
0xf330 |
0x08, 0x09, 0x0f, 0x07, 0x07 | payloads/e406714e….min.js |
694c829e379e12085de6158b85f32509f54f4796.js |
0xf240 |
0x08, 0x09, 0x0f, 0x07, 0x07 | payloads/694c829e….min.js |
3b0133801a3f844e7ebafa0363f2423a50005b72.js |
0xf340 |
0x08, 0x09, 0x0f, 0x07, 0x07 | payloads/3b013380….min.js |
6f8a7a3bc74d9c65f5463a6a29d4e2c52feefcca.js |
0xf270 |
0x08, 0x09, 0x0f, 0x07, 0x07 | payloads/6f8a7a3b….min.js |
eb3e81b54e8763bfe505e7a18be8f5fd828a76f6.js |
0xf370 |
0x08, 0x09, 0x0f, 0x07, 0x05, 0x09, 0x07 | payloads/eb3e81b5….min.js |
6bbb364c8a423374d42a2cbc45c0dee84e7dc710.js |
0xf280 |
0x08, 0x09, 0x0f, 0x07, 0x07 | payloads/6bbb364c….min.js |
99010a27e08b3312650c8d9f321958433e577a30.js |
0xf380 |
0x08, 0x09, 0x0f, 0x07, 0x07 | payloads/99010a27….min.js |
6539c1e0dc731ea7c7011af236cc7c2871af7c40.js |
0xf290 |
0x08, 0x09, 0x0f, 0x07, 0x07 | payloads/6539c1e0….min.js |
c9118a62558ed444a64c2dfe350c6c57fa277a3a.js |
0xf390 |
0x08, 0x09, 0x0f, 0x07, 0x05, 0x09, 0x07 | payloads/c9118a62….min.js |
076de672aebfc78137aa863e51ff3d8980dcdd10.js |
0xf373 |
0x08, 0x09, 0x0f, 0x07, 0x0a, 0x07 | payloads/076de672….min.js |
62415a3d105a8c40c41b19cf456e8474fe441359.js |
0xf383 |
0x08, 0x09, 0x0f, 0x07, 0x0a, 0x07 | payloads/62415a3d….min.js |
a5847c3e2e439e2f7c4b1582932cf81a06100981.js |
0xf275 |
0x08, 0x09, 0x0f, 0x07, 0x0a, 0x07 | payloads/a5847c3e….min.js |
f7994d47ee03dfb33e0fc7df94c8a215ff8fe66a.js |
0xf375 |
0x08, 0x09, 0x0f, 0x07, 0x0a, 0x07 | payloads/f7994d47….min.js |
a13a74c0123f5a0c4acaf0586f035f8735bac0c8.js |
0xa205 |
0x08, 0x0a | payloads/a13a74c0….min.js |
f10b572f33adf343a7398487c3f4cc71088b56ab.js |
0xa305 |
0x08, 0x0a | payloads/f10b572f….min.js |
906a996fa11bcaa5347c6453e328f538d17d5dbf.js |
0xa306 |
0x08, 0x0a | payloads/906a996f….min.js |
4614dd1cf7c0b41d0443e1a1a306706fb94a2bb6.js |
0xa303 |
0x08, 0x0a, 0x0a | payloads/4614dd1c….min.js |
d1a39a282f3dc9d0e261c3df466093ee0f8d441d.js |
0xa304 |
0x08, 0x0a, 0x0a | payloads/d1a39a28….min.js |
解出的中间 dylib:coruna-online/payloads/*_type0xNN.dylib(lab 未复制)。
二级包一览(c2_fetch/ → lab web/…/)
均为 type 0x01 SpringBoard helper(含 DGA)。Wire 文件名为 .min.js。
为何 10 个二级包、实质只有 2 份 dylib:
| dylib SHA-256(前 16) | 体积 | stem 数 | 成员 |
|---|---|---|---|
8bef11cb6cdf18f9… |
347472 | 5 | 039c68f0 / 34736715 / 65704c07 / 6bac8b93 / 743312ca |
124f9b07b58c90c3… |
362056 | 5 | 1d0df5a0 / 242a0afb / 630c2b42 / 7cb20652 / 7f208248 |
差异在投递包装,不是两套 DGA:各一级包的 type 0x07 点名不同 <stem>.min.js 并带不同 ChaCha key;两条构建内 Deployment/Reporting seed 相同。改 seed:改 2 个唯一 dylib → 用各自 type07 key 重加密要用到的二级 .min.js(要覆盖全部一级变体则 10 个都重打)。
| lab / 线上文件名 | coruna-online 来源 |
说明 |
|---|---|---|
039c68f0ca742a85e94516818385a9eca2e204d8.min.js |
c2_fetch/039c68f0….min.js |
二级 type-0x01 |
1d0df5a0a12a20aa8b0c8aeb660742268f311d19.min.js |
c2_fetch/1d0df5a0….min.js |
二级 type-0x01 |
242a0afb1d88b83e9a1a5b570fed6778def892fc.min.js |
c2_fetch/242a0afb….min.js |
二级 type-0x01 |
347367155da44f3efcc9053337913061079610b9.min.js |
c2_fetch/34736715….min.js |
二级 type-0x01 |
630c2b42300333d91588353d43afab9ec8325e09.min.js |
c2_fetch/630c2b42….min.js |
二级 type-0x01 |
65704c0722165a7bdedad3f3f61258b2f95470f6.min.js |
c2_fetch/65704c07….min.js |
HAR 中出现过的二级包之一 |
6bac8b93b6f97ddd8a1f86fecfa6431b9ffeb9fb.min.js |
c2_fetch/6bac8b93….min.js |
二级 type-0x01 |
743312cafb58176af57b89098d94dca1c60f8d1e.min.js |
c2_fetch/743312ca….min.js |
二级 type-0x01 |
7cb20652ef7156e931f894dd3d99f24601b80368.min.js |
c2_fetch/7cb20652….min.js |
二级 type-0x01 |
7f208248c748f97956fe4a7cf246c91235852e67.min.js |
c2_fetch/7f208248….min.js |
二级 type-0x01 |
解出的 dylib:coruna-online/c2_fetch/<stem>_type0x01.dylib(lab 未复制)。
业务模块见 SYNC.md。