mikhailartamonov/router-cve-audit

GitHub: gluckdev/router-cve-audit

一款仅限检测的家用/SOHO 路由器防御性 CVE 审计工具包,通过 Project Discovery nuclei 和 Python 收集器实现对八大厂商设备的已知漏洞扫描与报告生成。

Stars: 1 | Forks: 0

# router-cve-audit 适用于家用 / SOHO 路由器和小型网络设备的防御性 CVE 审计工具包。 仅限检测——不进行漏洞利用,不进行暴力破解。 **支持的厂商** (8):MikroTik (RouterOS)、TP-Link、华为、D-Link、华硕、 Zyxel、Keenetic、Ubiquiti。在 [`safe_versions.json`](safe_versions.json) 中硬编码了约 36 个受 KEV 跟踪的 CVE 和约 30 个 EOL 设备系列 (即使在无法提取固件版本的情况下,也会自动标记为 CRITICAL)。 ## Pipeline ``` naabu / port_scanner.py → httpx → nuclei → inventory_collector.py (open ports) (web fingerprint) (CVE detection) (RouterOS-specific: SNMP / RouterOS API / Webfig / Winbox banner) │ ▼ version_check.py (severity vs safe_versions.json) │ ▼ report_generator.py (REPORT.md + PROBLEMS_FOUND.md) │ ▼ scan_inventory.py (history of what/when scanned) ``` 由 `audit/nuclei_runner.sh`(端到端单条命令)和 `tests/lan_smoke.sh`(Phase A 驱动程序——添加被动 MNDP 监听器)封装。 ## 快速开始 ``` # 1. Clone git clone https://github.com//router-cve-audit.git cd router-cve-audit # 2. 安装 Project Discovery binaries (Linux/macOS) go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest go install -v github.com/projectdiscovery/naabu/v2/cmd/naabu@latest go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest nuclei -update-templates # Windows: 从 Project Discovery Releases 页面下载 .exe, # 放置在 ./bin/ — nuclei_runner.sh 会自动添加到 PATH。 # 3. 用于 SNMP / RouterOS API 的可选 Python deps pip install pysnmp librouteros # 4. 配置 cp .env.example .env # 编辑 .env: 设置 TARGET_SUBNETS=192.168.1.0/24 # 5. 运行 bash audit/nuclei_runner.sh # 或者: bash tests/lan_smoke.sh (Phase A — 添加被动 MNDP listener) # 6. 查看 cat results/$(ls -1t results/ | head -1)/REPORT.md cat PROBLEMS_FOUND.md ``` ## 工具 | 脚本 | 用途 | |---|---| | `audit/port_scanner.py` | TCP-connect 端口扫描器(纯 Python;用于在 Windows 上替代会被杀毒软件标记的 `naabu`) | | `audit/inventory_collector.py` | 针对 RouterOS 的厂商 / 版本检测(SNMP → RouterOS API → Webfig → Winbox banner → Bandwidth Test :2000) | | `audit/mndp_listener.py` | 用于 MikroTik Neighbor Discovery 的被动 UDP/5678 监听器(仅在相同的 L2 广播域内有效) | | `audit/version_check.py` | 基于 `safe_versions.json` 的严重性评估器(支持 KEV 感知,针对 RouterOS 支持分支感知) | | `audit/report_generator.py` | 为每次运行构建 `REPORT.md` 并追加到 `PROBLEMS_FOUND.md` | | `audit/scan_inventory.py` | 跟踪扫描历史(`scan_log.jsonl` + `scan_inventory.json`)——查看覆盖盲区 | | `audit/geo_lookup.py` | IP/CIDR → 国家/城市/ASN。`--country KH` 通过 [RIPEstat](https://stat.ripe.net/) 提取所有 RIR 注册的网络块 | | `audit/cve_refresh.py` | 拉取 [CISA KEV 目录](https://www.cisa.gov/known-exploited-vulnerabilities-catalog),高亮显示 `safe_versions.json` 中的缺失部分 | | `audit/coverage_map.py` | 将 `scan_inventory` + `geo_cache` 渲染为单个静态 HTML 表格 | | `audit/nuclei_runner.sh` | 端到端 Pipeline 驱动程序 | | `tests/lan_smoke.sh` | Phase A 驱动程序(LAN 冒烟测试)——与 `nuclei_runner.sh` + MNDP 监听器相同 | ## 配置 - **`.env`** (已被 gitignore 忽略):`TARGET_SUBNETS`、`MODE` (lan/prod)、`STEALTH`、 `SNMP_COMMUNITY`、`ROS_USER`、`ROS_PASS`、`ROS_API_TLS`、`IPINFO_TOKEN` - **`config.yaml`**:发现端口、nuclei 标签、速率限制、严重性规则 - **`safe_versions.json`**:特定厂商的 CVE 规则 + EOL 设备列表 ## 隐秘模式 `MODE=prod STEALTH=1` 开启以下设置: - `port_scanner` / `naabu`:30 pps,10 并发 - `nuclei`:5 rps,10 并发,15秒超时 - 自定义 Mozilla User-Agent(代替默认的 `Nuclei` 特征) 旨在合法的授权审计期间,保持在典型 IDS 端口洪水攻击阈值之下。 **并非**为了向网络所有者隐藏行踪而设计的机制——请参阅 [`DISCLAIMER.md`](DISCLAIMER.md)。 ## 为什么不直接使用 Shodan / Censys? Shodan/Censys 提供基于全网扫描编译的被动数据集—— 非常适合用于外部攻击面监控,但你无法控制: - 扫描新鲜度(数据可能是几天/几周前的) - 对内部 RFC 1918 范围的覆盖(它们无法看到这些) - 针对特定厂商的深度检测(例如 RouterOS Bandwidth-Test :2000 指纹、 ASUS KadNap 端口 :53282 IoC) 此工具包用于**对你控制下的网络进行主动审计**,在这些场景中你需要 新鲜的数据、对私有范围的完整可见性,以及超越通用 Web 指纹识别的特定厂商 情报。 ## 限制 - **MikroTik 7.x** 出于设计目的,会在公开的 HTTP 响应中隐藏版本——要获取 精确版本,你需要 SNMP community **或** RouterOS API 凭据 **或** 与 MNDP 处于同一 L2 可达性 - **MNDP 监听器**需要与目标处于同一广播域内 - **Naabu** 在 Windows 上可能会被 Windows Defender 标记为 PUA——请使用 内置的 Python `port_scanner.py`(较慢,但没有驱动 / 杀毒软件问题) - **`naabu`** 在 Linux 上需要 root 权限才能进行 SYN 扫描,或对 二进制文件设置 `setcap cap_net_raw=ep`;否则将回退到 TCP-connect(较慢) ## 许可证 [MIT](LICENSE)——请参阅 `LICENSE` 文件。
标签:Claude, CVE检测, Google, Nuclei, Python, 实时处理, 密码管理, 应用安全, 插件系统, 无后门, 漏洞审计, 网络设备, 路由器, 运行时操纵, 逆向工具