
# ARES
### 自动化红队交战系统
ARES 是一个授权的红队交战框架,适用于范围限定的活动、
模块编排、OPSEC 感知的执行、加密的凭据处理,
以及专业的报告生成。
[](https://python.org)
[](https://fastapi.tiangolo.com)
[](https://react.dev)
[](LICENSE)
[](tests/)
**仅专为实验室、内部安全团队和授权交战而构建。**
## ARES 是什么
ARES 将红队或安全验证交战转化为结构化、
可审计的工作流:
1. 创建一个活动。
2. 定义明确的范围。
3. 从目录中选择模块。
4. 使用 dry-run 模式验证参数。
5. 执行授权检查。
6. 安全地存储证据和凭据。
7. 审查发现结果、图表数据和 OPSEC 风险。
8. 生成品牌化报告。
9. 从仪表板中清理测试活动。
ARES 专为授权已存在且操作员需要纪律性、可重复性、报告和安全护栏的交战环节而设计。
## ARES 不是什么
ARES 不是:
- C2 框架。
- 植入物或信标框架。
- 钓鱼框架。
- 初始访问工具包。
- 用于在未经书面授权的情况下测试系统的工具。
请勿对您不拥有或未获得明确评估许可的系统使用 ARES。
## 为什么会有这个项目
进攻性安全工作很容易迅速变得混乱:分散的脚本、松散的笔记、
未跟踪的证据、不明确的范围、重复的手动验证,以及花费时间比测试本身还要长的报告。
ARES 专注于操作层:
| 问题 | ARES 的方法 |
| --- | --- |
| “这个发现来自哪个活动?” | 按活动范围划分的存储和报告。 |
| “这个模块可以安全运行吗?” | 参数验证、dry-run 模式、OPSEC 级别。 |
| “我们在范围之内吗?” | 范围优先的活动模型和后端验证。 |
| “这个凭据是从哪里来的?” | 加密的凭据保管库和活动审计追踪。 |
| “我们如何解释结果?” | 感知 MITRE 的发现和品牌化报告生成。 |
| “我们如何避免 UI 混乱?” | 具有后端清理功能的活动和 API 密钥删除流程。 |
| “更改后如何测试应用?” | 本地验证实验室脚本。 |
## 核心功能
### 操作员仪表板
React 仪表板的服务地址为:
```
http://localhost:8080/dashboard
```
仪表板区域:
| 页面 | 用途 |
| --- | --- |
| 概览 | 健康状况、遥测和活动摘要。 |
| 活动 | 创建、检查、比较、恢复、试运行和删除活动。 |
| 模块 | 浏览模块目录并运行由后端生成的参数表单。 |
| 报告 | 生成、列出和下载经过身份验证的活动报告。 |
| 图表 | 审查图表数据、攻击路径和 BloodHound 数据导入。 |
| 模板 | 生成可重复的执行计划。 |
| 策略 | 启动或审查授权的基于目标的规划。 |
| 安全 | 更改密码、管理 API 密钥、审查审计和用户。 |
| EDR/OPSEC | 记录绕过结果并审查 EDR/OPSEC 遥测数据。 |
| 实时 | 观看活动 WebSocket 事件。 |
推荐的仪表板工作流:
1. 从 `Campaigns` 开始,创建一个包含名称、客户、目标
和范围 CIDR 的活动。
2. 使用 `Modules` 搜索模块,选择活动,填写生成的
参数,并首先以 dry-run 模式运行。
3. 仅在活动存在后使用 `Graph`。要导入 BloodHound 或
SharpHound 数据,请输入运行 ARES API 的计算机本地的 JSON 文件或目录路径,然后点击 `Ingest`。
4. 当您需要可重复的计划时,请使用 `Templates`。选择一个内置模板,
(可选)提供 JSON 参数,然后点击 `Generate Plan`。这会创建
一个结构化的执行计划供审查;它不会静默执行模块。
5. 使用 `Strategy` 进行基于目标的规划。选择一个活动,选择一个目标
(例如 `domain_admin`),提供明确的授权说明,然后点击
`Engage`。RBAC 和后端授权检查仍然适用。
6. 使用 `Reports` 为活动生成 HTML、PDF、Markdown 或 JSON 输出。
PDF 生成会直接写入 PDF 制品;仅当您
选择 HTML 格式时才会生成 HTML。
7. 使用 `Security` 进行账户管理。API 密钥用于脚本和
集成;安全审计面板报告 ARES 环境的依赖审计状态,而不是来自目标网络的发现。
8. 使用 `EDR/OPSEC` 记录受控的绕过结果并审查历史
遥测数据。此页面存储防御验证数据;它不生成
payload 或绕过逻辑。
常见页面的输入和输出:
| 区域 | 您提供的内容 | ARES 返回的内容 | 适用场景 |
| --- | --- | --- | --- |
| 模板 | 模板名称以及可选的 JSON 参数。 | 一个包含阶段和模块 ID 的可审查执行计划。 | 您希望为常见的交战类型制定一致的计划。 |
| 策略 | 活动、目标和授权说明。 | 活动的交战状态和策略事件。 | 您希望 ARES 在保留 RBAC 检查的同时,为授权目标进行规划。 |
| 安全审计 | 无目标输入;仅限团队负责人访问。 | 依赖审计快照、扫描器状态和环境警告。 | 您希望验证 ARES 运行时依赖项和安全态势。 |
| EDR/OPSEC | 技术 ID、EDR 供应商、版本、结果、活动和说明。 | 历史成功率遥测和结果记录。 | 您希望跟踪防御可见性并从受控测试中调整 OPSEC 决策。 |
| 图表导入 | 活动以及本地的 BloodHound/SharpHound JSON 路径。 | 活动图表节点、链接和攻击路径候选。 | 您已经收集了 BloodHound 风格的数据并希望将其映射到 ARES 中。 |
规划模式:
| 模式 | 使用位置 | 需要 LLM 密钥? | 它的功能 |
| --- | --- | --- | --- |
| 模板计划 | `Templates` 页面 | 否 | 从命名模板(例如 `internal_pentest`)构建确定性计划。它用于审查,本身不执行模块。 |
| AI 规划器模块 | `Modules` 页面,模块 `ai.autonomous_planner` | 是,除非使用本地 Ollama | 读取活动上下文,并要求 Claude、OpenAI 或本地 Ollama 模型生成一个包含推理、置信度和 OPSEC 警告的建议执行计划。 |
| 策略交战 | `Strategy` 页面 | 通常需要 | 为现有活动启动基于目标的后台策略循环。它使用 AI 规划和 OPSEC 检查,然后将进度事件发送到 `Live` 页面。 |
| 内部评分器 | CLI / 引擎内部 | 否 | 从本地活动/会话状态对可能的下一个模块进行排名。这是一种 AI 风格的评分,而不是外部 LLM 调用。 |
在 `Security` 页面中创建的 ARES API 密钥不是 OpenAI、Anthropic
或 Ollama 密钥。它用于验证脚本和集成对 ARES API 的访问。
LLM 提供商的密钥在 ARES 服务器环境中单独配置。
请参阅 [docs/dashboard-guide.md](docs/dashboard-guide.md)。
### 活动系统
- 明确的活动范围。
- 特定于活动的发现、主机、凭据、战利品、报告和图表数据。
- 仅限团队负责人的活动删除,用于实验室清理。
- 重启后的保管库恢复。
- 活动差异对比和 CVSS 摘要。
### 模块编排
- 60 多个内置模块,涵盖 AD、Windows、Linux、云、网络、凭据、
横向移动、EDR/OPSEC、数据泄露暴露检查、持久性审查和 AI
规划。
- 由后端驱动的模块参数 schema。
- 仪表板中默认使用 dry-run。
- 用于模块风险的 OPSEC 级别。
- 用于报告的 MITRE ATT&CK 元数据。
请参阅 [docs/modules.md](docs/modules.md)。
### 安全控制
- JWT 访问令牌与刷新令牌轮换。
- 注销时的令牌吊销。
- API 密钥生命周期,具有从仪表板列表中移除已吊销密钥的功能。
- RBAC 角色:团队负责人、操作员、侦察员、报告员。
- 对敏感凭据材料的加密数据处理。
- 针对范围、参数、路径和身份验证的后端验证。
- 针对敏感流程的速率限制。
- 安全标头和审计可见性。
请参阅 [docs/security-model.md](docs/security-model.md)。
### 报告
- HTML、Markdown 和 JSON 报告输出。
- 安装可选 PDF 依赖项后的 PDF 输出。
- 生成的报告中包含 ARES 品牌。
- 发现、证据、严重性、时间表和以修复为导向的部分。
- 通过仪表板进行经过身份验证的报告下载。
### 验证实验室
ARES 包含一个本地验证工具,用于在更改后检查应用。
它验证:
- 健康端点。
- 登录和当前配置文件。
- 活动输入验证。
- 本地活动创建/列出/删除。
- 模块 dry-run 验证。
- 模块 API 参数验证。
- 报告生成和列出。
- API 密钥创建/列出/删除/删除后列出。
请参阅 [docs/validation-lab.md](docs/validation-lab.md)。
## 快速开始
### 1. 配置所需密钥
ARES 不附带部署密钥。部署 ARES 的操作员或组织
必须生成这些值,并通过环境变量
或私有的 `.env` 文件提供。
所需的值包括:
| 变量 | 谁创建它? | 用途 |
| --- | --- | --- |
| `ARES_SECRET_KEY` | 部署者/客户 | 签署 JWT/会话安全数据。生成一个随机的高熵字符串。 |
| `ARES_ENCRYPTION_KEY` | 部署者/客户 | 加密存储的敏感数据,例如保管库/检查点材料。生成一个 Fernet 密钥并保持其稳定。 |
| `ARES_DEFAULT_ADMIN_PASSWORD` | 部署者/客户 | 第一个 `admin` 账户的引导密码。首次登录后请更改。 |
PowerShell:
```
$bytes = [byte[]]::new(32)
[System.Security.Cryptography.RandomNumberGenerator]::Fill($bytes)
$env:ARES_SECRET_KEY = -join ($bytes | ForEach-Object { $_.ToString("x2") })
$env:ARES_ENCRYPTION_KEY = .\.venv\Scripts\python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
$env:ARES_DEFAULT_ADMIN_PASSWORD = "replace-with-your-own-strong-admin-password"
```
Bash:
```
export ARES_SECRET_KEY="$(openssl rand -hex 32)"
export ARES_ENCRYPTION_KEY="$(python -c 'from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())')"
export ARES_DEFAULT_ADMIN_PASSWORD="replace-with-your-own-strong-admin-password"
```
请勿提交这些值。请勿重复使用示例密码。确保安全备份
`ARES_ENCRYPTION_KEY`;在数据被加密后更改它
可能会导致现有的加密记录无法读取。
仪表板 API 密钥与这些启动密钥是分开的。仅当您需要脚本、集成或
自动化在交互式会话之外使用 `X-API-Key` 调用 API 时,才在登录后
从安全页面创建 API 密钥。
可选的 AI 规划器提供商密钥:
| 变量 | 使用者 | 说明 |
| --- | --- | --- |
| `ANTHROPIC_API_KEY` | 使用 `llm_backend=claude` 的 `ai.autonomous_planner`;策略默认路径。 | 使用基于 Claude 的规划时必需。 |
| `OPENAI_API_KEY` | 使用 `llm_backend=openai` 的 `ai.autonomous_planner`。 | 使用基于 OpenAI 的规划时必需。 |
| 位于 `http://localhost:11434` 的本地 Ollama | 使用 `llm_backend=local` 的 `ai.autonomous_planner`。 | 不需要云密钥,但 Ollama 和所选模型必须已经在运行。 |
示例:
```
$env:OPENAI_API_KEY="sk-..."
```
或者:
```
$env:ANTHROPIC_API_KEY="sk-ant-..."
```
### 2. 启动 API 和仪表板
从已安装的包中运行:
```
ares-api
```
从 Windows 上的此代码库中运行:
```
.\.venv\Scripts\ares-api.exe
```
预期启动:
```
ARES API v6.0.0 started
db_ready
engine_loaded_modules
```
打开:
```
http://localhost:8080/dashboard
```
### 3. 检查健康状况
```
Invoke-RestMethod http://localhost:8080/health
```
预期结果:
```
status version db
------ ------- --
ok 6.0.0 connected
```
### 4. 运行本地验证实验室
```
$env:ARES_LAB_PASSWORD="replace-with-your-current-admin-password"
.\scripts\run_validation_lab.ps1
```
预期结束:
```
Validation lab passed.
```
## 开发者设置
后端:
```
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest tests/unit -q
```
Windows PowerShell:
```
.\.venv\Scripts\python.exe -m pytest tests/unit -q --tb=short --timeout=60 --timeout-method=thread
```
前端:
```
cd frontend
npm ci
npm run build
```
生产构建资产由 FastAPI 从 `frontend/dist` 目录
在 `/dashboard` 路径提供服务。
## 模块生态系统
ARES 模块按操作目的进行分组:
| 类别 | 示例 | 用途 |
| --- | --- | --- |
| Active Directory | `ad.enum`, `ad.kerberoast`, `ad.adcs` | 域枚举和授权的 AD 路径验证。 |
| Credential | `credential.crack`, `credential.pass_spray` | 凭据工作流和离线验证。 |
| Lateral | `lateral.winrm`, `lateral.wmiexec`, `lateral.psexec` | 批准的横向移动验证。 |
| Windows | `windows.registry_enum`, `windows.uac_bypass` | Windows 端点安全态势审查。 |
| Linux | `linux.kernel_suggester`, `linux.container` | Linux 和容器安全态势审查。 |
| Cloud | `cloud.aws`, `cloud.azure`, `cloud.gcp` | 云身份和控制平面审查。 |
| Network | `network.dns_enum`, `network.http_fingerprint` | 范围内的网络和服务发现。 |
| EDR/OPSEC | `edr.bypass_adaptive`, `opsec.coverage_predictor` | 防御可见性和 OPSEC 决策支持。 |
| AI | `ai.autonomous_planner` | 基于活动上下文的基于目标的规划。 |
高噪音模块需要仔细授权,应首先在
dry-run 模式下进行测试。
## 架构
```
Browser Dashboard
|
v
FastAPI Server -> RBAC, auth, validation, rate limits
|
v
ARES Engine -> module registry, execution context, OPSEC checks
|
v
Modules -> AD, cloud, network, credential, EDR, reporting
|
v
Database -> campaigns, findings, vault records, API keys, audit data
```
重要的设计边界:
- 前端改善了用户体验,但不能取代后端强制执行。
- 模块表单由后端元数据生成。
- 敏感数据受到身份验证的保护。
- 报告需要通过仪表板或 API 进行经过身份验证的下载。
- 本地验证流程默认使用 localhost。
请参阅 [docs/architecture.md](docs/architecture.md) 和
[docs/engine_design.md](docs/engine_design.md)。
## 文档
| 文档 | 描述 |
| --- | --- |
| [QUICKSTART.md](QUICKSTART.md) | 首次交战演练。 |
| [docs/dashboard-guide.md](docs/dashboard-guide.md) | 逐页的仪表板指南。 |
| [docs/modules.md](docs/modules.md) | 模块目录和安全工作流。 |
| [docs/api-reference.md](docs/api-reference.md) | API 端点和请求/响应示例。 |
| [docs/security-model.md](docs/security-model.md) | 安全控制和威胁模型。 |
| [docs/validation-lab.md](docs/validation-lab.md) | 本地验证工具。 |
| [docs/module-development.md](docs/module-development.md) | 构建新模块。 |
| [docs/module_sdk.md](docs/module_sdk.md) | 模块 SDK 参考。 |
| [docs/github-publish-guide.md](docs/github-publish-guide.md) | GitHub 推送和发布检查清单。 |
| [docs/community-posts.md](docs/community-posts.md) | Facebook、Discord 和发布公告草稿。 |
## 项目状态
当前的本地验证:
```
1078 unit tests passed
npm run build passed
validation lab passed
```
已在本地确认的运行时功能:
- 仪表板在 `/dashboard` 加载。
- 健康端点返回已连接的数据库。
- 登录、密码更改、API 密钥生命周期和活动清理均可正常工作。
- 报告生成和经过身份验证的下载均可正常工作。
- 活动删除会移除存储的子数据并立即更新 UI。
## 负责任的使用
ARES 是一款双用途软件。仅将其用于:
- 自有的实验室环境。
- 内部安全验证。
- 授权的红队交战。
- 获得许可的培训环境。
请勿将 ARES 用于未经授权的访问、持久化、数据窃取,或测试
超出批准范围的系统。
如果您在 ARES 中发现安全问题,请遵循 [SECURITY.md](SECURITY.md)。
## 贡献
欢迎您在改善安全性、清晰度、模块质量、
操作员体验、测试、文档或防御验证工作流方面做出贡献。
从这里开始:
- [CONTRIBUTING.md](CONTRIBUTING.md)
- [docs/module-development.md](docs/module-development.md)
- [docs/module_sdk.md](docs/module_sdk.md)
在提交 PR 之前:
```
pytest tests/unit -q
cd frontend && npm run build
```
请勿提交 `.env`、`.venv`、本地数据库、包含真实客户数据的报告、
API 密钥、令牌或暴露机密的屏幕截图。
## 许可证
ARES 根据 [MIT 许可证](LICENSE) 发布。
**ARES - 范围限定、可审计、OPSEC 感知的红队交战自动化。**