首页
社区
课程
招聘
[原创]某音a_bogus 参数醇酸流程与风控检测点深度分析报告
发表于: 8小时前 160

[原创]某音a_bogus 参数醇酸流程与风控检测点深度分析报告

8小时前
160

某音a_bogus 参数醇酸流程与风控检测点深度分析报告

搞了好几天,有点麻烦。
日志传不上来
本人菜鸟,后面有点迷糊了,有错误欢迎大佬们指出。

一、文档概述

本文档基于分析报告1和日志11,完整剖析抖音 a_bogus 参数的生成流程及其中嵌入的风控检测机制。报告分为两大部分:

  1. a_bogus 生成流程详解:完整还原从 URL 预处理到最终编码的20个步骤
  2. 风控检测点分析:深入分析日志中暴露的各类风控检测机制

二、a_bogus 生成流程详解

阶段一:URL+UA 双层加密预处理

步骤一:URL 拼接 + 第一轮 SM3 哈希

  • 日志节点:[46858]
  • 操作:原始请求 URL 尾部拼接固定后缀字符串 dhzx,执行标准 SM3 哈希
  • 输出:32 字节哈希数组

步骤二:魔改 RC4 加密 UA

  • 日志节点:[46949]
  • 密钥\u0000\u0001\b
  • 魔改点
    • S盒倒置:S[i] = 255 - i
    • j 迭代公式:j = (j * S[i] + j + key[i%keylen]) % 256
    • PRGA 循环次数 = UA 长度(125),提前终止
  • 输出:加密后的 UA 密文

步骤三:自定义 S3 码表 Base64 编码

  • 日志节点:[68690]
  • 操作:使用内部自定义 S3 码表对 RC4 密文进行 Base64 编码
  • 输出:编码字符串

步骤四:二次 SM3 哈希 + 版本解析

  • 日志节点:[72810] / [72831]
  • 操作:对 Base64 编码结果执行第二轮 SM3;版本号 1.0.1.19-fix.01 解析为 [1,0,1,0,1]
  • 输出:32 字节哈希数组 C + 版本特征数组

阶段二:环境、时间戳、随机数运算收敛

步骤五:运行环境采集

  • 日志节点:[74441]
  • 原始数据552|588|1280|672|1280|672|1280|720|Win32
  • 转换:逐字符转 ASCII 字节
  • 输出:环境字节数组

步骤六:毫秒时间戳处理

  • 日志节点:[75438] / [75444]
  • 操作:时间戳 + 3,取低8位,拼接逗号
  • 输出[49, 52, 54, 44](如 "146,")

步骤七:版本数组切片

  • 日志节点:[75579]
  • 输出:版本数组前两位 [1,0]

步骤八:随机数混淆因子生成

  • 日志节点:[75586]
  • 输出:全局混淆常量 55、153

步骤九/十:多轮位运算生成 4 字节数组

  • 日志节点:[7562575664] / [7689376932]
  • 参与因子:随机数 55、153,固定掩码 0xAA、0x55,版本数组
  • 输出:第一轮 [35,21,136,17],第二轮 [137,17,170,85]

步骤十一:数组合并

  • 日志节点:[76934~76950]
  • 输出:8 字节数组 [35,21,136,17,137,17,170,85]

步骤十二:异或收敛

  • 日志节点:[76955~77074]
  • 操作:8 字节累加异或,再与固定常量(41、50、6、13等)二次异或
  • 输出:单字节特征值 113

阶段三:核心 50 字节指纹数组构建

步骤十三:50 字节指纹构建

  • 日志节点:[77126]
  • 数据源分类
类型 数量 说明
硬编码常量 24 固定标志位、填充值、魔数
环境检测 2 操作系统/浏览器类型标识
时间戳提取 12 多阶移位拆分的时间戳字节
ID/版本派生 5 aid、pageId、版本号处理
SM3哈希 7 随机盐混入后的哈希字节
  • 输出[1,8,21,217,0,143,0,0,1,198,1,3,156,24,13,131,159,0,217,239,50,44,153,0,29,74,153,48,6,24,3,0,92,82,3,0,159,97,177,0,1,0,0,41,135,48,40,0,4,0]

阶段四:多段拼接、二次 RC4、S4 编码

步骤十四:时间戳数组复用

步骤十五:95 字节中间数组合并

  • 拼接组:50字节指纹 + 环境数组 + 时间戳数组 + 异或收敛值113

步骤十六:随机因子混淆重组

  • 操作:对 95 字节数组做下标置换、位运算混合
  • 输出:126 字节混淆数组

步骤十七:134 字节完整指纹

  • 日志节点:[82741]
  • 拼接:8 字节运算数组 + 126 字节混淆数组

步骤十八:标准 RC4 加密

  • 日志节点:[86182]
  • 密钥Ó
  • 输出:RC4 加密密文

步骤十九:前置段拼接

  • 日志节点:[77982]
  • 前置段[171, 70, 88, 18]«FX
  • 拼接:前置段 + RC4 密文

步骤二十:S4 编码输出

  • 操作:自定义 S4 码表编码
  • 输出:最终 a_bogus 参数

三、风控检测点深度分析

3.1 鼠标轨迹检测(核心风控)

数据结构

{
  "items": [
    {"x": 342, "y": 297, "ts": 1783226603602},
    {"x": 347, "y": 297, "ts": 1783226603628},
    {"x": 351, "y": 297, "ts": 1783226603661},
    // ... 更多轨迹点
  ],
  "front": 0,
  "rear": 74,
  "trigger": 74
}

检测特征分析

特征 说明 检测目的
坐标连续性 x/y 变化呈平滑曲线,非跳跃式 区分人类操作与自动化脚本
时间间隔 相邻点 ts 差约 20-40ms,符合人类移动速度 检测匀速机械运动
停留点 相同坐标持续多个时间戳 模拟人类阅读/思考行为
方向变化 轨迹包含自然的加速减速 检测算法生成的伪随机轨迹

日志中的轨迹模式

从日志 [46800] 可见,轨迹数据包含:

  • Move 事件(通道0):完整的鼠标移动轨迹,74个有效点
  • ClickStart 事件(通道1):鼠标按下位置记录
  • ClickEnd 事件(通道2):鼠标释放位置记录

3.2 键盘输入检测

数据结构

{
  "items": [
    {"target": "04:15", "mode": 1, "ts": 1783226604203},
    {"target": "04:15%0A3.3%E4%B8%87", "mode": 1, "ts": 1783226604219},
    {"target": "04:15%0A3.3%E4%B8%87", "mode": 0, "ts": 1783226606935},
    // ... 更多输入记录
  ],
  "front": 13,
  "rear": 25,
  "trigger": 38
}

字段含义

字段 含义
target 输入框内容(URL 编码)
mode 1=输入中,0=输入结束
ts 时间戳

检测特征

  • 输入速度:连续输入的时间间隔是否符合人类打字速度
  • 输入内容:是否包含正常中文内容(如 "这句话肉到没人能顶住#动漫解说#")
  • 输入模式:是否有正常的编辑操作(增删改)

3.3 点击事件检测

事件类型映射

{"0": "Move", "1": "ClickStart", "2": "ClickEnd", "Move": 0, "ClickStart": 1, "ClickEnd": 2}

检测逻辑

  • 点击位置与轨迹一致性:点击点是否在鼠标移动轨迹附近
  • 点击间隔:双击或连续点击的时间间隔是否合理
  • 点击区域:是否点击在可交互元素上

3.4 设备环境检测

分辨率与屏幕信息

552|588|1280|672|1280|672|1280|720|Win32
字段 含义
552 窗口宽度
588 窗口高度
1280 屏幕宽度
672/720 屏幕高度/可用高度
Win32 操作系统标识

检测目的

  • 验证设备信息的真实性(常见分辨率组合)
  • 检测模拟器/虚拟机环境(异常分辨率)
  • 识别自动化工具(固定不变的分辨率)

3.5 时间戳一致性检测

多维时间数据

来源 用途
主时间戳 50 字节指纹数组构建
轨迹点 ts 鼠标行为时序验证
键盘输入 ts 输入行为时序验证
时间差计算 天数差、时间偏移

检测逻辑

  • 时间连续性:各检测点时间戳是否在同一时间段内
  • 时间前进性:后续事件时间戳是否大于前序
  • 时区一致性:时间戳与地区匹配

3.6 版本号与客户端标识

版本解析

  • 原始版本1.0.1.19-fix.01
  • 解析结果[1,0,1,0,1]

检测目的

  • 验证客户端版本的合法性
  • 检测过时或篡改的客户端
  • 版本号作为指纹的一部分参与签名

四、风控检测与 a_bogus 的关联

4.1 数据流向图

用户行为采集层
    │
    ├── 鼠标轨迹 ───────┐
    ├── 键盘输入 ───────┤
    ├── 点击事件 ───────┤
    │                   ▼
    │           行为数据预处理
    │                   │
    │                   ▼
    │           环境信息采集
    │           (分辨率/系统/时间)
    │                   │
    │                   ▼
    │           50字节指纹数组构建
    │                   │
    │                   ▼
    │           多轮混淆与加密
    │                   │
    ▼                   ▼
风控决策层 ←────── a_bogus参数
    │                   │
    │                   └──→ 服务端验证
    │                               │
    └────────←──────────────────────┘
              验证结果反馈

4.2 风控数据在 a_bogus 中的嵌入方式

  1. 直接嵌入:环境信息(分辨率、系统)直接转 ASCII 嵌入 50 字节数组
  2. 哈希混入:行为数据参与 SM3 哈希计算,结果间接影响指纹数组
  3. 时间戳绑定:所有时间相关数据参与运算,形成时间绑定签名
  4. 随机数因子:基于环境特征生成的随机数因子,增加不可预测性

4.3 服务端验证逻辑

服务端收到 a_bogus 后:

  1. 解码验证:使用 S4/S3 码表解码,验证格式合法性
  2. RC4 解密:使用固定密钥解密,验证完整性
  3. 指纹提取:提取 50 字节核心指纹
  4. 环境验证:比对环境信息(UA、版本、分辨率)
  5. 行为分析:分析嵌入的行为特征,判断是否为人类操作
  6. 时间验证:验证时间戳的有效性和连续性
  7. 签名比对:验证 SM3 哈希值的正确性

五、安全设计特征总结

5.1 多层防护体系

层级 防护手段 目的
第一层 URL+dhzx+SM3 绑定请求,防篡改
第二层 魔改 RC4 + S3 编码 混淆 UA,增加逆向难度
第三层 多轮位运算 + 异或收敛 混合动态因子,防预测
第四层 50 字节指纹 + 环境信息 绑定设备,防重放
第五层 随机因子混淆 + 二次 RC4 引入随机性,防模拟
第六层 S4 编码 最终输出,防解析

5.2 行为特征验证

验证维度 检测内容
鼠标轨迹 坐标连续性、时间间隔、停留点
键盘输入 打字速度、内容合理性、编辑模式
点击模式 位置一致性、间隔合理性
时间序列 连续性、前进性、时区一致性
环境特征 分辨率、系统、UA、版本

5.3 反自动化策略

  1. 动态因子:时间戳 + 随机数,每次请求唯一
  2. 环境绑定:设备信息嵌入签名,跨设备失效
  3. 行为验证:采集人类行为特征,区分机器操作
  4. 混淆编码:自定义编码表,增加逆向成本
  5. 魔改算法:RC4 魔改,标准库无法直接解密

六、绕过策略分析

6.1 环境模拟要点

检测项 模拟要求
UA 必须与真实浏览器一致
分辨率 使用常见分辨率组合
系统标识 Win32/macOS/Linux
版本号 使用合法版本字符串
时间戳 使用当前真实时间

6.2 行为数据伪造策略

鼠标轨迹生成

  • 使用贝塞尔曲线生成平滑轨迹
  • 加入随机抖动模拟人类操作
  • 控制移动速度在合理范围内
  • 添加停留点模拟阅读行为

键盘输入模拟

  • 使用自然打字速度(100-200ms/字符)
  • 包含正常编辑操作(删除、修改)
  • 输入内容符合场景逻辑

6.3 代码还原要点

  1. SM3 算法:标准实现,需注意 UTF-8 编码
  2. 魔改 RC4:实现倒置 S盒和乘法迭代
  3. 自定义 Base64:提取 S3/S4 码表
  4. 50 字节指纹:完整还原各索引计算逻辑
  5. 位运算收敛:逐字节还原异或运算

七、总结

a_bogus 参数是抖音多层安全防护体系的核心组成部分,集成了:

  1. 加密混淆层:SM3 哈希、魔改 RC4、自定义编码
  2. 设备指纹层:UA、版本、分辨率、系统信息
  3. 行为特征层:鼠标轨迹、键盘输入、点击事件
  4. 时间绑定层:多维度时间戳参与运算

通过将风控检测数据深度嵌入签名参数,抖音实现了请求合法性、设备真实性、行为自然性的三重验证。逆向分析需同时攻克加密算法还原和环境行为模拟两大难题。


[招生]科锐逆向工程师培训(2026年7月3日实地,远程教学同时开班, 第56期)!

收藏
免费 0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回