roshanravichandran45/Vulnerability-Scanner-
GitHub: roshanravichandran45/Vulnerability-Scanner-
一个基于 Python 的轻量级网络漏洞扫描器,通过端口扫描、Banner 抓取与自定义漏洞签名匹配来识别目标主机上的潜在脆弱服务。
Stars: 0 | Forks: 0
# 🔍 漏洞扫描器
一个基于 Python 的网络漏洞扫描器,用于识别开放端口、抓取服务 Banner,并通过将 Banner 与用户提供的已知漏洞签名列表进行匹配,标记存在潜在漏洞的软件。
## 📖 目录
- [工作原理](#how-it-works)
- [项目结构](#project-structure)
- [前置条件](#prerequisites)
- [安装说明](#installation)
- [使用方法](#usage)
- [漏洞 Banner 文件](#vulnerable-banners-file)
- [示例输出](#example-output)
## 工作原理
1. **端口扫描** — `portscanner.py` 定义了一个 `PortScan` 类,用于迭代扫描目标主机上的 1–500 端口。
2. **Banner 抓取** — 对于每个开放端口,扫描器会尝试接收服务 Banner(例如,SSH 版本字符串、FTP 欢迎信息)。
3. **漏洞匹配** — `vulnscan.py` 将每个捕获的 Banner 与用户提供的 `.txt` 文件中的已知漏洞软件字符串条目进行比较。
4. **告警输出** — 任何匹配的 Banner 都会在屏幕上连同其端口号一起被标记显示。
## 项目结构
```
vulnerability-scanner/
├── vulnscan.py # Main entry point — runs the scan and matches banners
├── portscanner.py # PortScan class — handles port scanning and banner grabbing
├── vulbanners.txt # Sample list of known vulnerable banner signatures
└── README.md
```
### 文件说明
| 文件 | 作用 |
|------|------|
| `vulnscan.py` | 接收用户输入(目标 IP/主机名、端口数量、Banner 文件路径),启动扫描,并输出存在漏洞的结果 |
| `portscanner.py` | `PortScan` 类包含使用 Python `socket` 和 `IPy` 实现的 `scan()`、`scan_port()` 和 `check_ip()` 方法 |
| `vulbanners.txt` | 包含漏洞 Banner 字符串的纯文本列表(每行一个);用于与抓取到的 Banner 进行匹配 |
## 前置条件
- Python 3.x
- [`IPy`](https://pypi.org/project/IPy/) 库
## 安装说明
```
# Clone 仓库
git clone https://github.com/your-username/vulnerability-scanner.git
cd vulnerability-scanner
# 安装依赖
pip install IPy
```
## 使用方法
```
python vulnscan.py
```
系统将提示您输入三项内容:
```
[+] * Enter Target To Scan For Vulnerable Open Ports: 192.168.1.1
[+] * Enter Amount Of Ports You Want To Scan(500 - first 500 ports): 500
[+] * Enter Path To The File With Vulnerable Softwares: vulbanners.txt
```
| 提示 | 说明 | 示例 |
|--------|-------------|---------|
| Target(目标) | 目标的 IP 地址或主机名 | `192.168.1.1` 或 `example.com` |
| Port count(端口数量) | 要扫描的端口数量(最多 500) | `500` |
| Banner file(Banner 文件) | 您的漏洞签名 `.txt` 文件的路径 | `vulbanners.txt` |
## 漏洞 Banner 文件
`vulbanners.txt` 文件每行包含一个漏洞 Banner 字符串。扫描器会执行子字符串匹配——如果文件中的任何一行出现在抓取的 Banner 中,该端口就会被标记。
**`vulbanners.txt` 示例:**
```
SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.13
vsftpd 2.3.4
ProFTPD 1.3.3c
```
要扩大覆盖范围,可以添加已知的漏洞软件 Banner 字符串——这些字符串可以从 CVE 数据库、exploit-db 或安全研究中获取。
## 示例输出
```
[+] * Enter Target To Scan For Vulnerable Open Ports: 192.168.56.101
[+] * Enter Amount Of Ports You Want To Scan(500 - first 500 ports): 500
[+] * Enter Path To The File With Vulnerable Softwares: vulbanners.txt
[!!] VULNERABLE BANNER: "SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.13" ON PORT: 22
```
## ⚠️ 免责声明
标签:Banner Grabbing, IPy库, Python 3, Python安全工具, Scrypt密钥派生, Socket编程, 云存储安全, 加密, 开源安全工具, 插件系统, 数据统计, 服务指纹识别, 横幅抓取, 漏洞扫描器, 漏洞识别, 白帽子工具, 端口扫描, 网络安全, 网络扫描, 资产测绘, 逆向工具, 逆向工程平台, 隐私保护, 黑盒测试