带报告生成功能的漏洞评估扫描器
一个自动化漏洞评估平台,可编排 210 个开源安全工具,聚合并去重发现结果,可选地将工具串联成 发现数据流图,运行可选的 OpenAI 兼容 LLM 分析层 进行分诊、聚类和修复,生成 概念验证脚本,驱动可选的 漏洞赏金和渗透测试代理(Pydantic AI)来验证和 PoC 发现结果,并生成专业的 Markdown、HTML、JSON 和 PDF 报告 —— 所有这些都来自单个 BlackArch Linux Docker 镜像。
config.toml / env vars / CLI args ↓ AppConfig (pydantic, 3-layer merge: TOML < env < CLI) ↓ Plugin loader — auto-discovers ./plugins/ + ~/.vuln-scanner/plugins/ ↓ ScanOrchestrator • classify_target() → TargetType • tool.applies_to(target) — skips mismatched pairs • asyncio + ThreadPoolExecutor — parallel (tool × target) tasks • AuthConfig forwarded to every applicable tool • optional chaining: produces/consumes assets in a wave/fixpoint loop ↓ ScanResult[] → Assessment (+ chain_edges / assets_by_type) ↓ LLMAnalyzer (optional) • Pass 1: triage + PoC design (threaded, per result) • Pass 2: PoC generation (PocGenerator, host-safe) • Pass 3: mitigation (evidence-informed) • Pass 4: clustering + exec summary ↓ PocRunner (container-only, VS_IN_CONTAINER=1 guard) ↓ AgentOrchestrator (optional, container-only, sequential) • bug-bounty / pentester agents (Pydantic AI) • drive tools with custom args + run sandboxed code • scope-guarded, denylisted, audited → Assessment.agent_reports ↓ ┌────────┬────────┬────────┐ │ .md │ .html │ .json │ (all formats written in parallel) └────────┴────────┴────────┘ ↓ DefectDojo (optional)
所有扫描工具、PoC 执行和代理操作均在 **BlackArch Linux** Docker 容器内运行——主机上不安装任何内容。
---
## 工具
210 个工具按类别组织。每个工具声明其支持的目标类型;编排器会自动跳过不兼容的配对。
### 网络与端口扫描
| 工具 | 说明 |
|------|-------|
| `nmap` | 全端口扫描,带服务/版本检测 |
| `rustscan` | 快速端口扫描器,结果输入 nmap |
| `masscan` | 高速 TCP/UDP 扫描器 |
| `naabu` | 带服务检测的端口扫描器 |
| `netdiscover` | 基于 ARP 的主机发现 |
### Web 应用
| 工具 | 说明 |
|------|-------|
| `nuclei` | 基于模板的漏洞扫描器 |
| `nikto` | Web 服务器配置错误扫描器 |
| `wapiti` | 黑盒 Web 漏洞扫描器 |
| `ffuf` | 快速 Web 模糊测试器(目录、参数、请求头) |
| `feroxbuster` | 带递归的内容发现 |
| `gobuster` | URI/DNS/vhost 暴力破解器 |
| `wfuzz` | Web 应用模糊测试器 |
| `dalfox` | 带参数分析的 XSS 扫描器 |
| `xsstrike` | 高级 XSS 检测引擎 |
| `commix` | 命令注入利用工具 |
| `sqlmap` | 自动化 SQL 注入与接管 |
| `nosqlmap` | NoSQL 注入扫描器 |
| `httpx` | HTTP 探测与指纹识别 |
| `whatweb` | Web 技术指纹识别器 |
| `wafw00f` | WAF 检测与指纹识别 |
| `wpscan` | WordPress 漏洞扫描器 |
| `acunetix` | Web 漏洞扫描器(基于 API) |
| `arachni` | Web 应用安全扫描器 |
| `zap` | OWASP ZAP DAST 扫描器 |
| `wapiti` | 黑盒漏洞扫描器 |
| `drheader` | HTTP 安全响应头分析器 |
| `humble` | HTTP 响应头安全检查器 |
| `hakrawler` | 用于 URL 和端点的快速 Web 爬虫 |
| `katana` | 下一代 Web 爬取框架 |
| `gau` | 已知 URL 收集器(AlienVault、WaybackMachine) |
| `jsluice` | JavaScript 密钥与 URL 提取器 |
| `corscanner` | CORS 配置错误扫描器 |
| `crlfuzz` | CRLF 注入扫描器 |
| `smuggler` | HTTP 请求走私检测器 |
| `linkfinder` | 在 JavaScript/HTML 源码中发现端点 |
| `cariddi` | 带密钥和端点检测的 Web 爬虫 |
### API 与 GraphQL
| 工具 | 说明 |
|------|-------|
| `kiterunner` | 使用 kite 文件进行 API 路由发现 |
| `graphql_cop` | GraphQL 安全审计器 |
| `restler` | 有状态 REST API 模糊测试器 |
| `apifuzzer` | 基于 OpenAPI/Swagger 的模糊测试器 |
| `cherrybomb` | OpenAPI 规范安全 linter |
| `arjun` | HTTP 参数发现 |
| `paramspider` | 从 wayback/来源挖掘参数 |
### DNS 与侦察
| 工具 | 说明 |
|------|-------|
| `amass` | 子域名枚举(被动 + 主动) |
| `subfinder` | 快速被动子域名枚举 |
| `dnsx` | DNS 解析器与探测工具包 |
| `dnsrecon` | DNS 枚举与区域传送 |
| `fierce` | DNS 侦察与主机发现 |
| `theharvester` | OSINT:邮箱、姓名、主机、子域名 |
| `puredns` | 带通配符过滤的快速子域名暴力破解器 |
| `alterx` | 子域名排列引擎 |
| `waybackurls` | 从 Wayback Machine 收集历史 URL |
| `httprobe` | 活跃 HTTP/HTTPS 主机探测器 |
### TLS / SSL
| 工具 | 说明 |
|------|-------|
| `testssl` | TLS 配置与密码套件审计 |
| `sslyze` | TLS 扫描器(密码套件、Heartbleed、ROBOT) |
| `sslscan` | SSL/TLS 服务扫描器 |
| `tlsx` | 快速 TLS 探测 |
| `tls_attacker` | TLS 协议攻击工具 |
| `ssh_audit` | SSH 配置与算法审计器 |
### SMB 与网络服务
| 工具 | 说明 |
|------|-------|
| `smbmap` | SMB 共享枚举与权限 |
| `enum4linux` | SMB/NetBIOS 枚举 |
| `crackmapexec` | Active Directory 与 SMB 评估 |
| `openvas` | OpenVAS 漏洞扫描器 |
### SAST 与代码分析
| 工具 | 说明 |
|------|-------|
| `bandit` | Python SAST——常见安全反模式 |
| `semgrep` | 带社区规则的多语言 SAST |
| `gosec` | Go 安全检查器 |
| `bearer` | 带隐私和安全规则的数据流 SAST |
| `horusec` | 多语言 SAST 引擎 |
| `brakeman` | Ruby on Rails SAST 扫描器 |
| `flawfinder` | C/C++ 常见缺陷静态分析 |
| `dependency_check` | OWASP 依赖漏洞扫描器 |
| `pip_audit` | Python 包漏洞检查器 |
### 软件成分分析(SCA)
| 工具 | 说明 |
|------|-------|
| `osv-scanner` | 开源漏洞数据库扫描器 |
| `npm-audit` | Node.js 包漏洞审计 |
| `govulncheck` | Go 模块漏洞检查器 |
### 密钥检测
| 工具 | 说明 |
|------|-------|
| `gitleaks` | Git 历史密钥扫描器 |
| `trufflehog` | 基于熵的深度密钥查找器 |
| `secretfinder` | JS 文件和端点中的密钥 |
| `detect-secrets` | 基于基线的密钥扫描器 |
| `noseyparker` | 带模式规则的高速密钥扫描器 |
### IaC 与配置
| 工具 | 说明 |
|------|-------|
| `checkov` | Terraform/K8s/Dockerfile IaC 扫描器 |
| `tfsec` | Terraform 静态分析 |
| `terrascan` | 多云 IaC 安全扫描器 |
| `hadolint` | Dockerfile 最佳实践 linter |
### 云基础设施
| 工具 | 说明 |
|------|-------|
| `prowler` | AWS/GCP/Azure 安全态势评估 |
| `kube-bench` | CIS Kubernetes 基准检查器 |
### 容器与供应链
| 工具 | 说明 |
|------|-------|
| `trivy` | 容器镜像 + 文件系统漏洞扫描器 |
| `grype` | 容器与包漏洞匹配器 |
---
## 目标类型门控
编排器将每个目标分类为一个或多个类型,并且仅运行声明支持该类型的工具。这消除了例如 SMB 工具针对 Web URL 运行所产生的噪声。
| 类型 | 示例 | 匹配的工具 |
|------|---------|-----------------|
| `HOST` | `example.com` | DNS、SSL、Web、SMB 工具 |
| `IP` | `10.0.0.1` | 网络、端口、SMB 工具 |
| `CIDR` | `10.0.0.0/24` | 网络扫描器 |
| `URL` | `https://app.example.com` | Web、API、SSL 工具 |
| `PATH` | `/src/myapp` | SAST、SCA、密钥、IaC 工具 |
| `REPO` | `https://github.com/org/repo` | 密钥、SAST、SCA 工具 |
| `IMAGE` | `myapp:latest` | 容器扫描器 |
| `CLOUD` | `aws:profile=prod`、`arn:aws:…` | 云态势工具(prowler、kube-bench、terrascan) |
分类是自动的——只需传入目标字符串;扫描器会判断其类型。
可识别的云目标格式:
- AWS ARN:`arn:aws:iam::123456789012:root`
- 命名配置文件简写:`aws:profile=production`
- GCP 项目:`projects/my-project-id`
- Azure 订阅 UUID:`00000000-0000-0000-0000-000000000000`
---
## 扫描模式
| 模式 | 描述 |
|------|-------------|
| `paranoid` | 最大隐蔽性——被动探测,最小足迹 |
| `passive` | 无主动攻击——仅枚举和横幅抓取 **(默认)** |
| `active` | 启用标准漏洞检查 |
| `aggressive` | 全扫描:所有模板、暴力破解、快速时序 |
---
## 工具链
默认情况下,编排器运行扁平的 **工具 × 目标** 矩阵。启用
`[chaining]` 可将其改为实时 **数据流图**:*产生*资产(子域名、活跃主机、开放端口、URL、参数、技术指纹……)的工具会在后续波次中馈送给*消费*这些资产类型的工具。
- **波次 0** 针对 CLI 目标运行无依赖的工具。
- 每个后续波次由目前已发现的资产触发,直至达到
`max_depth`,直到达到不动点(无新工作)。
- `asset_predicate` 控制路由,例如 `wpscan` 仅在指纹包含 `wordpress` 的 `tech` 资产上触发,TLS 工具仅在 TLS 端口上触发。
- 被动/偏执模式仅传播被动资产类型;预算限制每种类型有多少资产继续传递。```toml
[chaining]
enabled = true
max_depth = 5 # max wave count (prevents unbounded expansion)
max_new_targets = 200 # hard cap on newly-discovered targets per run
[chaining.asset_budgets] # per-asset-type carry-forward caps
subdomain = 500
live_host = 500
url = 1000
open_port = 300
发现图会在每份报告中以 Discovery Chain 部分呈现
—— 按类型列出的资产、波次数量以及链式边
(source_tool → asset → triggered_tool)—— 并在 JSON 中表现为 chain_edges、
stats.assets_by_type 和 stats.waves_run。
凭据会被转发到所有适用的 Web 工具(nuclei、ffuf、feroxbuster、gobuster、nikto、sqlmap、dalfox、wpscan、wapiti、katana、hakrawler、arjun、wfuzz、corscanner、kiterunner、httpx)。
除非存在针对单个目标的覆盖配置,否则会应用于每个目标。
通过配置:```toml [scan.auth] bearer_token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." username = "admin" password = "secret"
[scan.auth.cookies] session = "abc123"