airtasystems/AI-Whitehat-Bug-Bounty-Hunter
GitHub: airtasystems/AI-Whitehat-Bug-Bounty-Hunter
一个面向 LLM 应用和 AI agent 的自动化白帽安全测试工具包,帮助研究人员将手工 prompt 测试转化为可重复的漏洞挖掘流水线。
Stars: 0 | Forks: 0
# AI 白帽漏洞赏金猎人

**AI 白帽漏洞赏金猎人** 是一个开源工具包,专注于对聊天机器人、AI agent 和基于 LLM 的 API 进行 **AI 漏洞赏金挖掘**、**LLM 安全测试**以及**授权的白帽评估**。它帮助研究人员和赏金猎人从手动 prompt 测试过渡到可重复的 pipeline:**生成对抗性测试**、**大规模执行**、**严重性评估**,并**导出结构化结果**为 JSON 或上传至 [Genbounty](https://genbounty.com) 平台。
使用它来挖掘 **prompt 注入**、**越狱**、**系统 prompt 泄露**、**敏感数据泄露**、**通过文件上传进行的间接注入**(PDF、CSV、图像、音频)以及**针对 agent /工具的滥用**——这些均映射到相应的安全指南,如 **OWASP LLM Top 10**、**OWASP Agentic** 和 **MITRE ATLAS**。测试通过**浏览器自动化**(Playwright)或直接的 **HTTP API** 提交运行,因此你可以像真实用户那样评估实际的生产环境 UI 和后端聊天端点。
与静态检查清单或一次性的 ChatGPT 对话不同,Hunter 能够从安全准则中**生成与类别对齐的攻击套件**,为每个测试用例捕获 **prompt/响应证据**,运行 **AI 辅助的结果评估**(严重性 + 判断推理),并**交付报告**,提供可下载的 JSON 文件或通过 Genbounty 的安全评估导入 API 传输——这对于**漏洞赏金项目**、**渗透测试交付物**以及发布前的 **ML 安全回归测试**来说非常理想。
## 它的功能
| 步骤 | UI 标签页 | 输出 |
|------|--------|--------|
| **连接目标** | Connect Target | `config.yaml`(选择器或 API 传输),可选 auth |
| **生成测试** | Generate Tests | 位于 `browser-bot/sites///tests/` 下的 Suite JSON |
| **构建制品** | Payloads | 通过 [`payloads/`](payloads/README.md) 生成的多模态文件(PDF、CSV、图像、音频) |
| **编辑套件** | Test Management | 就地编辑类别和 prompt |
| **运行测试** | Run Tests | `run_log.json` → `attack_log.json` |
| **评估结果** | Finding Assessment | `pipeline_report.json`(每个 prompt 的严重性和推理) |
| **提交** | Create Bug Bounty Report | 下载过滤后的 `pipeline_report.json`,或 POST 到 Genbounty |
```
connect → generate → (payloads) → run → finding assessment → create bug bounty report (JSON download or Genbounty submit)
```
**范围:**仅限可观察的黑盒行为(prompt、上传、响应)。请仅对你被授权评估的系统进行测试。
## 适用人群
- 在 Genbounty(或类似项目)上针对 AI 聊天机器人、agent 和基于 API 的 LLM 应用进行测试的**漏洞赏金猎人**。
- 在客户预发布环境中进行结构化测试并导出证据的**白帽子/渗透测试人员**。
- 在每次发布时进行回归测试并比较不同构建版本间 `category_rollup` 的 **Appsec / MLsec** 人员。
## 前置条件
1. 复制 [`.env.example`](.env.example) → `.env` 并设置 `GEMINI_API_KEY`(用于测试生成和结果评估)。
2. 通过 **Connect Target** 将目标注册到 `browser-bot/sites///` 下。
3. 可选:配置 `playbooks/company.json` 和 `playbooks/component.json`(或每个站点的副本),用于基于领域的攻击生成。
4. 用于 **Genbounty 提交**(可选):`GENBOUNTY_HOST`、`GENBOUNTY_API_KEY` 以及项目 `user_id`(参见 [api-security-export.md](api-security-export.md))。**导出为 JSON** 不需要平台凭证。
## 环境要求
- Python 3.10+
- Chromium (Playwright)。首次运行时,`start.py` 会自动安装 Playwright 的 Chromium。
### Python / `python3` 故障排除
在 Debian、Ubuntu 和 WSL 上,通常没有 `python` 命令;系统只安装了 `python3`。
| 症状 | 解决方法 |
|---------|-----|
| `python: command not found` | 使用 `python3` 运行命令(例如 `python3 start.py`) |
| 希望在终端中使用 `python` | 在 `~/.bash_aliases` 中添加:`alias python=python3`,然后运行 `source ~/.bashrc` 或打开一个新的 shell |
| `python` 在脚本/CI 中仍然缺失 | 别名仅适用于**交互式** bash;请使用 `python3`,或安装 `python-is-python3`(`sudo apt install python-is-python3`)以获得系统级的 `python` 兼容包装 |
| 版本错误或过于老旧的 Python | `python3 --version`(需要 3.10+);如果手动创建环境,请使用 `python3 -m venv` |
首次运行后,`start.py` 会使用项目虚拟环境中的 Python;问题通常出在你用来引导程序的**宿主机**解释器上(`python` 还是 `python3`)。
### 在 Ubuntu 26.04 上的 Playwright
Playwright 1.60 尚未提供 `ubuntu26.04-x64` 的浏览器构建版本。在 Ubuntu 26+ 上,`start.py` 会将 `PLAYWRIGHT_HOST_PLATFORM_OVERRIDE` 设置为 Ubuntu 24.04 的构建版本,并在需要时重试安装。
| 症状 | 解决方法 |
|---------|-----|
| `Playwright does not support chromium on ubuntu26.04-x64` | 重新运行 `python3 start.py`(如果缺少 Chromium,会再次运行安装) |
| 手动安装 | `PLAYWRIGHT_HOST_PLATFORM_OVERRIDE=ubuntu24.04-x64 python3 -m playwright install chromium`(引导完成后请使用虚拟环境中的 `python`) |
| 浏览器启动失败(缺少库) | `PLAYWRIGHT_HOST_PLATFORM_OVERRIDE=ubuntu24.04-x64 python3 -m playwright install-deps` |
## 快速开始(Web UI)
```
python start.py
```
打开 **http://localhost:8000**。侧边栏中的工作流如下:
1. **Connect Target** - 浏览器发现或 API 探测;保存 `config.yaml`。
2. **Generate Tests** - 选择 playbook 和策略;套件将保存到组件的 `tests/` 目录树中。
3. **Run Tests** - 执行套件;提供实时的浏览器截图和结果表。
4. **Finding Assessment** - 判断严重性(`indeterminate` … `critical`);写入 `pipeline_report.json`。
5. **Create Bug Bounty Report** - 下载单个报告或批量导出(过去 1小时 / 4小时 / 24小时)为 JSON,或在配置好凭证后提交到 Genbounty。
## 本地测试目标
```
python test-target/app.py
```
使用站点 `localhost:3000`,组件 `chat`(或根据你的设置选择 `main`)。详见 [test-target/README.md](test-target/README.md)。
## 安全 Playbook
Playbook 定义了类别、`exploited_if` / `mitigated_if` 触发器以及评估准则。
| Playbook | 文件 | 关注点 |
|----------|------|--------|
| OWASP LLM | `playbooks/owasp_llm.json` | LLM01–LLM10 |
| OWASP Agent | `playbooks/owasp_agent.json` | ASI01–ASI10 |
| MITRE ATLAS | `playbooks/mitre_attack.json` | ML 杀伤链战术 |
| Jailbreak Core | `playbooks/jailbreak_core.json` | DAN、编码、注入、渐进式 |
| System Prompt Exfil | `playbooks/system_prompt_exfil.json` | SPL01–SPL10 |
| Prompt Injection | `playbooks/prompt_injection.json` | PI01–PI10 |
| API Secrets / Sensitive Info | `playbooks/api_secrets_disclosure.json`、`sensitive_info_disclosure.json` | 泄露向量 |
| Test (实验室) | `playbooks/test.json` | 验证 / 监控场景 |
| ~~Multimodal Injection~~ | `playbooks/multimodal_injection.json` | **已弃用** - 请使用策略 `multimodal` + 安全 playbook |
可以通过特定主题生成自定义 playbook(使用 UI 中的 **+ New playbook** 或 CLI 工具 `playbook-generator`)。
## 策略
| 策略 | 作用 |
|----------|------|
| `zero_shot` | 单消息攻击(检测基线) |
| `multi_shot`、`few_shot`、`iterative`、`prompt_chaining` | 多轮 / 塑造压力 |
| `jailbreak` | 专注于越狱的技术 |
| `multimodal` | 文件上传测试(`vector_type` + payload 生成器) |
| `chain_of_thought`、`tree_of_thoughts`、`self_reflection` 等 | 额外的对抗性塑造 |
默认 playbook:**`owasp_llm`**。
## 多模态 / 文件上传测试
**多模态是一种交付方式**,而不是一个独立的分类。请将策略 `multimodal` 与任何安全 playbook 结合使用。Prompt 可以包含 `vector_type`、良性的 `prompt` 以及 `payload`(`generator`、`args`)。
```
python scripts/apply_advanced_multimodal_suite.py --playbook owasp_llm --materialize
python main.py generate --strategy multimodal --playbook owasp_llm
python main.py run generate-tests/multimodal/owasp-llm.json --site HOST --component COMPONENT --assess
```
发现过程会记录**文件上传**(`type: file` + `path_from: payload`)以及 API 模式 **`api_document`** / **`api_multipart`**。`attack_log.json` 会在适用时包含 `vector_type` 和 `artifact_path`。
## CLI(自动化 / CI)
Web UI(`python start.py`)是主要界面。仅在编写脚本时使用 `main.py` 的子命令:
```
python main.py generate --strategy zero_shot --playbook owasp_llm --site localhost:3000 --component chat
python main.py run browser-bot/sites/localhost:3000/chat/tests/zero-shot/owasp-llm.json \
--site localhost:3000 --component chat --assess
python main.py security-assess path/to/attack_log.json
python main.py export path/to/pipeline_report.json
```
子命令包括:`generate`、`run`、`security-assess`、`export`。发现、登录和 playbook 功能仅限 Web UI 使用。
## 制品
| 文件 | 产生时机 |
|------|------|
| Suite JSON | 生成后 - 包含 `playbook`、`playbook_id`、`categories[].prompts[]` |
| `run_log.json` | 原始运行记录 |
| `attack_log.json` | 规范化后的评估日志 |
| `pipeline_report.json` | 结果评估后 - 包含 `adversarial_results[]`,可选的 `category_rollup` |
导出时,会将 `pipeline_report.json` 映射为过滤后的 JSON 下载文件(Web UI 的 **Export as JSON**)或 Genbounty 的 **`/api/v2/security-assessments/import`** 接口请求(批量处理,默认每次 POST 25 个结果)。有关 HTTP 契约和环境变量(`GENBOUNTY_*`),请参见 [api-security-export.md](api-security-export.md)。
## 配置
| 来源 | 用途 |
|--------|---------|
| [`.env`](.env) | `GEMINI_API_KEY`、`GENBOUNTY_HOST`、`GENBOUNTY_API_KEY`、`GENBOUNTY_USER_ID`、导出微调 |
| [`.config`](.config) | `GEMINI_MODEL`、`GEMINI_JUDGE` |
| `config.defaults.yaml` | 全局 browser-bot 默认配置 |
| `browser-bot/sites///config.yaml` | 针对特定目标的选择器、API URL 及设置覆盖 |
## 项目结构
- `start.py` - 引导虚拟环境并启动 Web UI
- `main.py` - 脚本 CLI(`generate`、`run`、`security-assess`、`export`);Web UI 是主要方式
- `web/` - FastAPI 后端 + SPA(AI 白帽漏洞赏金猎人 UI)
- `generate-tests/` - 攻击生成(`core.py`、`strategies/`、`playbook_generator.py`)
- `browser-bot/` - Playwright / API 测试运行器
- `risk-level-agent/` - Playbook 专家及用于结果评估的裁判
- `pipeline/` - `convert_log.py`、`security_assess.py`、`export_security.py`、`response_html.py`
- `playbooks/` - 安全 playbook 和模板
- `payloads/` - 多模态制品生成器
- `test-target/` - 用于实验室运行的本地脆弱性助手
## 授权声明
请仅对你获准测试的目标和项目使用此工具。该工具包会自动化执行攻击性 prompt 并导出测试结果;你需要对测试范围、速率限制和项目规则自行负责。
标签:AI安全, Chat Copilot, DLL 劫持, Playwright, 域名收集, 大语言模型, 特征检测, 红队评估, 逆向工具, 配置审计