NeiveZ/BreachLens

GitHub: NeiveZ/BreachLens

一款防御性凭据暴露分析工具,通过 Pwned Passwords、本地文件扫描和公开元数据检索来评估密码与电子邮件的泄露风险,同时严格保护隐私不接触明文泄露数据。

Stars: 0 | Forks: 0

# BreachLens ![Python](https://img.shields.io/badge/Python-3.10%2B-3776AB?style=flat-square&logo=python&logoColor=white) ![Platform](https://img.shields.io/badge/Platform-Linux%20%7C%20Kali-557C94?style=flat-square&logo=kalilinux&logoColor=white) ![License](https://img.shields.io/badge/License-MIT-blue?style=flat-square) ![Status](https://img.shields.io/badge/Status-Active-brightgreen?style=flat-square) ## 概述 BreachLens 帮助分析人员检查凭据暴露信号,而无需抓取暗网来源或收集明文泄露数据。 它专为防御性使用、授权评估和实验室工作而设计。它**不会**绕过付费 API、下载原始泄露数据库、抓取非法市场或打印明文密码。 该工具分层工作: | 层级 | 成本 | API key | 功能描述 | |---|---:|---:|---| | Pwned Passwords | 免费 | 否 | 通过 k-anonymity 检查密码;仅发送 5 个 SHA-1 字符 | | 本地组合扫描 | 免费 | 否 | 解析授权的本地 `email:password` 文件并对密码进行掩码处理 | | GitHub 公开元数据 | 免费层 | 可选 | 搜索公开代码元数据,无需下载原始文件内容 | | DNS / crt.sh | 免费 | 否 | 检查域名的安全态势以及公开的证书透明度主机名 | | HIBP 账户/域名元数据 | 付费/可选 | 是 | 配置 `HIBP_API_KEY` 后提供的官方账户/域名泄露元数据 | ## 功能特性 - 组织良好的 Rich CLI 输出,包含风险摘要、覆盖范围表、已跳过的模块以及发现结果表 - `doctor` 命令用于验证可选的 API key 和免费模块 - 使用 Pwned Passwords k-anonymity 的 `password` 命令 - 用于本地授权组合文件的 `combo-scan`,并对密码进行掩码处理 - 针对本地组合文件的可选 `--check-passwords` 功能,仅使用 k-anonymity - 结合可选的 HIBP、GitHub 元数据和本地文件的 `email` 命令 - 用于 DNS、crt.sh、GitHub 元数据和可选 HIBP 域名检查的 `domain` 命令 - 用于按域名或电子邮件搜索公开元数据的 `github` 命令 - 用于在本地授权文件中扫描电子邮件和类似机密信息的 `local-scan` - JSON、HTML 和可选的 TXT 报告 - 包含 `.env.example` 文件 - 不涉及原始泄露数据库、不抓取暗网、不报告明文密码 ## 安装说明 ``` git clone https://github.com/NeiveZ/BreachLens.git cd BreachLens chmod +x breachlens.sh ./breachlens.sh --install source .venv/bin/activate breachlens doctor ``` 手动安装: ``` python3 -m venv .venv source .venv/bin/activate pip install -U pip pip install -e . cp .env.example .env breachlens doctor ``` ## 配置说明 复制示例环境文件: ``` cp .env.example .env nano .env ``` 可选值: ``` HIBP_API_KEY= GITHUB_TOKEN= BREACHLENS_TIMEOUT=20 BREACHLENS_REPORT_DIR=reports ``` `HIBP_API_KEY` 是可选的。如果没有配置,将跳过官方的 HIBP 账户/域名泄露元数据,但免费/本地模块仍能正常工作。 `GITHUB_TOKEN` 是可选的。它可以提升 GitHub API 的速率限制。 ## 使用说明 ``` breachlens [command] [options] ``` 命令: ``` doctor Check configuration and module readiness password Check one password via Pwned Passwords k-anonymity combo-scan Scan authorized local email:password-style files email Check an e-mail using optional HIBP, GitHub and local files domain Assess a domain using DNS, crt.sh, GitHub and optional HIBP github Search public GitHub metadata for a domain or e-mail local-scan Scan a local text file for e-mails and secret-like assignments dns DNS posture check crtsh Certificate Transparency hostname collection demo Run bundled safe demo data ``` ## 示例 ### 检查配置 ``` breachlens doctor ``` ### 安全地检查密码 ``` breachlens password ``` 或者仅限实验室/演示环境使用的非交互式操作: ``` breachlens password -p 'Password123!' ``` BreachLens 仅将 SHA-1 哈希值的前 5 个字符发送至 Pwned Passwords。它不会发送明文密码或完整的哈希值。 ### 扫描本地授权的组合文件 ``` breachlens combo-scan examples/sample_combos.txt ``` 按电子邮件过滤: ``` breachlens combo-scan combos.txt --email user@example.com ``` 按域名过滤: ``` breachlens combo-scan combos.txt --domain example.com ``` 使用 k-anonymity 根据本地匹配到的密码与 Pwned Passwords 进行比对检查: ``` breachlens combo-scan combos.txt --domain example.com --check-passwords --max-password-checks 25 ``` 在输出和报告中,密码始终会被掩码处理。 ### 在不支付 HIBP 费用的情况下检查电子邮件 ``` breachlens email user@example.com --no-hibp ``` 添加授权的本地文件: ``` breachlens email user@example.com --no-hibp --local-file combos.txt ``` 如果未配置 `HIBP_API_KEY`,将跳过 HIBP 模块,并明确将覆盖范围标记为受限。 ### 在 HIBP 可用时检查电子邮件 ``` breachlens email user@example.com ``` 如果 `.env` 中包含 `HIBP_API_KEY`,将查询官方的 HIBP 账户/paste 元数据。否则,免费/本地模块仍会运行。 ### 评估域名 ``` breachlens domain example.com ``` 结合本地组合证据: ``` breachlens domain example.com --local-file combos.txt ``` 结合可选的 HIBP 域名元数据: ``` breachlens domain example.com --hibp ``` ### 仅限 GitHub 公开元数据 ``` breachlens github example.com breachlens github user@example.com ``` BreachLens 仅收集由 GitHub Code Search 返回的元数据。它不会下载原始文件内容。 ### 在终端中显示证据样本 ``` breachlens combo-scan combos.txt --domain example.com --show-evidence ``` ### 同时保存 TXT 报告 ``` breachlens domain example.com --txt ``` 对于大多数命令,默认会保存 JSON 和 HTML 报告。 ## 输出样式 BreachLens 在各模块中使用统一的、组织良好的输出格式: ``` BreachLens Target: example.com Scan type: domain Risk score: 35/100 — MEDIUM Findings: 5 HIGH+: 1 MEDIUM: 2 LOW: 1 INFO: 1 Coverage Module Status Notes DNS posture EXECUTED MX/SPF/DMARC/CAA inventory GitHub public metadata EXECUTED Metadata only; raw contents not downloaded HIBP domain SKIPPED HIBP_API_KEY is not configured Findings Severity Source Category Title HIGH Local scan credential_exposure Matching credential-like entries found locally LOW Coverage coverage_limit Limited coverage mode ``` ## 隐私与安全保证 - 不抓取暗网 - 不绕过付费 API - 不下载原始泄露数据库 - 报告中不包含明文密码 - Pwned Passwords 使用 k-anonymity - HIBP 账户/域名查询是可选的 - 本地组合扫描仅适用于授权文件 ## 局限性 如果没有 `HIBP_API_KEY`,BreachLens 无法确切证实电子邮件是否出现在官方的 HIBP 泄露元数据中。它依然可以检查本地授权文件、被攻陷的密码(pwned passwords)以及公开来源的元数据。 类似 `No matching local entries found` 的结果仅表示所提供的本地文件中未包含匹配项。这并不能证明某个账户从未被泄露过。 ## 法律声明 仅可用于您拥有或已获得明确书面授权进行评估的账户、域名和文件。未经授权收集、持有或使用泄露的凭据可能是违法行为。 ## 开源许可 MIT License。
标签:Python, TLS, 凭据泄露检测, 安全防护, 情报分析, 无后门, 网络诊断, 逆向工具, 防御工具