某系统加解密分析
字数 919 2025-08-29 22:41:11
某系统加解密分析技术文档
前言
在一次项目测试中,发现目标系统的核心功能返回包均被加密。为方便后续测试工作,最终借助autoDecoder工具实现了流量全自动加解密。
工具介绍
autoDecoder是一款BurpSuite插件,主要功能包括:
- 根据自定义接口处理数据包(适用于加解密、爆破等场景)
- 类似mitmproxy的功能,但通过Burp中转
- 实现自动加解密的同时不影响APP、网站的正常加解密逻辑
工作流程
- 捕获加密流量
- 分析加密算法
- 编写解密函数
- 配置autoDecoder实现自动解密
全自动加解密技术实现
查找加密算法
- 核心功能数据包被加密
- 从前端分析加密方式:
- 观察URL和请求包都包含"performance"关键字
- 直接搜索包含"performance"关键字的目录及文件
明确加密算法
- 加密密钥(KEY):
:*mU@-"S61Eujx$c - 密文编码方式: Base64
- AES模式: AES/ECB/PDCS5Padding
编写解密函数
需要实现以下功能:
- Base64解码
- AES/ECB/PDCS5Padding解密
- 使用指定密钥
:*mU@-"S61Eujx$c
技术难点
-
返回包格式复杂:多层JSON嵌套结构
- 解决方案:编写递归函数提取所需value
-
集成实现:
- 使用Flask搭建本地服务处理解密逻辑
- 配置autoDecoder调用本地解密服务
最终效果
成功实现:
- 请求/响应流量自动加解密
- 不影响正常业务流程
- 实时解密便于安全测试
技术要点总结
- 加密分析:通过前端代码分析确定加密算法和参数
- 工具选择:autoDecoder适合Burp环境下的自动加解密
- 实现方式:本地服务+插件调用的架构
- 数据处理:处理多层嵌套JSON需要特殊逻辑
示例代码结构(伪代码)
# 解密服务示例
from flask import Flask, request
import base64
from Crypto.Cipher import AES
app = Flask(__name__)
KEY = b':*mU@-"S61Eujx$c'
@app.route('/decrypt', methods=['POST'])
def decrypt():
encrypted_data = request.json['data']
# Base64解码
decoded = base64.b64decode(encrypted_data)
# AES解密
cipher = AES.new(KEY, AES.MODE_ECB)
decrypted = cipher.decrypt(decoded)
# 处理可能的填充
return unpad(decrypted).decode('utf-8')
def unpad(s):
return s[:-ord(s[len(s)-1:])]
autoDecoder配置要点
- 设置本地服务地址为解密端点
- 配置匹配规则(如URL包含"performance")
- 测试加解密链路是否通畅
- 验证解密后的数据格式是否正确
注意事项
- 密钥管理:不要在代码中硬编码密钥
- 错误处理:完善解密失败的处理逻辑
- 性能考虑:高频解密可能影响测试效率
- 更新维护:关注系统加密算法的变更