bidhata/SleepyWalker
GitHub: bidhata/SleepyWalker
一款将爬取、AI 驱动的 SQL 注入确认、sqlmap 利用与多格式报告串联为一键流程的自动化红队工具,通过自学习数据库持续提升扫描精度。
Stars: 1 | Forks: 0
# 🛡️ SleepyWalker
### *永不停歇的 SQL 注入扫描器*
**发现。确认。利用。报告。学习。**
[](https://golang.org)
[](LICENSE)
[]()
[](https://sqlmap.org)
``` You give it a URL. It gives you the database. And it gets smarter every time it runs. ```
[快速开始](#-quick-start) • [工作原理](#-how-it-works) • [功能](#-features) • [配置](#-configuration) • [学习数据库](#-learning-database) • [Hook](#-plugin-system)
``` You give it a URL. It gives you the database. And it gets smarter every time it runs. ```
[快速开始](#-quick-start) • [工作原理](#-how-it-works) • [功能](#-features) • [配置](#-configuration) • [学习数据库](#-learning-database) • [Hook](#-plugin-system)
## 💘 这是什么? SleepyWalker 是一个**全自动的 SQL 注入流水线**,它将爬取、启发式分析、AI 驱动的确认以及 sqlmap 利用过程串联在一个命令中——并通过持久化的学习数据库在每次扫描后变得更加智能。 ``` sleepywalker -url https://target.internal -operator "you" -engagement-id "PT-2024-042" ``` 就是这样。它会爬取。它会探测。它会确认。它会导出。它会报告。它会**学习**。
## ⚡ 快速开始 ``` # Clone & build git clone https://github.com/bidhata/SleepyWalker.git cd SleepyWalker go build -o sleepywalker ./cmd/ # 运行你的首次扫描 (dry-run = 无 exploitation) ./sleepywalker -url https://target.example.com -dry-run ```
## 🧠 工作原理 ``` ┌─────────────────────────────────────────┐ │ YOU RUN ONE COMMAND │ └────────────────────┬────────────────────┘ │ ┌────────────────────▼────────────────────┐ │ Learning DB loaded from prior scans │ │ → enriches payloads & error signatures │ └────────────────────┬────────────────────┘ │ ┌────────────────────▼────────────────────┐ │ PRE-SCAN: WAF Detection │ │ Fingerprints Cloudflare, AWS WAF, │ │ ModSecurity, Imperva, Akamai... │ └────────────────────┬────────────────────┘ │ ┌──────────────────────────────▼──────────────────────────────┐ │ PHASE 1: Discovery │ │ │ │ 🕷️ Recursive HTML Crawl 🌐 JS-Rendered (chromedp) │ │ 📋 OpenAPI/Swagger Import 📡 Header/JSON/Body injection │ │ 🔗 Path segment injection 📎 Multipart forms │ │ │ │ → Built-in + learned payloads per injection context │ │ → Built-in + learned DB error signatures │ │ → Phase 1a: error-based 1b: boolean-blind 1c: time-based │ └──────────────────────────────┬──────────────────────────────┘ │ ┌──────────────────────────────▼──────────────────────────────┐ │ PHASE 2: Confirmation │ │ │ │ 🤖 AI Mode (OpenRouter/gpt-4o-mini) │ │ → Structured JSON verdict with confidence score │ │ → Retry with exponential backoff │ │ │ │ 🔬 Offline Deep Validation (10 techniques) │ │ → Boolean-blind (Jaccard similarity) │ │ → Time-blind (multi-round statistical median) │ │ → Error-based, UNION-based, DB-specific probes │ │ → Content-length delta, status correlation │ │ → Second-order detection │ │ │ │ Composite weighted confidence score → 0.0 – 1.0 │ └──────────────────────────────┬──────────────────────────────┘ │ ┌───────────▼───────────┐ │ OPERATOR CONFIRMS │ │ [y/N] prompt │ └───────────┬───────────┘ │ ┌───────────────────────────────▼─────────────────────────────┐ │ PHASE 3: Exploitation │ │ │ │ 🗡️ sqlmap --batch --dump │ │ → Auto-selects tamper scripts per WAF │ │ → Forwards cookies, headers, proxy │ │ → Configurable --risk and --level │ └───────────────────────────────┬─────────────────────────────┘ │ ┌─────────────────────▼─────────────────────┐ │ 📊 REPORTING │ │ │ │ HTML • JSON • SARIF 2.1.0 │ │ CWE-89 • CVSS 9.8 • Remediation │ └─────────────────────┬─────────────────────┘ │ ┌─────────────────────▼─────────────────────┐ │ 🧠 LEARNING DB UPDATED │ │ Confirmed payloads scored • FPs noted │ │ Host profiles • WAF fingerprints │ │ Next scan is faster and more accurate │ └───────────────────────────────────────────┘ ```
## 🔥 功能 ### 与众不同之处 | 功能 | SleepyWalker | 基础扫描器 | |---|:---:|:---:| | AI 驱动的误报消除 | ✅ | ❌ | | 10 种技术的深度验证(无需 AI) | ✅ | ❌ | | 自学习模式数据库 | ✅ | ❌ | | 感知 WAF 的 tamper 脚本自动选择 | ✅ | ❌ | | 用于合规性的完整审计追踪 (JSONL) | ✅ | ❌ | | 扫描范围控制(regex + CIDR) | ✅ | ❌ | | JS 渲染页面爬取 | ✅ | ❌ | | OpenAPI/Swagger endpoint 导入 | ✅ | ❌ | | Multipart 表单 + 路径片段注入 | ✅ | ❌ | | 用于 CI/CD 集成的 SARIF 输出 | ✅ | ❌ | | 插件/Hook 系统(5 个生命周期阶段) | ✅ | ❌ | | 交互式利用授权确认 | ✅ | ❌ | | 带有退避机制的自适应速率限制 | ✅ | ❌ | | 支持 TOML 配置文件 | ✅ | ❌ | | 用于 AI Agent 集成的 MCP server | ✅ | ❌ | | 单一二进制文件,零 runtime 依赖 | ✅ | ❌ |
### 🔍 注入覆盖范围 | 位置 | 方法 | 检测类型 | |---|---|---| | Query parameters | GET, DELETE | Error, Boolean, Time | | Form body | POST, PUT, PATCH | Error, Boolean, Time | | JSON body | POST, PUT, PATCH | Error, Boolean, Time | | HTTP headers | User-Agent, Referer, X-Forwarded-For, Cookie | Error, Boolean, Time | | Multipart fields | POST | Error | | URL path segments | GET (整数, UUIDs) | Error |
### 🛡️ 安全第一 专为**授权的红队演练操作**构建,内置防护机制: - **范围强制执行** — regex 和 CIDR 白名单;在启动时阻止超出范围的目标 - **Dry-run 模式** — 除利用阶段外的完整流水线;非常适合 CI/CD 卡点 - **利用授权确认** — 在阶段 3 之前,以交互式 `[y/N]` 提示列出每个目标 - **请求预算** — 对 HTTP 请求总数设定硬性上限,以防止意外的 DoS - **自适应限流** — 遇到 429/503 自动退避,带有恢复机制的指数退避 - **平滑关闭** — Ctrl+C 刷新审计日志,无数据丢失 - **完整审计追踪** — 每个操作都以 JSONL 格式记录,并带有操作者身份
## 🧠 学习数据库 SleepyWalker 在 `~/.sleepywalker/learningdb.json` 维护着一个持久化的学习数据库,该数据库在每次扫描后都会变得更加智能。 ### 学习内容 | 类别 | 存储内容 | 影响 | |---|---|---| | **Error 特征** | 内置列表中没有的新 DB error 模式 | 在未来的扫描中自动检测 | | **成功的 payload** | 确认了 SQLi 的 payload,按成功率评分 | 在未来的探测中优先使用 | | **WAF 指纹** | 实战中见过的 WAF header/body 模式 | 更快地检测 WAF | | **主机画像** | 每台主机的 DB 引擎、WAF、可注入的 params | 重新扫描时跳过已知干净的 endpoint | | **误报** | 触发了警报但无法注入的 Host+param 组合 | 出现 5 次误报后将被跳过 | ### 如何增强扫描效果 ``` First scan: Built-in 10 payloads → 1 confirmed → DB records the winning payload Second scan: 11 payloads (built-in + learned) → winning payload tried first Tenth scan: Learned payloads with >80% hit rate sorted to front → faster detection ``` ### 控制数据库 ``` # 使用自定义 DB 路径 (适用于团队共享的 DB) sleepywalker -url https://target.internal -ldb-path /shared/team-learningdb.json # 默认路径 ~/.sleepywalker/learningdb.json (Linux/macOS) %APPDATA%\.sleepywalker\learningdb.json (Windows) ```
## 📋 配置 ### CLI Flags ``` sleepywalker -url https://target.internal \ -scope ".*\.internal$" \ -operator "jsmith" \ -engagement-id "PT-2024-042" \ -depth 3 \ -threads 8 \ -delay 200 \ -max-requests 5000 \ -output-format all \ -log-dir ./logs ``` ### TOML 配置文件 ``` sleepywalker -config engagement.toml ``` ``` [scope] regex = ".*\\.internal$" cidrs = ["10.0.0.0/8"] [scan] depth = 3 threads = 8 delay_ms = 200 max_requests = 5000 [auth] cookie = "session=abc123" headers = ["Authorization: Bearer
### 所有 Flags | Flag | 默认值 | 描述 | |---|---|---| | `-url` | *(必填)* | 目标 URL | | `-config` | | TOML 配置文件路径 | | `-scope` | | regex 范围限制 | | `-scope-cidr` | | CIDR 白名单(可重复) | | `-dry-run` | `false` | 仅报告不进行利用 | | `-max-requests` | `0` | 请求预算 (0 = 不限) | | `-depth` | `0` | 爬取深度 (0 = 不限) | | `-threads` | `4` | 并发数 | | `-delay` | `0` | 请求延迟(毫秒) | | `-js-render` | `false` | 无头浏览器爬取 | | `-swagger-url` | | OpenAPI spec URL | | `-insecure` | `false` | 跳过 TLS 验证 | | `-cookie` | | Cookie header | | `-header` | | 自定义 header(可重复) | | `-proxy` | | HTTP/SOCKS5 代理 | | `-ai-provider` | `openrouter` | AI: openrouter, bedrock, local | | `-sqlmap-path` | *(自动)* | sqlmap 二进制文件路径 | | `-risk` | `2` | sqlmap risk (1-3) | | `-level` | `3` | sqlmap level (1-5) | | `-output-format` | `html` | html, json, sarif, all | | `-operator` | | 操作者 ID | | `-engagement-id` | | 授权演练参考标识 | | `-log-dir` | | 审计日志目录 | | `-hooks-dir` | | Hook 脚本目录 | | `-ldb-path` | `~/.sleepywalker/learningdb.json` | 学习数据库路径 |
## 🔌 插件系统 无需修改源码即可扩展 SleepyWalker。Hook 会在 5 个生命周期阶段执行: ``` pre-scan → post-discovery → post-confirm → post-exploit → post-report ``` ### 自动注册(通过文件名) ``` hooks/ ├── pre-scan_validate-engagement.sh ├── post-discovery_count-endpoints.py ├── post-report_notify-slack.py └── post-report_upload-s3.sh ``` ``` sleepywalker -url https://target.internal -hooks-dir ./hooks/ ``` ### 传递给 Hook 的 Context 每个 Hook 都会通过 **stdin 上的 JSON** 接收完整的扫描 context: ``` { "phase": "post-report", "target_url": "https://target.internal", "operator": "jsmith", "engagement_id": "PT-2024-042", "timestamp": "2024-01-15T10:30:00Z", "data": { "reports": ["./dumps/target_internal/report.html"], "output_dir": "./dumps/target_internal" } } ```
## 📊 输出格式 | 格式 | 用例 | 集成 | |---|---|---| | **HTML** | 带有暗色 UI 的易读报告 | 电子邮件、浏览器 | | **JSON** | 机器处理、仪表板 | SIEM、自定义工具 | | **SARIF 2.1.0** | CI/CD 安全闸门 | GitHub Code Scanning, Azure DevOps, Jira | 输出将保存在 `./dumps/
## 🤖 MCP Server SleepyWalker 内置了一个 Model Context Protocol server,以便 AI Agent(Claude、Amazon Q 等)可以将扫描功能作为工具调用。 ``` go build -o sleepywalker-mcp ./mcp/ ``` 在你的 MCP 客户端配置中注册: ``` { "mcpServers": { "sleepywalker": { "command": "/path/to/sleepywalker-mcp" } } } ``` **暴露的工具:** `sleepywalker_scan` • `sleepywalker_discover` • `sleepywalker_waf_detect` • `sleepywalker_validate` • `sleepywalker_report`
## 🏗️ 架构 ``` SleepyWalker/ ├── cmd/main.go # CLI + pipeline orchestration ├── mcp/main.go # MCP server for AI agent integration ├── internal/ │ ├── config/ │ │ ├── config.go # Runtime config, scope validation, TLS │ │ └── configfile.go # TOML config loader + CLI merge │ ├── hooks/hooks.go # Plugin/hook lifecycle system │ ├── learningdb/db.go # Persistent learning database │ ├── scanner/ │ │ ├── scanner.go # Crawl engine (HTML + recursive) │ │ ├── jscrawl.go # Headless browser (chromedp) │ │ ├── swagger.go # OpenAPI/Swagger parser │ │ ├── heuristic.go # Phase 1: payload injection + learning │ │ ├── deepvalidate.go # Phase 2: 10-technique validation │ │ └── waf.go # WAF fingerprinting │ ├── ai/ai.go # Phase 2: AI analysis (multi-provider) │ ├── sqlmap/sqlmap.go # Phase 3: sqlmap wrapper │ ├── reporter/ │ │ ├── reporter.go # HTML report │ │ └── jsonreport.go # JSON + SARIF │ └── utils/ │ ├── audit.go # JSONL audit trail │ ├── ratelimit.go # Adaptive rate limiter │ ├── logger.go # Logging │ └── fileutils.go # Output dirs ├── examples/ │ ├── engagement.toml # Sample config │ └── post-report_notify-slack.py # Sample hook ├── .gitignore ├── go.mod └── README.md ```
## 🚀 实际使用 ``` # 带完整 audit trail 的内部 pentest sleepywalker -url https://app.corp.internal \ -config pentest.toml \ -operator "krish" \ -engagement-id "RT-2024-087" \ -log-dir ./audit-logs # CI/CD gate (dry-run + SARIF for GitHub) sleepywalker -url https://staging.myapp.com \ -dry-run \ -output-format sarif \ -max-requests 1000 # 通过 proxy 进行积极的内部扫描 sleepywalker -url https://legacy-app.internal \ -proxy socks5://127.0.0.1:9050 \ -risk 3 -level 5 \ -depth 5 -threads 16 \ -insecure # 包含大量 JavaScript 的 SPA 及 API spec sleepywalker -url https://spa.internal \ -js-render \ -swagger-url https://spa.internal/api/docs/openapi.json \ -output-format all # 团队共享的学习 DB sleepywalker -url https://target.internal \ -ldb-path /team-share/sleepywalker-learningdb.json ```
## ⚠️ 法律免责声明
**由 [Krish Paul](https://krishnendu.com) 倾注心血精心打造**
[](https://krishnendu.com)
[](mailto:me@krishnendu.com)
[](https://github.com/bidhata/SleepyWalker)
*如果这个工具为您的红队节省了手动测试的时间,请考虑给它一个 ⭐*
**Go** • **OpenRouter AI** • **sqlmap** • **chromedp** • **MCP**
*如果这个工具为您的红队节省了手动测试的时间,请考虑给它一个 ⭐*
**Go** • **OpenRouter AI** • **sqlmap** • **chromedp** • **MCP**
标签:AI辅助安全, CISA项目, EVTX分析, Go语言, Python安全, SQL注入检测, 日志审计, 程序破解, 自动化漏洞扫描