Arpit299/Network-Vulnerability-Scanner
GitHub: Arpit299/Network-Vulnerability-Scanner
一个基于 Jupyter Notebook 和 nmap 的轻量级网络扫描工具,用于探测目标主机的开放端口与服务版本并提供基础风险评估。
Stars: 0 | Forks: 0
# 网络漏洞扫描器
## 概述
本 Jupyter Notebook 提供了一个简单而有效的工具,用于执行基本的网络漏洞扫描。它利用 nmap 来识别指定目标(IP 地址或域名)上开放的端口和服务。对于每个识别出的服务,它会尝试提供基本的风险评估和建议。
## 功能
- **端口扫描**:识别开放的 TCP 端口。
- **服务版本检测**:确定在开放端口上运行的服务及其版本。
- **基本风险评估**:为某些常见的服务/端口分配“高”、“中”或“低”风险等级,并提供相关建议。
- **输出**:以结构化表格的形式显示扫描结果,并将其导出为 CSV 文件。
## 使用方法
1. **安装依赖项**:当您运行第一个代码单元格时,Notebook 会自动安装 nmap 和 python-nmap。
2. **运行所有单元格**:按顺序执行 Notebook 中的所有单元格。
3. **输入目标**:出现提示时,输入您想要扫描的 IP 地址或域名(例如,google.com 或 192.168.1.1)。
4. **查看结果**:扫描结果将显示在 pandas DataFrame 中。同时还会在与该 Notebook 相同的目录下生成一份 CSV 报告。
## 类和函数
### VulnerabilityScanner 类
- `__init__(self)`:初始化 `nmap.PortScanner` 对象。
- `get_risk_level(self, port, service)`:一个辅助函数,根据端口号和服务名称分配风险等级和建议。这是一个简化的评估,不能替代专业的安全分析。
- `high_risk_ports`:(例如 FTP、Telnet、SMB、RDP)
- `medium_risk_ports`:(例如 HTTP、SSH)
- `scan(self, target)`:执行实际的网络扫描。
- 将目标域名解析为 IP 地址。
- 使用 `nmap -sV` 进行服务版本检测。
- 解析 nmap 输出并应用风险评估。
- 处理无效的主机名/IP 地址及其他异常。
## 输出示例
| 主机 | 端口 | 协议 | 服务 | 版本 | 风险等级 | 建议 |
| --- | --- | --- | --- | --- | --- | --- |
| 192.168.1.1 | 22 | tcp | ssh | OpenSSH 8.9 | 中 | 确保服务已更新并使用强身份验证。 |
| 192.168.1.1 | 80 | tcp | http | Apache httpd | 中 | 确保服务已更新并使用强身份验证。 |
## 免责声明
本工具仅供教育和个人使用。未经明确许可擅自扫描网络是非法且不道德的。请负责任地使用此工具,并且仅对您拥有或获得授权进行测试的系统使用。
标签:Nmap, NoSQL, Python, Ubuntu, 主机安全, 云存储安全, 反取证, 安全评估, 插件系统, 无后门, 网络扫描, 虚拟驱动器, 逆向工具