记一次测试未授权接口需要的AES加密逆向
字数 981 2025-12-03 12:02:21
AES加密逆向分析实战教学文档
1. 背景介绍
在渗透测试过程中,发现目标网站存在未授权接口,但请求数据包采用AES加密。需要逆向分析加密算法才能构造有效请求进行后续测试。
2. 加密数据包分析
- 原始请求体为加密数据
- 错误参数会返回特定报错信息
- 需逆向加密算法才能构造有效测试数据
3. 加密函数定位
3.1 关键字搜索
使用encryptCode作为关键字进行搜索,发现唯一匹配结果。
3.2 函数分析
加密函数接收三个参数:
ca.encrypt(param1, param2, param3)
4. 加密算法识别
4.1 跟踪函数实现
通过悬停查看函数定义,确认采用AES加密算法。
4.2 参数含义分析
- 参数k:待加密的明文数据
- 参数2和3:IV(初始向量)和KEY(加密密钥)
4.3 断点验证
通过断点调试确认:
- 两个参数值相同(IV和KEY使用相同值)
5. AES-CBC模式详解
5.1 加密参数组成
-
明文(Plaintext)
- 需要加密的原始数据
-
初始向量(IV)
- 128位随机值
- 与第一个明文分组进行异或操作
- 确保相同明文产生不同密文
-
填充方式(Padding)
- 默认采用PKCS7填充
- 当明文长度不是16字节倍数时自动填充
5.2 解密参数要求
- 密文(Ciphertext)
- 加密时使用的相同密钥
- 相同的初始向量(IV)
- 相同的填充方式(PKCS7)
6. 加密算法复现
6.1 参数获取
通过逆向分析获得:
- KEY:加密密钥
- IV:初始向量(与KEY相同)
6.2 加密验证
使用获得的KEY和IV进行AES-CBC加密,结果与原始加密数据完全一致。
7. 技术要点总结
7.1 关键逆向技巧
- 关键字搜索法:使用
encryptCode等明显标识定位加密函数 - 函数跟踪法:通过悬停查看函数定义识别算法类型
- 断点调试法:动态分析参数传递和值内容
7.2 AES-CBC特性
- 默认采用PKCS7填充方式
- IV需要与密钥一起保存或传输
- 加解密双方参数必须完全一致
8. 实战应用
成功逆向后,可以:
- 构造有效的加密请求包
- 测试未授权接口的安全性
- 进行进一步的渗透测试操作
9. 注意事项
- 不同系统可能采用不同的默认填充方式
- IV的随机性对安全性至关重要
- 实际测试中需确认具体的加密模式配置
通过本案例的完整分析,展示了从加密数据包发现到算法逆向的完整流程,为类似场景的渗透测试提供了可复用的方法论。