Burp+Python 深度联动:AES加密数据自动化处理实战指南
字数 1165 2025-08-29 22:41:44

Burp与Python深度联动:AES加密数据自动化处理实战指南

一、核心场景与需求分析

在渗透测试过程中,经常会遇到API数据采用AES加密传输的场景,这给安全测试带来了挑战。主要需求包括:

  1. 密文实时解析:能够快速解密Burp拦截的加密请求体,以便分析业务逻辑
  2. 加解密流程闭环:实现从请求加密发送到响应解密验证的全链路自动化
  3. 密钥动态管理:支持多种密钥加载方式(硬编码、环境变量等)

二、AES解密核心算法实现

1. 基础解密函数设计

from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
import base64

# 密钥定义:16字节HEX字符串转字节(AES-128)
AES_KEY = bytes.fromhex('E2842C540F0810C3F11F42427F48A3DE')

def aes_ecb_decrypt(ciphertext: str, key: bytes) -> str:
    """
    ECB模式AES解密(含Base64解码与PKCS7去填充)
    :param ciphertext: Base64编码的密文字符串
    :param key: 16/24/32字节的AES密钥(字节类型)
    :return: 解密后的明文字符串
    """
    # 1. Base64解码密文
    cipher_bytes = base64.b64decode(ciphertext)
    
    # 2. 创建ECB模式解密器
    cipher = AES.new(key, AES.MODE_ECB)
    
    # 3. 执行解密
    decrypted_bytes = cipher.decrypt(cipher_bytes)
    
    # 4. 去除PKCS7填充
    plaintext_bytes = unpad(decrypted_bytes, AES.block_size)
    
    # 5. 字节转UTF-8字符串
    return plaintext_bytes.decode('utf-8')

# 示例解密调用
sample_cipher = "zWJLUIlnTNe4SnZqvnk0BbS1WHyi8AxZnCyFw1VuZ+vuKMHczygw6a9Owd89Dl6NNAobn/zkWw4BFDQVLX0uUg=="
print(f"原始密文: {sample_cipher}")
print(f"解密结果: {aes_ecb_decrypt(sample_cipher, AES_KEY)}")

2. 关键技术点解析

  1. ECB模式特性

    • 相同明文块生成相同密文块,存在模式缺陷
    • 适合单次短数据解密,如API参数解密
    • 实际应用中需验证是否为弱加密场景
  2. 填充算法

    • 使用unpad自动处理PKCS7填充,兼容标准加密接口
    • 若服务端使用非标准填充(如ISO 10126),需自定义去填充逻辑

三、Burp联动框架封装

1. 全功能加解密类设计

import json
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64

class BurpAESHandler:
    def __init__(self, key: str = None):
        """
        初始化AES处理器
        :param key: 16/24/32字节HEX格式密钥(默认使用硬编码密钥)
        """
        self.key = bytes.fromhex(key) if key else AES_KEY

    def encrypt_request(self, header: dict, body: dict) -> tuple:
        """
        加密HTTP请求体(JSON转AES加密)
        :param header: HTTP请求头字典
        :param body: 请求体字典
        :return: (加密后的请求头, 加密后的请求体)
        """
        # 1. 序列化请求体为JSON字符串
        json_body = json.dumps(body)
        
        # 2. 创建AES加密器(ECB模式)
        cipher = AES.new(self.key, AES.MODE_ECB)
        
        # 3. 填充并加密数据
        padded_data = pad(json_body.encode('utf-8'), AES.block_size)
        encrypted_bytes = cipher.encrypt(padded_data)
        
        # 4. Base64编码加密结果
        encrypted_body = base64.b64encode(encrypted_bytes).decode('utf-8')
        
        # 5. 更新请求头(Content-Type等)
        new_header = header.copy()
        new_header['Content-Type'] = 'application/aes-encrypted'
        
        return new_header, encrypted_body

    def decrypt_response(self, encrypted_response: str) -> dict:
        """
        解密HTTP响应体
        :param encrypted_response: 加密的响应体(Base64格式)
        :return: 解密后的JSON字典
        """
        # 1. Base64解码
        cipher_bytes = base64.b64decode(encrypted_response)
        
        # 2. 创建AES解密器
        cipher = AES.new(self.key, AES.MODE_ECB)
        
        # 3. 解密数据
        decrypted_bytes = cipher.decrypt(cipher_bytes)
        
        # 4. 去除填充
        plaintext_bytes = unpad(decrypted_bytes, AES.block_size)
        
        # 5. 解码JSON
        return json.loads(plaintext_bytes.decode('utf-8'))

2. Burp扩展集成要点

  1. Burp API集成

    • 通过IBurpExtender接口实现扩展
    • 使用IExtensionHelpers处理HTTP消息
    • 注册IHttpListener监听HTTP流量
  2. 自动化处理流程

    • 拦截请求时自动加密敏感参数
    • 拦截响应时自动解密返回数据
    • 支持修改后重新加密发送
  3. 密钥管理策略

    • 硬编码密钥(测试环境)
    • 配置文件读取
    • 环境变量获取
    • 动态密钥协商(如从登录响应中提取)

四、实战应用场景

1. 渗透测试中的典型用例

  1. 加密参数篡改测试

    • 解密请求参数
    • 修改关键值(如userID、price等)
    • 重新加密发送
    • 观察服务端响应
  2. 敏感信息泄露检测

    • 自动解密响应
    • 检查是否包含敏感数据(密码、token等)
    • 可结合正则表达式进行模式匹配
  3. 加密算法强度验证

    • 检测是否使用弱加密模式(如ECB)
    • 验证密钥长度是否足够(至少128位)
    • 检查是否使用固定IV(CBC模式)

2. 性能优化建议

  1. 缓存机制

    • 缓存常用密钥
    • 缓存解密结果(相同密文)
  2. 并行处理

    • 多线程处理批量解密任务
    • 异步I/O操作
  3. 选择性解密

    • 只解密特定路径的请求
    • 基于内容类型过滤

五、安全注意事项

  1. 密钥保护

    • 不要在代码中硬编码生产环境密钥
    • 使用密钥管理系统
    • 实施最小权限原则
  2. 错误处理

    • 妥善处理解密失败情况
    • 不要暴露详细错误信息
  3. 日志记录

    • 记录解密操作
    • 审计密钥使用情况

六、扩展功能

  1. 多算法支持

    • 添加AES-CBC、AES-GCM等模式
    • 支持RSA等其他加密算法
  2. 智能识别

    • 自动检测加密数据
    • 猜测加密算法和模式
  3. 可视化界面

    • 在Burp中显示明文/密文对比
    • 提供便捷的加解密操作按钮

通过这套完整的AES加解密实战框架,安全测试人员可以高效地处理加密通信场景,显著提升渗透测试的效率和质量。

Burp与Python深度联动:AES加密数据自动化处理实战指南 一、核心场景与需求分析 在渗透测试过程中,经常会遇到API数据采用AES加密传输的场景,这给安全测试带来了挑战。主要需求包括: 密文实时解析 :能够快速解密Burp拦截的加密请求体,以便分析业务逻辑 加解密流程闭环 :实现从请求加密发送到响应解密验证的全链路自动化 密钥动态管理 :支持多种密钥加载方式(硬编码、环境变量等) 二、AES解密核心算法实现 1. 基础解密函数设计 2. 关键技术点解析 ECB模式特性 : 相同明文块生成相同密文块,存在模式缺陷 适合单次短数据解密,如API参数解密 实际应用中需验证是否为弱加密场景 填充算法 : 使用 unpad 自动处理PKCS7填充,兼容标准加密接口 若服务端使用非标准填充(如ISO 10126),需自定义去填充逻辑 三、Burp联动框架封装 1. 全功能加解密类设计 2. Burp扩展集成要点 Burp API集成 : 通过 IBurpExtender 接口实现扩展 使用 IExtensionHelpers 处理HTTP消息 注册 IHttpListener 监听HTTP流量 自动化处理流程 : 拦截请求时自动加密敏感参数 拦截响应时自动解密返回数据 支持修改后重新加密发送 密钥管理策略 : 硬编码密钥(测试环境) 配置文件读取 环境变量获取 动态密钥协商(如从登录响应中提取) 四、实战应用场景 1. 渗透测试中的典型用例 加密参数篡改测试 : 解密请求参数 修改关键值(如userID、price等) 重新加密发送 观察服务端响应 敏感信息泄露检测 : 自动解密响应 检查是否包含敏感数据(密码、token等) 可结合正则表达式进行模式匹配 加密算法强度验证 : 检测是否使用弱加密模式(如ECB) 验证密钥长度是否足够(至少128位) 检查是否使用固定IV(CBC模式) 2. 性能优化建议 缓存机制 : 缓存常用密钥 缓存解密结果(相同密文) 并行处理 : 多线程处理批量解密任务 异步I/O操作 选择性解密 : 只解密特定路径的请求 基于内容类型过滤 五、安全注意事项 密钥保护 : 不要在代码中硬编码生产环境密钥 使用密钥管理系统 实施最小权限原则 错误处理 : 妥善处理解密失败情况 不要暴露详细错误信息 日志记录 : 记录解密操作 审计密钥使用情况 六、扩展功能 多算法支持 : 添加AES-CBC、AES-GCM等模式 支持RSA等其他加密算法 智能识别 : 自动检测加密数据 猜测加密算法和模式 可视化界面 : 在Burp中显示明文/密文对比 提供便捷的加解密操作按钮 通过这套完整的AES加解密实战框架,安全测试人员可以高效地处理加密通信场景,显著提升渗透测试的效率和质量。