stat-tom/vulnerability-scanner-python

GitHub: stat-tom/vulnerability-scanner-python

一款面向 SOC 的模块化 Python 漏洞扫描器,通过端口探测、服务识别与 NVD 漏洞查询,实现风险评分与结构化报告。

Stars: 0 | Forks: 0

# 漏洞扫描器 (Python) 一个模块化的 Python 漏洞扫描器,用于发现开放端口、识别运行中的服务、通过 NVD API 查询已知 CVE,并生成带风险评分的报告。该工具旨在展示与 SOC 相关的技能:检测逻辑、威胁情报集成、风险分析和自动化报告。 ## ✅ 功能 - **端口扫描** — 多线程 TCP 连接扫描并抓取横幅 - **服务识别** — 通过横幅分析和知名端口映射识别服务 - **CVE 查询** — 查询 NIST NVD REST API 获取已知漏洞 - **风险评分** — 基于服务类型、CVE 严重性和补丁状态进行加权风险分析 - **报告生成** — 生成带颜色编码风险等级的 HTML 输出,以及用于 SIEM 集成的 JSON 输出 ## ✅ 项目结构 ``` vulnerability-scanner/ ├── scanner/ │ ├── port_scanner.py # TCP connect port scanning with threading │ ├── service_detector.py # Service identification via banners & known ports │ └── vuln_lookup.py # CVE lookup against the NVD REST API ├── analyzer/ │ └── risk_analyzer.py # Risk scoring and categorization ├── reports/ │ └── report_generator.py # HTML and JSON report output ├── main.py # Interactive entry point ├── enums.py # Shared enumerations (RiskLevel) ├── protocols.py # Protocol interfaces for dependency inversion ├── Dockerfile ├── requirements.txt └── README.md ``` ## ✅ 安装 ``` pip install -r requirements.txt ``` ## ✅ 使用 ``` python main.py ``` 系统会提示你输入目标: ``` Paste target URL: https://scanme.nmap.org ``` 该扫描器接受完整 URL(例如 `https://scanme.nmap.org/path`)或纯主机名 / IP 地址。它会自动提取主机,扫描 1–1024 端口,识别服务,查询已知 CVE,并在 `output/` 目录中生成 HTML 报告。 扫描完成后,控制台摘要会包含生成的报告完整文件路径,以便快速访问。 ## ✅ Docker ``` # 构建 docker build -t vuln-scanner . # 运行(交互式提示) docker run --rm -it -v $(pwd)/output:/app/output vuln-scanner ``` ## ✅ 示例输出 ### 控制台 ``` ================================================== Scan complete: scanme.nmap.org Open ports: 3 [MEDIUM] Port 22 — SSH (score: 4.5) [LOW] Port 80 — HTTP (score: 2.0) [LOW] Port 443 — HTTPS (score: 1.0) ================================================== HTML Report: /path/to/output/scan_scanme.nmap.org_20260409_120000.html JSON Report: /path/to/output/scan_scanme.nmap.org_20260409_120000.json ``` ### HTML 报告 ![HTML 报告截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/1b60f519f8172112.png) ### JSON 报告(SIEM 集成) 每次扫描还会生成一个结构化 JSON 文件,用于导入 SIEM 平台(Splunk、Elastic、QRadar、Microsoft Sentinel 等)。JSON 模式提供以下字段: | 字段 | 描述 | |------|------| | `schema_version` | 报告格式版本,用于解析器兼容性 | | `scan.target` | 扫描的目标主机 | | `scan.timestamp` | ISO 8601 UTC 时间戳 | | `summary` | 风险等级计数,用于仪表板组件 | | `findings[].port` | 端口号 | | `findings[].service` | 检测到的服务名称 | | `findings[].risk_level` | `CRITICAL` / `HIGH` / `MEDIUM` / `LOW` / `INFO` | | `findings[].risk_score` | 数值综合评分 | | `findings[].vulnerabilities[].cve_id` | CVE 标识符 | | `findings[].vulnerabilities[].cvss_score` | CVSS v3 分数 | 示例片段: ``` { "schema_version": "1.0", "report_type": "vulnerability_scan", "scan": { "target": "scanme.nmap.org", "timestamp": "2026-04-09T12:00:00+00:00", "ports_scanned": "1-1024", "total_findings": 3 }, "summary": { "MEDIUM": 1, "LOW": 2 }, "findings": [ { "port": 22, "service": "SSH", "risk_level": "MEDIUM", "risk_score": 4.5, "factors": ["Service version unknown — patch status unverifiable"], "vulnerabilities": [] } ] } ``` 若要将报告转发到 SIEM,可将日志采集器(如 Filebeat、Splunk Universal Forwarder)指向 `output/` 目录,或通过 HTTP 事件收集器 POST JSON 文件到 SIEM。 ## ✅ SOC 视角 该工具模拟了 SOC 分析员在分类和调查期间的工作流程: ### 为何开放端口很重要 每个开放端口都是一个潜在的攻击面。攻击者会扫描开放端口以识别可利用的服务。Telnet(23)、FTP(21)和 RDP(3389)经常被攻击,因为它们通常存在弱认证或已知漏洞。识别开放端口是了解组织暴露面的第一步。 ### 为何 CVE 查询很重要 将发现的服务映射到已知 CVE,类似于威胁情报源在 SIEM 中丰富告警的方式。SOC 分析员会将指示器数据(开放服务、软件版本)与漏洞数据库关联,以判断主机是否运行可被利用的软件。该工具中的 NVD API 集成自动化了这一增强步骤。 ### 风险如何计算 风险评分模型考虑了三个加权因素: | 因素 | 权重 | 理由 | |------|------|------| | 固有高风险服务 | +1.5 到 +3.0 | Telnet、FTP、VNC 等服务历史上常被利用 | | 已知 CVE(最大 CVSS) | +0 到 +10.0 | 匹配漏洞中最高 CVSS 分数 | | 未知版本 | +1.0 | 无法验证补丁状态会增加不确定性 | 综合得分映射到风险等级:**CRITICAL**(≥ 9.0)、**HIGH**(≥ 7.0)、**MEDIUM**(≥ 4.0)、**LOW**(≥ 0.0)。 该方法类似于 SIEM 平台(例如 Splunk、QRadar)分配告警严重级别的方式——结合资产上下文、威胁情报和不确定性因素。 ## ✅ 免责声明 本工具仅限**授权安全测试和道德使用**。在扫描任何网络或系统之前,请务必获得明确授权。 愉快地挖掘吧!
标签:API安全, Banner抓取, CVE查询, CVE漏洞, DNS查询工具, Docker, Homebrew安装, HTML报告, JSON输出, NVD API, Python, Qt框架, requirements.txt, SEO关键词, SIEM集成, TCP连接扫描, URL短链接分析, 依赖倒置, 反取证, 多模态安全, 威胁情报, 安全评估, 安全防御评估, 开发者工具, 数据统计, 无后门, 服务探测, 服务识别, 模块化, 端口扫描, 端口扫描器, 自动化报告, 请求拦截, 逆向工具, 风险分析, 风险分级, 风险评分