X3r0Day/XeroDay-APISniffer

GitHub: X3r0Day/XeroDay-APISniffer

一个模块化的 GitHub 公开仓库密钥泄露扫描工具,集成 AI 驱动的自然语言查询能力,用于发现和识别暴露的 API 密钥、令牌和敏感凭证。

Stars: 7 | Forks: 0

# XeroDay's API Sniffer API Sniffer 是一个专注于 GitHub 的秘密发现工具包,用于扫描公开仓库并识别暴露的 API 密钥、令牌、Webhook 和其他敏感凭证。它是 X3r0Day Framework 的一部分,专为安全研究、防御性分析和负责任的披露而构建。 该项目围绕发现、扫描和查询进行组织,配备了一个 AI 优先的启动器、一个工作流编排器、共享路由和搜索实用程序、扫描器仪表板助手以及仓库目标提取助手。 ## 工作原理 API Sniffer 支持两种操作模式: 1. **AI 优先启动路径**,通过 `main.py` -> `AIWorkflow.py`,自然语言请求被路由到发现、扫描、直接数据库查询或链式工作流中。 2. **手动阶段执行**,即您自己运行模块或使用编号启动器菜单。 核心流水线如下: **阶段 1 - 发现 (`APISniffer.py`)**:查询 GitHub 获取最近时间窗口内新创建的公开仓库,将其与活动队列和过往扫描历史进行去重,并将新目标存储在 `recent_repos.json` 中。 **阶段 2 - 扫描 (`APIScanner.py`)**:从队列中拉取仓库,在需要时解析仓库的默认分支,下载仓库归档,扫描匹配的文件,可选择扫描最近的提交补丁,并将结果写入 `leaked_keys.json`、`clean_repos.json` 或 `failed_repos.json`。 **阶段 3 - AI 搜索 (`AISearch.py`)**:使用自然语言查询本地发现数据库。搜索运行时与 AI 工作流共享,因此可以直接从启动器流程回答诸如 `show all the API keys` 这样的数据库问题。 **共享运行时模块 (`src/shared/`)**:包含用于 API 签名定义、类别路由、AI 辅助搜索、扫描器匹配、扫描器仪表板渲染和 GitHub 仓库目标提取的可复用逻辑。 ### 项目流程 ``` main.py ├── Enter │ └── src/AIWorkflow.py │ ├── Query request -> src/shared/ai_search_runtime.py -> leaked_keys.json │ ├── Discovery request -> src/APISniffer.py -> recent_repos.json │ ├── Scanner request -> src/APIScanner.py -> leaked_keys.json / clean_repos.json / failed_repos.json │ └── Mixed request -> orchestrated multi-step workflow └── Manual └── Control Center ├── src/APISniffer.py ├── src/APIScanner.py ├── src/AISearch.py └── src/AIWorkflow.py ``` ## 项目结构 ``` API Sniffer/ ├── main.py # Control center entry point ├── src/ │ ├── APISniffer.py # Stage 1: GitHub repository discovery │ ├── APIScanner.py # Stage 2: Repository scanning and secret detection │ ├── AISearch.py # Stage 3: AI-powered local database search │ ├── AIWorkflow.py # AI workflow router and stage orchestrator │ └── shared/ │ ├── __init__.py │ ├── ai_search_runtime.py # Shared AI query runtime used by AISearch and AIWorkflow │ ├── api_signatures.py # Secret signature definitions │ ├── category_routing.py # Query/category inference helpers │ ├── scanner_dashboard.py # Dashboard rendering for the scanner │ ├── scanner_matcher.py # Regex matching and finding extraction │ └── scanner_targets.py # Repo target extraction from prompts/URLs ├── requirements.txt ├── live_proxies.txt # Optional proxy list to bypass rate limits └── README.md ``` 以下文件在运行时生成,不属于源代码的一部分: | 文件 | 用途 | |---|---| | `recent_repos.json` | 已发现并等待扫描的仓库队列 | | `leaked_keys.json` | 检测到的秘密数据库 | | `clean_repos.json` | 扫描后未发现问题的仓库 | | `failed_repos.json` | 下载或解析失败的仓库 | 可选的本地输入文件: - `live_proxies.txt` - 用户管理的代理列表,格式为 `ip:port` ## 系统要求 - Python 3.8 或更高版本 - `requirements.txt` 中列出的包 安装依赖: ``` pip install -r requirements.txt ``` ## 执行顺序 模块可以逐个运行,启动器提供了完成完整工作流的最快路径。 ### 统一启动器(推荐) ``` python main.py ``` 这将打开启动器。从中您可以: - 输入 `help` 查看工作流原理 - 输入 `Manual` 打开编号控制中心 - 按 `Enter` 直接打开 AI 工作流 示例请求: - `show all the API keys` - `find any Discord tokens` - `start scanning` - `run discovery for last 3 minutes, then scan` ### 阶段 1:发现仓库 ``` python src/APISniffer.py ``` 此步骤查询 GitHub 获取最近创建的仓库,并将新条目写入 `recent_repos.json`。发现过程还会跳过已存在于队列或历史输出文件(`clean_repos.json`、`failed_repos.json` 和 `leaked_keys.json`)中的仓库。如果您的 IP 被限速,它可以回退使用 `live_proxies.txt` 中的代理。 ### 阶段 2:扫描泄露的秘密 ``` python src/APIScanner.py ``` 此步骤从 `recent_repos.json` 读取,在可能的情况下解析仓库的默认分支,将每个仓库作为 ZIP 归档下载,并根据支持的秘密签名进行扫描。它还可以检查最近的提交补丁。结果将写入 `leaked_keys.json`、`clean_repos.json` 或 `failed_repos.json`。已扫描的仓库将从队列中移除。 扫描器会打开一个全屏终端仪表板。 - 按 `Space` 暂停或恢复 - 按 `i` 插入,以便在扫描器运行时要求 AI 插入 GitHub 仓库目标 - 仓库插入接受 GitHub URL 或 `owner/repo` 目标,并将它们推送到活动队列或仅作为 AI 查询 ### 阶段 3:查询数据库 ``` python src/AISearch.py ``` 这将打开本地数据库的 AI 搜索提示符。它需要 Groq API 密钥,可以通过 `GROQ_API_KEY` 设置或在运行时输入。 您也可以在不打开交互式提示符的情况下运行一次性查询: ``` python src/AISearch.py --query "Show all AWS keys" ``` 示例查询: - `Show me all AWS keys` - `Find any Discord tokens` - `List all AI-related API keys` ## 代理配置 所有面向网络的脚本都支持 HTTP 代理轮换。在工作目录中创建一个名为 `live_proxies.txt` 的文件,每行一个代理: ``` 103.21.244.0:8080 45.77.56.114:3128 192.168.1.100:8888 ``` 当直接 GitHub 请求被限速或阻止时,代理将作为后备方案使用。 ## 支持的 API 密钥签名 签名集包括: | 类别 | 示例 | |---|---| | AI 和 LLM 提供商 | OpenAI (legacy/project), Anthropic, Groq, xAI (Grok), OpenRouter, HuggingFace, Replicate, Cerebras | | 云和基础设施 | AWS Access Keys, AWS Session Tokens, DigitalOcean, Google API/GCP, Heroku, Databricks | | 源代码控制 | GitHub classic PATs, GitHub fine-grained PATs, GitLab PATs | | 包注册表 | NPM, PyPI | | 通信和 Webhook | Discord bot tokens, Discord webhooks, Slack bot/user tokens, Slack webhooks, Telegram | | 支付和商务 | Stripe, Square, Shopify | | 电子邮件和消息传递 | SendGrid, Mailgun, Twilio | | 数据库和后端服务 | Supabase, Firebase, PlanetScale, Airtable, Appwrite, Deta, PocketBase | | 其他实用工具 | Postman, Mapbox, Sentry | ## 配置 可以通过编辑脚本顶部的常量来调整关键值。 **APISniffer.py** - `LOOKBACK_MINS` - 向后搜索新仓库的时间跨度(分钟) - `CHUNK_MINS` - 每次 GitHub 搜索分块使用的时间窗口大小 - `PAGES_TO_SCRAPE` - 要获取的 GitHub API 结果页数 - `PROXY_RETRY_LIMIT` - 放弃前尝试的最大代理数量 **APIScanner.py** - `MAX_THREADS` - 并发扫描线程数 - `SCAN_COMMIT_HISTORY` - 是否同时扫描提交差异 - `MAX_HISTORY_DEPTH` - 要扫描的最近提交数量 - `SCAN_HEROKU_KEYS` - 是否包含 Heroku UUID 模式 - `FAT_FILE_LIMIT` - 跳过大于此大小的文件 - `MAX_DOWNLOAD_SIZE_BYTES` - 中止大于此大小的下载 ## 免责声明 此工具仅用于教育目的、安全研究和防御性分析。它处理公开的仓库数据,不利用、访问或修改任何系统。 请负责任地使用它,尊重平台规则和速率限制,如果您发现暴露的凭证,请遵循负责任的披露做法。 ## 许可证 X3r0Day Framework 的一部分。可免费使用、修改和重新分发,但需注明原始项目的来源。
标签:AI 安全工具, API 安全, DevSecOps, DLP, ESC4, GitHub 安全, Homebrew安装, OSINT, Python, Secret Scanning, Sysdig, 上游代理, 凭证扫描, 实时处理, 无后门, 结构化查询, 网络安全, 自动化安全, 逆向工具, 隐私保护, 黑盒测试