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, 实时处理, 密码管理, 应用安全, 插件系统, 无后门, 漏洞审计, 网络设备, 路由器, 运行时操纵, 逆向工具