rakshit9/RedHive
GitHub: rakshit9/RedHive
基于 LLM 多 Agent 架构的自主 Web 渗透测试平台,能端到端地发现、验证、修复漏洞并自动发起修复 PR。
Stars: 0 | Forks: 0
# 🐝 RedHive
### 自主多 Agent 渗透测试 —— 端到端地发现、证明并**修复**漏洞。
将一个 AI Agent 团队指向 Web 目标。它们会映射攻击面,派遣**并行的专业 Agent 集群**进行测试,验证每个发现以消除误报,编写 PoC + 复现步骤 + 修复方案,并发起一个带有修复代码的 **GitHub pull request**。
[架构](#-architecture) · [快速开始](#-quickstart) · [工作原理](#-how-an-engagement-runs) · [测试数据](#-the-numbers-measured) · [API](#-api)
## ⚠️ 仅限授权使用
**RedHive 是一款攻击性安全工具。请仅将其指向您拥有或明确获得授权测试的系统。**
每个 Agent 和工具都通过一个统一的 scope guard(`redhive/scope.py`)进行路由。除非目标是内置的练习主机**或者**是组织**已证明其拥有**(通过 DNS TXT / HTTP 文件验证)的域名,否则**在发送任何数据包之前**就会拒绝该目标。开箱即用时,仅练习目标在允许范围内——内置的漏洞演示应用、`localhost` 和 OWASP Juice Shop。在大多数司法管辖区,未经授权扫描系统是非法的。
## 简介
RedHive 是新兴的**“自主渗透测试”**类别的一个可运行的多租户 SaaS 实现——与 [MindFort](https://www.mindfort.ai)、XBOW 和 Horizon3.ai 处于同一产品领域。其核心理念是:软件发布的速度超过了安全团队审查的速度,因此安全测试必须变得**持续、自主且自我修复**。
它自动化完成了人类红队会执行的完整闭环:
……并且每次重新扫描时都会变得更聪明(它会记住之前的发现,并报告哪些是**新增的 / 复发的 / 已修复的**)。
## ✨ 核心亮点
| | |
|---|---|
| 🧠 **分层多 Agent 系统** | 一个基于 LangGraph 的状态机:LLM **Lead** 规划,集群执行,LLM **Validator** 进行分类,最后由 Reporter / Patch / Strategist agent 完成任务。 |
| ⚡ **并行 Agent 集群** | Lead 通过 LangGraph 的 `Send` map-reduce 为**每个(endpoint × 漏洞类别)**分发一个专业 agent —— **数十个 Agent 并发运行**(实测:每次扫描 50–115 个,比顺序执行快约 10 倍)。 |
| 🛡️ **有证据支撑的发现** | 每个发现都附带证据、复现步骤和由 LLM 生成的修复方案 —— 经过验证以保持低误报率。 |
| ⚔️ **漏洞利用链 + 风险评分** | Strategist agent 会推理各项发现如何串联成真实的攻击路径,并计算出 0–100 的风险评分。 |
| 🔧 **自动修复 → GitHub PR** | 为首要发现草拟修复方案,并在已连接的仓库中发起真实的 pull request(token 在静止时加密)。 |
| 🧗 **HillClimb 记忆** | 跨扫描差异比对会将发现标记为 `new` / `recurring` / `fixed`,因此平台运行次数越多越有用。 |
| 🔐 **第一天就支持多租户** | 支持组织、用户、API 密钥、按组织进行**域名所有权验证**以及配额计划。 |
| 💸 **Token + 成本追踪** | 每次扫描都会准确报告其消耗的 LLM token 数量和预估的 USD 成本。 |
| 🏗️ **为扩展而生** | API 仅负责*入队*;一个独立的 worker 池通过 Postgres 队列(`FOR UPDATE SKIP LOCKED`)拉取任务 —— 添加 worker 即可实现水平扩展。 |
## 🖥️ 仪表盘
一个带有实时扫描功能的 Next.js 仪表盘:**实时 Agent 集群可视化工具**(观看 agent 点亮并并行解决),风险仪表,可展开的发现列表,攻击链和 patch-diff 视图,目标/所有权管理,API 密钥以及 GitHub 集成。
## 🏛️ 架构
```
┌──────────────┐ out of scope
target ────▶│ Orchestrator │──────────────▶ END
└──────┬───────┘
│ in scope
▼
┌────────┐ ┌──────┐ ┌─────────────┐ ══ Send × N ══▶ ┌───────┐
│ Recon │──▶│ Lead │──▶│ plan_probes │ ─────────────────▶ │ probe │ ┐
└────────┘ └──────┘ └─────────────┘ │ probe │ ┤ (parallel
crawl + LLM plan fan out one agent per │ probe │ ┘ swarm,
path-disc. (endpoint × vuln class) └───┬───┘ ≤12 concurrent)
▼ reduce
┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐
│ Strategist│◀──│ Patch │◀──│ Reporter │◀── finish ─│ lead_review│◀── ┌───────────┐
│ chains + │ │ fixes + │ │ remediation│ ▲ loop └───────────┘ │ aggregate │
│ risk score│ │ GitHub PR │ └───────────┘ │ deepen ▲ └─────┬─────┘
└─────┬─────┘ └───────────┘ └───────────────┘ │
▼ ┌───────────┐ │
END │ Validator │◀──────────┘
└───────────┘ confirm / dedupe
```
**测试阶段是一个 map-reduce 集群。** `plan_probes` 将攻击面扩展为 N 个任务;`fan_out_probes` 为每个任务发出一个 LangGraph `Send`,以便探测 agent(HeadersAgent、XSSAgent、SQLiAgent、TLSAgent、CVEAgent 等)**在一个超级步骤中并发运行**;结果通过 `operator.add` reducer 通道合并;`aggregate` 将它们重新汇总。信号量限制了同时访问目标的数量。探测集群使用**零 LLM token** —— 只有编排 agent(Lead、Validator、Reporter、Patch、Strategist)会调用模型 —— 因此成本随*发现数量*而不是扫描规模而扩展。
## 🔁 执行流程
1. **Recon** — 爬取目标*并*探测常见路径的字典文件,以映射更广泛的攻击面;对技术栈进行指纹识别。
2. **Lead (LLM)** — 对攻击面进行推理并决定测试内容。
3. **集群** — 为每个(endpoint × 检查项)并行分派一个专业 agent。
4. **Validator** — 确认真实发现,合并重复项/全站问题。
5. **Lead 审查 (LLM)** — 决定是否循环进行更深层次的扫描(更广泛的覆盖)或结束。
6. **Reporter (LLM)** — 为每个发现编写可操作的修复方案。
7. **Patch (LLM)** — 为首要发现草拟修复方案;可选择发起 GitHub PR。
8. **Strategist (LLM)** — 将发现串联成攻击路径并对整体风险进行评分。
结果通过 SSE 实时流式传输并持久化到 Postgres;重新扫描时会与历史记录进行比对 (HillClimb)。
## 🧱 技术栈
| 层级 | 技术 |
|---|---|
| Agent 编排 | **LangGraph** + LangChain(提供商灵活:支持 OpenAI **或** Anthropic Claude) |
| API | **FastAPI** + SSE,API 密钥和会话身份验证,多租户 |
| 持久化 | **PostgreSQL** + SQLAlchemy 2.0 ORM + **Alembic** 迁移 |
| Worker | 基于 Postgres 的任务队列(`FOR UPDATE SKIP LOCKED`) |
| 前端 | **Next.js** (App Router) + Tailwind |
| 基础设施 | **Docker Compose**;通过 GitHub Actions 进行 CI |
| 扫描 | httpx + BeautifulSoup |
## 🚀 快速开始
**前置条件:** Python 3.12+,Node 18+,可访问的 Postgres,以及一个 LLM 密钥。
```
# 1. 安装
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
cd ui && npm install && cd ..
# 2. 配置
cp .env.example .env # set OPENAI_API_KEY (or LLM_PROVIDER=claude + ANTHROPIC_API_KEY)
# 3. 使用单条命令启动一切
make dev # or: ./scripts/dev.sh
```
这将启动 **API** (`:8000`)、一个 **worker**、**仪表盘** (`:3000`) 以及内置的**漏洞演示目标** (`:8780`),并应用数据库迁移。
然后打开 **http://localhost:3000**,注册,并扫描 **`http://localhost:8780`** —— 您将看到约 50 个 agent 并行展开,并返回约 28 个发现(XSS、SQLi、暴露的 `.env`、缺失的 headers 等)、攻击链以及建议的修复方案。
### 全部在 Docker 中运行
```
docker compose up -d --build # db + api (migrates on start) + worker + demo-target + juiceshop
```
### 通过 API 驱动
```
# 注册 -> session token + 一次性 API key
curl -s -X POST localhost:8000/auth/signup -H 'content-type: application/json' \
-d '{"org_name":"Acme","email":"you@acme.com","password":"password123"}'
# 加入扫描队列
curl -s -X POST localhost:8000/scans -H "authorization: Bearer rh_..." \
-H 'content-type: application/json' -d '{"target":"http://localhost:8780"}'
# 关注实时 agent 日志 (SSE),然后读取结果
curl -N localhost:8000/scans/
作为自主渗透测试类别的一个可用切片而构建。仅限授权的练习目标。
标签:CISA项目, DLL 劫持, Splunk, Web安全, 多智能体, 大语言模型, 密码管理, 数据展示, 测试用例, 版权保护, 红队, 自动化漏洞扫描, 蓝队分析, 运行时操纵, 逆向工具, 配置审计