浅谈在数据包被加密和签名保护时的渗透方式
字数 1733 2025-08-25 22:58:46

加密和签名保护数据包的渗透测试方法

场景概述

在金融银行类安全测试中,常见数据包加密和签名保护机制,导致传统安全测试方法失效。这类业务的特点是:

  • 直接修改数据包参数会导致重放失败
  • 爬虫工具无法处理密文数据
  • 传统安全测试工具难以直接应用

通用测试方法论

核心思路

  1. 还原加密/签名算法:通过逆向分析确定加密逻辑
  2. 开发Burp插件:实现明文状态下的安全测试
  3. 利用密文优势:结合Xray等工具进行半自动化测试

签名保护分析流程

常见签名生成算法示例:

sign = MD5(sort(业务参数 + 时间戳 + 其他参数))

签名验证过程:

  1. 客户端和服务端使用相同算法生成sign
  2. 服务端接收请求后重新计算sign
  3. 任何参数修改都会导致sign不一致,请求被拒绝

签名逆向分析步骤

  1. 基础验证

    • 不修改数据包重放请求(应成功)
    • 修改参数后重放(应失败,提示"sign invalid")
  2. 定位签名算法

    • 以URL参数为关键字搜索JS代码
    • 设置断点调试签名生成过程
    • 单步跟踪进入函数内部
  3. 算法还原示例

    • 收集所有URL参数
    • 对参数进行排序
    • 拼接固定格式字符串:app_key+"Oic"+app_pwd+"QeeeS99u3d"+排序后参数+app_key+app_pwd
    • 计算该字符串的MD5作为最终签名

Burp插件开发

  1. 核心功能

    • 检查URI参数,移除原api_sign
    • 根据修改后的URI参数重新计算api_sign
    • 自动更新请求中的签名值
  2. 实现效果

    • 修改参数后插件自动更新签名
    • 绕过签名保护限制
    • 实现明文参数的安全测试

数据包分段加密分析

加密结构分析

典型的分段加密格式:

MD5(原始参数+DES密钥) + "\u001d" + DES(原始参数) + "\u001d" + RSA(DES密钥)

其中:

  • \u001d 是分隔符
  • 第一部分:参数与密钥的MD5校验
  • 第二部分:DES加密的实际参数
  • 第三部分:RSA加密的DES密钥

逆向分析步骤

  1. 定位加密代码

    • 使用encryptData等参数名搜索JS代码
    • 格式化JS便于阅读
    • 设置断点调试加密过程
  2. 分析加密函数

    • 确定DES密钥
    • 识别加密模式(如ECB模式,Pkcs7填充)
    • 发现RSA加密的DES密钥是固定值
  3. 解密验证

    • 使用在线工具验证DES解密
    • 确认返回包可直接用DES密钥解密

Burp插件实现

  1. 请求处理

    • 用正则获取分隔符间的密文
    • DES解密后在控制台打印验证
    • 明文请求自动加密后重新封包
  2. 界面增强

    • 添加IMessageEditorTab控件显示解密内容
    • 判断请求是否包含encryptData参数
    • 对密文请求启用解密显示
  3. 响应处理

    • 通过偏移获取响应body
    • 解密密文后用明文替换
    • IMessageEditorTab中展示解密结果

自动化Bypass WAF与Xray联动

技术优势

  • 密文数据天然绕过WAF检测
  • 保持应用程序自身参数校验

实现方案

  1. 架构设计

    BurpA → Xray → BurpB → 目标服务
    
  2. BurpA配置

    • 开启Xray联动开关
    • 向Xray发送明文请求包
    • 不加密重放的明文请求
  3. Xray配置

    • 监听127.0.0.1:7777
    • 接收BurpA的明文请求
    • 构造payload进行扫描
  4. BurpB功能

    • 作为Xray的代理
    • 加密Xray的明文请求
    • 解密服务端响应返回给Xray
  5. 插件修改

    • 只处理Proxy流量
    • 专注请求加密和响应解密
    • 保持Xray工作流程透明

工作流程

  1. BurpA重放明文请求
  2. Xray接收明文并构造payload
  3. BurpB加密请求发送至服务端
  4. BurpB解密响应返回给Xray
  5. Xray基于明文响应判断漏洞

关键工具与技术

  1. Burp插件开发

    • 参考官方文档和示例代码
    • 使用processHttpMessage处理消息
    • 实现IMessageEditorTab增强界面
  2. 加密分析工具

    • 浏览器开发者工具(调试JS)
    • 在线加密/解密验证工具
    • 正则表达式处理分段数据
  3. 联动工具

    • Xray扫描器
    • 多Burp实例代理链
    • 自定义插件协调流程

注意事项

  1. 算法多样性

    • 实际加密方式可能有多种组合
    • 案例仅为示例,需灵活应用方法
  2. 测试限制

    • 逻辑漏洞仍需手工测试
    • 应用程序自身校验仍需考虑
  3. 法律合规

    • 所有测试需获得授权
    • 遵守相关法律法规

通过这套方法论,安全测试人员可以有效应对加密和签名保护的数据包,显著降低测试人力成本,提高测试效率。

加密和签名保护数据包的渗透测试方法 场景概述 在金融银行类安全测试中,常见数据包加密和签名保护机制,导致传统安全测试方法失效。这类业务的特点是: 直接修改数据包参数会导致重放失败 爬虫工具无法处理密文数据 传统安全测试工具难以直接应用 通用测试方法论 核心思路 还原加密/签名算法 :通过逆向分析确定加密逻辑 开发Burp插件 :实现明文状态下的安全测试 利用密文优势 :结合Xray等工具进行半自动化测试 签名保护分析流程 常见签名生成算法示例: 签名验证过程: 客户端和服务端使用相同算法生成sign 服务端接收请求后重新计算sign 任何参数修改都会导致sign不一致,请求被拒绝 签名逆向分析步骤 基础验证 : 不修改数据包重放请求(应成功) 修改参数后重放(应失败,提示"sign invalid") 定位签名算法 : 以URL参数为关键字搜索JS代码 设置断点调试签名生成过程 单步跟踪进入函数内部 算法还原示例 : 收集所有URL参数 对参数进行排序 拼接固定格式字符串: app_key+"Oic"+app_pwd+"QeeeS99u3d"+排序后参数+app_key+app_pwd 计算该字符串的MD5作为最终签名 Burp插件开发 核心功能 : 检查URI参数,移除原api_ sign 根据修改后的URI参数重新计算api_ sign 自动更新请求中的签名值 实现效果 : 修改参数后插件自动更新签名 绕过签名保护限制 实现明文参数的安全测试 数据包分段加密分析 加密结构分析 典型的分段加密格式: 其中: \u001d 是分隔符 第一部分:参数与密钥的MD5校验 第二部分:DES加密的实际参数 第三部分:RSA加密的DES密钥 逆向分析步骤 定位加密代码 : 使用 encryptData 等参数名搜索JS代码 格式化JS便于阅读 设置断点调试加密过程 分析加密函数 : 确定DES密钥 识别加密模式(如ECB模式,Pkcs7填充) 发现RSA加密的DES密钥是固定值 解密验证 : 使用在线工具验证DES解密 确认返回包可直接用DES密钥解密 Burp插件实现 请求处理 : 用正则获取分隔符间的密文 DES解密后在控制台打印验证 明文请求自动加密后重新封包 界面增强 : 添加 IMessageEditorTab 控件显示解密内容 判断请求是否包含 encryptData 参数 对密文请求启用解密显示 响应处理 : 通过偏移获取响应body 解密密文后用明文替换 在 IMessageEditorTab 中展示解密结果 自动化Bypass WAF与Xray联动 技术优势 密文数据天然绕过WAF检测 保持应用程序自身参数校验 实现方案 架构设计 : BurpA配置 : 开启Xray联动开关 向Xray发送明文请求包 不加密重放的明文请求 Xray配置 : 监听127.0.0.1:7777 接收BurpA的明文请求 构造payload进行扫描 BurpB功能 : 作为Xray的代理 加密Xray的明文请求 解密服务端响应返回给Xray 插件修改 : 只处理Proxy流量 专注请求加密和响应解密 保持Xray工作流程透明 工作流程 BurpA重放明文请求 Xray接收明文并构造payload BurpB加密请求发送至服务端 BurpB解密响应返回给Xray Xray基于明文响应判断漏洞 关键工具与技术 Burp插件开发 : 参考官方文档和示例代码 使用 processHttpMessage 处理消息 实现 IMessageEditorTab 增强界面 加密分析工具 : 浏览器开发者工具(调试JS) 在线加密/解密验证工具 正则表达式处理分段数据 联动工具 : Xray扫描器 多Burp实例代理链 自定义插件协调流程 注意事项 算法多样性 : 实际加密方式可能有多种组合 案例仅为示例,需灵活应用方法 测试限制 : 逻辑漏洞仍需手工测试 应用程序自身校验仍需考虑 法律合规 : 所有测试需获得授权 遵守相关法律法规 通过这套方法论,安全测试人员可以有效应对加密和签名保护的数据包,显著降低测试人力成本,提高测试效率。