Mafifrizi/ARES

GitHub: Mafifrizi/ARES

ARES 是一个授权红队交战自动化框架,为安全团队提供从活动创建、模块编排到证据存储和报告生成的结构化可审计工作流。

Stars: 3 | Forks: 0

ARES # ARES ### 自动化红队交战系统 ARES 是一个授权的红队交战框架,适用于范围限定的活动、 模块编排、OPSEC 感知的执行、加密的凭据处理, 以及专业的报告生成。 [![Python](https://img.shields.io/badge/Python-3.10%2B-3776AB?style=for-the-badge&logo=python&logoColor=white)](https://python.org) [![FastAPI](https://img.shields.io/badge/API-FastAPI-009688?style=for-the-badge&logo=fastapi&logoColor=white)](https://fastapi.tiangolo.com) [![React](https://img.shields.io/badge/Dashboard-React-61DAFB?style=for-the-badge&logo=react&logoColor=111111)](https://react.dev) [![License](https://img.shields.io/badge/License-MIT-22C55E?style=for-the-badge)](LICENSE) [![Status](https://img.shields.io/badge/Unit%20Suite-1078%20passing-22C55E?style=for-the-badge)](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 感知的红队交战自动化。**
标签:AV绕过, FastAPI, Python, React, Syscalls, 反取证, 安全评估, 数据展示, 无后门, 红队