浅谈在数据包被加密和签名保护时的渗透方式
字数 1733 2025-08-25 22:58:46
加密和签名保护数据包的渗透测试方法
场景概述
在金融银行类安全测试中,常见数据包加密和签名保护机制,导致传统安全测试方法失效。这类业务的特点是:
- 直接修改数据包参数会导致重放失败
- 爬虫工具无法处理密文数据
- 传统安全测试工具难以直接应用
通用测试方法论
核心思路
- 还原加密/签名算法:通过逆向分析确定加密逻辑
- 开发Burp插件:实现明文状态下的安全测试
- 利用密文优势:结合Xray等工具进行半自动化测试
签名保护分析流程
常见签名生成算法示例:
sign = MD5(sort(业务参数 + 时间戳 + 其他参数))
签名验证过程:
- 客户端和服务端使用相同算法生成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
- 自动更新请求中的签名值
-
实现效果:
- 修改参数后插件自动更新签名
- 绕过签名保护限制
- 实现明文参数的安全测试
数据包分段加密分析
加密结构分析
典型的分段加密格式:
MD5(原始参数+DES密钥) + "\u001d" + DES(原始参数) + "\u001d" + RSA(DES密钥)
其中:
\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 → BurpB → 目标服务 -
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实例代理链
- 自定义插件协调流程
注意事项
-
算法多样性:
- 实际加密方式可能有多种组合
- 案例仅为示例,需灵活应用方法
-
测试限制:
- 逻辑漏洞仍需手工测试
- 应用程序自身校验仍需考虑
-
法律合规:
- 所有测试需获得授权
- 遵守相关法律法规
通过这套方法论,安全测试人员可以有效应对加密和签名保护的数据包,显著降低测试人力成本,提高测试效率。