Manuelvillarvieites/Agentic-Pentesting-Framework

GitHub: Manuelvillarvieites/Agentic-Pentesting-Framework

APF 是一个多智能体 LLM 渗透测试框架,通过七阶段结构化流水线和风险评分加权资源分配,研究阶段驱动的工作流引导能否提升 LLM 端到端渗透测试的有效性和 token 效率。

Stars: 2 | Forks: 0

APF Logo

# 智能体渗透测试框架 (APF) 一个用于自动化渗透测试的多智能体 LLM 框架。APF 通过一个与模型无关的 Python orchestrator 驱动一个 7 阶段的 pipeline —— 策略、侦察、扫描、分支拆分、漏洞利用、验证、报告 —— 该 orchestrator 可以与任何兼容 LiteLLM 的 LLM 以及任何通过 MCP 暴露的安全工具链进行交互。 *学士论文(苏黎世应用科学大学 (ZHAW),2026年)。研究问题:与无引导的单智能体执行相比,结构化的、阶段驱动的工作流引导是否能提升 LLM 进行端到端渗透测试的有效性和 token 效率,并且这种优势是否在能力差异巨大的模型中依然成立 —— 从较弱的开源权重模型 (Gemma 4 26B/31B, Llama 3.3) 到前沿的闭源模型 (Claude Opus 4.7)?* ``` orchestrator.py │ ├── Phase 1 Strategy → storage//session_state.json ├── Phase 2 Reconnaissance → storage//ptt.json ├── Phase 3 Scanning → storage//ptt_extended.json ├── Phase 4 PTT Splitting → storage//ptt_branches.json ├── Phase 5 Exploitation → storage//branch_N/execution.json (parallel) ├── Phase 6 Validation → storage//findings.json (parallel) └── Phase 7 Reporting → storage//report.json ``` 每次运行都会在 `storage/` 下生成一个带有新时间戳的文件夹,并在 `results//report.md` 生成一份确定性的 markdown 总结。完整的 pipeline、agent 格式和 JSON 契约记录在 [docs/architecture.md](docs/architecture.md) 中。 ## 目录 - [快速开始](#quick-start) - [复现论文消融实验](#reproduce-the-thesis-ablations) - [内容索引](#where-to-find-what) - [技术栈](#tech-stack) ## 快速开始 **1 — 克隆并包含子模块** (HexStrike + validation-benchmarks) ``` git clone --recursive https://github.com/Manuelvillarvieites/Agentic-Pentesting-Framework.git cd Agentic-Pentesting-Framework # 如果你已经在没有使用 --recursive 的情况下进行了 clone:git submodule update --init --recursive ``` **2 — 修补上游 XBEN compose-file bug** (一次性操作,幂等) ``` python3 scripts/patch_benchmarks.py ``` **3 — Python 依赖** ``` python3 -m venv .venv && source .venv/bin/activate pip install -r requirements.txt pip install fastmcp requests # host-side MCP adapter deps ``` **4 — API 密钥** (仅限你使用的提供商) ``` cp docker/.env.example docker/.env # 然后编辑 docker/.env ``` **5 — 启动 Docker 技术栈** (LiteLLM + HexStrike-on-Kali) ``` docker compose -f docker/docker-compose.yml up -d ``` **6 — 验证** ``` python3 scripts/orchestrator.py 127.0.0.1 --dry-run curl http://localhost:8889/health # → {"status": "ok"} ``` **7 — 启动一个 XBEN 基准测试目标** (Easy10 LFI 示例,在笔记本上约需 5 分钟) ``` cd external/validation-benchmarks/benchmarks/XBEN-019-24 make build && make run # build (injects the FLAG) + start the container # `docker compose ps` 显示一行 — web 应用将端口 80 发布到一个随机的 host port: # xben-019-24-lfi_static_resource-1 ... 0.0.0.0:49280->80/tcp, [::]:49280->80/tcp # ↑ 这个数字 # 将该 host port 自动提取到 XBEN_PORT 中(照原样复制): export XBEN_PORT=$(docker compose ps | grep -oE '0\.0\.0\.0:[0-9]+->80/tcp' | head -1 | cut -d: -f2 | cut -d- -f1) echo "Benchmark is on http://localhost:${XBEN_PORT}" cd - ``` **8 — 针对该基准测试运行渗透测试** ``` python3 scripts/orchestrator.py host.docker.internal:${XBEN_PORT} \ --allocation weighted --model claude-sonnet-4-6 ``` 完整的设置指南详见 [docs/setup.md](docs/setup.md)。APF 支持的所有命令(按用例分组)详见 [docs/commands.md](docs/commands.md)。 ## 复现论文消融实验 六个主要的 APF 与基线对比扫描 (Claude Opus 4.7, Llama 3.3 70B, Gemma 4 26B × Easy10, Harder20)。有关前置条件、仅 APF / 阶段组合 / 仅基线的后续操作、结果检查命令,以及每次扫描与论文表格的映射关系,请参见 [docs/reproducibility.md](docs/reproducibility.md)。 **设置 Harder20 变量** (在每个 shell 中粘贴一次) ``` export HARDER20="XBEN-002-24,XBEN-006-24,XBEN-009-24,XBEN-029-24,XBEN-030-24,XBEN-034-24,XBEN-035-24,XBEN-038-24,XBEN-039-24,XBEN-040-24,XBEN-054-24,XBEN-056-24,XBEN-057-24,XBEN-060-24,XBEN-069-24,XBEN-077-24,XBEN-078-24,XBEN-080-24,XBEN-084-24,XBEN-097-24" ``` **1 — Claude Opus 4.7 / Easy10** ``` python3 scripts/benchmark_sweep.py -e apf-vs-baseline --model claude-opus-4-7 ``` **2 — Claude Opus 4.7 / Harder20** ``` python3 scripts/benchmark_sweep.py -e apf-vs-baseline --model claude-opus-4-7 --benchmarks $HARDER20 ``` **3 — Llama 3.3 70B / Easy10** (ZHAW Ollama,需要 VPN) ``` python3 scripts/benchmark_sweep.py -e apf-vs-baseline --model llama3.3 ``` **4 — Llama 3.3 70B / Harder20** ``` python3 scripts/benchmark_sweep.py -e apf-vs-baseline --model llama3.3 --benchmarks $HARDER20 ``` **5 — Gemma 4 26B (本地 Ollama) / Easy10** ``` python3 scripts/benchmark_sweep.py -e apf-vs-baseline --model ollama/gemma4:26b ``` **6 — Gemma 4 26B (本地 Ollama) / Harder20** ``` python3 scripts/benchmark_sweep.py -e apf-vs-baseline --model ollama/gemma4:26b --benchmarks $HARDER20 ``` ## 内容索引 | 文档 | 用途 | |----------|---------| | [report/Thesis.pdf](report/Thesis.pdf) | 学士论文(95 页)。LaTeX 源码位于 [report/](report/),可使用 `latexmk -pdf Thesis.tex` 重新构建。 | | [docs/setup.md](docs/setup.md) | 安装:Python, Docker, MCP, API 密钥 | | [docs/commands.md](docs/commands.md) | 按用例分组的全部命令 (verify, pentest, sweeps, inspect, stop) | | [docs/reproducibility.md](docs/reproducibility.md) | 论文消融实验指南 —— 可直接复制粘贴的扫描命令 | | [docs/architecture.md](docs/architecture.md) | 7 阶段 pipeline、agent 格式、skill registry、分配策略 | | [docs/llm-config.md](docs/llm-config.md) | 切换 LLM、LiteLLM、使用 `gemma4:26b` 的本地 Ollama、Llama 3.3 说明 | | [docs/benchmarks.md](docs/benchmarks.md) | XBOW 基准测试 —— Easy10 / Harder20 定义,各目标设置 | | [docs/development.md](docs/development.md) | 模块级别的源码参考,自定义循环 (custom-loop) 原理,开发待办事项 | | [docs/diagrams/](docs/diagrams/) | 论文插图(架构概览、运行时序列图)的可编辑 `.drawio` 源文件和 `.png` 导出文件 —— 相同的 PNG 图片也已嵌入报告中 | | [docs/research/](docs/research/) | 论文产出物 —— 消融实验报告、评估指标、早期图片草稿 | | [docs/meeting-notes/](docs/meeting-notes/) | 每周导师会议纪要(2026年2月至5月),在报告附录中被引用 | | [docs/BA_Timeplan.pdf](docs/BA_Timeplan.pdf) | 项目甘特图时间表(同样嵌入在报告附录中) | | [AGENTS.md](AGENTS.md) | Agent 参考:`task_response` schema、攻击快速参考、FLAG 模式 | | [CLAUDE.md](CLAUDE.md) | 编辑此仓库时 Claude Code 使用的项目规范 | ## 技术栈 | 组件 | 选择 | |-----------|--------| | Orchestrator | Python 3.11, `scripts/orchestrator.py` | | LLM 代理 | LiteLLM (Docker) 运行于 `http://localhost:4000` | | 默认 LLM | 通过 ZHAW Ollama 使用 Llama 3.3 70B(无需 API 密钥);在更强配置下使用 `claude-sonnet-4-6` | | 复现模型 | 通过本地 Ollama 使用 `ollama/gemma4:26b` | | 安全工具 | HexStrike MCP —— Kali Linux 工具包(约 150 个工具),Docker container 运行于 `:8889` | | Web 交互 | Playwright MCP (通过 `npx` 的 stdio) | | 工具路由 | `MCPClientManager` —— 动态发现,零硬编码工具 | ## 另请参阅 - [文档索引](docs/README.md) —— 设置、命令、架构和基准测试的完整指南 - [AGENTS.md](AGENTS.md) —— agent 技术参考 (`task_response` schema, FLAG 模式) - [CLAUDE.md](CLAUDE.md) —— 编辑此仓库时使用的 Claude Code 项目规范
标签:AI风险缓解, DLL 劫持, MCP协议, Python, Web报告查看器, XXE攻击, 反取证, 多智能体, 大语言模型, 安全评估, 实时处理, 密码管理, 无后门, 特征检测, 自动化渗透测试, 请求拦截, 逆向工具