kogmau/ctf-suite

GitHub: kogmau/ctf-suite

一个基于LLM的阶段驱动型渗透测试编排器,通过状态机和操作员控制门实现人机协作的安全测试自动化。

Stars: 0 | Forks: 0

# CTF 渗透测试套件 一个智能化的渗透测试编排器 —— 一个阶段驱动的状态机,能够运行你已经在使用的工具,并让操作员始终参与其中。 [![Python](https://img.shields.io/badge/Python-3.11+-3776AB?logo=python&logoColor=white)](https://python.org) [![Version](https://img.shields.io/badge/version-0.9.59-orange)]() [![Platform](https://img.shields.io/badge/platform-Linux-informational?logo=linux&logoColor=white)]() [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](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, 大语言模型, 实时处理, 密码管理, 数据泄露, 无后门, 状态机, 自动化编排