某读 数据包加密分析
字数 1153 2025-08-29 08:30:24

某读App数据包加密分析教学文档

1. 抓包分析

1.1 抓包工具选择

  • 常规代理工具(如小黄鸟)无法捕获该App的网络请求
  • 原因:该App使用Flutter框架开发,Dart语言标准库的网络请求机制特殊
    • 不通过用户设置的Wi-Fi代理发送请求
    • 强制只信任系统目录下的证书(/system/etc/security/cacerts)

1.2 成功抓包方法

  1. Reqable增强模式:强制捕获所有流量
  2. 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 加密定位过程

  1. 使用IDA反编译libapp.so
  2. 导入Blutter分析结果恢复符号信息
  3. 搜索关键字"password"定位可疑函数(偏移0x723d00)
  4. 使用Blutter生成的hook脚本验证加密函数

2.3 加密算法分析

  • 加密方式:SHA256哈希计算 + Base64编码
  • 验证方法:
    • 函数内存在SHA256和SHA1两种哈希算法
    • 通过对比App加密结果确认实际使用SHA256

3. 完整逆向流程

3.1 环境准备

  • 反编译工具:IDA Pro
  • 抓包工具:Reqable或修改后的小黄鸟
  • Flutter逆向工具:Blutter
  • Hook框架:Frida或Xposed

3.2 操作步骤

  1. 使用Reqable增强模式或Hook方法成功抓包
  2. 定位password字段加密特征
  3. 使用Blutter分析libapp.so恢复符号信息
  4. IDA静态分析定位加密函数
  5. 编写Hook脚本验证加密逻辑
  6. 重现加密过程(SHA256+Base64)

4. 关键知识点总结

  1. Flutter应用特点

    • Dart语言开发
    • 特殊的网络请求机制
    • 严格的证书验证策略
  2. 对抗Flutter抓包限制

    • 系统证书目录添加用户证书
    • Hook证书验证函数
    • 使用增强模式抓包工具
  3. 加密分析技巧

    • 使用专用工具恢复Flutter符号信息
    • 关键字符串搜索定位加密函数
    • 多种哈希算法对比验证
  4. 实际加密实现

    import hashlib
    import base64
    
    def encrypt_password(password):
        sha256 = hashlib.sha256(password.encode()).digest()
        return base64.b64encode(sha256).decode()
    

5. 扩展思考

  1. 其他可能的安全机制:

    • 请求参数时间戳验证
    • 设备指纹绑定
    • 动态密钥交换
  2. 进一步研究方向:

    • Flutter业务逻辑逆向
    • 其他网络请求框架的抓包方案
    • 更复杂的加密算法分析
  3. 防御建议:

    • 增加动态加密要素
    • 实现代码混淆
    • 使用原生网络请求库替代Dart标准库
某读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符号信息 关键字符串搜索定位加密函数 多种哈希算法对比验证 实际加密实现 : 5. 扩展思考 其他可能的安全机制: 请求参数时间戳验证 设备指纹绑定 动态密钥交换 进一步研究方向: Flutter业务逻辑逆向 其他网络请求框架的抓包方案 更复杂的加密算法分析 防御建议: 增加动态加密要素 实现代码混淆 使用原生网络请求库替代Dart标准库