面向甲方安全运营场景的资产指纹采集与 CVE 影响面研判工具。
VulnScope 是一个 CLI-first、非侵入式、偏防守运营 的漏洞影响面分析项目。它不负责“打洞”或自动验证漏洞,而是在新的 CVE 出现后,帮助安全人员快速判断:我手里的哪些资产疑似受影响,应该先看哪一批,命中依据是什么,下一步如何安全确认。
在真实安全运营里,新漏洞爆出来后,最紧急的问题通常不是马上跑 PoC,而是先回答:
- 哪些已知资产可能命中该 CVE?
- 哪些资产应该优先排查和处置?
- 命中的依据是 CPE、产品指纹、Server、技术栈还是版本范围?
- 这个 CVE 是否进入 CISA KEV 在野利用目录?
- FIRST EPSS 利用概率和百分位是否偏高?
- 如何在不扩大风险的前提下进行人工复核?
VulnScope 的输出统一按 疑似影响 处理,不声称漏洞已经被确认利用成功。
-
资产指纹采集
- 从
targets.txt读取目标。 - 可调用 ProjectDiscovery
httpx采集 Web 指纹。 - 可调用
nmap做轻量服务识别。 - 当外部工具缺失时,对 URL 目标使用内置被动 HTTP 探测兜底。
- 从
-
资产导入与管理
- 支持从
assets.csv导入已有资产。 - 使用 SQLite 本地存储资产、CVE 情报、影响面匹配结果和报告记录。
- 支持从
-
漏洞情报接入
- NVD:拉取 CVE 基础信息、CVSS、CPE、影响产品和版本范围。
- CISA KEV:判断是否存在公开在野利用记录。
- FIRST EPSS:补充利用概率和利用概率百分位。
- 支持指定 CVE 拉取、近 N 天初始化、按修改时间同步。
-
影响面研判
- 基于 CPE、厂商/产品名、别名、HTTP 指纹、服务指纹和版本范围进行匹配。
- 生成可信度评分和 P0-P3 处置优先级。
- 保留结构化命中证据,方便人工复核。
-
报告输出
- 生成单个 CVE 的 Markdown 影响面报告。
- 生成每日影响面汇总报告。
VulnScope 默认只做非侵入式信息采集和影响面研判,不做漏洞利用验证。
默认不会执行:
- PoC 验证
- RCE 测试
- SQL 注入测试
- 弱口令爆破
- 文件上传测试
- 反序列化 payload
- DoS 测试
- 命令执行
- 认证绕过测试
- 写文件到目标资产
请只在 自有资产或已授权资产 上使用本项目。VulnScope 适合用于防守侧资产排查、漏洞响应、补丁优先级排序和报告整理,不适合作为攻击性漏洞扫描器使用。
flowchart LR
A[targets.txt / assets.csv] --> B[资产指纹采集]
B --> C[SQLite 资产库]
D[NVD / CISA KEV / FIRST EPSS] --> E[CVE 情报库]
C --> F[影响面匹配]
E --> F
F --> G[优先级评分]
G --> H[Markdown 报告]
最小闭环:
db init
-> scan run
-> intel fetch
-> impact analyze
-> report cve
- Python 3.11+
- SQLite,本地默认使用
- 可选外部工具:
httpx:ProjectDiscovery 的 Web 指纹采集工具nmap:轻量服务识别
即使没有安装 httpx 或 nmap,VulnScope 也会跳过对应 runner,并给出明确提示;URL 类型目标仍会使用内置被动 HTTP 探测。
git clone https://github.com/wzw57/VulnScope.git
cd VulnScope
python -m venv .venvWindows:
.venv\Scripts\activate
pip install -r requirements.txtLinux / macOS:
source .venv/bin/activate
pip install -r requirements.txt检查运行环境:
python main.py doctorpython main.py db initpython main.py scan run --targets samples/targets.txt --mode passive使用本地样例文件测试解析逻辑:
python main.py scan run --targets samples/targets.txt --mode passive --httpx-json samples/httpx_sample.jsonpython main.py asset import --file samples/assets.csv
python main.py asset list指定单个 CVE:
python main.py intel fetch --cve CVE-2021-44228初始化最近 N 天公开 CVE:
python main.py intel init --days 7同步上次成功同步后修改过的 CVE:
python main.py intel sync查看本地已保存的 CVE 情报:
python main.py intel show --cve CVE-2021-44228分析单个 CVE:
python main.py impact analyze --cve CVE-2021-44228
python main.py impact list --cve CVE-2021-44228分析最近一段时间更新过的 CVE:
python main.py impact analyze --since 24h
python main.py impact analyze --since 7d单 CVE 报告:
python main.py report cve --cve CVE-2021-44228每日汇总报告:
python main.py report daily报告默认输出到 reports/ 目录。
python main.py --help
python main.py doctor
python main.py db init
python main.py scan run --targets samples/targets.txt --mode passive
python main.py scan run --targets samples/targets.txt --mode passive --httpx-json samples/httpx_sample.json
python main.py scan run --targets samples/targets.txt --mode passive --nmap-xml samples/nmap_sample.xml
python main.py asset list
python main.py asset import --file samples/assets.csv
python main.py intel fetch --cve CVE-2021-44228
python main.py intel init --days 7
python main.py intel sync
python main.py intel show --cve CVE-2021-44228
python main.py impact analyze --cve CVE-2021-44228
python main.py impact analyze --since 24h
python main.py impact list --cve CVE-2021-44228
python main.py report cve --cve CVE-2021-44228
python main.py report dailytargets.txt 示例:
https://example.com
http://demo.example.org
192.168.1.10
assets.csv 示例字段可按项目样例文件组织,适合导入已有 CMDB、资产台账或前期扫描结果。
VulnScope 的匹配结果不是“漏洞确认存在”,而是“疑似受影响”。
建议关注三个维度:
- Priority:处置优先级,综合 CVSS、KEV、EPSS、资产暴露面和可信度。
- Confidence:匹配可信度,来自 CPE、指纹、产品名、版本范围等证据。
- Reason / Evidence:命中依据,用于人工复核和报告解释。
推荐处置逻辑:
P0 / P1:优先人工确认版本、补丁状态、暴露面和安全告警
P2:纳入近期排查和修复计划
P3:保留观察,等待更多资产证据或威胁情报
VulnScope/
├── app/
│ ├── assets/ # 资产导入、归一化和查询
│ ├── intel/ # NVD、CISA KEV、FIRST EPSS 情报接入
│ ├── matcher/ # 影响面匹配、可信度和优先级评分
│ ├── reports/ # Markdown 报告生成
│ ├── scanners/ # httpx、nmap 和内置 HTTP 探测
│ ├── cli.py # Typer CLI 入口
│ └── db.py # SQLite / SQLModel 数据库初始化
├── config/
│ ├── scan_policy.yaml
│ ├── fingerprint_aliases.yaml
│ └── scoring.yaml
├── docs/
│ └── development-plan.md
├── samples/
├── reports/
├── tests/
├── main.py
├── requirements.txt
└── README.md
pytest
ruff check .- 丰富指纹别名和产品归一化规则。
- 增强版本范围匹配能力。
- 增加更多报告模板和处置建议。
- 支持更多资产来源,例如 CMDB、云资产导出、WAF 日志资产提取。
- 增加更完整的测试样例和 CI 检查。
本项目仅用于授权范围内的防守安全运营、资产管理和漏洞响应。请勿将 VulnScope 用于未授权目标扫描、漏洞验证或攻击活动。所有疑似影响结果都需要结合厂商公告、资产实际版本、补丁状态和组织内部安全日志进行人工确认。