mhmdtaha091/PentestAI
GitHub: mhmdtaha091/PentestAI
PentestAI是一款结合本地大语言模型和安全知识图谱的自动化Web应用程序安全审计工具。
Stars: 0 | Forks: 0
# PentestAI

[](https://www.python.org/)
[](https://github.com/langchain-ai/langgraph)
[](https://ollama.com/)
[](https://modelcontextprotocol.io/)
[](https://www.docker.com/)
[](LICENSE)
## 灵感来源
每个发布的LLM-pentester要么(a)在边缘API上每扫描一次烧掉美元,要么(b)需要一个数据中心GPU来运行微调模型。PentestAI选择了第三条路:一个**无需微调、RAG增强的代理**,在本地14B模型上运行,该模型适合12 GB的VRAM——并且与云API系统竞争结果。
为了实现这一点,代理依赖于其他没有结合的两个东西:
1. **实时安全知识图谱**——HippoRAG在OWASP / MITRE ATT&CK / CVE上用于*静态*安全知识,以及一个会话图(NetworkX),在扫描过程中将发现作为结构化三元组索引,如`(endpoint, VULNERABLE_TO, sqli)`。利用代理查询这两个,这使小型模型保持专注。
2. **MCP服务器工具层**——通过模型上下文协议公开的23个工具,基于阶段的过滤,使LLM只能看到与其当前步骤相关的工具。没有工具汤,没有上下文爆炸。
## 演示

代理通过一条命令对目标运行完整管道:指纹识别→侦察→扫描器→利用→报告。上面的仪表板显示了针对本地DVWA目标的真实扫描——攻击面图在侦察完成后填充,扫描器选项卡流式传输实时ReAct日志,并在确认时填充发现。
[完整演示视频(3:30)](docs/demo.mp4) · [研究剧本和基准](docs/research.md)
## 构建方式
```
┌────────────────────────┐
│ CLI / Web Dashboard │
└──────────┬─────────────┘
│
┌──────────▼─────────────┐
│ LangGraph Orchestrator│
│ (StateGraph pipeline) │
└──────────┬─────────────┘
│
┌───────────────────────┼────────────────────────┐
│ │ │ │ │
┌──▼──┐ ┌──────▼──┐ ┌──────▼──┐ ┌──────▼──┐ ┌──────▼──┐
│ Fp. │ │ Recon │ │ Scanner │ │ Exploit │ │ Report │
└──┬──┘ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘
│ │ │ │ │
└────────┴───────────┼───────────┴───────────┘
│
┌─────────▼──────────┐
│ MCP Tool Server │ ← 23 tools, phase-filtered
└─────────┬──────────┘
│
┌─────────▼──────────┐
│ Knowledge Graphs │
│ ┌────────────────┐ │
│ │ HippoRAG │ │ ← OWASP / MITRE / CVE
│ │ (static, ~8K │ │
│ │ nodes, 70K │ │
│ │ edges) │ │
│ └────────────────┘ │
│ ┌────────────────┐ │
│ │ Session KG │ │ ← live findings
│ │ (NetworkX) │ │ ← (endpoint, VULN, sqli)
│ └────────────────┘ │
└────────────────────┘
```
**关键部分:**
- **LangGraph协调器**(`agents/orchestrator.py`)——StateGraph通过条件边和动态策略构建在阶段之间路由。
- **自定义ReAct运行器**(`agents/react_runner.py`)——绕过在内容字段中发出工具调用而不是原生`tool_calls`的模型。修剪是发现保留的:任何标记为`[CRITICAL]/[HIGH]/[MEDIUM]/[LOW]`的消息在上下文压力下永远不会丢失。
- **双重知识图谱**(`agents/knowledge_graph.py`,`datasets/`)——静态KG通过HippoRAG(可查询“如何利用X?”);会话KG在扫描过程中索引发现,以便利用代理有一个结构化地图,显示已确认的内容。
- **MCP工具服务器**(`mcp_server/server.py`)——通过模型上下文协议公开23个工具扫描层。任何MCP感知客户端(Claude Desktop,IDE插件)都可以直接驱动PentestAI。
## 与已发布同行相比
PentestAI位于一个没有发布系统占据的细分市场:
| 属性 | PentestAI | 最接近的同行 |
|---|---|---|
| 基础模型 | Qwen2.5-coder:14b(本地) | xOffense: Qwen3-32B微调(A100) |
| 协调 | LangGraph状态机 | VulnBot(规划者/执行者/摘要器) |
| 工具层 | 通过MCP公开的23个工具 | PentestAgent,AutoPentester(自定义工具调用) |
| RAG语料库 | OWASP / MITRE / CVE(HippoRAG) | AutoPentester(HackTricks,+20%子任务收益) |
| 硬件 | RTX 3060 12 GB消费级 | xOffense:A100 80 GB数据中心 |
| 部署 | 首选本地,保护隐私 | 所有同行都使用云API(GPT-4 / Claude) |
PentestGPT、PentestAgent、VulnBot、CHECKMATE、AutoPentester和XBOW的完整基准测试方法和复制指南在`docs/research.md`(docs/research.md)中。
## 快速入门(Docker)
**先决条件**:Docker Desktop,一个具有约12 GB VRAM的NVIDIA GPU(CPU模式可以工作但较慢),以及一个免费的[Gemini API密钥](https://aistudio.google.com/)用于执行摘要。
```
git clone https://github.com/mhmdtaha091/PentestAI.git
cd PentestAI
cp .env.example .env # add your GEMINI_API_KEY
docker compose -f docker-compose.yml -f docker-compose.local.yml up
```
第一次启动将:
1. 拉取`qwen2.5-coder:14b`和`nomic-embed-text`(约10 GB,一次)。
2. 从OWASP / MITRE / CVE数据构建安全知识图谱(约5-20分钟,一次)。
3. 启动API服务器。
当你在日志中看到`Listening on http://0.0.0.0:7860`时:
| 服务 | URL |
|---|---|
| 仪表板 | http://localhost:3000 |
| 后端 | http://localhost:7860 |
| MCP服务器 | `python cli.py mcp-server` |
## 技术栈
**代理核心**:Python 3.11 · LangGraph · LangChain · Ollama(`qwen2.5-coder:14b`) · Gemini(执行摘要) · HippoRAG · NetworkX · MCP
**扫描层**:Playwright · BeautifulSoup · 自定义HTTP模糊测试 · OWASP-Top-10有效负载集 · 外部工具包装器(sqlmap,nmap,nuclei,ffuf,httpx,gobuster,hydra,wpscan,nikto)
**前端**:Next.js · TypeScript · Tailwind · 带KG可视化的实时更新仪表板
**基础设施**:Docker Compose · 每个目标的会话图 · 发现保留的上下文修剪
## 项目状态
诚实地了解这里的情况:
- ✅ **端到端管道在DVWA(低/中/高)和部分Juice Shop覆盖方面工作**。
- ✅ **双重知识图谱是我最引以为豪的部分**——这是14B本地模型与云API系统竞争的地方。
- ✅ **MCP服务器运行**并且可以从任何MCP感知客户端驱动。
- ⚠️ `nmap_scan`和`sqlmap_scan`目前因消费者GPU上的内存压力而在工具适配器中禁用。
- ⚠️ Juice Shop(SPA)和WebGoat需要扫描器端的工作来处理它们的导航模式。
- ⚠️ 报告是功能性的;HTML模板很漂亮,但LaTeX导出很粗糙。
欢迎提交PR——特别是关于现实世界延迟、Juice Shop / WebGoat支持和非Gemini摘要器后端。。
## ⚖️仅限授权使用
PentestAI用于**您拥有或明确获得测试许可的应用程序的安全测试**。该工具包含硬编码的域名允许列表;更广泛的使用需要通过配置进行选择加入。**需要人工介入**——将代理的发现视为调查的线索,而不是已验证的漏洞。
## 许可证
[MIT](LICENSE)——请参阅文件以获取全文。
标签:AI风险缓解, API, Cloudflare, CVE, Dashboard, Docker, GPU, HippoRAG, LLM, LLM评估, MCP-server, MITRE ATT&CK, NetworkX, Ollama, OWASP Top 10, Pentest, Python, RAG, Splunk, Unmanaged PE, 人工智能, 动态知识图谱, 安全测试, 安全知识库, 安全防御评估, 对称加密, 工具集成, 扫描器, 攻击性安全, 攻击面, 数字签名, 数据中心, 数据结构, 无后门, 模型上下文协议, 模型微调, 特征检测, 特权检测, 用户模式Hook绕过, 突变策略, 系统分析, 网络分析, 网络安全, 自动化审计, 请求拦截, 逆向工具, 阶段过滤, 隐私保护