内容
# 格子思维 — MCP原生CTF利用工具包,适用于LLM智能体
格子思维(Lattice Mind)是一个MCP(模型上下文协议)服务器,为LLM(大型语言模型)智能体提供完整的、自动化的漏洞发现和利用流程。智能体不需要运行扫描、管理HTTP会话或手动迭代有效载荷 — 格子思维确定性地处理所有这些任务。智能体的任务是**指导和增强**:提交目标、通过MCP工具监控进度,并在自动化引擎需要更高层次的推理时介入,修改请求、注入会话cookie或回答升级问题。
**自动执行(无需LLM)的内容:**
- 资产分类、网络侦察、技术指纹识别
- YAML树驱动的检测(HTTP探测、信号评估、置信度评分)
- 利用有效载荷排列和旗帜捕获
- 常见漏洞类别的Python决策树回退
**LLM智能体的任务:**
- 通过MCP工具提交挑战并监控运行进度
- 在自动化引擎提出有希望的信号时,修改飞行中的请求(头部、主体、参数)
- 在扫描过程中注入或旋转会话cookie/token
- 选择特定的YAML攻击树进行有针对性的评估
- 在自动化不足时,回答HITL升级问题
每个自动化操作都由规则驱动且可重复;每个LLM干预都通过`run_id`明确跟踪并记录在执行日志中。
## 快速入门
### Docker(本地开发或DigitalOcean部署)
1. 使用所有捆绑工具构建容器镜像:
```powershell
docker compose build lattice-mind-api
```
2. 启动服务(运行API、仪表板和求解器引擎):
```powershell
docker compose up -d
```
3. 确认服务健康:
```powershell
curl http://localhost:8000/health
```
4. 通过API或仪表板(`http://localhost:8000`)提交挑战,例如:
```http
POST /solve
Content-Type: application/json
{
"name": "银行登录",
"challenge_type": "web",
"url": "http://target.com:8080",
"flag_format": "flag{...}"
}
```
5. 尾随日志以观察进度:
```powershell
docker compose logs -f lattice-mind-api
```
日志显示决策节点、有效载荷、捕获的置信度以及任何标志识别事件。
在部署到DigitalOcean时,构建相同的Docker镜像并将其推送到您的容器注册表;可以在DigitalOcean内部或托管的应用平台中使用docker-compose文件,提供端口8000和`/data`的持久性。
### 本地(源码)
1. 安装依赖:
```powershell
python -m pip install -e .
```
2. 运行API:
```powershell
uvicorn lattice_mind.api.server:app --host 0.0.0.0 --port 8000
```
3. 打开`http://localhost:8000`以与仪表板交互或发出`Lattice-Mind` CLI命令。
## MCP集成(适用于AI工具)
格子思维现在配备了一个stdio MCP服务器,因此任何MCP兼容的AI客户端都可以排队扫描和读取决策树结果。
1. 启动API服务(本地或Docker),并确保在保护API路由时可以访问身份验证令牌。
2. 启动MCP服务器:
```powershell
Lattice-Mind-mcp
```
3. 配置您的MCP客户端以运行该命令并传递环境变量(如果需要):
- `LATTICE_MIND_API_BASE_URL`(默认为`http://127.0.0.1:8000`)
- `LATTICE_MIND_MCP_TOKEN`(保护API路由的Bearer令牌)
- `LATTICE_MIND_MCP_TIMEOUT`(秒为单位的HTTP超时时间,默认为`30`)
使用Docker Compose时,MCP现在会自动启动与API:
- 默认开发(热重载):`docker compose up -d`
- 生产配置文件:`docker compose --profile prod up -d`
`lattice-mind-api` / `lattice-mind-dev`容器一起运行两个进程(Web UI/API + MCP),并在容器内将`LATTICE_MIND_API_BASE_URL`预配置为`http://127.0.0.1:8000`。
在Web UI头部,使用**显示令牌**登录后,显示/隐藏`LATTICE_MIND_MCP_TOKEN`的当前JWT。
### 暴露的MCP工具
- `health_check` — 检查API准备情况。
- `submit_scan` — 排队挑战解决运行(`challenge_type`,可选`url`/`file_path`,元数据)。
- `get_run_status` — 检索完整的运行状态、节点时间线、观察结果和标志。
- `list_runs` — 返回最近的运行。
- `list_rules`和`get_rule` — 检查加载的决策树规则。
## 架构
格子思维由以下层组成:
1. **MCP接口** — `mcp/server.py`通过stdio JSON-RPC 2.0公开9种工具(也可在`POST /mcp`上使用)。这是LLM智能体交互的主要接口:提交扫描、轮询进度、检查结果和修改飞行中的请求。
2. **核心编排** — `core/`定义共享数据类型(`ChallengeDescriptor`,`NodeResult`),决策节点基类,漏洞原型的知识库,编排器和标志识别器。
3. **适配器** — 工具适配器(curl,ffuf,nmap等)包装命令行实用程序,以发出规范的JSON,以便决策节点可以推理结构化观察。
4. **决策树** — 分为Python节点(`trees/`)和YAML驱动树(`lattice_mind/trees/yaml/`)。检测和利用路径读取上下文,发出置信度增强,并确定性地分支。
5. **执行引擎** — `lattice_mind/core/executor.py`驱动YAML树,运行HTTP探测,应用利用有效载荷,并在每个响应后检查标志模式。
6. **API + UI** — `lattice_mind/api/server.py`公开REST端点,持久化运行历史(SQLite),并托管用于实时树播放和HITL问题回答的赛博朋克仪表板。
```mermaid
flowchart LR
Agent[LLM 智能体]
MCP[MCP 工具]
Agent -->|"submit_scan / mutate_request"| MCP
MCP --> Solver[MVPSolver]
Solver --> Asset[资产分类]
Asset --> Recon[侦察 & 置信度种子]
Recon --> Detection[YAML 树检测]
Detection --> Exploitation[优先利用路径]
Exploitation --> Flag[标志识别器]
Flag -->|匹配| Halt[返回标志给智能体]
Exploitation -->|无标志| HITL[HITL 升级]
HITL -->|智能体回答| Exploitation
MCP -->|"get_run_status / wait_for_run"| Agent
```
## 文件结构(高级别)
| 路径 | 目的 |
|------|---------|
| `core/` | 共享编排逻辑,标志识别,节点抽象,知识库。 |
| `adapters/` | 工具适配器(curl,ffuf,nmap,gdb包装器)返回结构化字典。 |
| `trees/` | 遗留Python决策树,用于侦察,SQLi,SSTI等。 |
| `lattice_mind/trees/yaml/` | 基于YAML的检测/利用定义(即插即用)。 |
| `api/` | FastAPI服务器,REST端点,仪表板静态资产。 |
| `templates/` | 节点使用的利用辅助模板(ROP链,RSA攻击)。 |
| `config.py` | 全局常量(标志正则表达式,工具路径,功能标志)。 |
| `mvp.py` | 顶级求解器循环,连接资产分类,YAML调度,遗留节点。 |
## 工作原理
1. **智能体提交挑战** — LLM智能体通过MCP调用`submit_scan`,带有`ChallengeDescriptor`(类型,URL/文件,标志格式,元数据)。这会返回一个`run_id`。
2. **自动资产分类** — 引擎在智能体不参与的情况下对挑战进行分类(web/pwn/crypto/forensics)。
3. **自动侦察和置信度种子** — 侦察节点填充上下文(路径,参数,技术栈)。每个YAML树的`applies_when`守卫和`confidence_seeds`被评估,以评分和排名适用树。
4. **自动YAML树调度** — 检测路径运行HTTP探测,具有有效载荷排列,检查响应信号,并发出命名事件以解锁利用路径。所有这些都在智能体不干预的情况下运行。
5. **智能体增强点** — 在运行的任何时候,智能体都可以:
- 调用`set_session_cookies`在扫描过程中注入或旋转身份验证令牌/cookie
- 调用`mutate_request`检查和修改暂停的出站请求,然后再发送
- 通过`submit_scan`中的`selected_tree_ids`选择特定的树
6. **利用优先级** — 利用路径按置信度排序。执行器应用有效载荷,通过`{{ captures.KEY }}`替换捕获值进行多步骤链,并在每个响应后检查标志识别器。
7. **智能体监控进度** — 智能体调用`wait_for_run`或轮询`get_run_status`以接收标志,观察结果和步骤时间线。
8. **HITL升级** — 当自动化不足时,引擎暂停并通过`GET /hitl/pending`提出问题。智能体(或通过仪表板的人类)回答以解除求解器的阻塞。
## 测试
所有Python测试脚本现在都位于`tests/`下。运行测试套件:
```powershell
pytest tests/
```
该目录包含部署、API和利用树验证器,它们在没有外部网络依赖的情况下导入核心模块和适配器。
## AI研究人员提示蓝图
以下提示概述了如何指示AI研究人员发现新的TTP并将其编码为YAML决策树。在您自己的研究笔记中包含这些细节,但**不要**在格子思维中运行提示:
> 您是一名CTF利用研究人员和决策树作者。您的任务是搜索互联网上的现实世界攻击技术、CTF总结和安全TTP,然后将它们编码为可执行的YAML决策树,供`Lattice Mind`框架使用。
>
> 搜索CTF相关的利用技术,涵盖以下类别。对于每种技术,找到真实的总结(HackTheBox,TryHackMe,CTFtime,GitHub),OWASP测试案例,PayloadsAllTheThings条目,HackTricks文档,Exploit-DB条目和PortSwigger实验室。
>
> 优先考虑的利用技术包括SSTI(Jinja2,Twig,Freemarker,Pebble),SSRF,开放重定向,路径遍历,XXE,IDOR,JWT攻击,破坏的访问控制,CSRF,HTTP请求走私,GraphQL注入,反序列化,ret2libc,堆利用,填充预言,弱RNG,RSA小e/维纳攻击,LSB隐写术,元数据提取,binwalk,PCAP分析和逆向工程。
>
> 记录现有的YAML树以避免重复(例如,`web_sqli`,`web_lfi`,`web_cmdi`,`web_xss`)。
>
> 遵循Lattice Mind提供的确切模式:元数据(id,name,category,version,author,description),`applies_when`,`min_confidence`,`stop_on_flag`,`confidence_seeds`,`detection_paths`和`exploitation_paths`,具有有序步骤,有效载荷排列和信号匹配指令。
遵守此蓝图确保社区研究贡献可以立即被引擎消费,转换为yaml文件。