tue3306/extrator-credenciais

GitHub: tue3306/extrator-credenciais

该工具通过 DPAPI 和 AES-GCM 流程提取 Windows 浏览器中已保存的密码,用于安全教育和防御研究,直观演示浏览器密码存储的安全隐患。

Stars: 0 | Forks: 0

# 🔐 浏览器凭据提取器 **这是一个教育工具,旨在实践中演示为何保存在浏览器中的密码并不安全——以及如何防范此类风险。** [![License: MIT](https://img.shields.io/badge/license-MIT-yellow.svg)](LICENSE) [![Python](https://img.shields.io/badge/Python-3.10%2B-3776ab?logo=python&logoColor=white)](https://www.python.org/) [![Platform](https://img.shields.io/badge/Windows-10%20%7C%2011-0078D4?logo=windows&logoColor=white)](#-系统要求) [![Uso](https://img.shields.io/badge/uso-autorizado%20apenas-red)](#️-免责声明--仅供授权使用) [![Foco](https://img.shields.io/badge/foco-pesquisa%20defensiva%20%C2%B7%20DFIR-6c5ce7)](#-用途)
## 🎯 用途 所有现代浏览器都提供“保存密码”功能。但很少有用户了解这背后的实际含义:这些密码会保存在磁盘中,并使用一把**系统会直接发放给任何运行在你当前会话下的程序**的密钥进行加密。 本项目正是为了直观演示这一点。它适用于: - **📚 教育** — 在实践中了解基于 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, 凭据安全, 数字取证, 数据提取, 无后门, 自动化脚本, 逆向工具