某读 数据包加密分析
字数 1153 2025-08-29 08:30:24
某读App数据包加密分析教学文档
1. 抓包分析
1.1 抓包工具选择
- 常规代理工具(如小黄鸟)无法捕获该App的网络请求
- 原因:该App使用Flutter框架开发,Dart语言标准库的网络请求机制特殊
- 不通过用户设置的Wi-Fi代理发送请求
- 强制只信任系统目录下的证书(/system/etc/security/cacerts)
1.2 成功抓包方法
- Reqable增强模式:强制捕获所有流量
- Hook方法:
- 目标函数:
session_verify_cert_chain(位于libflutter.so) - Hook策略:将该函数返回值改为true以绕过证书验证
- 工具:IDA反编译libflutter.so,通过ssl_client字段定位函数
- 目标函数:
2. 加密分析
2.1 分析工具准备
- Blutter:Flutter逆向静态分析工具(https://github.com/worawit/blutter)
- 目标文件:libapp.so(主业务逻辑)
2.2 加密定位过程
- 使用IDA反编译libapp.so
- 导入Blutter分析结果恢复符号信息
- 搜索关键字"password"定位可疑函数(偏移0x723d00)
- 使用Blutter生成的hook脚本验证加密函数
2.3 加密算法分析
- 加密方式:SHA256哈希计算 + Base64编码
- 验证方法:
- 函数内存在SHA256和SHA1两种哈希算法
- 通过对比App加密结果确认实际使用SHA256
3. 完整逆向流程
3.1 环境准备
- 反编译工具:IDA Pro
- 抓包工具:Reqable或修改后的小黄鸟
- Flutter逆向工具:Blutter
- Hook框架:Frida或Xposed
3.2 操作步骤
- 使用Reqable增强模式或Hook方法成功抓包
- 定位password字段加密特征
- 使用Blutter分析libapp.so恢复符号信息
- IDA静态分析定位加密函数
- 编写Hook脚本验证加密逻辑
- 重现加密过程(SHA256+Base64)
4. 关键知识点总结
-
Flutter应用特点:
- Dart语言开发
- 特殊的网络请求机制
- 严格的证书验证策略
-
对抗Flutter抓包限制:
- 系统证书目录添加用户证书
- Hook证书验证函数
- 使用增强模式抓包工具
-
加密分析技巧:
- 使用专用工具恢复Flutter符号信息
- 关键字符串搜索定位加密函数
- 多种哈希算法对比验证
-
实际加密实现:
import hashlib import base64 def encrypt_password(password): sha256 = hashlib.sha256(password.encode()).digest() return base64.b64encode(sha256).decode()
5. 扩展思考
-
其他可能的安全机制:
- 请求参数时间戳验证
- 设备指纹绑定
- 动态密钥交换
-
进一步研究方向:
- Flutter业务逻辑逆向
- 其他网络请求框架的抓包方案
- 更复杂的加密算法分析
-
防御建议:
- 增加动态加密要素
- 实现代码混淆
- 使用原生网络请求库替代Dart标准库