tue3306/extrator-credenciais
GitHub: tue3306/extrator-credenciais
该工具通过 DPAPI 和 AES-GCM 流程提取 Windows 浏览器中已保存的密码,用于安全教育和防御研究,直观演示浏览器密码存储的安全隐患。
Stars: 0 | Forks: 0
# 🔐 浏览器凭据提取器
**这是一个教育工具,旨在实践中演示为何保存在浏览器中的密码并不安全——以及如何防范此类风险。**
[](LICENSE)
[](https://www.python.org/)
[](#-系统要求)
[](#️-免责声明--仅供授权使用)
[](#-用途)
## 🎯 用途
所有现代浏览器都提供“保存密码”功能。但很少有用户了解这背后的实际含义:这些密码会保存在磁盘中,并使用一把**系统会直接发放给任何运行在你当前会话下的程序**的密钥进行加密。
本项目正是为了直观演示这一点。它适用于:
- **📚 教育** — 在实践中了解基于 Chromium 的浏览器的 DPAPI、AES-GCM 以及凭据保护机制。
- **🔵 防御研究(蓝队)** — 具体地向同事和客户展示,为何将关键密码托付给浏览器是一种风险。
- **🔍 DFIR** — 在授权的取证分析过程中,从本机恢复凭据。
- **🎯 授权的渗透测试** — 在文档记录的范围内演示后渗透阶段的影响。
**它不是什么:** 它不是远程漏洞利用,不会破解加密,也不会绕过任何地方的验证。它仅仅使用了 Windows 自身向当前登录用户提供的 API —— 而这也正是它要传达的核心教训。
## 🧠 工作原理
基于 Chromium 的浏览器(Chrome、Brave、Edge、Opera)会将密码存储在一个 SQLite 数据库(`Login Data`)中,并使用 **AES-256-GCM** 进行加密。AES 的密钥保存在 `Local State` 文件中,而该密钥又通过 Windows 的 **DPAPI**(Data Protection API)进行了加密。
安全的核心关键 —— 也是所有这一切都能被恢复的原因:
因此,该工具的流程与浏览器自身使用的流程完全相同:
```
Local State ──DPAPI──► chave AES ──AES-GCM──► senhas do Login Data
```
没有任何一个步骤在“破解”保护。它们全都使用了系统本就已经授予会话所有者的密钥。
## 🌐 支持的浏览器
| 浏览器 | 方法 |
|-----------|--------|
| Google Chrome | DPAPI + AES-GCM |
| Brave | DPAPI + AES-GCM |
| Microsoft Edge | DPAPI + AES-GCM |
| Opera / Opera GX | DPAPI + AES-GCM |
| Mozilla Firefox | NSS 配置文件 (自有结构) |
## 📦 系统要求
- **Windows 10 或 11**
- **Python 3.10+**
- 依赖项:
```
pip install pycryptodome pywin32 psutil
```
| 包名 | 用途 |
|--------|----------|
| `pycryptodome` | AES-GCM 解密 |
| `pywin32` | 访问 DPAPI (`win32crypt`) |
| `psutil` | 终止浏览器进程以释放数据库 |
## ▶️ 使用方法
在**你自己的机器**上执行,并确保浏览器已关闭:
```
python chromeextrator.py
```
```
python othersbrowsersextrator.py
```
第一个命令涵盖 Google Chrome;第二个涵盖 Brave、Edge、Opera、Opera GX 和 Firefox。结果将保存到你桌面上的一个 `.txt` 文件中。请查看它,得出关于风险的结论,并**事后删除该文件** —— 它包含了明文形式的密码。
## 🛡️ 如何防范
这才是关键部分。如果该工具在你的机器上成功运行,请查看以下可降低风险的措施:
1. **不要在浏览器中保存关键密码。** 银行、主邮箱和工作账户应使用专用的密码管理器(如 Bitwarden、KeePassXC、1Password),这类工具要求输入主密码,而系统**不会**自动将主密码提供给其他程序。
2. **在浏览器提供该选项的地方开启主密码**(Firefox 有此功能)。
3. **使用磁盘加密**(BitLocker)。虽然无法阻止已登录的用户,但可以防止通过其他途径访问磁盘。
4. **小心你运行的程序。** 该工具只需在你的会话中运行 —— 这与你不慎下载的窃取凭据的恶意软件(*infostealer*)的行为完全一致。请将未知的可执行文件视为其本身所具有的风险。
5. **开启双因素认证(2FA)。** 即使密码泄露,第二重验证也能拦截访问。
6. **进行监控**(蓝队):infostealer 正是遵循这一模式 —— 读取 `Login Data` 和 `Local State`,终止浏览器,调用 DPAPI。针对这些访问行为的行为检测可以捕获其中的大多数。
## 📁 结构
```
extrator-credenciais/
├── chromeextrator.py Extração do Google Chrome
├── othersbrowsersextrator.py Brave, Edge, Opera, Opera GX e Firefox
├── LICENSE MIT
└── README.md
```
## ⚖️ 局限性
- **仅限 Windows** — 依赖于 DPAPI 和系统 API。
- **仅限当前账户** — DPAPI 无法解密其他用户的数据。
- **浏览器必须关闭** 才能释放 SQLite 数据库。
- **App-Bound Encryption** — 近期版本的 Chrome(从 127 版起)添加了额外的保护层;在这些版本中,传统方法可能无法恢复所有密码。这是 Chrome 自身在防御层面的进化,绕过它已超出本项目的教育范围。
## 📄 许可证
基于 [MIT 许可证](LICENSE) 分发。该许可证仅适用于代码,并**不免除**用户对其使用行为的法律责任 —— 请参阅[免责声明](#️-aviso-legal--uso-autorizado-apenas)。
为了教授防御而生。请负责任地使用。
标签:Python, Windows DPAPI, 凭据安全, 数字取证, 数据提取, 无后门, 自动化脚本, 逆向工具