BiswasM21/NightWatch

GitHub: BiswasM21/NightWatch

一个 AI 驱动的攻击面监控框架,自动化完成子域名枚举、CVE 关联与持续监控并生成多格式报告。

Stars: 0 | Forks: 0

# NightWatch — AI 驱动的攻击面监控框架 [![MIT License](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/BiswasM21/NightWatch/blob/main/LICENSE) [![Python 3.9+](https://img.shields.io/badge/Python-3.9+-green.svg)](https://www.python.org/) [![Stars](https://img.shields.io/github/stars/BiswasM21/NightWatch?style=social)](https://github.com/BiswasM21/NightWatch) [![Forks](https://img.shields.io/github/forks/BiswasM21/NightWatch?style=social)](https://github.com/BiswasM21/NightWatch) ## 主要功能 **全面的侦察管道** - **证书透明度(CT)扫描器** — 查询 crt.sh、CertSpotter 和 SpySE,从 SSL/TLS 证书日志中发现子域名 - **DNS 枚举** — 使用自定义词表的快速异步 DNS 暴力破解、区域传输检测、反向 DNS 查找 - **HTTP 探测与指纹识别** — 识别 40 多种框架、CMS 和基础设施组件的技术 - **端口扫描** — 并发 TCP 扫描与服务横幅抓取和版本识别 - **CVE 关联** — 内置超过 50 种已知易受攻击服务的 CVE 数据库,包含 CVSS 评分和修复建议 - **变更检测** — 随时间监控目标并检测新的子域名、开放端口或服务变更 - **交互式报告** — 生成全面的 HTML、JSON 和 Markdown 安全报告 **模块化架构** - 可插入的模块系统以扩展功能 - 异步优先设计以实现最大扫描吞吐量 - SQLite 持久化并提供完整的 API 用于自动化 - 用于可视化结果探索的 Web 仪表板 ## 安装 ``` # 克隆仓库 git clone https://github.com/BiswasM21/NightWatch.git cd NightWatch # 安装依赖 pip install -r requirements.txt # 安装 NightWatch pip install -e . # 验证安装 nightwatch --version ``` **带有 Web 仪表板(可选):** ``` pip install -r requirements.txt pip install flask flask-socketio nightwatchd # Starts web dashboard on http://localhost:5000 ``` ## 部署仪表板到 Render 将 Web 仪表板部署到 [Render.com](https://render.com),获得一个可直接访问的在线 URL。免费层级无需信用卡。 ### 选项 A — Blueprint(推荐) 1. 访问 https://render.com → **Blueprints** → **Create Blueprint Instance** 2. 连接你的 GitHub 账户并选择 `BiswasM21/NightWatch` 3. Render 会读取 `render.yaml` 并自动部署 4. 仪表板在线地址为 `https://nightwatch-dashboard.onrender.com` ### 选项 B — 手动 1. 在 https://dashboard.render.com 上创建一个新的 **Web Service** 2. 连接 GitHub 仓库 `BiswasM21/NightWatch` 3. 设置: - **Build command:** `pip install -r requirements-web.txt && pip install -e .` - **Start command:** `gunicorn app:app -w 4 -b 0.0.0.0:$PORT` - **Health check path:** `/health` 4. 部署完成 — 仪表板地址为你自己的 Render 链接 ### 持久化存储(免费版对比付费版) | 计划 | 存储 | 价格 | |------|---------|-------| | 免费 | 临时存储 — 15 分钟不活动后重置 | $0 | | Starter | `/data` 上的持久磁盘 | $7/月 | 要启用持久化存储,升级到 Starter 并在 `render.yaml` 中取消注释 `disk:` 块。 ## 快速开始 ### 1. 创建项目 ``` nightwatch project create mytarget --target example.com --description "Bug bounty target" ``` ### 2. 执行完整扫描 ``` nightwatch scan mytarget --target example.com --cve ``` ### 3. 查看结果 ``` nightwatch status mytarget nightwatch report mytarget --format html ``` ### 4. 设置持续监控 ``` nightwatch monitor mytarget --interval 12 ``` ## 命令参考 ### `nightwatch project` 创建并管理安全研究项目。 ``` nightwatch project create --target [-d "description"] nightwatch project list nightwatch project delete ``` ### `nightwatch scan` 使用可配置模块运行侦察扫描。 ``` nightwatch scan --target [OPTIONS] Options: --subdomains Enable subdomain enumeration (default: enabled) --http Probe HTTP/HTTPS services (default: enabled) --ports Scan for open ports --cve Check for known CVEs (default: enabled) --scan-type {quick|common|full} Port scan intensity (default: common) --output Save JSON results to file ``` ### `nightwatch monitor` 运行持续监控检查以检测基础设施变更。 ``` nightwatch monitor --interval ``` ### `nightwatch report` 生成全面的安全报告。 ``` nightwatch report --format {json|html|markdown|all} ``` ### `nightwatch status` 显示项目的扫描结果摘要。 ``` nightwatch status ``` ## 架构 ``` NightWatch ├── core/ │ ├── engine.py # Orchestration engine and scan pipeline │ └── config.py # Configuration management ├── modules/ │ ├── ct_scanner.py # Certificate Transparency log scanner │ ├── dns_enum.py # DNS enumeration and bruteforce │ ├── http_probe.py # HTTP probing and tech fingerprinting │ ├── port_scanner.py # TCP port scanning and banner grabbing │ ├── cve_correlator.py # Vulnerability correlation engine │ ├── change_detector.py # Infrastructure change detection │ └── report_generator.py # Multi-format report generation ├── db/ │ ├── database.py # SQLAlchemy ORM models │ └── session.py # Async database session management ├── utils/ │ └── logging_utils.py # Structured logging with Rich ├── web/ │ └── dashboard.py # Flask web dashboard ├── app.py # Production WSGI entry point (Render deploy) └── render.yaml # Render Blueprint deployment config ``` ## 技术栈 | 组件 | 技术 | 用途 | |------|------|------| | CLI 框架 | Click | 命令行界面 | | 异步 HTTP | aiohttp | 非阻塞 HTTP 请求 | | DNS 解析 | dnspython | DNS 枚举与解析 | | 解析 | BeautifulSoup4 + lxml | HTML 解析与技术识别 | | 数据库 | SQLAlchemy + aiosqlite | 持久化扫描结果 | | UI | Rich | 终端输出格式化 | | 报告 | Jinja2 | HTML/Markdown 生成 | | Web 仪表板 | Flask + Gunicorn | 结果可视化与生产部署 | ## 使用场景 **漏洞赏金侦察** 为漏洞赏金计划自动化子域名枚举和攻击面映射。NightWatch 的 CT 日志扫描与 DNS 暴力破解提供对目标基础设施的全面覆盖。 **渗透测试** 预交互侦察:发现外网资产、识别技术指纹、发现已知漏洞并生成专业报告。 **安全研究** 持续监控自身基础设施或研究目标,识别暴露的服务、子域名接管以及随时间推移的基础设施变更。 **DevSecOps 自动化** 将 NightWatch 集成到 CI/CD 流水线,实现自动化的攻击面监控。导出 JSON 报告以集成到 SIEM。 **CTF 与安全培训** 用于学习侦察技术、Web 技术指纹识别和受控实验环境中的漏洞评估的教育工具。 ## CVE 覆盖范围 NightWatch 内置了 50 多种常见易受攻击服务的 CVE 关联,包括: - Apache HTTP Server(CVE-2021-41773、CVE-2019-0211) - nginx(CVE-2021-23017、CVE-2017-7529) - Redis(CVE-2019-10192、CVE-2017-15088、CVE-2015-4335) - Elasticsearch(CVE-2015-1427、CVE-2014-3120) - Jenkins(CVE-2019-1003000、CVE-2018-1999002) - Grafana(CVE-2021-43798、CVE-2023-3128) - WordPress(CVE-2019-8942、CVE-2019-8943) - Drupal(CVE-2018-7600、CVE-2019-6340) - Spring Framework(CVE-2022-22965、CVE-2018-1273) - GitLab(CVE-2021-22214、CVE-2022-3064) - PostgreSQL(CVE-2019-9193、CVE-2021-23214) - MySQL(CVE-2012-2122、CVE-2021-22931) - Docker(CVE-2019-13139) - Kubernetes(CVE-2021-25741、CVE-2019-11247) ## 配置 NightWatch 通过 `~/.NightWatch/config.json` 进行配置。关键设置: ``` { "dns_resolvers": ["8.8.8.8", "8.8.4.4", "1.1.1.1"], "dns_timeout": 3.0, "http_timeout": 10.0, "port_timeout": 3.0, "max_concurrent_requests": 50, "common_ports": [21, 22, 23, 25, 53, 80, 110, 443, 445, 3306, 3389, 8080, 8443], "default_monitor_interval_hours": 24 } ``` ## API 密钥(可选) 如需增强功能,请设置以下环境变量: ``` export SHODAN_API_KEY="your-shodan-key" # Port/service enrichment export VT_API_KEY="your-virustotal-key" # Threat intelligence export HUNTER_API_KEY="your-hunter-key" # Email reconnaissance ``` ## 贡献 欢迎贡献!请阅读代码风格指南,并在提交 Pull Request 前确保所有测试通过。 ``` # 运行测试 pytest # 代码格式化 black nightwatch/ # 类型检查 mypy nightwatch/ ``` ## 免责声明 NightWatch 仅设计用于 **授权的安全测试**、**教育目的** 以及 **安全研究**,仅限于你拥有或已获得明确书面许可测试的系统。未经授权扫描你未拥有或无权限的系统属于非法行为。维护者不对该工具的滥用负责。 ## MIT License — 详见 [LICENSE](LICENSE)。 **如果发现此工具实用,请给仓库加星!**
标签:API, CVE 关联, CVSS 评分, DNS 枚举, Flask, HTML 报告, HTTP 指纹识别, JSON 报告, Markdown 报告, MIT License, PB级数据处理, Python 3.9, Socket.IO, SQLite, Web 仪表板, 侦察管道, 变更检测, 子域名枚举, 安全运维, 异步, 技术栈探测, 持续监控, 攻击面监控, 数据统计, 模块化架构, 端口扫描, 系统安全, 网络安全, 网络调试, 自动化, 证书透明度, 逆向工具, 隐私保护