SageSalmon/Diana-Web-Scanner
GitHub: SageSalmon/Diana-Web-Scanner
Diana 是一款利用大语言模型(通过 Amazon Bedrock 或 Ollama)动态生成载荷并进行语义验证的 Web 漏洞扫描器,旨在大幅降低传统扫描器的误报率。
Stars: 0 | Forks: 0
# Diana — AI 驱动的 Web 漏洞扫描器
Diana 是一款 AI 驱动的 Web 应用程序漏洞扫描器,它将传统扫描技术与 LLM 驱动的智能相结合。它基于 Amazon Bedrock 构建,利用 AI agent 自主发现、分析和验证安全漏洞,从而显著降低误报率。
## 为什么选择 Diana?
传统的 Web 扫描器会向目标发送大量静态 payload 并对响应进行模式匹配。它们会产生大量的误报,并且完全漏掉依赖上下文的漏洞。
Diana 采用了不同的方法:
- **AI 生成的 payload** — 针对 endpoint 的特定上下文、技术栈和行为量身定制
- **语义验证** — AI 阅读并对响应进行推理,而不是进行 regex 匹配
- **攻击链发现** — 识别基于特征的扫描器会遗漏的多步骤漏洞
- **叙事性报告** — 包含 AI 编写的修复指南且易于理解的调查结果
## 快速开始
```
# 克隆并安装
git clone https://github.com/diana-scanner/diana.git
cd diana
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
# 扫描目标(本地模式,无需 AWS)
diana scan https://target.com --local --modules xss,sqli,headers
# 启用 AI 进行扫描(需要 AWS Bedrock 访问权限)
DIANA_AI_ENABLED=true diana scan https://target.com -e engagements/local-juiceshop.yaml
# 启动 API 服务器
diana serve --port 8000
```
## 本地开发(无需 AWS)
Diana 可以通过使用 [Ollama](https://ollama.ai) 进行本地 LLM 推理,从而在没有 AWS 的情况下运行:
```
# 启动 Ollama + 测试目标
docker compose -f docker-compose.dev.yaml up -d
# 在本地扫描 Juice Shop
diana scan http://localhost:3000 --local --modules xss,sqli,headers
```
## AWS 部署
要使用 Amazon Bedrock 进行完整的 AI 驱动扫描,请部署基础设施:
### 前置条件
- 具有 Bedrock 模型访问权限的 AWS 账户(推荐使用 us-east-1)
- Terraform >= 1.5
- 用于 Terraform state 的 S3 存储桶 + DynamoDB 表
### 设置
```
cd tf/environments/dev
# 1. 配置 backend — 复制示例并填入你的值
cp backend.hcl.example backend.hcl
# 使用你的 S3 存储桶和区域编辑 backend.hcl
# 2. 配置变量 — 复制示例并填入你的值
cp terraform.tfvars.example terraform.tfvars
# 使用你的域名、DB 密码、API 密钥等编辑 terraform.tfvars
# 3. 初始化并部署
terraform init -backend-config=backend.hcl
terraform apply
```
### 必需配置 (terraform.tfvars)
| 变量 | 描述 | 示例 |
|----------|-------------|---------|
| `domain_name` | Diana API 的 FQDN | `diana.example.com` |
| `hosted_zone_id` | Route 53 托管区域 ID | `Z0123456789ABCDEF` |
| `db_password` | RDS 主密码 | (生成一个强密码) |
| `api_key` | API 身份验证密钥 | (生成一个强密钥) |
| `github_repo_url` | 你 fork 仓库的 URL(用于 agent 团队的 CodeBuild) | `https://github.com/you/diana.git` |
有关所有选项,请参见 [terraform.tfvars.example](tf/environments/dev/terraform.tfvars.example)。
### 成本警告
在 AWS 上运行 Diana 会产生实际费用,并且这些费用会迅速累积。AI 驱动的扫描会通过 Bedrock 发起多次 LLM 调用,agent 团队在 ECS Fargate 上每次迭代都会运行多次扫描,并且基础设施资源(Aurora、ElastiCache、NAT Gateway)在部署期间会产生基础费用。
**本项目用于管理成本的策略:**
- **DeepSeek V3.2 作为默认模型** — 比 Bedrock 上的 Claude 每单位 token 成本低得多,且扫描质量尚可接受
- **使用 Ollama 进行本地开发** — 在部署之前对扫描器逻辑进行迭代时,AWS 成本为零
- **使用 Fargate 执行 agent 任务** — 按任务付费,没有闲置的计算资源。任务启动、运行然后终止
- **在 AWS 产生费用前进行通用性检查** — agent 团队会在启动任何 ECS 任务之前在本地捕获不良代码
- **按模块跟踪 token** — `ModuleMetrics` 表记录每次扫描中每个模块的 LLM 调用次数和 token 计数,从而让你能识别出哪些组件消耗最多
- **Bedrock 定价配置** — `scripts/bedrock-pricing.json` 将成本估算输入到 chronicle 中,以进行每次迭代的跟踪
- **不使用时拆除** — `terraform destroy` 会移除所有基础设施。当你准备好再次工作时,使用 `terraform apply` 重新部署
请密切关注你的 AWS 账单仪表板,尤其是在早期实验阶段。在首次部署之前设置一个账单警报。
## 架构
```
graph LR
Target[Target App] <--> Crawler[Intelligent Crawler]
Crawler --> AI[AI Analyzer
Amazon Bedrock] AI --> PayloadGen[Payload Generator] PayloadGen --> Tester[Active Tester] Tester --> Target Tester --> Validator[AI Validator] Validator --> Report[Report Generator] ``` 完整设计请参见 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)。 ## 漏洞检测 | 类别 | 模块 | |----------|---------| | 注入 | SQL 注入、XSS、命令注入、SSTI | | 访问控制 | IDOR、失效的授权、路径遍历 | | 配置缺陷 | 安全标头、CORS、调试 Endpoint | | 信息泄露 | 堆栈跟踪、暴露的机密信息、冗长错误 | | 密码学 | 弱 TLS、不安全的 Cookie、Token 分析 | ## 技术栈 - **语言:** Python 3.12+ - **AI:** Amazon Bedrock (Claude, DeepSeek) 或 Ollama(本地) - **HTTP:** HTTPX(异步)、Playwright(JS 渲染页面) - **CLI:** Typer - **API:** FastAPI - **数据:** SQLAlchemy + PostgreSQL - **基础设施:** Terraform、ECS Fargate、Aurora Serverless ## 自主 Agent 团队 Diana 也是 **agentic 软件开发** 的一个概念验证 — 这是一个 AI agent 团队,可以在没有人工干预(除了最终的合并批准)的情况下迭代改进扫描器的检测能力。 agent 团队运行一个持续改进的循环:扫描目标、衡量检测覆盖率、识别差距、实施修复、验证修复没有破坏任何东西或引入特定于目标的代码,并记录结果。每个 agent 的工作都由另一个不同的 agent 进行验证 — 没有 agent 会给自己的作业打分。 ### 循环 ``` 1. BASELINE Validation Agent scans a target on AWS, records solve rate 2. GAP ANALYSIS Improvement Agent reads results, picks highest-impact generic fix 3. IMPLEMENT Improvement Agent writes code on a feature branch 4. GENERALITY GATE Generality Agent reviews diff — rejects target-specific code 5. TEST AUTHORING Test Author writes tests, Test Critic reviews them 6. AWS VALIDATION Validation + Test Runner + Benchmark run in parallel on ECS 7. REVIEW Review Agent synthesizes all results, recommends merge or reject 8. CHRONICLE Review Agent records metrics, narrative, and next steps ``` ### Agent | Agent | 运行位置 | 职责 | |-------|------|----------------| | **Validation** | AWS (ECS) | 针对测试目标运行 Diana,将结果与已知漏洞进行比较,生成差距分析 | | **Improvement** | 本地 | 阅读差距分析,选择影响最大的通用改进,在功能分支上实施 | | **Generality** | 本地 | 审查每一行修改过的代码 — 拒绝仅适用于单一目标或技术栈的代码 | | **Test Author** | 本地 | 为更改/新代码编写带有合成 fixture 的单元测试(无实际目标) | | **Test Critic** | 本地 | 审查测试的正确性、完整性和独立性 — 拒绝空洞的测试 | | **Test Runner** | AWS (ECS) | 在分支上执行 pytest 套件 | | **Benchmark** | AWS (ECS) | 定时扫描,衡量持续时间、token 使用量和 HTTP 请求计数 | | **Review** | 本地 | 最终质量关卡 — 综合所有 agent 的判定,编写 chronicle 条目,建议合并/拒绝 | | **Orchestrator** | 本地 | 运行完整循环,强制执行关卡顺序,检测停滞状态 | ### 交叉验证 每个生成输出的 agent 都有另一个不同的 agent 来验证它: | 生产者 | 验证者 | |----------|-----------| | Improvement Agent | Generality、Test Critic、Validation、Benchmark | | Test Author | Test Critic | | Validation Agent | Review Agent | | Benchmark Agent | Review Agent | | Review Agent | 人工(你唯一需要检查的输出) | ### AWS 基础设施 agent 任务在带有隔离的 Juice Shop sidecar 容器的 ECS Fargate 上运行。CodeBuild 从功能分支构建 Diana 镜像,推送到 ECR,并由 ECS 运行扫描。结果以结构化 JSON 的形式存放在 S3 中,由本地 agent 获取以进行分析。 agent 技能定义在 `.claude/skills/agent-*/SKILL.md` 中,并作为 Claude Code 斜杠命令(`/agent-validation`、`/agent-orchestrator` 等)进行调用。 完整设计请参见 [docs/AGENT_TEAM_PLAN.md](docs/AGENT_TEAM_PLAN.md),迭代历史请参见 [docs/CHRONICLE.md](docs/CHRONICLE.md)。 ## 文档 - [架构](docs/ARCHITECTURE.md) — 系统设计和组件图 - [入门指南](docs/GETTING_STARTED.md) — 安装和使用 - [API 参考](docs/API.md) — REST API 文档 - [Agent 团队计划](docs/AGENT_TEAM_PLAN.md) — 自主改进 agent 设计 - [Chronicle](docs/CHRONICLE.md) — 迭代历史和指标 - [RAG 优化](docs/FUTURE_RAG_OPTIMIZATION.md) — 未来上下文优化设计 ## 合规使用 Diana 专为 **授权的安全测试** 而设计。在扫描任何目标之前,请务必获得书面许可。扫描器强制执行范围边界,并提供对所有请求的完整审计日志记录。 有关如何定义和强制执行范围约束,请参见 `engagements/` 中的配置文件。 ## 许可证 Apache 2.0 — 详情请参见 [LICENSE](LICENSE)。
Amazon Bedrock] AI --> PayloadGen[Payload Generator] PayloadGen --> Tester[Active Tester] Tester --> Target Tester --> Validator[AI Validator] Validator --> Report[Report Generator] ``` 完整设计请参见 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)。 ## 漏洞检测 | 类别 | 模块 | |----------|---------| | 注入 | SQL 注入、XSS、命令注入、SSTI | | 访问控制 | IDOR、失效的授权、路径遍历 | | 配置缺陷 | 安全标头、CORS、调试 Endpoint | | 信息泄露 | 堆栈跟踪、暴露的机密信息、冗长错误 | | 密码学 | 弱 TLS、不安全的 Cookie、Token 分析 | ## 技术栈 - **语言:** Python 3.12+ - **AI:** Amazon Bedrock (Claude, DeepSeek) 或 Ollama(本地) - **HTTP:** HTTPX(异步)、Playwright(JS 渲染页面) - **CLI:** Typer - **API:** FastAPI - **数据:** SQLAlchemy + PostgreSQL - **基础设施:** Terraform、ECS Fargate、Aurora Serverless ## 自主 Agent 团队 Diana 也是 **agentic 软件开发** 的一个概念验证 — 这是一个 AI agent 团队,可以在没有人工干预(除了最终的合并批准)的情况下迭代改进扫描器的检测能力。 agent 团队运行一个持续改进的循环:扫描目标、衡量检测覆盖率、识别差距、实施修复、验证修复没有破坏任何东西或引入特定于目标的代码,并记录结果。每个 agent 的工作都由另一个不同的 agent 进行验证 — 没有 agent 会给自己的作业打分。 ### 循环 ``` 1. BASELINE Validation Agent scans a target on AWS, records solve rate 2. GAP ANALYSIS Improvement Agent reads results, picks highest-impact generic fix 3. IMPLEMENT Improvement Agent writes code on a feature branch 4. GENERALITY GATE Generality Agent reviews diff — rejects target-specific code 5. TEST AUTHORING Test Author writes tests, Test Critic reviews them 6. AWS VALIDATION Validation + Test Runner + Benchmark run in parallel on ECS 7. REVIEW Review Agent synthesizes all results, recommends merge or reject 8. CHRONICLE Review Agent records metrics, narrative, and next steps ``` ### Agent | Agent | 运行位置 | 职责 | |-------|------|----------------| | **Validation** | AWS (ECS) | 针对测试目标运行 Diana,将结果与已知漏洞进行比较,生成差距分析 | | **Improvement** | 本地 | 阅读差距分析,选择影响最大的通用改进,在功能分支上实施 | | **Generality** | 本地 | 审查每一行修改过的代码 — 拒绝仅适用于单一目标或技术栈的代码 | | **Test Author** | 本地 | 为更改/新代码编写带有合成 fixture 的单元测试(无实际目标) | | **Test Critic** | 本地 | 审查测试的正确性、完整性和独立性 — 拒绝空洞的测试 | | **Test Runner** | AWS (ECS) | 在分支上执行 pytest 套件 | | **Benchmark** | AWS (ECS) | 定时扫描,衡量持续时间、token 使用量和 HTTP 请求计数 | | **Review** | 本地 | 最终质量关卡 — 综合所有 agent 的判定,编写 chronicle 条目,建议合并/拒绝 | | **Orchestrator** | 本地 | 运行完整循环,强制执行关卡顺序,检测停滞状态 | ### 交叉验证 每个生成输出的 agent 都有另一个不同的 agent 来验证它: | 生产者 | 验证者 | |----------|-----------| | Improvement Agent | Generality、Test Critic、Validation、Benchmark | | Test Author | Test Critic | | Validation Agent | Review Agent | | Benchmark Agent | Review Agent | | Review Agent | 人工(你唯一需要检查的输出) | ### AWS 基础设施 agent 任务在带有隔离的 Juice Shop sidecar 容器的 ECS Fargate 上运行。CodeBuild 从功能分支构建 Diana 镜像,推送到 ECR,并由 ECS 运行扫描。结果以结构化 JSON 的形式存放在 S3 中,由本地 agent 获取以进行分析。 agent 技能定义在 `.claude/skills/agent-*/SKILL.md` 中,并作为 Claude Code 斜杠命令(`/agent-validation`、`/agent-orchestrator` 等)进行调用。 完整设计请参见 [docs/AGENT_TEAM_PLAN.md](docs/AGENT_TEAM_PLAN.md),迭代历史请参见 [docs/CHRONICLE.md](docs/CHRONICLE.md)。 ## 文档 - [架构](docs/ARCHITECTURE.md) — 系统设计和组件图 - [入门指南](docs/GETTING_STARTED.md) — 安装和使用 - [API 参考](docs/API.md) — REST API 文档 - [Agent 团队计划](docs/AGENT_TEAM_PLAN.md) — 自主改进 agent 设计 - [Chronicle](docs/CHRONICLE.md) — 迭代历史和指标 - [RAG 优化](docs/FUTURE_RAG_OPTIMIZATION.md) — 未来上下文优化设计 ## 合规使用 Diana 专为 **授权的安全测试** 而设计。在扫描任何目标之前,请务必获得书面许可。扫描器强制执行范围边界,并提供对所有请求的完整审计日志记录。 有关如何定义和强制执行范围约束,请参见 `engagements/` 中的配置文件。 ## 许可证 Apache 2.0 — 详情请参见 [LICENSE](LICENSE)。
标签:AI风险缓解, Amazon Bedrock, CISA项目, DLL 劫持, ECS, LLM评估, Ollama, Python, Terraform, Web漏洞扫描, 大语言模型, 无后门, 测试用例, 特征检测, 逆向工具