kyzzniko-lang/OpenScanner
GitHub: kyzzniko-lang/OpenScanner
一款集成 DAST、SAST、IAST 与混合 LLM 推理的 AI 驱动安全扫描器,旨在通过并行探测与智能研判提升漏洞发现与验证效率。
Stars: 2 | Forks: 1
# 🔍 OpenScanner v1.0 — AI 驱动的混合安全扫描器
[](https://python.org)
[](.)
[](https://www.python-httpx.org)
[](https://streamlit.io)
[](.)
[](.)
## 📌 项目概述
OpenScanner 是一款从零构建的模块化安全评估平台。v1.0 版本集成:
- **混合 AI 引擎 (Hybrid AI Engine)** — 本地大模型 (隐私优先/离线运行) 与云端 API (DeepSeek / OpenAI / Gemini,精度优先) 自由切换
- **穷举式共识检测模型** — 所有 payload 全量测试后汇总结果,AI 综合研判,不遗漏任何攻击向量
- **高性能并发扫描** — 基于 `asyncio.gather` + `Semaphore` 的并行 payload 探测,5-10x 速度提升
- **六阶段流水线** — INFO 侦察 → DAST 漏洞扫描 → SAST 审计 → IAST 联动 → 深度研判 → CWE 分析
## 🏆 核心能力矩阵
### 🤖 混合 AI 深度研判引擎
```
┌──────────────────────────┐
│ AIEngine (Orchestrator) │
├──────────────────────────┤
│ Factory Pattern: │
│ mode=OFF → Null │
│ mode=LOCAL → llama.cpp │
│ mode=API → OpenAI/ │
│ Gemini │
└────────┬─────────────────┘
│
┌─────────────────────┼─────────────────────┐
│ │ │
┌─────▼──────┐ ┌───────▼───────┐ ┌────────▼────────┐
│ AUDITOR │ │ EXPLOIT_VERIF │ │ BYPASS_EXPERT │
│ 代码审计 │ │ 漏洞验证 │ │ WAF 绕过建议 │
└────────────┘ └───────────────┘ └─────────────────┘
```
- **3 种 AI 专家角色** — 代码审计 (SAST) / 漏洞验证 (DAST) / WAF 绕过 (Mutation)
- **双模式架构** — `LOCAL`: Qwen2-0.5B/Llama-3.2-1B via llama-cpp-python (纯 CPU, 离线) / `API`: OpenAI, Google Gemini, DeepSeek (云端, 高精度)
- **智能缓存** — 基于哈希的推理结果缓存 (`.ai_cache.json`) 消除重复推理
- **延迟加载+自动卸载** — 模型首次使用时加载, 空闲 5 分钟自动卸载节省内存
- **配置持久化** — 用户首次设置的云端服务器地址、API Key 及本地模型路径自动保存至 `.ai_settings.json`,下次使用无需重新输入
### 🧬 自适应变异对抗引擎
- **9 种变异策略** — 大小写随机 / 内联注释 / Hex 双编码 / 空格替代 / DB 特化注释 / CHAR() / HPP / AI 绕过
- **上下文感知** — 基于 `detected_db_type` 和 WAF 指纹实时生成混淆 Payload
### 💉 SQL 注入五层递进检测
| 阶段 | 检测方法 | 说明 |
|------|---------|------|
| ① | 智能注入点嗅探 | 19 种正则自动区分测试参数与业务背景 (Submit/token) |
| ② | 报错注入 | MySQL / PostgreSQL / MSSQL / Oracle / SQLite 错误特征码 |
| ③ | 动态变异引擎 | 基于 DB 类型 + WAF 指纹生成混淆 Payload |
| ④ | 自适应布尔盲注 | 响应指纹 + SimHash 双验证 + 二次确认排除抖动 |
| ⑤ | 时间盲注 | 预采样网络校准 + 反向验证 SLEEP(0) |
### 🔒 BOLA/IDOR 越权检测
- **三向对比** — 正向基线 + 负向基线 + 探测结果三角验证
- **核心特征增量分析** — 防止空数据误判
- **未授权访问 + HTTP 方法篡改** — 全方位鉴权检查
### ⚔️ XSS 跨站脚本检测
- **上下文感知注入** — 自动识别属性/脚本/标签上下文并闭合
- **WAF 隐蔽混淆模式** — 大小写变异 + 编码绕过
- **反射点探测 + 真实 Payload 验证** — 两阶段精准检测
## ⚡ v1.0 核心更新日志
### 🐛 重大 Bug 修复
| 问题 | 根因 | 修复方案 |
|------|------|---------|
| **BOLA 执行完后 SQLi 不执行** | 引擎超时 (300s) 导致 BOLA 超时后 `asyncio.gather` 异常传播,取消所有并行任务 | ① 超时提升至 **1800s** ② `gather` 添加 `return_exceptions=True` 隔离异常 |
| **SQL 注入置信度低** | 单 payload 命中即停止,未穷举所有攻击向量 | 改为穷举式共识模型:全量 payload 测试 → 汇总 Evidence Matrix → AI 研判 |
| **BOLA 检测误报率高** | 公开页面未授权访问检测、静态页面方法篡改、内容漂移阈值过低 | ① 未授权检测仅针对含 API/管理路径的 URL ② 方法篡改跳过静态资源 ③ HTML 内容漂移阈值提升至 5 |
| **URL 含非 ASCII 字符连接失败** | 爬虫发现的 URL 路径含中文等字符,httpx 要求 ASCII 编码 | 新增 `_ensure_ascii_url()` 自动 percent-encode 非 ASCII 字符 |
| **路径参数未被注入测试** | 爬虫 URL 如 `/297/list.htm` 无查询参数,SQLi/XSS 插件直接跳过 | 新增 `synthesize_path_id_urls()` 自动从路径提取数字 ID 合成 `?id=` 参数 |
### 🚀 新功能
| 功能 | 说明 |
|------|------|
| **扫描强度分级** | 轻度 (仅注入点) / 中度 (注入点+关键端点) / 全量 — CLI: `--scan-intensity` / Web UI: 侧边栏选择 |
| **路径 ID 自动合成** | 从 URL 路径中识别数字/混合 ID (如 `/297/`, `/c132a90603/`),自动合成 `?id=` 注入测试 URL |
| **日期段智能排除** | 路径中的日期段 (如 `/2026/0413/`) 不会被误识别为注入 ID |
### 🚀 性能优化
| 模块 | 优化方式 | 预估加速 |
|------|---------|---------|
| SQLi 报错注入 | Error payload 依然逐个发送保证精准进度 | — |
| SQLi 布尔盲注 | `asyncio.gather` + `SimHash` 并行比对 | 2-3x |
| SQLi 时间盲注 | 反向验证 SLEEP(0) | 减少误报 |
| XSS Payload 验证 | `asyncio.gather` + `Semaphore(4)` 并发 | 3-4x |
| BOLA ID 探测 | `asyncio.gather` + `Semaphore(8)` 并发 | 5-8x |
| 引擎超时 | 300s → 1800s | 消除截断 |
| 引擎容错 | `return_exceptions=True` | 零级联故障 |
### 📋 功能增强
- **配置持久化** — AI 设置 (云端地址/API Key/本地模型路径) 自动保存至 `.ai_settings.json`
- **穷举式共识模型** — 所有插件穷举测试后统一输出 Evidence Matrix 给 AI 研判
- **WAF 联动增强** — WAF 模式自动调低并发度 + 增加随机延迟
## 📂 项目结构
```
OpenScanner/
├── main.py # 🖥️ Rich CLI 指挥中心
├── setup.py # 🚀 一键部署
├── requirements.txt # 📦 依赖清单
├── .ai_settings.json # 🔑 AI 配置持久化文件 (自动生成)
├── config/
│ └── settings.yaml # ⚙️ 全局配置
├── core/
│ ├── engine.py # 🧠 六阶段扫描调度引擎 (v1.0: 容错 + 超时优化)
│ ├── request.py # 💗 异步请求引擎 + smart_merge + SQL 安全编码
│ ├── reasoner.py # 🎯 5 维漏洞深度研判器 (含 AI 维度)
│ ├── browser.py # 🌐 Playwright 视觉取证引擎
│ ├── spider.py # 🕷️ 异步爬虫 + ABFD 业务流发现
│ └── ai/ # 🤖 Hybrid AI Engine
│ ├── __init__.py
│ ├── base.py # 抽象 Provider 接口 + 数据结构
│ ├── prompts.py # 三角色专用 System Prompt 库
│ ├── local_provider.py # 本地 LLM (llama-cpp-python / GGUF)
│ ├── api_provider.py # 云端 API (OpenAI / Gemini / DeepSeek 兼容)
│ └── engine.py # AI 指挥引擎 (Factory + Cache + 降级)
├── plugins/
│ ├── base.py # 🔌 插件基类 + ScanResult
│ ├── info/
│ │ └── waf_check.py # 🛡️ WAF 探测 (指纹写入 SharedContext)
│ ├── pocs/
│ │ ├── sqli_scan.py # 💉 SQLi v3.0 (五层递进 + 穷举共识)
│ │ ├── xss_scan.py # ⚔️ XSS 检测 (并行优化 + 上下文感知)
│ │ └── bola_idor.py # 🔓 BOLA/IDOR (并行 ID 探测)
│ └── audit/
│ └── malware_scan.py # 🔎 SAST 审计 + 污点追踪 + AI 恶意判定
├── web/
│ └── app.py # 🌐 Streamlit GUI (AI 配置面板 + 研判展示)
├── utils/
│ ├── reporter.py # 📝 报告引擎 (Markdown/JSON)
│ ├── analyser.py # 📊 CWE 关联分析器
│ ├── mutator.py # 🧬 9 策略自适应变异引擎
│ ├── poc_gen.py # 🛠️ POC 一键复现脚本生成器
│ └── patch_advisor.py # 💊 自动修复建议引擎
└── tests/
└── test_sqli_plugin.py # ✅ 单元测试
```
## 🚀 快速开始
### 1. 一键部署
```
python setup.py
```
### 2. Web GUI (推荐)
```
# Streamlit 图形控制台 (含 AI 配置面板、逐 Payload 进度条、实时研判展示)
streamlit run web/app.py
```
### 3. CLI 命令行
```
# ── 传统模式 (无 AI) ──
python main.py -t "http://target.com/page?id=1" -c 50
# ── 云端 AI 模式 (DeepSeek) ──
python main.py -t "http://target.com/page?id=1" \
--ai-mode api \
--ai-key "sk-xxx" \
--ai-api-base "https://api.deepseek.com" \
--ai-api-model "deepseek-chat"
# ── 云端 AI 模式 (OpenAI) ──
python main.py -t "http://target.com/page?id=1" \
--ai-mode api \
--ai-key "sk-xxx" \
--ai-api-model "gpt-4o-mini"
# ── 云端 AI 模式 (Gemini) ──
python main.py -t "http://target.com/page?id=1" \
--ai-mode api \
--ai-key "AIzaSy..." \
--ai-api-base "https://generativelanguage.googleapis.com/v1beta" \
--ai-api-model "gemini-1.5-flash"
# ── 本地 AI 模式 (隐私优先) ──
python main.py -t "http://target.com/page?id=1" \
--ai-mode local \
--ai-model ./models/qwen2-0.5b-instruct.gguf
# ── SAST 代码审计 + AI 恶意判定 ──
python main.py -t "/path/to/source" --plugins malware_scan --ai-mode local --ai-model ./models/qwen2-0.5b.gguf
```
## 🤖 AI 模型配置指南
### 方式一:通过 Web GUI 配置 (推荐)
1. 启动 Streamlit: `streamlit run web/app.py`
2. 在侧边栏找到 **「AI 引擎配置」** 面板
3. 选择模式 (`关闭` / `本地模型` / `云端 API`)
4. 填入对应配置项 → 点击保存
5. **配置自动持久化到 `.ai_settings.json`**,下次启动无需重新输入
### 方式二:直接编辑配置文件
编辑项目根目录下的 `.ai_settings.json`:
```
{
"ai_mode": "api",
"ai_model_path": "",
"ai_api_key": "你的API密钥",
"ai_api_base": "https://api.deepseek.com",
"ai_api_model": "deepseek-chat",
"ai_language": "zh",
"ai_trust_env": true,
"ai_proxy": ""
}
```
### 方式三:CLI 启动参数
```
python main.py -t "http://target.com" --ai-mode api --ai-key "sk-xxx" --ai-api-model "deepseek-chat"
```
### 云端模型配置
#### DeepSeek (推荐,中文优化)
| 配置项 | 值 |
|--------|-----|
| API Base | `https://api.deepseek.com` |
| API | `deepseek-chat` |
| API Key | 在 [platform.deepseek.com](https://platform.deepseek.com) 获取 |
#### OpenAI
| 配置项 | 值 |
|--------|-----|
| API Base | `https://api.openai.com/v1` (默认,可留空) |
| API Model | `gpt-4o-mini` 或 `gpt-4o` |
| API Key | 在 [platform.openai.com](https://platform.openai.com) 获取 |
#### Google Gemini
| 配置项 | 值 |
|--------|-----|
| API Base | `https://generativelanguage.googleapis.com/v1beta` |
| API Model | `gemini-1.5-flash` 或 `gemini-2.0-flash` |
| API Key | 在 [aistudio.google.com](https://aistudio.google.com) 获取 |
#### 其他兼容端点
任何兼容 OpenAI `/v1/chat/completions` 协议的服务均可使用,包括:
- Azure OpenAI
- Qwen-Plus / 通义千问
- 零一万物 (Yi)
- Moonshot (月之暗面)
只需修改 `ai_api_base` 和 `ai_api_model` 即可。
#### 代理设置 (可选)
如果需要代理访问云端 API:
```
{
"ai_proxy": "http://127.0.0.1:7897",
"ai_trust_env": true
}
```
### 本地模型配置
#### 步骤 1: 安装推理后端
```
pip install llama-cpp-python
```
#### 步骤 2: 下载 GGUF 模型
推荐模型 (按大小/精度排序):
| 模型 | 大小 | 推理速度 | 精度 |
|------|------|---------|------|
| Qwen2-0.5B-Instruct | ~400MB | 极快 (CPU) | ⭐⭐⭐ |
| Qwen2-1.5B-Instruct | ~1GB | 快 (CPU) | ⭐⭐⭐⭐ |
| Llama-3.2-1B-Instruct | ~700MB | 快 (CPU) | ⭐⭐⭐ |
```
# 下载推荐模型 (Qwen2-0.5B, ~400MB)
huggingface-cli download Qwen/Qwen2-0.5B-Instruct-GGUF \
qwen2-0_5b-instruct-q4_k_m.gguf \
--local-dir ./models/
```
#### 步骤 3: 配置路径
CLI:
```
python main.py -t "http://target.com" --ai-mode local --ai-model ./models/qwen2-0_5b-instruct-q4_k_m.gguf
```
或编辑 `.ai_settings.json`:
```
{
"ai_mode": "local",
"ai_model_path": "./models/qwen2-0_5b-instruct-q4_k_m.gguf"
}
```
## 🏛️ 系统架构
### 多阶段流水线
```
┌──────────────────────────────────────────────────────────────────────────────┐
│ ScanEngine (指挥中心) │
├──────────────────────────────────────────────────────────────────────────────┤
│ Pre-Stage: 连通性检查 │
│ ↓ │
│ Stage 1: INFO 侦察 → WAF 探测 / 指纹识别 │
│ ↓ (WAF 数据写入 SharedContext) │
│ Stage 2: DAST POC → BOLA ∥ SQLi ∥ XSS (并行执行, 互不阻塞) │
│ ↓ (detected_db_type + vulnerable_params 写入 SharedContext) │
│ Stage 3: SAST 审计 → AST 后门扫描 / CVSS 评分 │
│ ↓ (变量追踪 + 净化检查) │
│ Stage 4: IAST 联动 → Sink 定位 + 净化函数缺失检测 │
│ ↓ (概率推理) │
│ Stage 5: Deep Reasoning → 多维研判 / 等级覆写 / 🤖 AI 介入 │
│ ↓ │
│ Stage 6: CWE 分析 → CWE 关联 / 风险评分 / 修复建议 │
└──────────────────────────────────────────────────────────────────────────────┘
```
## 🎓 技术 FAQ
**Q1: BOLA 扫描完后 SQLi 不执行是什么原因?**
**A1:** 引擎超时 (300s) 导致 BOLA 超时后 `asyncio.gather` 异常传播,取消所有并行任务。修复方案:① 超时提升至 **1800s**;② `gather` 添加 `return_exceptions=True` 隔离异常。
**Q2: AI 模式如何保障隐私安全?**
**A2:** 本地模型 (LLM) 全程离线运行,敏感数据不出域;云端 API 仅传输必要非敏感数据与结果,密钥与配置独立存储。
**Q3: 本地模型需要 GPU 吗?**
**A3:** 不需要。默认使用 CPU 推理 (llama-cpp-python),可选量化模型以降低资源占用。
**Q4: 配置会持久化吗?**
**A4:** 会。AI 设置 (云端地址/API Key/本地模型路径) 自动保存至 `.ai_settings.json`,下次启动无需重新输入。
**Q5: 为什么废弃静态盲注阈值?**
**A5:** 静态阈值易导致误报/漏报,现改为基于响应指纹 + SimHash 的自适应布尔盲注与时间盲注双验证。
**Q6: 并行化如何保证不压垮目标?**
**A6:** 采用 `Semaphore` 限制并发度,结合请求速率控制与异常隔离,避免级联故障。
## 📄 License
MIT License — For authorized security assessments only / 仅供授权安全评估使用。
🔍 OpenScanner v1.0 — DAST × SAST × IAST × Mutation × AI Reasoning
Built with ⚡ asyncio + 🧬 mutation intelligence + 🤖 hybrid AI reasoning
标签:AI安全, AI推理, asyncio, ATT&CK 框架, Chat Copilot, CWE分析, DAST, httpx, IAST, Kubernetes, Python, SAST, SEO: AI安全扫描, SEO: OpenScanner, SEO: 混合安全扫描, SEO: 漏洞评估, Streamlit, 云端API, 交互式应用安全测试, 六阶段, 共识检测, 动态应用安全测试, 多模式切换, 安全评估平台, 并发扫描, 异步IO, 恶意软件分析, 无后门, 本地大模型, 模块化, 流水线, 深度研判, 混合AI引擎, 特征检测, 盲注攻击, 离线运行, 穷举测试, 计算机取证, 访问控制, 逆向工具, 隐私优先, 静态应用安全测试