记一次前端用户名,密码加密逆向
字数 1453 2025-08-10 13:48:25

前端用户名密码加密逆向分析教学文档

一、背景概述

本教学文档基于一篇关于前端用户名和密码加密逆向分析的文章,详细介绍了如何对使用DES和MD5加盐加密的前端登录系统进行逆向分析,并利用Burp Suite插件进行爆破。

二、加密分析流程

1. 准备工作

  • 目标网站:一个前端对用户名和密码进行加密的登录系统
  • 工具准备:
    • 浏览器开发者工具
    • Burp Suite
    • jsEncrypter插件(GitHub - c0ny1/jsEncrypter)
    • VS Code或其他代码编辑器

2. 识别加密方式

  1. 触发加密:首先在目标网站输入用户名密码并提交,确保加密过程被执行
  2. 全局搜索关键词
    • 搜索"password"定位密码相关代码
    • 搜索"username"或加密后的用户名(如"enUderName")定位用户名加密函数

3. 用户名加密分析

  1. 发现用户名使用strEnc函数进行加密
  2. 进一步分析strEnc函数,确认是DES加密算法
  3. 在代码中找到DES加密使用的三个密钥(key)

4. 密码加密分析

  1. 密码加密在DES基础上增加了MD5和盐值处理
  2. 搜索hex_md5定位MD5加密函数
  3. 注意密码处理流程:
    • 原始密码 + 盐值
    • 进行MD5加密
    • 再进行DES加密

5. 关键发现

  • 密码处理时有一个坑点:实际处理的是{密码} + 盐值而不仅仅是密码 + 盐值
  • 需要通过JS断点调试确认实际的加密输入

三、逆向实现步骤

1. 获取加密JS文件

  1. 从目标网站下载完整的加密JS文件(DESTools.js等)
  2. 保存相关加密函数到本地

2. 配置jsEncrypter插件

  1. 准备_des.js文件,填入从目标网站获取的三个DES密钥
  2. 对于密码加密,需要:
    • 先实现MD5加盐处理
    • 再进行DES加密

3. 验证加密结果

  1. 使用本地JS代码运行加密函数
  2. 与网站实际提交的加密结果对比,确保完全一致

四、爆破准备

1. 字典处理

  1. 准备原始字典文件(如121212.txt)
  2. 对字典中的每个密码:
    • 添加盐值(注意格式,如{password} + salt)
    • 进行MD5加密
    • 进行DES加密
  3. 保存处理后的字典(output文件)

2. Burp Suite配置

  1. 使用jsEncrypter插件处理加密
  2. 加载处理后的字典
  3. 配置爆破参数

五、调试技巧

  1. JS断点调试

    • 在加密函数关键位置设置断点
    • 观察实际处理的输入值和中间结果
    • 特别关注字符串拼接和格式
  2. 常见问题排查

    • 加密结果不一致时,检查输入格式
    • 确认密钥是否正确
    • 验证加密步骤是否完整

六、完整流程总结

  1. 触发前端加密 → 2. 定位加密函数 → 3. 分析加密流程 → 4. 提取密钥 → 5. 本地复现加密 → 6. 验证加密结果 → 7. 处理字典 → 8. 配置爆破

七、关键代码示例

DES加密配置

// _des.js 中填入三个密钥
var key1 = "从网站获取的第一个密钥";
var key2 = "从网站获取的第二个密钥";
var key3 = "从网站获取的第三个密钥";

密码处理流程

function encryptPassword(pwd, salt) {
    // 实际发现是 {password} + salt 的格式
    var input = "{" + pwd + "}" + salt;
    var md5Value = hex_md5(input);
    var desValue = strEnc(md5Value, key1, key2, key3);
    return desValue;
}

八、注意事项

  1. 不同网站的加密实现可能有差异,需要具体分析
  2. 加密前的字符串处理(如添加花括号)容易被忽视
  3. 确保使用与目标网站完全相同的加密JS文件
  4. 爆破前先手动验证几个测试用例

九、扩展学习

  1. 熟悉常见的前端加密算法(DES, AES, RSA, MD5, SHA等)
  2. 掌握JS调试技巧(console.log, debugger, 断点等)
  3. 学习Burp Suite插件的开发和使用
  4. 了解Webpack等打包工具对JS代码的影响

通过本教学文档,读者可以系统性地学习前端加密逆向分析的完整流程和关键技术点,具备独立分析类似加密系统的能力。

前端用户名密码加密逆向分析教学文档 一、背景概述 本教学文档基于一篇关于前端用户名和密码加密逆向分析的文章,详细介绍了如何对使用DES和MD5加盐加密的前端登录系统进行逆向分析,并利用Burp Suite插件进行爆破。 二、加密分析流程 1. 准备工作 目标网站:一个前端对用户名和密码进行加密的登录系统 工具准备: 浏览器开发者工具 Burp Suite jsEncrypter插件(GitHub - c0ny1/jsEncrypter) VS Code或其他代码编辑器 2. 识别加密方式 触发加密 :首先在目标网站输入用户名密码并提交,确保加密过程被执行 全局搜索关键词 : 搜索"password"定位密码相关代码 搜索"username"或加密后的用户名(如"enUderName")定位用户名加密函数 3. 用户名加密分析 发现用户名使用 strEnc 函数进行加密 进一步分析 strEnc 函数,确认是DES加密算法 在代码中找到DES加密使用的三个密钥(key) 4. 密码加密分析 密码加密在DES基础上增加了MD5和盐值处理 搜索 hex_md5 定位MD5加密函数 注意密码处理流程: 原始密码 + 盐值 进行MD5加密 再进行DES加密 5. 关键发现 密码处理时有一个坑点:实际处理的是 {密码} + 盐值 而不仅仅是 密码 + 盐值 需要通过JS断点调试确认实际的加密输入 三、逆向实现步骤 1. 获取加密JS文件 从目标网站下载完整的加密JS文件(DESTools.js等) 保存相关加密函数到本地 2. 配置jsEncrypter插件 准备 _des.js 文件,填入从目标网站获取的三个DES密钥 对于密码加密,需要: 先实现MD5加盐处理 再进行DES加密 3. 验证加密结果 使用本地JS代码运行加密函数 与网站实际提交的加密结果对比,确保完全一致 四、爆破准备 1. 字典处理 准备原始字典文件(如121212.txt) 对字典中的每个密码: 添加盐值(注意格式,如 {password} + salt) 进行MD5加密 进行DES加密 保存处理后的字典(output文件) 2. Burp Suite配置 使用jsEncrypter插件处理加密 加载处理后的字典 配置爆破参数 五、调试技巧 JS断点调试 : 在加密函数关键位置设置断点 观察实际处理的输入值和中间结果 特别关注字符串拼接和格式 常见问题排查 : 加密结果不一致时,检查输入格式 确认密钥是否正确 验证加密步骤是否完整 六、完整流程总结 触发前端加密 → 2. 定位加密函数 → 3. 分析加密流程 → 4. 提取密钥 → 5. 本地复现加密 → 6. 验证加密结果 → 7. 处理字典 → 8. 配置爆破 七、关键代码示例 DES加密配置 密码处理流程 八、注意事项 不同网站的加密实现可能有差异,需要具体分析 加密前的字符串处理(如添加花括号)容易被忽视 确保使用与目标网站完全相同的加密JS文件 爆破前先手动验证几个测试用例 九、扩展学习 熟悉常见的前端加密算法(DES, AES, RSA, MD5, SHA等) 掌握JS调试技巧(console.log, debugger, 断点等) 学习Burp Suite插件的开发和使用 了解Webpack等打包工具对JS代码的影响 通过本教学文档,读者可以系统性地学习前端加密逆向分析的完整流程和关键技术点,具备独立分析类似加密系统的能力。