dreadnode/ares

GitHub: dreadnode/ares

一个 LLM 驱动的红蓝队自动化安全运营平台,通过红蓝对抗在真实基础设施上进行攻防评估与调查。

Stars: 22 | Forks: 4

# Ares - 自主安全运营代理 [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/dreadnode/ares/blob/main/LICENSE) [![Tests](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/6c2497f52b050826.svg)](https://github.com/dreadnode/ares/actions/workflows/rust.yaml) [![Pre-Commit](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/b9655c0dfa050827.svg)](https://github.com/dreadnode/ares/actions/workflows/pre-commit.yaml) LLM 协调的自主安全运营平台,包含两种模式: **Red Team(红队)** - 由 LLM 协调循环调度的 7 个专用代理,自动化链式执行 64+ 个 Active Directory 攻击工具,覆盖从侦察到域控的全杀伤链。14 个并发自动化模块监控状态并派发攻击链,无需手动编排。 **Blue Team(蓝队)** - 多代理 SOC 调查系统,查询实时 Loki 日志与 Prometheus 指标,运行 MITRE ATT&CK 映射的检测模板,跟踪横向移动并将检测规则写回 Grafana。基于证据的链式调度会在新指标出现时自动触发后续调查。 ## 目录 - [架构](#architecture) - [快速开始](#quick-start) - [CLI 参考](#cli-reference) - [红队操作](#red-team-operations) - [蓝队调查](#blue-team-investigations) - [基础设施](#infrastructure) - [开发](#development) - [配置](#configuration) - [贡献](#contributing) - [许可证](#license) ## 架构 Ares 是一个 Rust 工作空间,编译为单个 `ares` 二进制文件,支持以下子命令: `ares ops`、`ares orchestrator`、`ares worker`、`ares blue`、`ares history`、`ares config` | Crate | 用途 | | ------------ | ------------------------------------------------------ | | `ares-cli` | 统一二进制文件 — CLI、编排器与工作器 | | `ares-core` | 共享模型、状态管理、Redis 模式与遥测 | | `ares-llm` | LLM 提供商(Anthropic、OpenAI、Ollama)+ 工具注册表 | | `ares-tools` | 工具调度与执行框架 | ### 红队多代理系统 ``` Local (this machine) Remote (K8s or EC2) ──────────────────── ─────────────────── ares --k8s / --ec2 → ares orchestrator (LLM coordination loop) or `task` commands ares worker x7 (recon, credential_access, cracker, acl, privesc, lateral, coercion) Redis (state store + message broker) ``` 编排器通过 Redis 队列将任务分派给专用工作代理。代理执行 nmap、secretsdump、hashcat 等工具并将结果回传。编排器不会直接执行利用工具。 **代理角色:** - **RECON**:网络扫描、BloodHound、用户/共享枚举 - **CREDENTIAL_ACCESS**:secretsdump、kerberoasting、AS-REP roasting、密码喷洒 - **CRACKER**:使用 hashcat/john 进行离线哈希破解 - **ACL**:BloodHound 路径分析、ACL 滥用(影子凭证、WriteDACL) - **PRIVESC**:ADCS(ESC1-8)、委派攻击、MS SQL 漏洞利用 - **LATERAL**:PSExec/WMI/WinRM、凭据收集(从已控主机) - **COERCION**:Responder、ntlmrelayx、PetitPotam ### 蓝队多代理系统 ``` Local (this machine) Remote (K8s or EC2) ──────────────────── ─────────────────── ares --k8s / --ec2 → ares orchestrator (investigation coordination) or `task` commands ares worker x4 (triage, threat_hunter, lateral_analyst, escalation_triage) Redis (state store + message broker) Grafana (Loki logs + Prometheus metrics) ``` 蓝队编排器通过 Redis 队列将调查任务分派给专用代理。代理查询 Loki/Prometheus 获取证据并回传结果。编排器基于发现的证据类型链式触发后续调查。 **代理角色:** - **ORCHESTRATOR**:调查生命周期管理、证据驱动的任务链、报告生成 - **TRIAGE**:初始告警评估、严重性路由、首轮 IOC 提取、数据源发现 - **THREAT_HUNTER**:基于 MITRE 映射模板的深度调查、证据验证、攻击链重建 - **LATERAL_ANALYST**:多主机妥协追踪、横向移动图谱构建、枢机点检测 - **ESCALATION_TRIAGE**:高/严重级别审查、升级决策、跨调查关联 ## 快速开始 **前置条件:** - [Rust](https://rustup.rs/)(稳定工具链) - [Task](https://taskfile.dev/installation/)(推荐) - [1Password CLI](https://developer.1password.com/docs/cli/get-started/) 用于凭据管理(可选,也可使用 `.env` 文件) - Redis(用于编排器/工作器通信) **构建:** ``` # 克隆并构建 git clone https://github.com/dreadnode/ares.git && cd ares task rust:build # debug build task rust:release # release build (recommended) # 验证 ./target/release/ares --help ``` **配置:** ``` # 选项 1:.env 文件 cp .env.example .env # 使用您的 API 密钥(ANTHROPIC_API_KEY、GRAFANA_SERVICE_ACCOUNT_TOKEN 等)编辑 .env # 选项 2:1Password(由 CLI 自动加载) # 在 1Password 中配置项目,CLI 在启动时加载它们 # 验证配置 task ares:config:check ``` ## CLI 参考 `ares` 二进制文件是所有操作的一体化接口,支持通过传输标志进行透明远程执行。 ### 传输标志 ``` # K8s:通过 kubectl 在编排器 Pod 上执行 ares --k8s ares-red ops loot --latest ares --k8s ares-blue blue status --latest # EC2:通过 AWS SSM 在实例上执行 ares --ec2 kali-ares ops loot --latest # 覆盖默认值 ares --k8s ares-red --k8s-deploy ares-orchestrator ops list ares --ec2 kali-ares --ec2-profile prod --ec2-region us-east-1 ops list ``` | 标志 | 默认值 | 描述 | | ------------------------- | ----------- | --------------------------------------- | | `--k8s ` | | K8s 命名空间(触发 kubectl exec) | | `--k8s-deploy ` | auto-detect | K8s 部署名称 | | `--ec2 ` | | EC2 Name 标签(触发 SSM 执行) | | `--ec2-profile ` | `lab` | AWS CLI 配置文件 | | `--ec2-region ` | `us-west-1` | AWS 区域 | | `--env-file ` | auto `.env` | 从文件加载环境变量 | | `--secrets-from ` | | 从提供者加载密钥(例如 `1password`) | ### 命令 **`ops`** - 红队操作管理: | 子命令 | 描述 | | ---------------------------------------------- | ------------------------ | | `submit` | 提交新的红队操作 | | `list` | 列出所有操作 | | `status [--latest]` | 操作状态 | | `loot [--latest] [--watch N] [--diff]` | 凭据、哈希、主机 | | `tasks [--latest] [--status STATUS] [--role ROLE]` | 任务列表 | | `runtime [--latest]` | 操作运行时 | | `report [--latest] [--regenerate]` | 生成报告 | | `inject-credential` | 向状态注入凭据 | | `inject-hash` | 向状态注入哈希 | | `inject-host` | 向状态注入主机 | | `inject-vulnerability` | 向状态注入漏洞 | | `inject-domain-sid` | 注入域 SID | | `stop [--latest]` | 优雅关闭 | | `kill [--all]` | 停止并删除操作 | | `delete --force` | 删除操作数据 | | `cleanup [--max-age-hours N]` | 清理旧检查点 | | `export-detection [--latest]` | 检测剧本导出 | | `correlate` | 红蓝队关联分析 | | `evaluate` | 评估蓝队检测 | **`blue`** - 蓝队调查管理: | 子命令 | 描述 | | ------------------------------------- | -------------------------------- | | `submit ` | 从告警提交调查 | | `from-operation [--latest]` | 从红队操作告警提交 | | `watch [--poll-interval N]` | 持续轮询模式 | | `list` | 列出调查 | | `status [--latest]` | 调查状态 | | `evidence [--latest]` | 收集的证据 | | `techniques [--latest]` | MITRE ATT&CK 技术 | | `triage-status [--latest]` | 分层决策审计轨迹 | | `operation-status [--latest] [--watch N]` 聚合状态 | | `report [--latest] [--regenerate]` | 生成报告 | | `cleanup [--all] [--max-age-hours N]` | 清理调查 | **`history`** - 历史查询(PostgreSQL): | 子命令 | 描述 | | --------------------------------- | ------------------ | | `list [--domain D] [--since-days N]` | 列出过往操作 | | `get ` | 详细操作信息 | | `search-creds [--domain D] [--admin]` | 搜索凭据 | | `search-hashes [--cracked]` | 搜索哈希 | | `mitre-coverage [--since-days N]` | 技术覆盖度 | | `cost [--since-days N]` | Token 使用与成本 | **`config`** - 配置管理: | 子命令 | 描述 | | ---------------------------------- | -------------------- | | `show [--models]` | 显示已解析的配置 | | `validate` | 验证配置文件 | | `set-model [--all]` | 设置 LLM 模型 | ## 红队操作 ### 启动操作 ``` # 通过 Taskfile(推荐) task red:multi TARGET=dreadgoad DOMAIN=sevenkingdoms.local # 通过 CLI 直接执行 ares ops submit dreadgoad sevenkingdoms.local \ --ips 192.168.58.10,192.168.58.11 \ --model gpt-5.2 --follow # EC2 task ec2:launch DOMAIN=sevenkingdoms.local TARGETS=192.168.58.10,192.168.58.11 ``` ### 监控 ``` ares --k8s ares-red ops status --latest ares --k8s ares-red ops loot --latest --watch 10 ares --k8s ares-red ops tasks --latest --status failed ares --k8s ares-red ops runtime --latest task remote:logs ROLE=orchestrator ``` ### 注入状态(解除卡顿操作) ``` ares --k8s ares-red ops inject-credential op-xxx administrator P@ssw0rd \ --domain contoso.local ares --k8s ares-red ops inject-hash op-xxx krbtgt \ "aad3b435b51404eeaad3b435b51404ee:313b6f423a..." \ --domain sevenkingdoms.local --aes-key "f8b6c5e4d3a2b109..." ares --k8s ares-red ops inject-host op-xxx 192.168.58.20 dc01.essos.local ares --k8s ares-red ops inject-domain-sid op-xxx \ --domain north.sevenkingdoms.local --sid "S-1-5-21-..." ``` ### 报告 ``` ares --k8s ares-red ops report --latest ares --k8s ares-red ops report --latest --regenerate ares --k8s ares-red ops export-detection --latest ``` ### 操作阶段 1. **初始访问** - RECON 扫描,COERCION 启动 Responder,CREDENTIAL_ACCESS 喷洒 2. **枚举** - BloodHound、kerberoasting、AS-REP roasting、哈希破解 3. **权限提升** - ADCS 漏洞利用、委派攻击、ACL 滥用 4. **横向移动** - PSExec/WMI/WinRM、已控主机凭据收集 5. **域控主导** - DCSync、金票生成、操作报告 详见 [红队架构文档](docs/red.md) 获取详细说明。 ## 蓝队调查 蓝队针对 Grafana 告警运行自主 SOC 调查。每个 调查会调度专用代理查询 Loki 与 Prometheus,提取 IOCs,验证证据与查询结果的一致性,将发现映射到 MITRE ATT&CK 技术,并沿“痛苦金字塔”从哈希值逐步推进到 TTP。 ### 调查阶段 1. **分层(Triage)** - 解析告警,发现数据源,通过 Loki/Prometheus 进行首轮 IOC 提取(8-12 个查询) 2. **因果(Causation)** - 根因分析、前置攻击识别、攻击链重建(14 个查询) 3. **横向移动(Lateral Movement)** - 多主机范围扩展、横向移动图谱构建、枢机点检测(20 个查询) 4. **综合(Synthesis)** - 证据整合、MITRE 映射、痛苦金字塔评估、报告生成(20 个查询) ### 关键能力 - **检测模板**:预构建的 MITRE 映射 LogQL 查询,覆盖凭据转储(T1003)、DCSync(T1003.006)、Kerberoasting(T1558)、横向移动(T1550.002)、ADCS 漏洞利用(T1649)、金票(T1558.001)等 - **4 个问题引擎**:前置攻击链、MITRE Navigator、痛苦金字塔攀登器、检测配方驱动调查走向完整攻击链覆盖 - **证据验证**:从查询结果自动提取 IOC 并与近期数据验证,置信度评分(未经验证证据扣 15%) - **调查学习**:历史调查库追踪查询有效性、误报模式与技术频率 - **红蓝关联**:关联红队活动与蓝队检测,暴露检测缺口并按 MITRE 技术评分覆盖度 - **证据驱动链式**:发现的证据类型自动触发后续调查(如 `credential_access` 证据链至威胁狩猎,`lateral_movement` 链至横向分析) ### 快速开始 ``` # 从最新的红队操作开始调查 task blue:once LATEST=true # 或通过 K8s 多代理编排器 task blue:multi:remote LATEST=true # 监控进度 task blue:multi:status LATEST=true task blue:multi:operation-status LATEST=true WATCH=10 # 查看结果 task blue:multi:evidence LATEST=true task blue:multi:techniques LATEST=true task blue:reports:consolidate LATEST=true ``` ### 关键任务 | 任务 | 描述 | | -------------------------- | -------------------------------- | | `blue:once` | 从红队操作(本地)发起单次调查 | | `blue:once:remote` | 远程(K8s)单次调查 | | `blue:multi:remote` | 远程(K8s)多代理调查 | | `blue:investigate` | 提交特定告警 JSON 文件 | | `blue:poll` | 持续轮询模式 | | `blue:multi:status` | 调查状态 | | `blue:multi:evidence` | 收集的证据 | | `blue:multi:techniques` | 识别出的 MITRE 技术 | | `blue:multi:logs` | 跟进蓝队日志 | | `blue:reports:consolidate` | 从 Redis 状态生成报告 | | `blue:playbook` | 导出检测剧本 | | `blue:multi:cleanup` | 清理旧调查 | 详见 [蓝队文档](docs/blue.md) 获取完整命令参考。 ## 基础设施 ### 仓库布局 ``` ares-cli/ # Unified binary (CLI + orchestrator + worker) ares-core/ # Shared library (models, state, telemetry) ares-llm/ # LLM provider abstraction ares-tools/ # Tool dispatch framework config/ # Configuration files ares.yaml # Master config (models, timeouts, capabilities) ansible/ # Ansible collection: dreadnode.nimbus_range v1.5.0 playbooks/ares/ # Agent provisioning playbooks roles/ # 14 roles (8 agent tool roles + base + infra) warpgate-templates/ # Container image build templates ares-python-base/ # Base: Kali + security tool dependencies ares-python-orchestrator/ # Orchestrator: Rust binary + Redis ares-python-worker/ # Generic worker ares-python-{recon,credential-access,cracker,acl,privesc,lateral-movement,coercion}-agent/ ares-python-blue-{agent,triage-agent,threat-hunter-agent,lateral-analyst-agent}/ infra/ # Terragrunt deployment configs modules/ # Terraform modules ``` ### 构建 ``` # Rust 二进制文件 task rust:build # debug task rust:release # release task rust:test # tests task rust:check # compile check # 部署到 K8s task remote:rust:deploy # cross-compile + kubectl cp task remote:rust:deploy:config # push config YAML as ConfigMap task remote:check # verify binary sync # 部署到 EC2 task ec2:deploy # cross-compile + S3 + SSM install task ec2:deploy:config # push config.yaml ``` ### 容器镜像 使用 [Warpgate](https://github.com/cowdogmoo/warpgate) 构建。每个模板 使用 Ansible Playbook 进行工具预置: ``` PROVISION_REPO_PATH=./ansible warpgate build warpgate-templates/ares-python-base PROVISION_REPO_PATH=./ansible warpgate build warpgate-templates/ares-python-recon-agent ``` 详见 [基础设施参考](docs/infrastructure.md) 获取完整部署文档。 ## 开发 ### 前置条件 - [Rust](https://rustup.rs/)(稳定版) - [pre-commit](https://pre-commit.com/) - [Task](https://taskfile.dev/installation/)(推荐) ### 构建与测试 ``` task rust:build # debug build task rust:release # release build task rust:test # run tests task rust:check # compile check only cargo clippy --workspace # lint cargo fmt --all # format ``` ### 远程部署与测试 ``` # 部署到 K8s Pod task remote:rust:deploy # 验证二进制文件匹配 task remote:check # 检查 Pod 健康状态 task remote:status ``` ## 配置 ### 配置文件 主配置文件位于 `config/ares.yaml`,定义: - 每角色的 LLM 模型分配 - 代理能力与工具清单 - 操作超时与限制 - 漏洞利用优先级 - 恢复与上下文管理设置 ``` ares config show --models # show model assignments ares config set-model orchestrator gpt-5.2 ares config set-model --all gpt-5.2 ares config validate ``` ### 环境变量 **LLM 提供商**(至少需要一个): | 变量名 | 默认值 | 描述 | | ----------------------- | ------------------------ | -------------------------- | | `ANTHROPIC_API_KEY` | | Anthropic API 密钥(Claude 模型) | | `OPENAI_API_KEY` | | OpenAI API 密钥(GPT 模型) | | `OLLAMA_BASE_URL` | `http://localhost:11434` | 本地 Ollama 服务器 URL | **模型选择:** | 变量 | 默认值 | 描述 | | ------------------------- | ------- | ----------------------------------------------------------------- | | `ARES_LLM_MODEL` | | 主模型(格式:`anthropic/`、`openai/`、`ollama/`) | | `ARES_ORCHESTRATOR_MODEL` | | 覆盖编排器模型 | | `ARES_WORKER_MODEL` | | 覆盖工作器模型 | | `ARES_BLUE_LLM_MODEL` | | 覆盖蓝队模型 | | `ARES_MODEL` | | 通用回退模型(用于双方) | | `ARES_AGENT__MODEL` | | 按角色覆盖(例如 `ARES_AGENT_RECON_MODEL`) | 优先级(从高到低): `ARES_AGENT__MODEL` > `ARES_ORCHESTRATOR_MODEL`/`ARES_WORKER_MODEL` > `ARES_MODEL` > `ARES_LLM_MODEL` > 配置文件 **基础设施:** | 变量 | 默认值 | 描述 | | ---------------- | -------------------------------- | ---------------------------------------------- | | `ARES_REDIS_URL` | `redis://127.0.0.1:6379/0` | Redis URL(备用 `REDIS_URL`) | | `ARES_CONFIG` | 自动发现 | 指向 `ares.yaml` 配置文件的路径 | | `ARES_DATABASE_URL` | | PostgreSQL 连接字符串(持久化存储,未启用时为空) | | `ARES_TOOL_DISPATCH` | `redis` | 设为 `local` 以在进程内执行工具 | **蓝队:** | 变量 | 默认值 | 描述 | | --------------------------- | ----------------------- | ------------------------------- | | `ARES_BLUE_ENABLED` | | 设为 `1` 以启用蓝队 | | `ARES_BLUE_MAX_STEPS` | `75` | 每次调查最大代理循环步数 | | `ARES_REPORT_DIR` | `$HOME/ares_reports` | 报告输出目录 | | `GRAFANA_URL` | `http://localhost:3000` | Grafana 实例 URL | | `GRAFANA_SERVICE_ACCOUNT_TOKEN` | | Grafana 服务账户令牌 | | `LOKI_URL` | `http://localhost:3100` | Loki 端点(LogQL 查询) | | `LOKI_AUTH_TOKEN` | | Loki Bearer 令牌 | | `PROMETHEUS_URL` | `http://localhost:9090` | Prometheus 端点(PromQL) | **编排器调优:** | 变量 | 默认值 | 描述 | | -------------------------- | ------- | ------------------------------------ | | `ARES_OPERATION_ID` | | 操作 ID(或包含目标的 JSON 负载) | | `ARES_TARGET_DOMAIN` | | 目标 AD 域 | | `ARES_TARGET_IPS` | | 逗号分隔的目标 IP 列表 | | `ARES_INITIAL_CREDENTIAL` | | 种子凭据(格式 `user:pass@domain`) | | `ARES_MAX_CONCURRENT_TASKS` | `8` | 跨角色的最大并发任务数 | | `ARES_MAX_TASKS_PER_ROLE` | `3` | 每角色的最大飞行中任务数 | | `ARES_STALE_TASK_TIMEOUT_SECS` | `900` | 过期任务超时(秒) | | `ARES_LOCK_TTL_SECS` | `300` | 操作锁 TTL | **工作器调优:** | 变量 | 默认值 | 描述 | | --------------------- | -------- | ---------------------------------- | | `ARES_WORKER_ROLE` | | 代理角色(工作器必需) | | `ARES_WORKER_MODE` | `task` | 模式:`task`、`tool_exec` 或 `blue_task` | | `ARES_AGENT_TASK_TIMEOUT` | `600` | 每个任务最大秒数 | | `ARES_POD_NAME` | hostname | 工作器在 Redis 中的身份标识 | ### 可观测性 Ares 支持 OpenTelemetry 用于追踪与指标,提供控制台与 OTLP 导出。Grafana 集成通过 [Grafana MCP](docs/grafana_mcp_usage.md) 服务器提供操作监控面板。 ## 贡献 欢迎贡献!请遵循: 1. Fork 本仓库 2. 创建功能分支 3. 编写变更并添加测试 4. 运行 pre-commit 检查 5. 提交 Pull Request ## 许可证 本项目采用 MIT License - 详见 [LICENSE](LICENSE) 文件。 ## 安全 安全问题请参考我们的 [Security Policy](SECURITY.md)。
标签:Active Directory, Ares, Cloudflare, FTP漏洞扫描, Grafana, LLM安全代理, Loki, MITRE ATT&CK, Plaso, Rust, SOC调查, StruQ, 可视化界面, 安全编排, 实时基础设施, 搜索引擎查询, 数据展示, 杀伤链, 检测模板, 用户代理, 红队, 网络流量审计, 自主安全运营, 自动化攻击, 自定义请求头, 规则回写, 证据驱动