kavin-jindal/MSEdge-Creds-Dumper
GitHub: kavin-jindal/MSEdge-Creds-Dumper
通过调用 Windows API 转储 Edge 浏览器进程内存并从中提取明文保存凭据的概念验证工具。
Stars: 3 | Forks: 0
# MSEedge 凭据导出工具
这是一个概念验证工具,通过调用 Windows API 从 Microsoft Edge 的进程内存中提取保存的凭据。仅供学习和授权用途。
此概念验证基于 [@L1v1ng0ffTh3L4N](https://x.com/L1v1ng0ffTh3L4N) 的最新发现,您可以在他的 Twitter 帖子[这里](https://x.com/L1v1ng0ffTh3L4N/status/2051308329880719730)阅读更多相关信息。
我在学习使用 Windows API 和系统内部机制时编写了这个程序。它可能存在一些局限性和错误,欢迎提交修复和贡献。
## 这个工具是做什么的?
该脚本会导出 Microsoft Edge 浏览器主进程的完整内存,然后扫描该转储文件,寻找仍以明文形式存在于内存中的已保存网站凭据(域名、用户名和密码)。
它分两个阶段进行:
1. **内存转储** — 查找正在运行的 Edge 进程,以完全访问权限打开它,并使用 `dbghelp.dll` 中的 `MiniDumpWriteDump` 将完整的内存转储写入磁盘。
2. **凭据提取** — 使用 `minidump` 库解析 `.dmp` 文件,并对每个内存段运行正则表达式匹配,以提取域名/用户名/密码组合。
## 底层工作原理
该工具通过 Python 的 `ctypes` 模块直接使用 Windows API 调用,而不是依赖高级封装。流程如下:
1. 使用 `psutil` 枚举所有正在运行的进程
2. 通过检查命令行参数中是否缺少 `--type=`,识别出 Edge 主进程(而非渲染器或 GPU 子进程)
3. 使用带有 `PROCESS_ALL_ACCESS` 标志的 `OpenProcess` 获取句柄
4. 使用 `CreateFileW` 创建转储文件
5. 使用 `MiniDumpWriteDump`(带有 `MiniDumpWithFullMemory` 标志)写入完整的进程内存
6. 使用 `minidump` 解析转储文件,并扫描每个内存段以查找凭据模式
## 环境要求
| 依赖项 | 用途 |
|------------|---------------|
| `psutil` | 查找和枚举正在运行的进程 |
| `minidump` | 解析 `.dmp` 内存转储文件 |
| Python 3.6+ | f-string 和现代语法 |
| Windows | 依赖 `dbghelp.dll` 和 `kernel32.dll`(仅限 Windows) |
| 管理员权限 | 需要以完全访问权限打开 Edge 进程 |
### 安装依赖
```
pip install psutil minidump
```
## 使用方法
1. 确保 Microsoft Edge 已打开并且您已登录某些网站
2. 以管理员身份打开终端
3. 运行脚本:
```
python main.py
```
4. 该工具会将 Edge 的内存转储到 `edge.dmp` 文件中(此文件可能会很大,通常超过 500MB),对其进行扫描,并打印找到的任何凭据:
```
[DOMAIN] example.com
[USERNAME] user@email.com
[PASSWORD] supersecretpassword
--------------------------------------------------
```
## 局限性
- 依赖于原生 DLL
- 转储文件可能会变得非常大,具体取决于 Edge 正在使用的内存量
- 只能捕获在执行转储时恰好以明文形式存在于内存中的凭据
- 正则表达式模式专门查找 `.com` 域名,因此可能会遗漏其他顶级域名 (TLD) 的凭据
## 致谢
- **研究来自:** [@L1v1ng0ffTh3L4N](https://x.com/L1v1ng0ffTh3L4N) — 该工具所基于的原始技术
- **构建者:** [Kavin Jindal](https://github.com/kavin-jindal)
## 免责声明
本工具仅供**教育目的和授权安全测试**。请勿在您不拥有或未获得明确书面测试许可的系统或账户上使用它。未经授权访问计算机系统和数据是违法行为。我对本软件的任何滥用不承担任何责任。
## 这个工具是做什么的?
该脚本会导出 Microsoft Edge 浏览器主进程的完整内存,然后扫描该转储文件,寻找仍以明文形式存在于内存中的已保存网站凭据(域名、用户名和密码)。
它分两个阶段进行:
1. **内存转储** — 查找正在运行的 Edge 进程,以完全访问权限打开它,并使用 `dbghelp.dll` 中的 `MiniDumpWriteDump` 将完整的内存转储写入磁盘。
2. **凭据提取** — 使用 `minidump` 库解析 `.dmp` 文件,并对每个内存段运行正则表达式匹配,以提取域名/用户名/密码组合。
## 底层工作原理
该工具通过 Python 的 `ctypes` 模块直接使用 Windows API 调用,而不是依赖高级封装。流程如下:
1. 使用 `psutil` 枚举所有正在运行的进程
2. 通过检查命令行参数中是否缺少 `--type=`,识别出 Edge 主进程(而非渲染器或 GPU 子进程)
3. 使用带有 `PROCESS_ALL_ACCESS` 标志的 `OpenProcess` 获取句柄
4. 使用 `CreateFileW` 创建转储文件
5. 使用 `MiniDumpWriteDump`(带有 `MiniDumpWithFullMemory` 标志)写入完整的进程内存
6. 使用 `minidump` 解析转储文件,并扫描每个内存段以查找凭据模式
## 环境要求
| 依赖项 | 用途 |
|------------|---------------|
| `psutil` | 查找和枚举正在运行的进程 |
| `minidump` | 解析 `.dmp` 内存转储文件 |
| Python 3.6+ | f-string 和现代语法 |
| Windows | 依赖 `dbghelp.dll` 和 `kernel32.dll`(仅限 Windows) |
| 管理员权限 | 需要以完全访问权限打开 Edge 进程 |
### 安装依赖
```
pip install psutil minidump
```
## 使用方法
1. 确保 Microsoft Edge 已打开并且您已登录某些网站
2. 以管理员身份打开终端
3. 运行脚本:
```
python main.py
```
4. 该工具会将 Edge 的内存转储到 `edge.dmp` 文件中(此文件可能会很大,通常超过 500MB),对其进行扫描,并打印找到的任何凭据:
```
[DOMAIN] example.com
[USERNAME] user@email.com
[PASSWORD] supersecretpassword
--------------------------------------------------
```
## 局限性
- 依赖于原生 DLL
- 转储文件可能会变得非常大,具体取决于 Edge 正在使用的内存量
- 只能捕获在执行转储时恰好以明文形式存在于内存中的凭据
- 正则表达式模式专门查找 `.com` 域名,因此可能会遗漏其他顶级域名 (TLD) 的凭据
## 致谢
- **研究来自:** [@L1v1ng0ffTh3L4N](https://x.com/L1v1ng0ffTh3L4N) — 该工具所基于的原始技术
- **构建者:** [Kavin Jindal](https://github.com/kavin-jindal)
## 免责声明
本工具仅供**教育目的和授权安全测试**。请勿在您不拥有或未获得明确书面测试许可的系统或账户上使用它。未经授权访问计算机系统和数据是违法行为。我对本软件的任何滥用不承担任何责任。标签:ctypes, dbghelp.dll, meg, Microsoft Edge, minidump, MiniDumpWriteDump, PoC, Python, Security, Web浏览器, Windows API, 信息安全, 内存读取, 凭据导出, 教育目的, 数据展示, 无后门, 明文密码提取, 暴力破解, 概念验证, 正则表达式匹配, 端点可见性, 红队, 进程内存转储, 进程枚举, 逆向工具