kogmau/ctf-suite
GitHub: kogmau/ctf-suite
一个基于LLM的阶段驱动型渗透测试编排器,通过状态机和操作员控制门实现人机协作的安全测试自动化。
Stars: 0 | Forks: 0
# CTF 渗透测试套件
一个智能化的渗透测试编排器 —— 一个阶段驱动的状态机,能够运行你已经在使用的工具,并让操作员始终参与其中。
[](https://python.org)
[]()
[]()
[](LICENSE)
**English** · [Português](README.pt-BR.md)
## 项目简介
大多数渗透测试自动化只是一个 bash 脚本,将一个工具的输出通过管道传递给下一个工具,然后给你留下一大堆输出。本套件是一个**带有操作员控制门的状态机**:它会经历定义好的各个阶段,根据证据决定应该运行哪些模块,并在执行任何重要操作之前停下来询问你。
LLM 负责推理并起草命令。**由操作员下达指令。**
## 阶段
```
SCAN → RECON → REVIEW → MODULE_RUN → RESEARCH → ASSESS → REPORT
```
| 阶段 | 发生的操作 |
|---|---|
| `SCAN` | 表面扫描 — `whatweb`、OSINT、ZAP |
| `RECON` | 构建完整的目标状态和基线假设 |
| `REVIEW` | **操作员控制门。** 展示线索;没有你的许可不会执行任何操作 |
| `MODULE_RUN` | 模块注册表仅触发由证据触发的模块 |
| `RESEARCH` | CVE 查找和攻击向量研究 |
| `ASSESS` | 对发现的问题和攻击链进行评分 |
| `REPORT` | 发现结果摘要 |
任何运行都可以暂停,并通过 `--resume` 重新恢复,该命令会读取 `pipeline_state.json`。
## 安装
```
git clone https://github.com/kogmau/ctf-suite.git
cd ctf-suite
./install.sh
```
安装程序会在 `/usr/local/bin` 中创建符号链接(`ctf-suite`、`ctf-scan`、`ctf-webscan`、`wifi-scan`、`wifi-agent`),安装 `pydantic`,并创建带有 API 密钥占位符的 `~/.pentest_keys` 文件。
## 用法
```
# Host / IP 目标
ctf-suite --mode htb --ip 10.10.10.10 --workspace box01
# Web 目标
ctf-suite --mode web --url https://example.com --workspace app01
# 独立 Web 扫描,无 orchestrator
ctf-webscan https://example.com --fuzz=slow
```
### 重要标志
| 标志 | 取值 | 效果 |
|---|---|---|
| `--hitl` | `autonomous` · `assisted` · `interactive` | 决定代理在询问你之前执行多少操作 |
| `--fuzz` | `fast` · `medium` · `slow` | 字典深度和请求发送频率 |
| `--maestro` | preset | 整体激进度配置 |
| `--creds` | `USER:PASS` | 已知凭据,可重复使用 |
| `--objective` | free text | 引导代理朝向既定目标 |
| `--lang` | `pt` · `en` | 界面语言 |
| `--resume` | — | 从已保存的流水线状态继续 |
| `--no-zap` | — | 禁用 ZAP 集成 |
运行 `ctf-suite --help` 获取完整列表。
## 模块注册表
包含十六个模块家族,由证据触发,而非固定的检查清单:
`apache` · `api` · `cloud` · `firmware` · `ftp` · `mssql` · `mysql` · `php` · `smb` · `ssh` · `tomcat` · `web` · `wifi` · `windows` · `wireless` · `wordpress`
模块会声明什么样的证据会触发它。如果目标状态中从未出现该触发条件,则该模块永远不会运行——这保证了运行规模与实际存在的证据成正比。
## 战术副驾驶
`agent/copilot.py` 是将其与带编号菜单区分开来的层级。它将发现结果组织成一棵树,包含严重程度、置信度、标签和证据;识别从目标中浮现出的**上下文**(`web_auth`、`api_surface`、`windows_domain`);并对**攻击链**进行评分——一个存在漏洞的版本加上一个敏感的工件再加上一个已知的凭据,组合起来会得到高分,而其中任何一项单独存在则不会。
## 系统要求
Linux 上的 Python 3.11+,以及你的任务所需且位于 `PATH` 中的任何外部工具:
`nmap` · `whatweb` · `zaproxy` · `ffuf` · `gobuster` · `nuclei` · `sqlmap` · `nikto` · `wpscan` · `hydra` · `subfinder` · `curl`
无线模块还需要 `airodump-ng` 和 `aircrack-ng`。
缺失的工具会降低运行效果,而不是导致运行中断——依赖于缺失二进制文件的模块将被跳过。
## LLM 配置
推理过程运行在 Groq 托管的模型上。密钥按以下顺序读取:
1. `GROQ_API_KEYS`(逗号分隔的密钥池)
2. `GROQ_API_KEY`(单个密钥)
3. `~/.pentest_keys`
**本代码库中不存储任何密钥。** `install.sh` 会向 `~/.pentest_keys` 写入一个模式为 `600` 的占位符。
当你更倾向于使用已经打开的会话而不是 API 密钥时,该套件还可以通过 `agent/browser_profiles/` 中的配置文件来驱动基于浏览器的助手。
## 自我测试
```
python3 self_test.py
```
报告哪些外部工具位于 `PATH` 中、密钥是否已加载,以及哪些模块已注册。
## 状态
`v0.9.59`。正致力于发布 v1.0 版本,该版本将范围缩小至漏洞映射和预设凭据测试。
## 许可证
Apache-2.0 — 详见 [LICENSE](LICENSE)。
该许可证授予你使用、修改和重新分发代码的权利。对于你使用该代码所指向的系统,它不授予你任何权利——请参阅顶部的警告。标签:DLL 劫持, GitHub, Python, 大语言模型, 实时处理, 密码管理, 数据泄露, 无后门, 状态机, 自动化编排