pratik90908/ARES
GitHub: pratik90908/ARES
ARES 是一款跨平台自主漏洞赏金猎手,通过持久化工作流和 Token 高效的 CLI 代理协作,帮助安全研究员在授权范围内系统性地发现、验证并记录可复现的安全漏洞证据。
Stars: 5 | Forks: 0
# ARES v1.0 — 自主漏洞赏金猎手

[](https://github.com/pratik90908/ARES/actions/workflows/portable.yml)
[](https://github.com/pratik90908/ARES/releases)
[](LICENSE)
ARES 是一款用于授权安全研究的跨平台自主漏洞赏金猎手。它能够映射 Web 和 API 攻击面,捕获真实的浏览器请求结构,执行受策略管控的测试实验,比对身份与应用状态,独立复核候选目标,并将可复现的证据打包以供人工审查。
它专为那些希望使用一套持久化工作流,而非处理大量脱节扫描器输出的研究人员而构建。ARES 将授权范围、会话、观察记录、假设、实验、对照组、证明和发现保存在一个本地的测试任务状态中,人工或 CLI 编码代理均可随时恢复该状态。
## 设计上注重 Token 效率
ARES 专为深度 hunting 而构建,不会让模型上下文过载。Runtime 将大量重复性数据保留在磁盘上,并为 CLI 代理提供紧凑的、便于决策的视图:
- **紧凑的摘要而非原始数据转储。** 命令会返回摘要、计数、下一步操作以及 `ares://` 证据句柄。只有在需要针对特定证明的问题进行解答时,才会提供完整的响应数据。
- **排序优先的边界探索而非无休止的侦察列表。** ARES 会优先筛选出多样化、高价值的资产和浏览器导航路径,然后再为其分配请求或代理的注意力。
- **请求结构去重。** 将等效的 URL 和交互折叠为可复用的观察记录,而不是反复消耗 hunting 预算和上下文。
- **持久化恢复。** SQLite 状态会保存任务、假设、对照组、发现结果、来源信息以及已验证的否定结论,因此全新的 CLI 代理会话可以直接从 `ares status` 继续执行,而无需重放整个 hunting 历史。
- **元数据优先的证据。** 代理默认仅检查小型证据摘要,仅在需要时通过 `--raw` 参数显式加载原始字节数据。
- **否定知识同样具有价值。** 被证伪的结论和健康的对照组记录会被保留下来,从而防止下一个会话重复发现相同的错误线索。
这样的设计使得更多的上下文窗口被用于决定测试和证明什么,而减少了用于重读扫描器输出、重复 endpoint 以及旧对话记录的消耗。
## 最快上手:配合 CLI 代理使用 ARES
安装 ARES,创建一个独立的测试任务目录,并将代理指向该任务的配置文件:
```
git clone https://github.com/pratik90908/ARES.git
cd ARES
./scripts/install.sh --with-tools
mkdir -p "$HOME/ares-hunts/my-program"
cd "$HOME/ares-hunts/my-program"
ares init
# 仅添加程序的授权范围和规则。
$EDITOR scope.yaml
$EDITOR policies/bug-bounty-safe.yaml
export ARES_CONFIG="$PWD/ares.yaml"
ares scope validate
ares doctor
# 从 ARES 仓库打开你的 CLI 代理。
cd /path/to/ARES
codex # or: claude / grok / another tool-capable CLI agent
```
Windows 用户可以参考下方等效的 PowerShell 安装和任务设置步骤。请将 CLI 代理保留在 ARES 仓库目录中,并将 `ARES_CONFIG` 环境变量指向独立任务目录中的 `ares.yaml`。
将以下启动提示词粘贴到代理中,并替换其中的两处占位符:
```
Read AGENTS.md and PLAYBOOK.md completely and follow them as the operating
contract for this authorized ARES engagement.
TARGET: https://AUTHORIZED-TARGET.example
Before sending traffic, verify the target against the loaded scope and policy,
then run `ares version`, `ares doctor`, `ares scope validate`, and `ares status`.
Resume durable work if it exists. Otherwise begin a bounded, multi-class hunt.
Map real browser and API interactions, preserve methods, parameters, bodies,
object IDs, identities, and workflow state, then rank and test evidence-backed
hypotheses across injection, server-side paths, authorization, authentication,
protocols, races, business logic, and client behavior where relevant.
Stay inside the loaded scope, policy, rate limits, and program rules. Never
invent permission, sessions, evidence, impact, or severity. Treat signals as
observations until controlled experiments and an independent retest establish
reproducible impact. Do not submit or disclose findings. Continue beyond the
first candidate until coverage is complete or a precise operator-controlled
blocker remains. Keep updates compact and use `ares://` evidence handles.
Begin now with orientation, state recovery, and target validation.
```
如需包含详细停止规则和任务字段的完整提示词,请使用 [`START-HUNT.md`](START-HUNT.md)。
## v1.0 包含的功能
- 攻击面发现、DNS、HTTP 探测、爬取、JavaScript 路由分析、请求重放、响应比对以及 HAR 导入。
- 通过 CDP 对 Chrome、Chromium、Brave 或 Edge 进行智能浏览器观察,支持隔离的身份上下文,并捕获 Fetch、XHR、GraphQL、WebSocket、表单、DOM 以及存储状态。
- 用于授权、身份验证、SQL 注入、XSS、SSRF、模板和命令执行、目录遍历、XXE、并发竞争、GraphQL、CORS、表单以及重定向的 hunting 包。
- 从观察、实验、对照组、结论、独立证明到发现的持久化攻击图谱与科学溯源链。
- Runtime 强制执行的授权范围、速率限制、风险策略、审批机制以及内容寻址证据。
- 支持 `amd64` 和 `arm64` 架构的 macOS、Linux 和 Windows 原生静态发布版本。
- 适用于 Codex、Claude Code、Grok 及其他具备工具调用能力的代理的 CLI 和 MCP 接口。
ARES 并不保证一定能发现漏洞,也不是一个自动提交报告的机器人。信号与发现结果始终保持独立,且高影响的攻击路径依然保持可审查性。
## 安装
### 下载发布版本
从 GitHub 的 **Releases** 页面下载适用于您操作系统和 CPU 的归档文件,然后通过 `sha256sums.txt` 进行校验。
macOS 或 Linux:
```
tar -xzf ares_1.0.0__.tar.gz
install -m 0755 ares_1.0.0_*/ares "$HOME/.local/bin/ares"
ares version
```
Windows PowerShell:
```
Expand-Archive .\ares_1.0.0_windows_amd64.zip -DestinationPath .\ares-release
$bin = "$env:LOCALAPPDATA\Programs\ARES\bin"
New-Item -ItemType Directory -Force $bin | Out-Null
Copy-Item .\ares-release\ares_1.0.0_windows_amd64\ares.exe $bin
& "$bin\ares.exe" version
```
如果您的 shell 中尚未提供该安装目录,请将选定的安装目录添加到 `PATH` 中。
### 从源码构建
环境要求:Go 1.23 或更高版本。无需 C 编译器。
macOS 或 Linux:
```
git clone https://github.com/pratik90908/ARES.git
cd ARES
./scripts/install.sh
# 可选:也可安装固定版本的 subfinder 和 httpx 适配器。
./scripts/install.sh --with-tools
```
Windows PowerShell:
```
git clone https://github.com/pratik90908/ARES.git
Set-Location ARES
.\scripts\install.ps1
# 可选的 recon 适配器:
.\scripts\install.ps1 -WithTools
```
安装脚本会使用用户具有写权限的目录,不会调用 `sudo`,也不会悄无声息地修改 shell 启动文件。推荐使用 `subfinder` 和 `httpx` 进行侦察,但原生的 HTTP、浏览器、图表、证据、hunting 包、会话、MCP 或评估功能并不强依赖它们。
## 设置测试任务
为每个授权项目创建一个独立的目录。请将其状态数据保存在 ARES 源代码检出目录之外,以确保凭据、HAR 文件、报告和目标数据绝不会进入项目代码库。
macOS 或 Linux:
```
mkdir -p "$HOME/ares-hunts/my-program"
cd "$HOME/ares-hunts/my-program"
ares init
# 在发送流量之前,编辑生成的范围和策略。
$EDITOR scope.yaml
$EDITOR policies/bug-bounty-safe.yaml
export ARES_CONFIG="$PWD/ares.yaml"
ares scope validate
ares doctor
ares status
```
Windows PowerShell:
```
$hunt = "$HOME\ares-hunts\my-program"
New-Item -ItemType Directory -Force $hunt | Out-Null
Set-Location $hunt
ares init
notepad scope.yaml
notepad policies\bug-bounty-safe.yaml
$env:ARES_CONFIG = "$PWD\ares.yaml"
ares scope validate
ares doctor
ares status
```
当项目规则仅允许被动观察时,请使用被动策略。仅当书面规则明确允许侵入性测试时,才选择主动的漏洞赏金策略。
ARES 不会自行扩大已加载的授权范围或策略。
源代码检出目录和发布归档文件中包含了 `policies/bug-bounty-active.yaml`。若要使用它,请将其复制到测试任务目录的 `policies` 目录中,并在确认项目允许这些操作之后,将 `ares.yaml` 中的 `policy_file` 指向该路径。
如果安装了同属 Chromium 内核的浏览器且位于非标准路径,请在运行 `ares doctor` 之前,将其可执行文件路径设置到 `ARES_BROWSER_PATH` 环境变量中。
## 执行 hunting
从真实的、已授权的攻击面开始,并保留其参数、HTTP 方法、对象标识符以及请求体。丰富的请求结构能够比单纯的主机名产生更好的实验效果。
```
# 映射有界表面。
ares run technology.identify --target https://app.example.test --json
ares run web.crawl --target https://app.example.test --json
ares run js.analyze --target https://app.example.test --json
ares live forms --target https://app.example.test
# 植入一个观察到的请求形状并运行有界批次。
ares hunt seed --from inject \
--target 'https://app.example.test/api/items/123?filter=active' \
--mode critical
ares hunt auto --max 15
ares status
# 重新测试候选者,直到证明完成或被反驳。
ares finding list
ares finding retest find_...
ares finding show find_...
```
对于经过身份验证的授权测试,需使用项目提供的两个相互隔离的账户进行引导:
```
ares identity bootstrap --role user --label alice --cookie 'session=...'
ares identity bootstrap --role user --label bob --cookie 'session=...'
ares hunt requeue --session
ares hunt auto --max 15
```
用于持久化的浏览器/API 评估:
```
ares assessment start \
--target https://app.example.test \
--api openapi.yaml \
--har session.har \
--identity-a id_alice \
--identity-b id_bob \
--fresh \
--heartbeat 30s
ares assessment list
ares assessment status assess_... --events 8
ares assessment research assess_...
ares assessment report assess_... --out report.md
```
请忽略您尚未获取的输入项。切勿将有效的 token、cookie、HAR 或目标报告放置在此代码库中。
## 配合 CLI 代理使用 ARES
在 ARES 文件夹中打开 Codex、Claude Code、Grok 或其他 CLI 代理。代理只需读取以下内容:
1. [`AGENTS.md`](AGENTS.md) — 工具映射、权限边界与证明契约。
2. [`PLAYBOOK.md`](PLAYBOOK.md) — 分阶段的、多类别的 hunting 流程。
复制 [`START-HUNT.md`](START-HUNT.md),替换其中的目标内容,并将其粘贴到代理会话中。提示词中的目标仅仅是一个入口点;已加载的 `ARES_CONFIG` 才是真正的权限边界。
若要暴露结构化的 MCP 接口:
```
ares serve --mcp
```
客户端配置示例:
```
{
"mcpServers": {
"ares": {
"command": "/absolute/path/to/ares",
"args": ["serve", "--mcp"]
}
}
}
```
## 核心工作流
```
authorized scope
→ map browser and API surfaces
→ capture real interactions
→ rank multi-class hypotheses
→ execute bounded experiments and controls
→ independently reproduce impact
→ package evidence for review
```
每个发现的目标在持久化之前和执行之前都会进行校验。浏览器请求会保留其 HTTP 方法、请求体、发起者、身份以及页面状态的来源。不完整的或会改变状态的观察记录不会被悄无声息地转换为 GET 请求。
## 常用命令
| 目标 | 命令 |
| --- | --- |
| 检查安装 | `ares doctor` |
| 检查可恢复的状态 | `ares status` |
| 对已发现的资产进行排序 | `ares asset rank --limit 25` |
| 导入浏览器流量 | `ares har import --file session.har` |
| 运行针对性的 hunting 包 | `ares pack run inject.sqli --target URL --param id` |
| 比对会话 | `ares run http.compare --target URL --session-a A --session-b B` |
| 审查发现结果 | `ares finding list` |
| 读取证据元数据 | `ares evidence show ev_...` |
| 运行 MCP 服务器 | `ares serve --mcp` |
未知的子命令会打印其当前用法。建议优先使用 JSON 摘要和 `ares://` 证据句柄,而不是将大量响应文本粘贴到代理上下文中。
## 验证与开发
常规测试套件使用本地夹具,不会访问公共目标。
```
go mod download
go test ./...
go vet ./...
# 快速的对抗性 oracle 控制。
go run ./cmd/ares benchmark golden-oracles
# 构建所有六个发布归档和 SHA-256 校验和。
go run ./scripts/package_release.go
```
本地 golden 实验室涵盖了授权、注入、受控执行、纯被动行为以及健康的对照组。基于浏览器的基准测试需要 Chrome、Chromium、Brave 或 Edge 的支持。
## 文档
- [架构](docs/architecture.md)
- [自主评估](docs/autonomous-assessments.md)
- [威胁模型](docs/threat-model.md)
- [适配器开发](docs/adapter-development.md)
- [贡献指南](CONTRIBUTING.md)
- [安全策略](SECURITY.md)
## 发布支持
| 操作系统 | 架构 | 浏览器支持 |
| --- | --- | --- |
| macOS | `amd64`, `arm64` | Chrome, Chromium, Brave, Edge |
| Linux | `amd64`, `arm64` | PATH、系统及 Snap 安装的 Chromium 内核系列 |
| Windows | `amd64`, `arm64` | 通过 CDP 控制 Chrome, Chromium, Brave, Edge |
发布归档是确定性生成的,包含二进制文件、许可证、快速入门指南以及代理运行所需文件。有关发布说明,请参阅 [`CHANGELOG.md`](CHANGELOG.md)。
## 许可证
请参阅 [`LICENSE`](LICENSE)。
标签:Bug Bounty, CISA项目, EVTX分析, 可自定义解析器, 日志审计, 自动化渗透测试, 运行时操纵