M507/RamiGPT

GitHub: M507/RamiGPT

RamiGPT 是一个利用 AI 大模型在 SSH 目标上自动完成 Linux 权限提升并对多模型进行基准对比的攻击性安全 agent。

Stars: 861 | Forks: 191

# RamiGPT **RamiGPT** 是一个由 AI 驱动的攻击性安全 agent,旨在攻破 root 账户。借助 [PwnTools](http://github.com/Gallopsled/pwntools) 和 OpwnAI 的能力,RamiGPT 成功闯过了 [VulnHub](https://www.vulnhub.com/) 中多个系统的权限提升场景,并在不到一分钟的时间内获得了 root 访问权限。 ## 协作基准测试结果 **仅实时数据** —— 以下部分根据 [`data/benchmark/results/`](data/benchmark/results/) 下的真实运行记录(单次运行的 `result.json` 记录表 + [`master.json`](data/benchmark/results/master.json))重新生成。当你想与团队共享结果时,请提交更新后的记录表(无自动 git 操作)。 各场景的详细分类(配置 · 角色 · 目标 · 工具)以及相同的整体/配置表也位于 [`benchmark.md`](benchmark.md) 中。 **协作合并原理:** 每次运行都是 `data/benchmark/results/` 下的一个记录表。当主表重新构建时,如果运行之间共享以下条件,它们将**合并到相同的统计数据中**: - **模型 `key_name`** —— 权重 + modelfile 参数(注册表位于 [`data/benchmark/models/`](data/benchmark/models/)) - **硬件实验室配置** —— `.env` 中的 `BENCHMARK_GPU_*`(GPU 名称、VRAM MiB、驱动程序、CUDA) - **场景** —— 角色、目标和工具 `BENCHMARK_GPU_POWER_LIMIT` 会记录在每次运行记录表上,但**不会**影响合并键(相同的 GPU 实验室配置即使在功率上限不同时也会合并)。 **计入通过率的指标:** 仅包含**获得 root** 和**实际运行超时**。像 `ai_provider_error`、`max_requests`、工具上传失败以及其他基础设施/设置错误等中止情况会被记录,但从通过率和平均耗时中排除。 可见的 **profile**(配置)标签格式为 `key_name · GPU · VRAM · …`。相同的配置 + 场景 → 合并统计。不同的模型配置或 GPU 实验室 → 独立的配置行。 示例文件格式(未合并到实时主表中):[`data/benchmark/examples/`](data/benchmark/examples/)。 _最后更新:2026-07-29T13:32:28.551768+00:00 · 41 次运行 · [完整 JSON](data/benchmark/results/master.json)_ **目录:** 10 个模型 key,10 个配置(模型 + 硬件),1 个角色,285 个目标,1 个工具,2 个硬件配置 _身份标识:**模型 `key_name`** = 权重 + modelfile 参数(注册表)。**配置** = 模型 `key_name` · GPU 实验室(`BENCHMARK_GPU_*`)。当配置 + 角色 + 目标 + 工具全部匹配时,运行记录将进行合并。_ #### 整体情况 — openrouter-deepseek-deepseek-v3.2 · Online AI Service | 指标 | 数值 | |--------|------:| | 观测次数 | 23 | | 运行次数 | 3 | | 通过率 (尝试) | 46.7% | | 获得 root 率 | 63.6% | | 获得 root 计数 | 7 | | 中位耗时 (s) | 181.077 | | 平均耗时 (s) | 116.223 | | 达到 root 平均 token 数 | 6,148 | | 达到 root 中位 token 数 | 3,027 | | 达到 root 平均耗时 | 42.034 | | 达到 root 平均 AI 请求数 | 5.429 | | 达到 root 平均命令数 | 2.143 | | 达到 root 每秒 token 数 | 146.273 | #### 整体情况 — openwebui-deepseek-r1-14b · Online AI Service | 指标 | 数值 | |--------|------:| | 观测次数 | 82 | | 运行次数 | 6 | | 通过率 (尝试) | 15.4% | | 获得 root 率 | 15.8% | | 获得 root 计数 | 12 | | 中位耗时 (s) | 181.090 | | 平均耗时 (s) | 222.133 | | 达到 root 平均 token 数 | 4,921 | | 达到 root 中位 token 数 | 5,229 | | 达到 root 平均耗时 | 396.196 | | 达到 root 平均 AI 请求数 | 1.417 | | 达到 root 平均命令数 | 1.083 | | 达到 root 每秒 token 数 | 12.421 | #### 整体情况 — openwebui-openai-gpt-3.5-turbo-latest · Online AI Service | 指标 | 数值 | |--------|------:| | 观测次数 | 153 | | 运行次数 | 12 | | 通过率 (尝试) | 54.5% | | 获得 root 率 | 55.3% | | 获得 root 计数 | 42 | | 中位耗时 (s) | 80.691 | | 平均耗时 (s) | 96.735 | | 达到 root 平均 token 数 | 0 | | 达到 root 中位 token 数 | 0 | | 达到 root 平均耗时 | 65.773 | | 达到 root 平均 AI 请求数 | 7.095 | | 达到 root 平均命令数 | 5.690 | | 达到 root 每秒 token 数 | 0.000 | #### 整体情况 — openwebui-openai-gpt-4-turbo-latest · Online AI Service | 指标 | 数值 | |--------|------:| | 观测次数 | 59 | | 运行次数 | 3 | | 通过率 (尝试) | 31.2% | | 获得 root 率 | 33.3% | | 获得 root 计数 | 5 | | 中位耗时 (s) | 181.183 | | 平均耗时 (s) | 134.288 | | 达到 root 平均 token 数 | 0 | | 达到 root 中位 token 数 | 0 | | 达到 root 平均耗时 | 31.030 | | 达到 root 平均 AI 请求数 | 5.400 | | 达到 root 平均命令数 | 4.400 | | 达到 root 每秒 token 数 | 0.000 | #### 整体情况 — openwebui-openai-gpt-4o-latest · Online AI Service | 指标 | 数值 | |--------|------:| | 观测次数 | 38 | | 运行次数 | 2 | | 通过率 (尝试) | 100.0% | | 获得 root 率 | 100.0% | | 获得 root 计数 | 11 | | 中位耗时 (s) | 5.009 | | 平均耗时 (s) | 27.955 | | 达到 root 平均 token 数 | 0 | | 达到 root 中位 token 数 | 0 | | 达到 root 平均耗时 | 27.955 | | 达到 root 平均 AI 请求数 | 4.182 | | 达到 root 平均命令数 | 1.455 | | 达到 root 每秒 token 数 | 0.000 | #### 整体情况 — openwebui-openai-gpt-4o-mini-latest · Online AI Service | 指标 | 数值 | |--------|------:| | 观测次数 | 57 | | 运行次数 | 3 | | 通过率 (尝试) | — | | 获得 root 率 | — | | 获得 root 计数 | 0 | | 中位耗时 (s) | — | | 平均耗时 (s) | — | | 达到 root 平均 token 数 | — | | 达到 root 中位 token 数 | — | | 达到 root 平均耗时 | — | | 达到 root 平均 AI 请求数 | — | | 达到 root 平均命令数 | — | | 达到 root 每秒 token 数 | — | #### 整体情况 — openwebui-openai-gpt-5-latest · Online AI Service | 指标 | 数值 | |--------|------:| | 观测次数 | 58 | | 运行次数 | 3 | | 通过率 (尝试) | 25.0% | | 获得 root 率 | 25.8% | | 获得 root 计数 | 8 | | 中位耗时 (s) | 61.037 | | 平均耗时 (s) | 96.697 | | 达到 root 平均 token 数 | 0 | | 达到 root 中位 token 数 | 0 | | 达到 root 平均耗时 | 64.496 | | 达到 root 平均 AI 请求数 | 1.375 | | 达到 root 平均命令数 | 1.250 | | 达到 root 每秒 token 数 | 0.000 | #### 整体情况 — openwebui-openai-gpt-5-mini-latest · Online AI Service | 指标 | 数值 | |--------|------:| | 观测次数 | 19 | | 运行次数 | 1 | | 通过率 (尝试) | 0.0% | | 获得 root 率 | 0.0% | | 获得 root 计数 | 0 | | 中位耗时 (s) | 181.084 | | 平均耗时 (s) | 181.105 | | 达到 root 平均 token 数 | — | | 达到 root 中位 token 数 | — | | 达到 root 平均耗时 | — | | 达到 root 平均 AI 请求数 | — | | 达到 root 平均命令数 | — | | 达到 root 每秒 token 数 | — | #### 整体情况 — openwebui-openai-gpt-5.2-latest · Online AI Service | 指标 | 数值 | |--------|------:| | 观测次数 | 326 | | 运行次数 | 4 | | 通过率 (尝试) | 24.9% | | 获得 root 率 | 25.0% | | 获得 root 计数 | 60 | | 中位耗时 (s) | 181.209 | | 平均耗时 (s) | 153.241 | | 达到 root 平均 token 数 | 0 | | 达到 root 中位 token 数 | 0 | | 达到 root 平均耗时 | 68.189 | | 达到 root 平均 AI 请求数 | 6.317 | | 达到 root 平均命令数 | 2.983 | | 达到 root 每秒 token 数 | 0.000 | #### 整体情况 — openwebui-qwen3-14b · Online AI Service | 指标 | 数值 | |--------|------:| | 观测次数 | 76 | | 运行次数 | 4 | | 通过率 (尝试) | 2.8% | | 获得 root 率 | 3.0% | | 获得 root 计数 | 2 | | 中位耗时 (s) | 181.197 | | 平均耗时 (s) | 189.360 | | 达到 root 平均 token 数 | 5,145 | | 达到 root 中位 token 数 | 5,145 | | 达到 root 平均耗时 | 138.554 | | 达到 root 平均 AI 请求数 | 1.000 | | 达到 root 平均命令数 | 1.000 | | 达到 root 每秒 token 数 | 37.134 | #### 配置 | 配置 | n | 通过 | 获得 root | 中位耗时 | Token→root | 耗时→root | AI 请求→root | |---------|--:|-----:|---------:|-----------:|------------:|-----------------:|------------:| | openwebui-openai-gpt-4o-latest · Online AI Service | 38 | 100.0% | 100.0% | 5.009 | 0 | 27.955 | 4.182 | | openwebui-openai-gpt-3.5-turbo-latest · Online AI Service | 153 | 54.5% | 55.3% | 80.691 | 0 | 65.773 | 7.095 | | openrouter-deepseek-deepseek-v3.2 · Online AI Service | 23 | 46.7% | 63.6% | 181.077 | 6,148 | 42.034 | 5.429 | | openwebui-openai-gpt-4-turbo-latest · Online AI Service | 59 | 31.2% | 33.3% | 181.183 | 0 | 31.030 | 5.400 | | openwebui-openai-gpt-5-latest · Online AI Service | 58 | 25.% | 25.8% | 61.037 | 0 | 64.496 | 1.375 | | openwebui-openai-gpt-5.2-latest · Online AI Service | 326 | 24.9% | 25.0% | 181.209 | 0 | 68.189 | 6.317 | | openwebui-deepseek-r1-14b · Online AI Service | 82 | 15.4% | 15.8% | 181.090 | 4,921 | 396.196 | 1.417 | | openwebui-qwen3-14b · Online AI Service | 76 | 2.8% | 3.0% | 181.197 | 5,145 | 138.554 | 1.000 | | openwebui-openai-gpt-5-mini-latest · Online AI Service | 19 | 0.0% | 0.0% | 181.084 | — | — | — | | openwebui-openai-gpt-4o-mini-latest · Online AI Service | 57 | — | — | — | — | — | — | #### Token 效率最高的配置(达到 root 平均 token 数最低) | 配置 | Token→root | 获得 root | n | |---------|------------:|---------:|--:| | openwebui-openai-gpt-3.5-turbo-latest · Online AI Service | 0 | 55.3% | 153 | | openwebui-openai-gpt-4-turbo-latest · Online AI Service | 0 | 33.3% | 59 | | openwebui-openai-gpt-4o-latest · Online AI Service | 0 | 100.0% | 38 | | openwebui-openai-gpt-5-latest · Online AI Service | 0 | 25.8% | 58 | | openwebui-openai-gpt-5.2-latest · Online AI Service | 0 | 25.0% | 326 | | openwebui-deepseek-r1-14b · Online AI Service | 4,921 | 15.8% | 82 | | openwebui-qwen3-14b · Online AI Service | 5,145 | 3.0% | 76 | | openrouter-deepseek-deepseek-v3.2 · Online AI Service | 6,148 | 63.6% | 23 | ![RamiGPT 完整 AI 循环](https://static.pigsec.cn/wp-content/uploads/repos/cas/6e/6e356453540909987e754fb554bc82abbada378bcffaf211f96821be1f3c7d2c.svg) 上图展示了**完整 AI** 循环:RamiGPT 从会话上下文中构建权限提升 prompt,请求已配置的 provider 给出下一个 shell 命令,通过 SSH 执行它,将输出反馈到历史记录中,并不断重复,直到检测到 root 或请求预算耗尽。 ## Web 工作区 RamiGPT 以**多会话工作区**的形式打开 —— 包含一个侧边栏清单和针对每个 SSH 目标的服务器工作区。创建会话,准备好后连接,然后使用 **Terminal** 标签页进行交互式 shell 和 AI 工具操作。 ![RamiGPT 工作区 — 包含会话清单和快捷操作的初始视图](https://static.pigsec.cn/wp-content/uploads/repos/cas/4d/4d381c6a37dd294a6339acfdf316fe42bca3de0624022b0627362722f1d1ba09.png) | 区域 | 功能描述 | |------|----------------| | **侧边栏** | 收藏夹、最近的会话以及可拖拽的分组(Production、Staging、Benchmark 等)。 | | **会话工作区** | 连接 / 断开连接、终端 I/O、Facts / Hints / Avoid 队列以及 Full AI 面板。 | | **顶部栏** | 搜索、**Benchmark**、**New Session**、**AI Settings**、**App Settings** 以及日志清理。 | ### 典型工作流 1. **配置 AI** —— 顶部栏 → 机器人图标(**AI Settings**)。选择 provider、模型和最大 Full AI 请求数。 2. **创建或选择会话** —— **New Session** 或点击侧边栏中的条目。凭据会根据 `user@host:port` 记住。 3. **连接** —— 打开会话并点击 **Connect**。输出将在 Terminal 标签页中流式显示。 4. **运行 Full AI** —— 点击 **Full AI** 启动自主权限提升循环,或者从工具下拉菜单中选择 **BeRoot** / **LinPEAS**(可选勾选 **AI** 复选框以串联至 Full AI)。 5. **引导模型** —— 在右侧面板中添加 Facts、Hints 或 Avoid 条目;使用 **Import** / **Export** 在会话之间共享 prompt 上下文。 ![RamiGPT 终端 — 包含 Full AI 和枚举工具的已连接会话](https://static.pigsec.cn/wp-content/uploads/repos/cas/5d/5dadccb514ddf86b6ebf69d5643c124d66a11dea9067f75c1af3b328a36dc279.png) ## 配置:AI Providers RamiGPT 支持多个 AI 后端。通过 **Settings** 按钮(机器人图标)进行配置。API key 来自 `.env`;provider、模型、URL 和 UI 选择 保存在 `data/ai_settings.json` 中。 ![AI 设置 — provider、模型和连接测试](https://static.pigsec.cn/wp-content/uploads/repos/cas/59/59e36516f642e837ed2c258774525a200cbb2f69ea1c4fb1b8c008de6721c6de.png) ### 支持的 providers | Provider | `AI_PROVIDER` 值 | 备注 | |----------|---------------------|-------| | Ollama | `ollama` (默认) | 原生 Ollama OpenAI 兼容 API | | Open WebUI | `openwebui` | Open WebUI OpenAI 兼容 API | | OpenAI | `openai` | 官方 OpenAI Chat Completions API | | OpenRouter | `openrouter` | 官方 OpenRouter SDK(多模型网关) | | Cursor | `cursor` | Cursor Cloud Agents API | ### 快速设置 1. **复制示例环境变量文件:** cp .env.example .env 2. **Ollama** —— 指向你的 Ollama 主机(OpenAI 兼容的 `/v1`): AI_PROVIDER=ollama OLLAMA_BASE_URL=http://127.0.0.1:11434 OLLAMA_API_KEY=ollama OLLAMA_MODEL=qwen3:8b 3. **Open WebUI** —— 指向你的实例(`/api`): AI_PROVIDER=openwebui OPENWEBUI_BASE_URL=http://localhost:3000 OPENWEBUI_API_KEY=your_openwebui_token OPENWEBUI_MODEL=llama3.1 4. **OpenAI** —— 设置你的 key(以及可选的模型): AI_PROVIDER=openai OPENAI_API_KEY=your_api_key_here OPENAI_MODEL=gpt-5-mini 5. **OpenRouter** —— 设置你的 OpenRouter key(以及可选的模型): AI_PROVIDER=openrouter OPENROUTER_API_KEY=your_openrouter_api_key OPENROUTER_MODEL=openai/gpt-4o-mini 6. **Cursor API** —— 设置你的 Cursor API key(以及可选的模型): AI_PROVIDER=cursor CURSOR_API_KEY=your_cursor_api_key CURSOR_MODEL=composer-2.5 7. 在运行的应用程序中,点击 **AI Settings** 更改 provider、模型、key 和 最大 AI 请求数。保存时会将非机密选择写入 `data/ai_settings.json`,并将 API key 写入 `.env`。**Reload from disk** 会重新加载 这两个文件。在进行 benchmark 或 Full AI 运行前,使用 **Test connection** 验证当前活动的 provider。 ### 应用程序设置 **App Settings**(滑块图标)控制运行时行为,与 provider 选择一起保存在 `data/ai_settings.json` 中: ![应用设置 — 角色目标、Session v2 和 AI 历史记录选项](https://static.pigsec.cn/wp-content/uploads/repos/cas/e8/e8e8c1ff34de1bda2773c07d64983dd94855028029aad1093514c454684aa80f.png) | 设置 | 用途 | |---------|---------| | **角色 / 目标** | prompt 的起始角色设定(来自 `ramigpt/config/role_objectives.json`)。 | | **每次 prompt 轮换角色** | 在 Full AI 轮次中循环遍历所有 JSON 角色。 | | **升级版 Session v2** | 更好的命令提取和 PTY 处理(密码提示、编辑器、嵌套 shell)。 | | **在终端显示 AI prompt** | 在每次 AI 请求前打印 `[DEBUG] About to send prompt:`。 | | **在 AI 历史记录中包含命令输出** | 将选定的 shell 输出发送回模型(不仅仅是先前的命令)。 | | **终端工具** | 在 Terminal 下拉菜单中显示或隐藏 BeRoot / LinPEAS / LinEnum。 | ### 获取 OpenAI API Key 1. 访问 [OpenAI](https://www.openai.com/) 并注册 / 登录。 2. 在 API 控制面板中创建一个 API key。 3. 将其放入 `.env` 作为 `OPENAI_API_KEY`,或将其粘贴到 Settings 窗口中。 ### Ollama 注意事项 - Base URL 是 Ollama 主机(例如 `http://127.0.0.1:11434`);RamiGPT 会自动附加 `/v1`。 - 模型名称必须与该主机上的 `ollama list` 匹配。 - 在 **AI Settings** 中使用刷新图标从主机获取实时模型列表。 ### Open WebUI 注意事项 - 在 Open WebUI 的 **Settings → Account** 下创建 API key。 - 完全按照模型在 Open WebUI 中显示的格式使用模型 ID(Ollama、OpenAI 或自定义模型)。 - Base URL 应为 Open WebUI 源地址(例如 `http://localhost:3000`);RamiGPT 会自动为兼容的 completions endpoint 附加 `/api`。 ### OpenRouter 注意事项 - 在 [openrouter.ai/keys](https://openrouter.ai/keys) 创建 API key。 - 模型 ID 使用 `provider/model` 格式(例如 `openai/gpt-4o-mini`、`anthropic/claude-sonnet-4`)。 - 使用官方 `openrouter` Python SDK;将 `OPENROUTER_BASE_URL` 留空即可使用 `https://openrouter.ai/api/v1`。 - 在 **AI Settings** 中使用刷新图标获取实时的模型目录。 ## 使用 Docker 运行 ### 前置条件 在运行项目之前,请确保你已安装: - [Docker](https://docs.docker.com/get-docker/) - [Docker Compose](https://docs.docker.com/compose/install/) - 一个 AI 后端(OpenAI key、Ollama 主机、Open WebUI、OpenRouter 或 Cursor API key) ### 设置 克隆仓库并启动 Docker 容器: ``` git clone https://github.com/M507/RamiGPT.git cd RamiGPT cp .env.example .env # edit with your provider + keys docker compose -f docker/docker-compose.yml up -d ``` 访问应用程序:[https://127.0.0.1:8443](https://127.0.0.1:8443) 在 Docker 的 `.env` 中设置 `APP_RELOAD=0`,以便容器不会监视源文件进行重载。 ## 本地运行 ### 前置条件 确保已安装以下内容: - Python 3 和 pip - 一个 AI 后端(Ollama、Open WebUI、OpenAI、OpenRouter 或 Cursor API) - `ansible-core` 2.18–2.19(通过 `requirements.txt`;支持远程实验室主机(如 Ubuntu 20.04)上的 Python 3.8) - Ubuntu/Debian 主机包(在启动 / 首次 benchmark 部署时自动安装):`openssh-client`、`sshpass`、`openssl`、`ca-certificates` - 或运行一次:`python3 scripts/ensure_ubuntu_requirements.py` ### 设置 克隆仓库并准备环境: ``` git clone https://github.com/M507/RamiGPT.git cd RamiGPT python3 -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate chmod +x ./scripts/generate_certs.sh ./scripts/generate_certs.sh pip install -r requirements.txt cp .env.example .env # edit provider + API keys python app.py ``` 默认情况下,当 Python、模板或静态文件发生更改时(`APP_RELOAD=1`),本地服务器会**自动重载**。设置 `APP_RELOAD=0` 可禁用此功能。 ``` # 可选:关闭 reload APP_RELOAD=0 python app.py ``` 应用程序默认监听 `127.0.0.1:8443`(可通过 `APP_HOST` / `APP_PORT` 覆盖)。 访问应用程序:[https://127.0.0.1:8443](https://127.0.0.1:8443) TLS 证书通过 `scripts/generate_certs.sh` 在 `certs/` 下生成(用于本地 HTTPS 的自签名证书)。 ## 权限提升 Benchmark RamiGPT 将故意配置不当的 SSH 目标部署到**远程实验室主机**(通过 Ansible),并对每个目标运行 **Full AI** 直到获得 root 权限(或超时)。 ![Benchmark 模态框 — 远程部署、模型/角色计划以及目标选择](https://static.pigsec.cn/wp-content/uploads/repos/cas/06/06f9b6a99be4228095b6f6b3f93f692672a276102de2d985949c28ccfa9af649.png) ### 目标(远程主机上的 Docker Compose) 所有实验室共享一个镜像(`ramigpt-bench-base`);每个服务仅设置 `SSH_PORT` + `MISCONFIG`(参见 `docker/benchmark/apply-misconfig.sh`)。完整清单位于 [`docker/benchmark/misconfigs.md`](docker/benchmark/misconfigs.md) 和 `ramigpt/benchmark/targets.py`。**285** 个目标,端口为 **2170–2454**(主机网络,无 DNAT)。凭据:`priv` / `password`。 部署在远程 Linux 实验室上使用主机网络(`docker/benchmark/docker-compose.yml`)。 ``` # 推荐:Benchmark UI → Start (Ansible),或者: ansible-playbook -i ansible/benchmark/inventory.example.ini ansible/benchmark/playbook.yml ``` 部署后,确认每个目标都能获得 root 权限: ``` ./scripts/benchmark/verify-misconfigs.sh # 或者:python3 -m ramigpt.benchmark.verify <将启动 docker 且可用于测试和/或 benchmark 的测试主机 ip> ``` UI Benchmark 模态框 → **Test targets (get root)** 会对配置的远程主机运行相同的探测。 ### 从 UI 操作 1. 配置 AI(顶部栏 → **AI Settings**)。 2. 点击 **Benchmark**。 3. 设置**远程实验室主机**(用于 Ansible 的 SSH;从 `data/benchmark/remote.json` 预填充)。 4. 配置**模型计划**和**角色计划**(针对每个目标的多个模型/角色和运行次数)。 5. 选择**目标配置**(默认:**Regression sample**,约 19 个实验室)或使用 **Select all** 选择全套。 6. 设置单项目标超时时间(UI 中默认 **180s**)。 7. **Start Benchmark** —— 会话出现在 **Benchmark** 组下;Full AI 将按顺序在每个目标上运行。 **目标配置**(**Select from** 下拉菜单中的 22 个预设):快速运行(*Does it work?*、*Regression sample*、*Easy & portable*)、主题运行(*Non-sudo*、*Detect-only*、*Cron & scheduled jobs* 等)以及全系列集合(*Classic sudo*、*SUID*、*Credentials* 等)。定义在 `ramigpt/benchmark/targets.py`(`PROFILES`)中。完整的集成详情:[`docker/benchmark/BENCHMARK_INTEGRATION.md`](docker/benchmark/BENCHMARK_INTEGRATION.md)。 ### 远程部署 ``` # UI 使用的 playbook: ansible-playbook -i ansible/benchmark/inventory.example.ini ansible/benchmark/playbook.yml ``` UI 中的远程模式会提示输入 SSH 用户名/密码,按需安装 Docker,复制 `docker/benchmark`,启动容器,并在 Full AI 开始之前验证测试套件的 SSH 端口。 需要 `ansible-core` 2.18–2.19(通过 `requirements.txt`;远程实验室需 Python 3.8+)以及 Ubuntu 主机包(`sshpass`、OpenSSH 客户端等)。在 Ubuntu/Debian 上,RamiGPT 会自动安装缺失的 apt 包(`python3 scripts/ensure_ubuntu_requirements.py`、应用程序启动或首次 benchmark 部署/验证时)。 ### 内置枚举工具 RamiGPT 集成了多种用于权限提升枚举的工具: - **[BeRoot](https://github.com/AlessandroZ/BeRoot)**:识别 Linux 上常见的权限提升向量(sudo、SUID、capabilities、可写路径等)。 - **[LinPEAS](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS)**:审计 Linux 环境中的配置不当和漏洞。 - **LinEnum**:轻量级枚举脚本(像 BeRoot 一样上传并运行)。 从 Terminal 工具下拉菜单中运行它们。启用 **AI** 复选框后,RamiGPT 将上传工具、捕获输出,并利用这些发现串联到 **Full AI**。 ![BeRoot + Full AI — 为自主循环提供输出的枚举结果](https://static.pigsec.cn/wp-content/uploads/repos/cas/11/1197c3dac98224e111c82340bd47298743c8c2fc6d857bd936795384be972838.png) ## 项目布局 应用程序代码位于 `ramigpt/` 下。仓库根目录保持精简:`app.py`(入口)、`requirements.txt` 和 `docker/`。 | 路径 | 作用 | |------|------| | `ramigpt/web/` | Flask/Socket.IO UI、路由、shell 层、Full AI hooks | | `ramigpt/ai/` | AI provider 接口(Ollama、Open WebUI、OpenAI、OpenRouter、Cursor) | | `ramigpt/domain/` | 权限提升 prompt + root 检测 | | `ramigpt/config/` | 来自 `.env` 机密信息及 JSON 用户选择的设置 | | `ramigpt/benchmark/` | Benchmark 编排器(远程 Ansible 部署 + Full AI 运行) | | `ramigpt/utils/` | 共享辅助程序和日志记录 | | `tools/` | 内置权限提升工具(BeRoot、LinPEAS) | | `scripts/` | 运维辅助工具(TLS 证书生成、benchmark 验证) | | `docs/` | 截图和文档资源 | | `tests/` | 自动化测试 | | `docker/benchmark/` | 单镜像 LPE 实验室(`MISCONFIG` 配置;端口 2170–2454)。指南:[`docker/benchmark/BENCHMARK_INTEGRATION.md`](docker/benchmark/BENCHMARK_INTEGRATION.md) | | `ansible/benchmark/` | 用于在远程主机上部署目标的 Ansible playbook | | `data/` | 运行时日志、会话和 benchmark 结果(除已提交的 benchmark 表格外均被 gitignored) | | `data/sessions/hosts/` | 每个已保存 SSH 会话/主机对应一个 JSON 文件 | | `data/sessions/meta.json` | 分组 + 最近的会话 ID | | `certs/` | TLS 证书(被 gitignored) | ## 功能 ### 会话上下文(Facts、Hints、Avoid) Terminal AI 面板中的单会话队列可在不编辑 `.env` 的情况下引导 Full AI: - **Facts** —— 模型应视为既定事实的真实情况(例如内核版本、发现的 SUID 二进制文件)。 - **Hints** —— 建议的方向,但不保证成功。 - **Avoid** —— 已经失败的命令或方法。 使用 **Import** / **Export** 在会话之间移动此上下文,或将其捕获用于报告和 flag。 ### Full AI 自主循环 **Full AI** 运行一个后台循环:构建 prompt → 请求 provider → 执行一条 shell 命令 → 追加到历史记录 → 检查 root → 重复。**Stop** 会停止循环;**Guide Me** 会发送单次 AI 交互,而不会启动完整的自主运行。 Session v2(在 **App Settings** 中启用)改进了命令提取,并能处理交互式边缘情况 —— sudo 密码提示、卡住的编辑器以及嵌套的 root shell。 ### AI provider 设置 在 **AI Settings** 按钮中切换 **Ollama**、**Open WebUI**、**OpenAI**、**OpenRouter** 和 **Cursor API**。选择会持久化到 `data/ai_settings.json` 中; `.env` 仍然是 API key 和初始默认值的来源。 ## 免责声明 RamiGPT 仅用于**教育和授权的安全测试**。请负责任地使用它,并且仅在获得明确许可进行测试的系统上使用。
标签:AI安全智能体, CSV导出, DLL 劫持, Petitpotam, Web报告查看器, 内存分配, 协议分析, 大语言模型, 性能基准测试, 权限提升, 自动化渗透测试, 逆向工具