spark-98/Red_Hawk
GitHub: spark-98/Red_Hawk
一个位于 AI 与网络安全交汇处的自主红队代理,通过闭环自我改进机制对目标 LLM 应用进行系统化的对抗性安全测试与评分。
Stars: 3 | Forks: 0
# Red Hawk 🦅
**自主 AI 红队代理,用于探测目标 LLM,由独立的评估器对每次攻击进行评分,将全过程追踪记录至 Arize Phoenix,并通过 Phoenix MCP server 读取自身的追踪记录,从而在连续的回合中不断改进。**
专为 **Google Cloud Rapid Agent Hackathon — Arize Track** 构建。它处于 AI 与网络安全的交汇点:它不仅仅是越狱一个机器人,而且做到*系统化地攻击,自我评估,并随着时间不断改进* —— 一个闭环的自我改进循环。
## 为什么需要它
随着 LLM 应用程序部署到生产环境中,它们需要持续的对抗性测试。手动红队测试无法扩展。Red Hawk 自动化了整个循环 —— 生成攻击 → 攻击目标 → 评估结果 → 追踪记录 → 从过去的回合中学习 → 更智能地攻击 —— 并呈现出不断上升的成功率曲线,量化了攻击者针对特定目标的改进程度。
## 架构
通过 Google ADK 连接的五个组件:
1. **Orchestrator agent** (`agent/red_team/agent.py`) — Gemini + ADK。运行 3 轮循环并决定每一步调用哪个工具。
2. **攻击生成器** (`generate_attack`) — 从包含 7 个漏洞类别的 YAML 库中提取新的提示词,并过滤掉已经尝试过的内容。
3. **目标机器人** (`target_bot.py`) — 一个故意设置漏洞的 Flask + Gemini 应用,植入了一个秘密 flag (`FLAG{RED_HAWK_TARGET_COMPROMISED}`)。它是这里的“沙袋”。
4. **评估器** (`ask_judge`) — 一次独立的 Gemini 调用,返回 Pydantic 结构化的判定结果 (`success`, `severity` 0–10, `reason`)。与攻击者和目标隔离,因此不会产生偏见。
5. **Phoenix 层** — (a) OpenInference 追踪记录每次尝试;(b) **Phoenix MCP server** (`phoenix_mcp_server.py`) 允许代理在运行时查询自身的追踪历史。
### 循环(一轮)
```
generate_attack → fire_at_target → ask_judge → [Phoenix traces everything]
↑ │
└──── phoenix_get_successful_attack_prompts ─────────┘
(read what worked before the next round)
```
代理的工具列表正好包含四个逻辑工具:`generate_attack`、`fire_at_target`、`ask_judge`,以及 Phoenix MCP 查询工具(`phoenix_get_recent_attack_spans`、`phoenix_get_successful_attack_prompts`)。
## 攻击类别
`jailbreak`、`injection`、`disclosure`、`excessive_agency`、`system_prompt_leakage`、`misinformation`、`output_manipulation` — 参见 `agent/red_team/attacks/attack_library.yaml`。
## 前置条件
- Python 3.10–3.12 和 [uv](https://docs.astral.sh/uv/)
- 针对 Gemini 的 Google 身份验证 — **Vertex AI / ADC**(推荐):`gcloud auth application-default login` 加上 `GOOGLE_CLOUD_PROJECT` / `GOOGLE_CLOUD_LOCATION`;**或者**一个 `GOOGLE_API_KEY`
- 一个 Phoenix Cloud API key ([app.phoenix.arize.com](https://app.phoenix.arize.com))
## 设置
```
cd gemini-hackathon
cp .env.example .env
# 编辑 .env:
# - Vertex path: GOOGLE_GENAI_USE_VERTEXAI=1, GOOGLE_CLOUD_PROJECT, GOOGLE_CLOUD_LOCATION
# - PHOENIX_API_KEY 和 PHOENIX_COLLECTOR_ENDPOINT(Hostname 包含 /s/)
uv sync
gcloud auth application-default login # if using the Vertex path
```
## 运行
以下所有命令均假设虚拟环境位于 `gemini-hackathon/.venv`。
**1. 启动目标机器人**(在单独的终端中,从仓库根目录运行):
```
gemini-hackathon/.venv/Scripts/python.exe target_bot.py # serves http://127.0.0.1:5001
```
**2. 运行 orchestrator**(从 `gemini-hackathon/` 进行一次完整的 3 轮评估):
```
.venv/Scripts/python.exe agent/main.py
# 或传入您自己的 kickoff message:
.venv/Scripts/python.exe agent/main.py "Begin the red-team assessment."
```
**3. 检查追踪记录** — 打开 Phoenix;项目默认为 `PHOENIX_PROJECT_NAME`(`gemini-hackathon`)。您将看到每次攻击、响应和判定对应的 LLM 和工具 span。
## 端到端冒烟测试
一个单一脚本会执行所有六个阶段(目标健康检查/攻击、`generate_attack`、`fire_at_target`、`ask_judge` 以及一个完整的 3 轮 orchestrator 回合)。它会自动为您启动并停止目标机器人:
```
gemini-hackathon/.venv/Scripts/python.exe smoke_test_e2e.py
```
预期结果为 `6/6 passed`。(Orchestrator 在禁用思考模式下运行,以便 3 轮循环确定性地完成;评估器使用 Vertex 发布的模型 — 参见 `.env` 说明。)
## 目录结构
| 路径 | 用途 |
| ---- | ------- |
| `target_bot.py` | 带有植入 flag 的存在漏洞的 Flask + Gemini 目标 |
| `smoke_test_e2e.py` | 6 阶段端到端冒烟测试 |
| `gemini-hackathon/agent/main.py` | 带追踪功能的一次性 orchestrator 运行器 |
| `gemini-hackathon/agent/instrumentation.py` | `phoenix.otel.register(..., auto_instrument=True)` |
| `gemini-hackathon/agent/red_team/agent.py` | ADK `root_agent` + 工具连接 |
| `gemini-hackathon/agent/red_team/prompt.py` | Orchestrator 指令(循环逻辑) |
| `gemini-hackathon/agent/red_team/tools/` | `generate_attack`、`fire_at_target`、`ask_judge` |
| `gemini-hackathon/agent/red_team/phoenix_mcp_server.py` | 暴露 Phoenix span 历史记录的 FastMCP server |
| `gemini-hackathon/agent/red_team/attacks/attack_library.yaml` | 按类别划分的攻击语料库 |
## 安全性
所有测试均针对我们自己的沙盒机器人运行,并使用伪造的植入 flag —— 这是旨在强化防御的授权红队测试,而非用于攻击第三方系统。
## 许可证
Apache-2.0 — 参见 [LICENSE](LICENSE)。
标签:AI安全, Chat Copilot, LLM, Python, Unmanaged PE, 域名收集, 无后门, 用户代理, 逆向工具, 配置审计, 零日漏洞检测