dreadnode/ares
GitHub: dreadnode/ares
一个 LLM 驱动的红蓝队自动化安全运营平台,通过红蓝对抗在真实基础设施上进行攻防评估与调查。
Stars: 22 | Forks: 4
# Ares - 自主安全运营代理
[](https://github.com/dreadnode/ares/blob/main/LICENSE)
[](https://github.com/dreadnode/ares/actions/workflows/rust.yaml)
[](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, 可视化界面, 安全编排, 实时基础设施, 搜索引擎查询, 数据展示, 杀伤链, 检测模板, 用户代理, 红队, 网络流量审计, 自主安全运营, 自动化攻击, 自定义请求头, 规则回写, 证据驱动