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, 云存储安全, 加密, 插件系统, 无后门, 标准库, 漏洞扫描器, 网络扫描