记一次App通信协议快速加解密
字数 1302 2025-08-22 12:22:24

App通信协议快速加解密分析教学文档

一、前言

本教学文档将详细介绍如何快速分析App通信协议中的加解密过程,通过hook技术定位加解密方法,并实现BurpSuite的自动加解密功能。该方法适用于Android应用的通信协议分析,能够显著提高安全测试效率。

二、准备工作

所需工具

  1. HTTPDecrypt:用于hook Android应用方法
  2. BurpSuite:用于拦截和分析网络请求
  3. Frida:底层hook框架
  4. 目标App:本例中包名为com.xxxxxx.xxxxxnning

三、分析流程

1. 初步观察

  • 安装App后进行注册操作
  • 抓包发现三处加密:
    • Code的签名值
    • Post请求加密
    • 返回包的签名

2. Hook包名下所有类

  1. 在HTTPDecrypt的Hooks模块填写目标包名com.xxxxxx.xxxxxnning
  2. 点击Confirm开始hook
  3. 操作App触发加密函数(如注册操作)
  4. 在HTTPDecrypt日志中查找触发的加密函数

3. 定位关键方法

通过分析发现:

  • com.xxxxx.encrypt:可能是解密函数
  • com.xxxxx.EncoderByMd5:可能是Code签名算法
    • 算法输入:固定key + 数据包中的时间戳
    • 输出:Code值

4. 方法参数分析

使用Finds模块分析com.xxxxx.encrypt方法:

  1. 在Finds模块填写类名com.xxxxx
  2. 点击Confirm查看方法详情
  3. 发现该方法:
    • 参数1:android.content.Context对象
    • 参数2:字符串
    • 方法类型:static静态方法

四、实现BurpSuite自动加解密

1. 生成脚本

  1. 在encrypt方法上右键发送到toBurp模块
  2. 点击Confirm按钮
  3. 点击Add按钮将方法信息添加到info面板
  4. 点击"Generate export static script"生成静态方法脚本

2. 自定义脚本编写

由于自动生成的脚本不适用于多参数方法,需要手动修改:

// 获取Context对象
var context = Java.use('android.app.ActivityThread').currentApplication().getApplicationContext();

// 加密函数
function encrypt(data) {
    return Java.use('com.xxxxx').encrypt(context, data);
}

// 解密函数
function decrypt(data) {
    return Java.use('com.xxxxx').decrypt(context, data);
}

注意调整参数顺序:第一个参数是context,第二个是要加密/解密的原文。

3. 使用技巧

  • 点击编写框后按F11可全屏编辑
  • 点击loadScript加载脚本
  • 配置Burp插件实现远程调用

4. Burp插件使用

  1. 自动加解密:点击"Body Auto"开启整个body的自动加解密
  2. 自定义加解密:HTTPDecrypt提供对外接口,可编写特定格式的自动化加解密插件

五、Code签名处理

  • 算法已在com.xxxxx.EncoderByMd5中实现
  • 输入:固定key + 时间戳
  • 输出:Code值
  • 如果Code不正确,服务端会返回错误

六、流程图解

[操作App触发加密] → [HTTPDecrypt Hook包名下方法] → [定位加密/解密方法] 
→ [分析参数和方法类型] → [生成/修改脚本] → [配置Burp插件] → [实现自动加解密]

七、总结

本方法优势:

  1. 通过hook包名快速定位加解密点
  2. 利用HTTPDecrypt导出App内方法
  3. 避免分析算法、实现算法、编写插件等耗时操作
  4. 实现真正的快速加解密分析

注意事项:

  • 注意方法类型(静态/实例)
  • 正确处理多参数情况
  • 确保Context对象正确获取

通过这种方法,可以显著提高App通信协议分析效率,快速实现安全测试。

App通信协议快速加解密分析教学文档 一、前言 本教学文档将详细介绍如何快速分析App通信协议中的加解密过程,通过hook技术定位加解密方法,并实现BurpSuite的自动加解密功能。该方法适用于Android应用的通信协议分析,能够显著提高安全测试效率。 二、准备工作 所需工具 HTTPDecrypt :用于hook Android应用方法 BurpSuite :用于拦截和分析网络请求 Frida :底层hook框架 目标App :本例中包名为 com.xxxxxx.xxxxxnning 三、分析流程 1. 初步观察 安装App后进行注册操作 抓包发现三处加密: Code的签名值 Post请求加密 返回包的签名 2. Hook包名下所有类 在HTTPDecrypt的Hooks模块填写目标包名 com.xxxxxx.xxxxxnning 点击Confirm开始hook 操作App触发加密函数(如注册操作) 在HTTPDecrypt日志中查找触发的加密函数 3. 定位关键方法 通过分析发现: com.xxxxx.encrypt :可能是解密函数 com.xxxxx.EncoderByMd5 :可能是Code签名算法 算法输入:固定key + 数据包中的时间戳 输出:Code值 4. 方法参数分析 使用Finds模块分析 com.xxxxx.encrypt 方法: 在Finds模块填写类名 com.xxxxx 点击Confirm查看方法详情 发现该方法: 参数1: android.content.Context 对象 参数2:字符串 方法类型:static静态方法 四、实现BurpSuite自动加解密 1. 生成脚本 在encrypt方法上右键发送到toBurp模块 点击Confirm按钮 点击Add按钮将方法信息添加到info面板 点击"Generate export static script"生成静态方法脚本 2. 自定义脚本编写 由于自动生成的脚本不适用于多参数方法,需要手动修改: 注意调整参数顺序:第一个参数是context,第二个是要加密/解密的原文。 3. 使用技巧 点击编写框后按F11可全屏编辑 点击loadScript加载脚本 配置Burp插件实现远程调用 4. Burp插件使用 自动加解密 :点击"Body Auto"开启整个body的自动加解密 自定义加解密 :HTTPDecrypt提供对外接口,可编写特定格式的自动化加解密插件 五、Code签名处理 算法已在 com.xxxxx.EncoderByMd5 中实现 输入:固定key + 时间戳 输出:Code值 如果Code不正确,服务端会返回错误 六、流程图解 七、总结 本方法优势: 通过hook包名快速定位加解密点 利用HTTPDecrypt导出App内方法 避免分析算法、实现算法、编写插件等耗时操作 实现真正的快速加解密分析 注意事项: 注意方法类型(静态/实例) 正确处理多参数情况 确保Context对象正确获取 通过这种方法,可以显著提高App通信协议分析效率,快速实现安全测试。