anushkasengupta/Vulnerability_Scanner
GitHub: anushkasengupta/Vulnerability_Scanner
一个纯 Python 标准库实现的轻量级漏洞扫描器,用于端口扫描、Banner 抓取、弱配置检测和过时软件识别,面向网络安全教学与渗透测试入门实践。
Stars: 0 | Forks: 0
# Mini 漏洞扫描器
一个轻量级的 Python 工具,用于扫描主机的开放端口、微弱/高风险的服务配置以及过时的软件版本 —— 旨在作为漏洞评估和渗透测试基础的实践入门。
## 功能
- **TCP 端口扫描** —— 在自定义范围或常用端口上进行多线程 connect 扫描
- **Banner 抓取** —— 识别运行中的服务(SSH、HTTP、FTP 等)
- **弱配置检测** —— 标记常见配置不当的服务(Telnet、Redis、MongoDB、RDP、Docker API 等)
- **过时软件检测** —— 将 banner 与已知存在漏洞的版本阈值进行匹配
- **报告生成** —— 控制台输出,以及可选的 JSON 和 HTML 报告
## 环境要求
- Python 3.8+
- 无外部依赖 —— 仅使用标准库
## 用法
```
python vuln_scanner.py
```
该脚本将以交互方式提示输入:
1. 目标主机名或 IP
2. 要扫描的端口(例如 `22,80,443` 或 `1-1024`,留空则扫描常用端口)
3. 用于存放报告的输出文件夹(可选)
4. 是否保存 JSON 和/或 HTML 报告
### 示例
```
Enter target hostname or IP (e.g. scanme.nmap.org): scanme.nmap.org
Enter ports to scan: 22,80,443
Save JSON report? (y/n): y
Save HTML report? (y/n): y
```
输出示例:
```
[+] Open Ports (2):
22/tcp SSH SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.13
80/tcp HTTP HTTP/1.1 200 OK
[!] Potentially Outdated Software (2):
OpenSSH — flag if version < 8.0
Apache — flag if version < 2.4.54
```
## 工作原理
1. 将目标主机名解析为 IP 地址
2. 使用多线程 TCP connect 尝试扫描指定端口
3. 从开放端口抓取服务 banner
4. 将 banner 与包含已知存在漏洞的版本阈值的小型列表进行交叉比对
5. 将开放端口与常见微弱/高风险服务列表进行交叉比对
6. 将发现结果编译成结构化报告(控制台、JSON、HTML)
## 局限性
- 过时软件的签名列表很小且仅用于演示,并非完整的 CVE 数据库。在生产环境中使用时,请集成如 [NVD API](https://nvd.nist.gov/developers) 这样的实时数据源。
- 如果服务不公开版本信息,或者防火墙/代理重写了响应,Banner 抓取可能会被规避或篡改。
- 这是一种 connect 扫描(而非隐蔽的 SYN 扫描)—— 它会留下记录并显示在目标日志中。
## 免责声明
本项目出于教育目的构建,是网络安全课程作业的一部分。不能替代专业的漏洞评估工具(如 Nmap、Nessus 或 OpenVAS)。
标签:Python, 并发处理, 插件系统, 数据统计, 无后门, 端口扫描, 逆向工具