mahfuz33R/ai-offensive-workstation
GitHub: mahfuz33R/ai-offensive-workstation
基于 Kali Linux 和 Docker 的持久化 AI 攻击安全工作站,集成 Hermes Agent、RAG 知识库和验证过的渗透测试工具,帮助安全操作员将扫描结果转化为经验证的发现。
Stars: 1 | Forks: 0
# 🛡️ AI 攻击工作站
[](https://www.kali.org/)
[](https://www.docker.com/)
[](https://github.com/NousResearch/hermes-agent)
[](#safety-first)

## 从这里开始
在开始之前,你**不需要**了解 Docker、AI agent、RAG 或 Kali。请选择最适合你的路径:
| 我想要… | 阅读此内容 |
|---|---|
| 首次安装 | [新手指南](docs/BEGINNERS_GUIDE.md) |
| 了解幕后原理 | [工作原理](docs/HOW_IT_WORKS.md) |
| 了解每个服务、文件夹和连接 | [架构](docs/ARCHITECTURE.md) |
| 深入了解 Hermes、API key、CyberStrike 和向量 RAG | [Hermes、API 和 RAG 深入指南](docs/HERMES_RAG_API.md) |
| 查找正确的命令 | [命令手册](docs/COMMANDS.md) |
| 将其迁移到另一台计算机 | [备份与迁移](docs/REUSE.md) |
| 检查一切是否正常 | [实现与验证](docs/IMPLEMENTATION_AUDIT.md) |
## 这是什么神器?
普通的 Kali 安装会为你提供数百个安全程序。困难的部分在于知道该使用哪一个、哪些选项是安全的、将结果存储在哪里,以及如何将扫描器的原始输出转化为经过验证的发现。
本项目在 Kali 之上添加了一个组织层:
- **Docker** 将工作站放置在一个可重复的容器中,这样它就不会在你的主机上分散安装各种工具。
- **Hermes Agent** 是主要的助手。它可以对任务进行推理、使用工具、搜索本地知识库、记住有用的上下文,并提供仪表板和 API。
- **CyberStrike** 是一个专业的安全 agent 服务,Hermes 可以通过九个本地 MCP 工具对其进行控制。
- **RAG** 让 Hermes 在回答之前搜索存储在工作站上的文档。这就像为 agent 提供了一个带索引的私人图书馆。
- **工作区(workspace)** 将项目、证据、配置和 agent 状态保存在可替换的容器之外。
## 十分钟快速入门
### 1. 安装前置条件
你需要一台 Linux 计算机或服务器,并具备以下条件:
- Git
- Docker Engine
- Docker Compose v2(`docker compose`,而不是旧的 `docker-compose` 命令)
- 大约 80–120 GB 的可用磁盘空间,用于存放镜像、缓存和资产
- 足够的内存供浏览器和 AI 工具使用;8 GB 是实际的最低要求
确认基本配置:
```
git --version
docker --version
docker compose version
```
### 2. 下载项目
从 GitHub 克隆 `main` 分支,然后进入新的项目目录:
```
git clone --branch main https://github.com/mahfuz33R/ai-offensive-workstation.git
cd ai-offensive-workstation
```
本快速入门中的其余命令都是在该目录中运行的。如果你已经克隆了该项目,请改为更新它:
```
cd ai-offensive-workstation
git pull --ff-only origin main
```
### 3. 准备私有配置
在仓库目录中执行:
```
bash scripts/configure-host.sh
chmod 600 .env
```
这将创建:
- `.env`,私有配置和凭证文件;
- `workspace/`,持久化工作区域;
- 一个随机的 `API_SERVER_KEY`,用于保护 Hermes HTTP API。
编辑 `.env` 并添加你打算使用的模型提供商的密钥,例如
OpenAI、Anthropic、Google、OpenRouter 或 Groq:
```
nano .env
```
例如,OpenAI 用户只需更改这一行:
```
OPENAI_API_KEY=your-real-provider-key
```
将未使用的提供商行留空。不要在 `=` 周围加空格,也不要在密钥周围加
引号。保存文件,然后再次保护它:
```
chmod 600 .env
```
RAG 搜索、API 健康检查、会话存储和 `no_reply=true` 的 CyberStrike 消息
无需提供商密钥即可工作。AI 生成的回复至少需要一个已配置的
模型提供商。
### 4. 检查源码
```
bash scripts/preflight.sh
```
这不会构建或启动 Docker。它会检查配置安全性、shell/Python 语法、Compose 架构、资产清单结构和知识链接。
### 5. 构建并验证镜像
```
bash scripts/build-and-verify.sh
```
如果无法安装或启动必需项,构建将有意失败。
当 Docker 可以重用已完成的层时,后续构建通常会更快。
如果之前的构建在成功完成许多层后停止,请重用其缓存:
```
bash scripts/build-and-verify.sh --cached
```
### 6. 配置 Hermes
镜像构建完成后,运行 Hermes 的交互式设置容器:
```
sudo docker compose --profile setup run --rm setup
```
按照屏幕上的问题选择你的模型提供商和模型。确切的
选项可能会因 Hermes 版本而异。请使用你将其密钥放入
`.env` 的同一个提供商。设置数据保存在
`workspace/container-opt/data/` 下,因此它可以在容器更换和
计算机重启后保留下来。
这三个密钥有不同的用途:
| 密钥 | 允许的操作 | 使用位置 |
|---|---|---|
| 提供商密钥,例如 `OPENAI_API_KEY` | Hermes 调用 AI 模型 | `.env` 和 Hermes 设置 |
| `API_SERVER_KEY` | API 客户端调用 Hermes 网关 | 端口 `8656` 上的 `Authorization: Bearer ...` |
| `CYBERSTRIKE_SERVER_PASSWORD` | 在显式设置时保护内部 CyberStrike 服务 | 内部端口 `4096` |
它们不可互换。`scripts/configure-host.sh` 会
自动创建 `API_SERVER_KEY`;请勿将该值粘贴到提供商密钥
字段中。
如果设置中断,请再次运行相同的设置命令。如果稍后要更改提供商或
模型,请重新运行它。如果在服务已经运行后编辑了 `.env`,
请使用以下命令应用新值:
```
sudo docker compose up -d --no-build --force-recreate
```
有关提供商、持久化、网关、
RAG 和身份验证的图文解释,请阅读 [Hermes、RAG 和 API 指南](docs/HERMES_RAG_API.md)。
### 7. 启动并验证工作站
```
sudo docker compose up -d --no-build
sudo docker compose ps
```
确认 Hermes、其渗透测试技能、CyberStrike 以及两个知识库:
```
sudo docker compose exec workstation hermes version
sudo docker compose exec workstation env COLUMNS=240 hermes skills list
sudo docker compose exec workstation hermes mcp test cyberstrike
sudo docker compose exec workstation workstation-kb verify
sudo docker compose exec workstation cyberstrike-kb verify
```
在同一台计算机上打开仪表板:
```
http://127.0.0.1:9119
```
打开工作站 shell:
```
sudo docker compose exec workstation zsh
```
停止它而不删除持久化数据:
```
sudo docker compose down
```
## 正确重启 Hermes
从**宿主机仓库目录**重启完整的三服务栈:
```
sudo docker compose restart workstation dashboard cyberstrike-api
sudo docker compose ps
```
如果 `docker compose ps` 显示 `Restarting`,请执行下述安全恢复。这
将保留配置、密钥、会话、报告和 RAG 数据库;仅移除
网关一次性的 PID 和锁标记:
```
sudo docker compose logs --no-color --tail=200 workstation dashboard \
> /tmp/ai-offensive-workstation-restart.log
sudo docker compose down
sudo rm -f -- \
workspace/container-opt/data/gateway.pid \
workspace/container-opt/data/gateway.lock
hermes_uid="$(sed -n 's/^HERMES_UID=//p' .env | tail -n1)"
hermes_gid="$(sed -n 's/^HERMES_GID=//p' .env | tail -n1)"
sudo chown -R "${hermes_uid}:${hermes_gid}" workspace/container-opt/data
sudo chmod 750 workspace/container-opt/data
sudo chmod 600 workspace/container-opt/data/.env
sudo docker compose up -d --no-build --force-recreate
sudo docker compose ps
sudo docker compose logs --tail=80 workstation dashboard
```
强化版的 entrypoint 也会在下一次前台网关启动时
自动清除这两个过期的标记。请参阅[完整故障排除手册](docs/COMMANDS.md#recover-a-hermes-gateway-restart-loop)。
## 使用远程服务器
仪表板和 API 特意仅在服务器的环回接口上监听。在你的本地计算机上,创建一个 SSH 隧道:
```
ssh -N \
-L 9119:127.0.0.1:9119 \
-L 8656:127.0.0.1:8656 \
USER@SERVER_IP
```
保持该终端打开。在你的本地计算机上:
- 浏览 `http://127.0.0.1:9119` 查看仪表板;
- 向 `http://127.0.0.1:8656/v1` 发送经过身份验证的 API 请求。
在浏览器中直接打开 `/v1/models` 通常会返回 `Invalid gateway API key`。这是正常的:浏览器地址栏不会发送 `Authorization: Bearer ...` header。请参阅[端口与身份验证](docs/HERMES_RAG_API.md#part-7-ports-tunnels-and-authentication)。
## 你的第一次安全会话
在工作站 shell 中:
```
export ENGAGEMENT=my-owned-lab
export OUTPUT_DIR="/workspace/reports/$ENGAGEMENT"
mkdir -p "$OUTPUT_DIR"/{raw,normalized,evidence,final}
workstation-kb search \
"beginner workflow for an authorized local web application" \
--limit 5
```
然后打开仪表板并告诉 Hermes:
```
I own the test application at http://example.test. I authorize only passive
inspection and low-rate HTTP discovery. Do not exploit, brute-force, modify
data, or contact third parties. Explain every command before running it and
save results under /workspace/reports/my-owned-lab.
```
好的 prompt 包含确切的目标、授权、允许的操作、禁止的操作、速率限制、证据位置和停止条件。
## 你的文件存放在哪里
| 位置 | 含义 | 是否持久化? |
|---|---|---:|
| `workspace/projects/` | 源代码和交战项目 | ✅ |
| `workspace/targets/` | 明确授权的目标列表 | ✅ |
| `workspace/reports/` | 原始输出、证据和最终报告 | ✅ |
| `workspace/notes/` | 操作员笔记 | ✅ |
| `workspace/container-opt/data/` | Hermes 配置、记忆、RAG 数据库和 CyberStrike 状态 | ✅ |
| `workspace/container-root/` | 容器 root 的主目录 | ✅ |
| 容器内的 `/opt/security-tools` | 已安装的工具 | 随镜像重建 |
| 容器内的 `/opt/security-assets` | 字典、模板和 payload | 随镜像重建 |
容器是可替换的。`workspace/` 目录才是你需要保护和备份的部分。
## 安装了什么?
权威的契约是 [`scripts/manifests/tool-inventory.tsv`](scripts/manifests/tool-inventory.tsv)。它目前涵盖命令、路径、Linux capabilities 和实质性资产,包括:
- Kali 的 `kali-linux-headless` 工具集;
- Go、Python、Rust、Ruby、Node.js 和 npm;
- Nmap、Nuclei、httpx、ffuf、SQLMap、WPScan 和许多专用实用程序;
- Chromium、Firefox、Playwright 和 agent-browser;
- SecLists、Nuclei 模板、GF patterns 和内置的 payload 仓库;
- Hermes、CyberStrike 和两个本地 RAG 索引。
使用 `check-tools` 检查,而不是假设某个命令存在。
## 安全第一
本工作站用于测试你拥有或获得明确书面授权的系统或数据。
切勿从公共 IP、URL、漏洞赏金计划名称或工具可以触及目标的事实中推断许可。从被动和低速率开始。不要执行拒绝服务攻击、持久化、破坏性修改、凭证攻击、无关数据提取、横向移动或第三方测试。
请在 [`SAFETY.md`](knowledge/skills/offensive-workstation-pentesting/references/SAFETY.md) 中阅读完整的操作策略。
## 文档导航
| 文档 | 目的 |
|---|---|
| [新手指南](docs/BEGINNERS_GUIDE.md) | 基础原理介绍和日常工作流 |
| [架构](docs/ARCHITECTURE.md) | 服务、文件、网络、信任边界和图表 |
| [工作原理](docs/HOW_IT_WORKS.md) | 构建、启动和请求的生命周期 |
| [Hermes、API 和 RAG](docs/HERMES_RAG_API.md) | 深度解释和自定义指南 |
| [命令](docs/COMMANDS.md) | 可直接复制粘贴的操作员手册 |
| [复用](docs/REUSE.md) | 加密备份和机器迁移 |
| [导出的镜像](docs/EXPORTED_IMAGE.md) | 不含私有状态的公共/离线镜像 |
| [实现审计](docs/IMPLEMENTATION_AUDIT.md) | 验证层和保证 |
| [第三方声明](docs/THIRD_PARTY_NOTICES.md) | 上游软件和许可证 |
## 切记一条规则
标签:AI智能体, DLL 劫持, Docker容器, MITM代理, Web报告查看器, 可视化界面, 大语言模型, 插件系统, 攻击面发现, 日志审计, 特征检测, 请求拦截, 逆向工具