R1zoro/ChainsawRecon
GitHub: R1zoro/ChainsawRecon
一款具备范围感知和知识图谱记忆的自主 AI 渗透测试智能体,通过隔离沙箱和证据驱动的工作流实现可审计的 Web 应用安全评估。
Stars: 0 | Forks: 0
# ChainsawRecon
**ChainsawRecon** 是一个自主的、具备范围感知能力的 AI 渗透测试与安全评估智能体。它在隔离的 Docker 沙箱中编排安全工具,构建 Web 应用和 API 的有状态世界模型,并通过具体的证据验证来执行假设驱动的实验。
ChainsawRecon 专为授权的渗透测试、安全审计和防御性攻击面评估而设计,将高级 AI 推理与确定性、可审计的执行过程桥接在一起。
## 🌟 核心功能
* **有状态世界模型与交战记忆:** 在多次测试运行中维护持久的关系状态(组织、应用、服务、路由、端点、认证上下文、技术),而不是孤立地处理每个目标。
* **假设生命周期与目标驱动的工作流:** 超越以工具为中心的输出。用结构化的假设跟踪(`observed` $\rightarrow$ `suspected` $\rightarrow$ `evidence_required` $\rightarrow$ `experiment_planned` $\rightarrow$ `reproduced` $\rightarrow$ `validated`/`rejected`)取代原始的扫描器输出。
* **隔离沙箱执行:** 所有命令执行均发生在受严格限制的 Docker 容器内。LLM 绝不会拥有宿主机 shell 访问权限或直接的系统访问权限。
* **范围守卫与速率控制:** 对每一个出站工具请求执行严格的执行前范围验证,并提供可配置的速率限制和请求间隔。
* **多模态证据捕获:** 将 HTTP 请求/响应、HAR 浏览器捕获、技术手册和静态源代码分析导入并标准化为规范的、可重放的证据项。
* **独立验证引擎:** 发现结果遵循证据阶梯,在分类之前必须通过独立的重放和差分对照测试。
* **人类可读目录与机器可读状态:** 生成用于 AI 推理的 SQLite/JSON 知识图谱,以及用于手动测试和报告的整洁 Markdown/TSV 目录。
## 🛠️ 架构与工作原理
ChainsawRecon 跨越四个结构化层运行:
1. **AI 编排与推理层:** Coordinator 模型接收目标范围、当前世界模型状态、覆盖缺口和活动的安全目标。它选择结构化的 JSON 操作,而不是执行未经验证的 shell 命令。
2. **Worker 与策略层:** 有界执行流处理专门的任务(目标映射、技术分析、API/GraphQL 表面探测、认证上下文评估和结果验证)。
3. **工具与沙箱执行层:** 在由严格的 `ScopeGuard` 管理的沙箱环境中执行已批准的工具(`httpx`、`katana`、`nuclei`、`ffuf`、`dalfox`、`sqlmap`、`inql`、`clairvoyance` 等)。
4. **数据与知识记忆层:** 采用双数据库设计,具有用于存储瞬时试验数据的一次性 **Run Store** (`recon.db`),以及用于存储已验证的跨运行情报和目标拓扑的持久化 **Engagement Store** (`knowledge.db`)。
## 📋 前置条件
* **操作系统:** Linux、macOS 或 Windows (PowerShell/WSL2)
* **Python:** 3.10 或更高版本
* **Docker:** 在本地运行的 Docker Desktop 或 Docker Engine
* **本地 LLM 服务器(可选 / 推荐):** Ollama、vLLM、LM Studio 或任何兼容 OpenAI 的 API endpoint。
* **Git**
## 🚀 快速入门与设置指南
### 1. 克隆代码库并设置 Python 环境
```
git clone https://github.com/your-org/ChainsawRecon.git
cd ChainsawRecon
# 创建并激活虚拟环境
python -m venv .venv
# 在 Linux/macOS 上:
source .venv/bin/activate
# 在 Windows (PowerShell) 上:
# .venv\Scripts\Activate.ps1
# 以可编辑模式安装依赖项
pip install -e .
```
### 2. 构建 Docker 执行沙箱
安全工具在一个专用的 Docker 容器(`testing-sandbox`)内运行。在本地构建镜像:
```
docker build --pull --no-cache -f sandbox/Dockerfile.sandbox -t testing-sandbox:latest .
```
验证沙箱工具安装:
```
docker run --rm bounty-sandbox:latest bash -lc "command -v httpx nuclei katana inql feroxbuster dalfox"
```
### 3. 启动本地 LLM 提供程序(例如 Ollama)
确保您的 LLM 提供程序正在本地运行,并提供兼容 OpenAI 的 API endpoint:
```
# 使用 Ollama 的示例:
ollama serve
# 拉取您首选的模型(例如,Qwen2.5-Coder、Mistral、Llama-3 等)
ollama pull qwen2.5-coder:14b
```
## 📁 设置交战工作区
ChainsawRecon 将评估数据组织到交战目录中。
### 1. 初始化交战目录
```
# 复制 template 目录
Copy-Item -Recurse engagements\_template engagements\corporate-audit
```
### 2. 配置范围与规则
填充 `engagements/corporate-audit/program/` 内的项目定义文件:
* `scope.json`:机器可读的目标域名、CIDR 和速率限制。
* `in-scope.txt`:授权的目标 URL 和主机名列表。
* `out-of-scope.txt`:排除的 IP 地址或域名。
* `rules.md`:评估规则、测试窗口和操作限制。
* `prompt.md`:为智能体提供的高级安全目标或应用上下文。
* `secrets.env`:*(可选)* 认证 token 或测试凭据。保持 git 忽略状态。
* `priority-targets.txt`:*(可选)* 优先评估的高价值路由/API。
## 💻 用法与 CLI 参考
针对已初始化的交战任务运行 ChainsawRecon:
```
python -m bounty_agent.cli \
--engagement engagements/corporate-audit \
--mode attack \
--provider ollama \
--model ollama/qwen3.5:4b \
--llm-base-url http://localhost:11434/v1 \
--llm-api-key ollama \
--runner docker \
--docker-image testing-sandbox \
--execute \
--max-steps 1000 \
--max-commands-per-minute 40
```
### 操作模式
| 模式 | 描述 | 主要关注点 |
|---|---|---|
| `mapping` | 资产发现与目标映射。 | 发现主机、路由、技术、JS bundles 和端点。无侵入性测试。 |
| `recon` | 主动指纹识别与表面分析。 | 低速率表面探测、标头检查和框架分类。 |
| `attack` | 假设生成与证据主导的测试。 | 基于发现的表面执行安全、结构化的安全实验。 |
| `auto` | 自主阶段转换。 | 根据状态覆盖率自动从 mapping $\rightarrow$ recon $\rightarrow$ attack 推进。 |
| `assistant` | 操作员辅助的交互模式。 | 允许显式的外部搜索查询和操作员指导。 |
### 关键 CLI 标志
* `--engagement `:*(必需)* 目标交战文件夹的路径。
* `--mode `:执行模式(默认:`auto`)。
* `--execute`:在沙箱容器内启用实时工具执行。
* `--dry-run`:以模拟模式运行规划器,而不执行外部命令。
* `--provider `:LLM 提供程序后端类型。
* `--model `:在您的提供程序后端中指定的模型标识符。
* `--llm-base-url `:API endpoint URL(例如,`http://localhost:11434/v1`)。
* `--max-steps `:会话的全局步骤/操作预算。
* `--max-commands-per-minute `:对出站命令强制执行速率限制。
* `--har-file `:*(可选)* 将网络流量捕获导入交战证据模型。
* `--source-dir `:*(可选)* 导入静态源代码目录以进行路由和接收点分析。
## 🔒 安全控制与执行边界
1. **Docker 隔离:** 工具在具有丢弃功能、非 root 执行和 CPU/RAM 限制的容器内运行。
2. **ScopeGuard 强制执行:** 在执行任何操作之前,每个域或 IP 目标都会根据 `scope.json` 进行验证。
3. **无未清理的 Shell 访问权限:** LLM 发出严格的 JSON 格式操作(`run_tool`、`write_file`、`http_request`、`finish`),这些操作在执行前会被确定性地解析和验证。
4. **证据阶梯:** 原始工具命中永远不会直接产生发现结果。它会生成一个 `observation`,进而创建一个 `hypothesis`,这需要一个 `experiment`、原始 `evidence` 以及独立的 `reproduction`。
5. **WAF 与故障感知:** Cloudflare 或速率限制响应会触发自动退避、证据保留和任务延迟,而不是嘈杂的暴力破解尝试。
## 📊 产物与输出
执行后,所有会话记录都会保存在 `engagements//agent/` 下:
```
engagements//agent/
├── knowledge.db # Curated cross-run persistent relational database
├── engagement-report.md # Comprehensive executive & technical report
├── catalogs/ # Operational human-readable catalogs
│ ├── architecture.md # Target topology, services, and tech stack map
│ ├── routes.json # Discovered application endpoints and HTTP methods
│ ├── technologies.json # Detected software stacks & component playbooks
│ └── world-model.json # Exported machine-readable knowledge graph
└── runs// # Execution artifacts per session
├── trace.jsonl # Complete audit log of every LLM decision & command
├── report.md # Per-run technical summary
├── session.state.json # Run status, metrics, and step accounting
└── workspace/ # Raw tool outputs, evidence items, and HTTP logs
```
## 📜 许可证与合规性
ChainsawRecon 专为授权的安全测试、防御态势评估和教育研究而设计。用户有责任在发起任何安全评估之前获得资产所有者的明确授权。
标签:AI风险缓解, CISA项目, Docker沙箱, LLM编排, Web安全, 人工智能, 密码管理, 用户模式Hook绕过, 自动化渗透测试, 蓝队分析, 请求拦截, 运行时操纵, 逆向工具