Obscure-07/Basic-Vulnerability-Scanner

GitHub: Obscure-07/Basic-Vulnerability-Scanner

一个仅使用 Python 标准库实现的轻量级 TCP banner 抓取与基础漏洞匹配工具,用于教学演示和授权环境下的初步漏洞评估。

Stars: 0 | Forks: 0

# 基础漏洞扫描器 一个轻量级的 Python 3 工具,可执行 TCP banner grabbing,并将发现的服务 banner 与本地漏洞特征数据库进行匹配。它演示了如何仅使用 Python 的标准库来进行服务识别和基础漏洞检测。 ## 概述 该工具自动化了漏洞评估的第一阶段: 1. 连接到目标主机的特定一组 TCP 端口 2. 抓取每个开放端口返回的 service banner 3. 将该 banner 与本地的已知漏洞服务/版本特征字典进行对比 4. 报告哪些开放端口可能正在运行易受攻击的软件 从概念上讲,它类似于 `nmap -sV` 和 Metasploit 的漏洞匹配模块所做的工作, 只不过是完全从零开始实现的,仅使用了 Python 标准库, 以展示对底层网络概念(TCP 握手、socket、超时)的理解。 ## 环境要求 - Python 3.6+ - 无需第三方依赖 — 仅使用标准库(`socket`、`sys`、 `time`、`argparse`、`datetime`) ## 用法 ``` # 扫描默认常用 ports python3 vuln_scanner.py -t # 扫描特定 ports python3 vuln_scanner.py -t -p 21,22,80,443 # 使用自定义 timeout 扫描 port range python3 vuln_scanner.py -t -p 1-1024 --timeout 2 # 将结果保存到 report file python3 vuln_scanner.py -t -p 21,22,80 -o report.txt ``` ### CLI 选项 | 标志 | 描述 | 默认值 | |---|---|---| | `-t`, `--target` | 目标 IP 地址或主机名(必填) | — | | `-p`, `--ports` | 要扫描的端口 — 单个、逗号分隔列表或范围 | `21,22,23,25,80,443,445,3306,8080` | | `--timeout` | Socket 超时时间(秒) | `2.0` | | `-o`, `--output` | 保存文本报告的路径 | 无 | ## 示例输出 ``` [+] Port 21 OPEN | Banner: 220 vsFTPd 2.3.4 ready └─ ⚠ POSSIBLE VULNERABILITY: CVE-2011-2523 (CRITICAL) - vsftpd 2.3.4 backdoor command execution ``` ## 项目结构 ``` Basic-Vulnerability-Scanner/ ├── vuln_scanner.py ├── README.md └── .gitignore ``` ## 测试 / 演示环境 在 Kali Linux (VirtualBox) 中开发并测试,在隔离的实验环境中针对 Metasploitable2 进行了测试。 ## 局限性 - 使用针对 banner 的简单子字符串匹配,与结构化的版本解析相比,这可能会产生误报/漏报 - 漏洞数据库是一个小型的、静态的本地字典 — 而不是实时的 CVE 数据源 - 仅用于检测 — 此工具不执行漏洞利用 ## 未来改进 - 多线程扫描以提升性能。 - 与实时 CVE 数据库(例如 NVD API)集成。 - 支持 UDP 服务扫描。 - 以 JSON 和 CSV 格式导出结果。 - 通过 service fingerprinting 实现更准确的版本检测。 ## 免责声明 此工具仅供教育用途和授权测试使用 (例如,您自己的实验 VM、您拥有的系统,或您有明确书面测试许可的环境)。请勿对您不拥有或未经授权评估的系统运行此工具。 ## 作者 Aman Kumar GitHub: https://github.com/Obscure-07
标签:Banner抓取, Python, 云存储安全, 加密, 插件系统, 无后门, 标准库, 漏洞扫描器, 网络扫描