arsaeed456/VulnPortScanner

GitHub: arsaeed456/VulnPortScanner

一款非侵入式 TCP 端口扫描器,通过 NVD API 将检测到的服务映射到已知 CVE 并生成包含评分与修复建议的 JSON 报告。

Stars: 0 | Forks: 0

# VulnPortScanner 非侵入式 TCP 端口扫描器,通过 NVD API 进行漏洞映射。生成包含 CVE、CVSS 评分和修复建议的 JSON 报告。仅限授权使用。 # VulnPortScanner **授权的安全评估工具 – 端口扫描器与漏洞映射器** [![Python 3.6+](https://img.shields.io/badge/python-3.6+-blue.svg)](https://www.python.org/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) ## ⚠️ 重要法律声明 **本工具专为授权的安全评估而设计。** 在运行任何扫描之前,您必须获得目标系统所有者的**明确书面许可**。在许多司法管辖区,未经授权的扫描是非法的,并可能被视为网络攻击。作者对任何滥用行为不承担责任。 ## 🔍 概述 VulnPortScanner 是一款轻量级、非侵入式的 TCP 端口扫描器,它能够: - 将主机名解析为 IP 地址。 - 扫描可配置的端口列表(支持速率限制)。 - 通过 banner grabbing 和端口到服务的映射来识别服务。 - 查询 **NIST NVD API** 以获取每个检测到的服务的已知 CVE 和 CVSS 评分。 - 生成结构化的 JSON 报告,其中包含漏洞详细信息、严重性评级和修复建议。 本工具不包含任何漏洞利用、payload 生成或攻击功能 – 它仅用于信息收集。 ## ✨ 功能 - **安全且非侵入式** – 仅使用 TCP connect 扫描。 - **速率限制** – 防止向目标发送泛洪请求(可配置)。 - **并发执行** – 利用线程池实现快速扫描。 - **服务检测** – 通过端口和 banner 识别常见服务(SSH、HTTP、FTP 等)。 - **漏洞映射** – 从 NVD API 获取实时的 CVE 数据(包含重试和超时处理)。 - **备用数据** – 如果 API 请求失败,将使用静态示例数据来演示报告格式。 - **JSON 输出** – 生成机器可读的报告,便于与其他工具集成。 - **详细的日志记录** – 提供可配置的详细级别以便调试。 ## 📦 安装说明 ### 环境要求 - Python 3.6 或更高版本 - `requests` 库 ### 步骤 1. 克隆代码仓库: git clone https://github.com/arsaeed456/VulnPortScanner.git cd VulnPortScanner 2. 安装所需的 Python 包: pip install requests *(如果您的系统限制了全局 pip 安装,请使用虚拟环境,或通过您的系统包管理器进行安装 —— 例如,在 Debian/Kali 上使用 `sudo apt install python3-requests`。)* 3. (可选)使用以下命令安装所有依赖项: pip install -r requirements.txt ## 🚀 用法 ``` python vulnportscanner.py [options] ``` ### 基础示例 ``` python vulnportscanner.py example.com ``` 这将扫描 `example.com` 上的默认端口列表(常见服务)。 ### 扫描指定端口 ``` python vulnportscanner.py example.com --ports 22,80,443 ``` ### 调整超时与速率限制 ``` python vulnportscanner.py example.com --timeout 3.0 --rate-limit 5 ``` ### 将报告保存到自定义文件 ``` python vulnportscanner.py example.com --output my_scan.json ``` ### 开启 Debug 日志 ``` python vulnportscanner.py example.com --debug ``` ## ⚙️ 命令行选项 | 选项 | 描述 | |--------|-------------| | `target` | 要扫描的主机名或 IP 地址(必填)。 | | `--ports` | 以逗号分隔的端口列表(默认:常见端口)。 | | `--timeout` | 每个端口的连接超时时间(秒)(默认:2.0)。 | | `--rate-limit` | 每秒最大连接尝试次数(默认:10)。 | | `--output` | 输出的 JSON 文件名(默认:`scan_report.json`)。 | | `--debug` | 开启 debug 日志。 | ## 📄 输出报告 该工具会生成一个具有以下结构的 JSON 文件: ``` { "target": "example.com", "scan_time": "2026-06-18T10:30:00Z", "open_ports": [ { "port": 22, "service": "ssh", "banner": "SSH-2.0-OpenSSH_8.9p1", "vulnerabilities": [ { "id": "CVE-2024-1234", "cvss_score": 7.5, "severity": "High", "description": "Potential remote code execution in SSH.", "references": ["https://example.com/advisory/ssh"], "remediation": "Upgrade to the latest OpenSSH version." } ] } ], "summary": { "total_open": 1, "critical": 0, "high": 1, "medium": 0, "low": 0, "unknown": 0 } } ``` - **`vulnerabilities`** – 包含 CVSS 评分、严重程度、描述、参考链接和建议修复措施的 CVE 列表。 - **`summary`** – 汇总所有开放端口的严重程度计数。 ## 🔧 配置(面向高级用户) 您可以在脚本顶部调整以下常量: - `DEFAULT_PORTS` – 默认端口列表。 - `DEFAULT_TIMEOUT` – 连接超时时间。 - `DEFAULT_RATE_LIMIT` – 每秒扫描的端口数。 - `NVD_TIMEOUT` – API 请求超时时间(默认 30 秒)。 - `NVD_RETRIES` – API 请求失败时的重试次数。 如果您拥有 **NVD API key**,可以将其添加到请求参数中以提高您的速率限制。(默认不包含此项,以保持工具的简单性。) ## 🐛 限制 - NVD API 具有速率限制(公共用户为每 30 秒 5 次请求)。脚本会遵守此限制,但仍可能受到节流。 - 服务识别是基础性的 – 它依赖于端口号和简单的 banner 字符串。它不执行深度的协议指纹识别。 - 静态备用数据**仅作示例** – 它们不是真实的 CVE。在可用时,会从 NVD API 获取真实数据。 - 该脚本不扫描 UDP 端口。 ## 📜 许可证 本项目基于 **MIT License** 授权 – 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。 ## 📬 免责声明 **作者不对本工具的任何滥用行为负责。** 使用本软件即表示您保证已获得扫描目标系统的适当授权,并且不会将其用于非法或不道德的目的。请始终遵守您组织的安全策略和适用法律。 **祝您(授权)扫描愉快!** 🛡️
标签:CVE, Python, 实时处理, 密码管理, 插件系统, 数字签名, 数据统计, 无后门, 端口扫描, 逆向工具