Noshadi-sec/IVF
GitHub: Noshadi-sec/IVF
一个基于 LLM 的多 Agent 安全测试平台,通过模拟企业安全团队层级架构,自动化协调 47 个专家 Agent 执行 SAST、DAST 及网络漏洞扫描任务。
Stars: 0 | Forks: 0
# IVF - 智能漏洞发现器
一个**多 Agent、基于 LLM 的安全测试平台**。CISO 统筹管理
Directors,Directors 指挥 Team Leads,Team Leads 指挥 47 个专家 Agent。每个 Agent
都是一个 LLM 分析师,负责决定运行哪个真实的安全工具,执行它,并
解读输出结果——LLM 是**大脑**,真实的扫描器是**肌肉**。
运行在 **Claude、GPT、Gemini 或免费的本地模型 (Ollama)** 上。你可以通过
CLI 或一个包含四个页面的本地 Web 仪表板来驱动它,在那里你可以构建、调整和管理
整个团队。



## 目录
- [功能介绍](#what-it-does)
- [团队架构(组织架构图)](#the-team-47-agents)
- [安装说明](#install)
- [快速开始 - 仪表板](#quickstart---dashboard)
- [快速开始 - CLI](#quickstart---cli)
- [团队管理(Team 标签页)](#managing-the-team-team-tab)
- [LLM 提供商(包含免费的 Ollama)](#llm-providers)
- [成本管理](#managing-cost)
- [学习机制:知识、记忆与共享大脑](#learning--knowledge-memory-the-shared-brain)
- [配置说明](#configuration)
- [测试报告](#reports)
- [开发与测试](#development-and-tests)
- [项目结构](#project-layout)
## 功能介绍
- **SAST** - 审计源代码(`sast`、`secrets`、`deps`)和 IaC(`terraform`、
`kubernetes`、`container`)。
- **DAST + 网络** - 探测正在运行的应用/主机:侦测、端口/服务/漏洞
扫描、DNS/子域名/邮件安全、全面的 **OWASP Top 10** 和全面的
**OWASP API Security Top 10**,外加一个安全的漏洞利用/验证团队。
- **分析** - 分类评估、战略建议、威胁情报 (CWE/CVE/MITRE)、
修复路线图,以及一个 **Blue-team 安全官**。
- **持续学习** - 知识库 (RAG)、长期记忆、持久的
活动图谱、可查询的共享大脑 (SQLite),以及一个自我改进的 **Coach**。
- **全面管理** - 在仪表板上,你可以开启/关闭组织架构的任何部分,
编辑任何 Agent 的任务,添加你自己的自定义 Agent/团队/Boss,并通过调度指令来引导
经理和 Directors。
## 团队架构 (47 个 Agent)
```
CISO (Super Boss - runs the whole engagement, always on)
|- Offensive Director (Boss)
| |- recon (Manager) : passive_recon, content_discovery
| |- network : port_scan, service_enum, vuln_scan, template_scan,
| | web_infra, subdomain_enum, dns_recon, email_security,
| | smb_enum, waf_detect, tls
| |- web-owasp (A01-A10) : access_control, crypto, injection, xss, design,
| | misconfig, components, auth, integrity, logging, ssrf
| |- api-security (API1-10) : bola, auth, bopla, resource, bfla,
| | business_flow, ssrf, misconfig, inventory, unsafe_consumption
| |- exploitation : validator, exploit_chain
|- Code & Supply-Chain Director (Boss)
| |- code-audit : sast, secrets, deps
| |- cloud-iac : terraform, kubernetes, container
|- Analysis & Advisory Director (Boss)
|- analysis : triage, advisor, threat_intel, remediation, safety_officer
```
这是内置的阵容;你可以在
**Team** 标签页上添加自己的 Agent、团队和 Directors。设计详情请参阅 [ARCHITECTURE.md](ARCHITECTURE.md)。
## 安装说明
```
python3 -m venv .venv && source .venv/bin/activate
pip install -e . # installs the package + deps + the `ivf` / `ivf-web` commands
cp .env.example .env # optional: put your ANTHROPIC_API_KEY here
```
可选:运行 `pip install -e ".[embeddings]"` 以启用语义 RAG,运行 `".[dev]"` 用于测试。
外部扫描器是可选的 CLI 工具——Agent 会检测已安装的工具,并可以
按需安装受信任白名单中的工具(`nmap`、`semgrep`、`sqlmap`、`nuclei`、
`nikto`、`whatweb`、`ffuf`、`testssl.sh`、`trufflehog`、`trivy`、`checkov`、
`subfinder`)。
## 快速开始 - 仪表板
```
ivf-web # auto-picks a free port; open the URL it prints
```
使用 **Ctrl+C** 停止它——而不是 Ctrl+Z(Ctrl+Z 只是将其挂起并继续占用
端口)。重启时,`ivf-web` 会停止之前运行的任何 IVF 服务器并重新使用 8000 端口;
传入 `--keep-others` 可以让它们继续运行,或者传入 `--port N` 来指定端口。
仪表板有四个页面(顶部标签页):
- **Console** - 操作页:连接和保存的密钥、授权范围、目标、运行
选项(带有悬停提示)、实时监控器,以及实时发现的漏洞。点击
某个成员以定义其任务。
- **Classroom** - 团队的所有知识:教授论文、运行 Coach,
以及浏览/阅读/编辑/下载/删除知识库和团队在运行过程中学到的经验教训。
- **Library** - 运行结果:浏览、下载(按文件或按目标的
.zip,或全部下载)和删除报告(按目标、按运行:MD/JSON/SARIF),以及
活动历史记录。
- **Team** - 组织架构图。开启/关闭任何层级(Agent、Manager、Boss);编辑
任何 Agent 的任务;添加/重命名/删除你自己的自定义 Agent、团队和 Boss;并
为 Manager/Boss 提供调度指令。
典型流程:
1. **连接** - 选择一个提供商,粘贴密钥(Ollama 则不需要),设置一个
**预算上限**,然后保存。保存的密钥列在下方;点击其中一个可以切换
提供商,或点击垃圾桶图标将其删除。
2. **授权范围** - 输入一个你被授权测试的目标,然后点击授权。
3. **目标** - 输入相同的 URL/主机(或源代码路径),然后开始测试。
4. 观察成员状态亮起;随时暂停/停止;漏洞发现和花费会实时更新。
5. 打开 **Library** 下载报告,或打开 **Classroom** 进行教学/训练。
**安全演示目标:** `docker run -p 3000:3000 bkimminich/juice-shop`,然后
授权 `http://localhost:3000`。
## 快速开始 - CLI
```
ivf --list-agents # the whole org chart (no key)
ivf --source ./examples --target http://localhost:3000 --plan # dry-run routing
ivf --source ./examples # SAST run (needs a key)
ivf --target http://localhost:3000 # DAST + network run
```
## 团队管理(Team 标签页)
Team 标签页是一个实时的组织架构图,在每个层级都有完全的控制权:
| 层级 | 开启/关闭 | 指令 | 编辑任务(专业方向 + 指令) | 重命名 | 删除 |
|---|---|---|---|---|---|
| **Boss** (Director) | 是 | 是 | - (协调者) | 仅限自定义 | 仅限自定义 |
| **Manager** (Team lead) | 是 | 是 | - (协调者) | 仅限自定义 | 仅限自定义 |
| **Agent** (Member) | 是 | - | 是(内置的保留工具;可重置) | - | 仅限自定义 |
- **开启/关闭** - 禁用整个分支或单个 Agent;它将不再运行。
- **定义任务** - 点击任何成员(在此处或在 Console 上)打开一个弹窗并
编辑其**专业方向**(它负责寻找什么)和**指令**(它应该如何
工作)。内置 Agent 保留其预先绑定的扫描器,并且可以重置为默认状态;
自定义 Agent 完全由你自由编辑和删除。
- **调度指令** - 给 Manager 或 Boss 一个指示(例如“只发送 API
Agent 到 REST endpoint,跳过 Web Agent”)。它引导 Manager 调度哪些 Agent,
并作为上下文向下传递给各个 Agent。
- **构建你自己的团队** - 添加自定义的 Boss、团队和 Agent。自定义 Agent 运行
相同的 Agent 循环,并获得与
内置专家相同的共享工具(知识、记忆、漏洞发现、安装工具)。
## LLM 提供商
在仪表板中切换“大脑”(或在设置中修改 `llm.provider`):
| 提供商 | 密钥 | 成本 | 备注 |
|---|---|---|---|
| **Claude** (Anthropic) | `ANTHROPIC_API_KEY` | 付费 | 默认,质量最佳 |
| **OpenAI / GPT** | `OPENAI_API_KEY` | 付费 | gpt-4o, gpt-4o-mini |
| **Gemini** | `GEMINI_API_KEY` | 免费额度,超出后付费 | gemini-2.0-flash |
| **Ollama** (本地) | 无 | **免费** | 在你的机器上运行 |
**使用 Ollama 免费无限运行:**
```
brew install ollama && ollama pull llama3.1:8b
```
然后在仪表板中:提供商 -> Ollama -> 选择模型 -> 保存。花费保持在
**$0.00**。(本地模型能力较弱;请使用支持工具调用的模型,如 `llama3.1:8b`
或 `qwen2.5`。非常适合免费开发;在最终测试时请切换回 Claude/Gemini。)
## 成本管理
- **预算上限** (`engagement.max_usd`,以及仪表板上的输入框) - 硬性 USD
上限;达到上限时 Agent 将停止。运行进度条显示 `tokens . calls . $spent / $cap`。
- **降低成本的调节选项:** 使用更小的模型(`claude-haiku-4-5`、`gpt-4o-mini`),更低的
`effort`,更少的 `max_iterations`,Manager 的调度指令(减少调度的 Agent),
在 Team 标签页上关闭 Agent,或保持增量重新扫描开启。
- **免费:** Ollama。
## 学习机制 - 知识、记忆与共享大脑
- `search_knowledge` - Agent 读取 `knowledge/`(你教授的 playbook 和论文)。
- `remember` - Agent 将持久的经验教训保存到 `knowledge/memory/`。
- `campaign_graph` - 跨测试活动持久的拓扑/漏洞发现记忆。
- **共享大脑** (`state/ivf.db`, SQLite) - 每一个漏洞发现、经验教训和资产都会
映射到一个可查询的数据库中。在运行期间,Agent 会调用 `query_findings`
(“队友是否已经发现了这个?”)和 `search_memory`(“团队以前学过
这个吗?”),以便它们实时协作并**跳过会消耗
更多额度的工作**。在一个目标上学到的技术可以立即应用到
下一个目标上。Classroom 和 Library 可以浏览所有这些内容。
- **Coach** - 回顾一次测试活动并重写 playbook,以便团队下次测试得
更好。手动运行它(Classroom -> 立即训练团队),或者在
Console 运行选项中开启 **Auto-train**,使其在每次测试活动后运行。
## 配置说明
- **`config/scope.yaml`** - 授权边界(主机、CIDR、URL
前缀、源代码路径)。请先编辑此文件。
- **`config/settings.yaml`** - 提供商/模型/effort、预算上限、
默认启用哪些团队/Agent、并行度、安全门控、增量扫描、
自动训练,以及知识库/状态/报告目录。
数据目录始终解析为项目根目录,因此无论你从哪里启动服务器,团队都会使用相同的
`knowledge/`、`state/` 和 `reports/`。
## 测试报告
写入 `reports/`:
- `reports//findings.md` + `.jsonl` - 随着漏洞发现的产生,**实时**、按站点更新。
- `reports//report-*.md` - 针对特定目标的最终报告。
- `reports/report-*.{md,json,sarif}` - 合并的测试活动报告(用于 CI 的 SARIF)。
从 Library 标签页浏览、下载并删除所有这些内容。
## 开发与测试
```
pip install -e ".[dev]"
pytest # 130 tests, no key/network needed
ruff check src tests
```
CI 在推送时运行两者 (`.github/workflows/ci.yml`)。有关添加
Agent/工具/团队/提供商的信息,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 项目结构
```
src/ivf/
core/ ciso . director . team_lead . agent . analyst . coach . custom_org
llm . providers/ . budget . control . scope . findings
graph . db (shared brain) . live_report . events . message . parallel
tools/ base . report_finding . safety_gate . knowledge . retrieval
db . network . web . code . api . recon . findings . graph . system
teams/ recon . network . web_owasp . api_security . exploitation
code_audit . cloud_iac . analysis . reporting
web/ server (FastAPI) + static dashboard (console/classroom/library/team)
cli.py
config/ scope.yaml . settings.yaml
knowledge/ playbooks + memory (the classroom)
state/ ivf.db (shared brain) . campaign.json . keys.json . org.json [gitignored]
tests/ pytest suite
```
## 作者
由 **Amirhossein Noshadi** 设计和构建 — 这是一个端到端架构的多 Agent LLM 系统:
包含 CISO -> Directors -> Team Leads -> 47 个专家的层级结构,一个
与提供商无关的模型循环(Claude / GPT / Gemini / Ollama),一个持久的
SQLite“共享大脑”,带有模型分层且针对单次活动的成本上限,确定性的
漏洞发现整合和严重性校准,以及一个实时的 Web 控制台。
- 电子邮件:**amir.noshadi.1994@gmail.com**
- LinkedIn:
欢迎探讨**安全工程和应用 AI/LLM 相关职位**以及合作机会。
如果这个项目对你的团队有用,或者你希望对其进行调整或扩展,请与我联系。
## 许可证
MIT - 详见 [LICENSE](LICENSE)。请负责任地使用;请参阅 [SECURITY.md](SECURITY.md)。
标签:DAST, DLL 劫持, SAST, 图数据库, 多智能体, 大语言模型, 安全测试, 实时处理, 密码管理, 恶意软件分析, 插件系统, 攻击性安全, 盲注攻击, 自动化渗透测试, 逆向工具