Skip to content

wzw57/VulnScope

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VulnScope

面向甲方安全运营场景的资产指纹采集与 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 报告]
Loading

最小闭环:

db init
  -> scan run
  -> intel fetch
  -> impact analyze
  -> report cve

环境要求

  • Python 3.11+
  • SQLite,本地默认使用
  • 可选外部工具:
    • httpx:ProjectDiscovery 的 Web 指纹采集工具
    • nmap:轻量服务识别

即使没有安装 httpxnmap,VulnScope 也会跳过对应 runner,并给出明确提示;URL 类型目标仍会使用内置被动 HTTP 探测。

安装

git clone https://github.com/wzw57/VulnScope.git
cd VulnScope
python -m venv .venv

Windows:

.venv\Scripts\activate
pip install -r requirements.txt

Linux / macOS:

source .venv/bin/activate
pip install -r requirements.txt

检查运行环境:

python main.py doctor

快速开始

1. 初始化数据库

python main.py db init

2. 采集资产指纹

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

3. 导入已有资产,可选

python main.py asset import --file samples/assets.csv
python main.py asset list

4. 拉取 CVE 情报

指定单个 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

5. 分析疑似影响面

分析单个 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

6. 生成报告

单 CVE 报告:

python main.py report cve --cve CVE-2021-44228

每日汇总报告:

python main.py report daily

报告默认输出到 reports/ 目录。

CLI 命令总览

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 daily

样例输入

targets.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 用于未授权目标扫描、漏洞验证或攻击活动。所有疑似影响结果都需要结合厂商公告、资产实际版本、补丁状态和组织内部安全日志进行人工确认。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors