一次前端加密逆向分析
字数 1058 2025-08-18 11:36:36
前端加密逆向分析教学文档
1. 背景介绍
本文档基于某网站登录界面的前端加密逆向分析案例,详细讲解如何通过浏览器开发者工具定位加密函数、分析加密算法,并最终实现加密/解密脚本的编写过程。
2. 初步观察
- 目标网站登录界面选择"密码登录"方式
- 抓包发现:
- 请求中没有明文账户密码
- 有一串Base64编码数据
- 响应内容为"手机号未注册"
- Base64在线解码失败,推测前端进行了数据包加密
3. 加密过程分析
3.1 使用浏览器开发者工具定位加密函数
- 打开浏览器开发者工具(F12)
- 在Sources面板中查找关键文件:
Index.js:判断手机号是否已注册的逻辑Request.js:包含请求拦截器
3.2 分析请求拦截器
在Request.js中发现请求拦截器,关键信息:
config参数包含重要信息:data:登录时输入的手机号post:数据请求方式
- 拦截器功能推测:
- 向服务器发送请求判断手机号是否注册
- 根据响应决定是否发送包含手机号和密码的登录请求
3.3 定位加密函数
通过调试追踪,找到明文转密文的关键函数:
- 加密方法:
Encrypt - 位置:
AES.js第14行
4. 加密算法分析
在AES.js中发现:
- 使用AES加密算法
- 加密模式:ECB模式
- 填充方式:PKCS7补位
- 包含密钥(
key)信息
5. 解密与加密脚本编写
5.1 解密过程
- 根据加密算法确定解密方法
- 编写解密脚本
- 成功解密出明文格式
5.2 加密脚本编写
基于以下信息编写加密脚本:
- 已确定的明文格式
- 加密算法(AES)
- 加密模式(ECB)
- 填充方式(PKCS7)
- 密钥信息
6. 实际应用
通过逆向分析结果可以实现:
- 对已注册手机号的枚举
- 模拟登录请求的构造
- 自动化测试脚本的编写
7. 关键点总结
- 加密定位:通过浏览器开发者工具逐步追踪加密函数
- 算法识别:AES/ECB/PKCS7组合是常见的前端加密方案
- 请求流程:先验证手机号是否注册,再决定是否发送完整登录请求
- 脚本编写:需要准确还原加密流程和参数
8. 防御建议
针对此类逆向分析,网站可采取以下防护措施:
- 使用动态密钥
- 增加代码混淆
- 实现反调试机制
- 采用非对称加密方案
- 添加请求签名验证
9. 扩展思考
- 如何应对更复杂的加密方案(如RSA+AES组合加密)
- 如何处理动态生成的密钥
- 如何绕过常见的反调试技术
- 自动化逆向分析工具的使用
通过本案例的系统分析,可以掌握前端加密逆向的基本方法和流程,为类似场景的安全分析提供参考。