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, 域名收集, 无后门, 用户代理, 逆向工具, 配置审计, 零日漏洞检测