CyberClarity/nmap-port-scanner

GitHub: CyberClarity/nmap-port-scanner

基于 python-nmap 的自动化扫描工具,将 Nmap 端口扫描与 NSE 漏洞脚本检测结果整理为易读的漏洞摘要和结构化 JSON。

Stars: 0 | Forks: 0

# 使用 Nmap 进行端口扫描与漏洞检测 ## 目标 学习主动侦察,通过识别目标主机上的开放端口、运行的服务以及已知漏洞,并使用 Nmap 的 Python 包装器实现该流程的自动化。 本项目在基础 Nmap 端口扫描的基础上,结合了 Nmap 的 NSE (Nmap Scripting Engine) 漏洞检测脚本,能够生成清晰易读的漏洞摘要,而非原始扫描输出。 ## 使用工具 - [Nmap](https://nmap.org/) — 网络扫描器 - [python-nmap](https://pypi.org/project/python-nmap/) — Nmap 的 Python 包装器 - Nmap NSE 脚本:`vuln` 和 `vulners` 类别 ## ⚠️ 法律与道德声明 请仅对你拥有或获得明确授权的系统(例如你自己的实验 VM、Metasploitable,或你控制的家庭网络设备)运行此工具。在大多数司法管辖区,未经许可扫描系统是违法的。 ## 环境配置 ### 1. 安装 Nmap ``` # Debian/Ubuntu/Kali sudo apt update && sudo apt install nmap -y # macOS brew install nmap ``` ### 2. 安装 Python 依赖 ``` python3 -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install python-nmap ``` ### 3. 设置目标 使用你拥有的系统或实验 VM,例如运行在隔离的 VirtualBox/VMware 网络中的 [Metasploitable 2](https://sourceforge.net/projects/metasploitable/)。 ## 用法 ``` python3 nmap-portscanner.py # 示例 python3 nmap-portscanner.py 192.168.10.1 ``` 如果在某些扫描类型中遇到权限错误,请使用提升的权限运行: ``` sudo python3 nmap-portscanner.py 192.168.10.1 ``` ## 工作原理 1. 运行 Nmap 扫描 (`-sV -T4`) 以检测开放端口、服务和版本。 2. 针对检测到的服务运行 Nmap 的 NSE `vuln` 和 `vulners` 脚本类别,以标记已知漏洞。 3. 将扫描结果解析为清晰的 Python 字典。 4. 打印终端摘要,显示每个端口上哪些 NSE 漏洞脚本返回了命中结果。 5. 将完整的结构化结果(包括原始 NSE 脚本输出)保存到 `examples/sample_output.json` 中,以供日后参考。 ## 示例输出 ``` ============================================================ VULNERABILITY SUMMARY ============================================================ [!] 192.168.10.1:21 (ftp 1.9.4) - vulners [ ] 192.168.10.1:22 (ssh) - no known issues flagged [ ] 192.168.10.1:23 (telnet) - no known issues flagged [!] 192.168.10.1:53 (domain 2.80) - vulners [!] 192.168.10.1:80 (tcpwrapped) - http-server-header - http-majordomo2-dir-traversal - http-vuln-cve2017-1001000 - http-trane-info - http-dombased-xss - http-csrf - http-stored-xss - http-vuln-cve2010-0738 [!] 192.168.10.1:443 (tcpwrapped) - http-aspnet-debug - http-csrf - http-stored-xss - http-vuln-cve2014-3704 - http-dombased-xss - ssl-poodle ``` 完整的 JSON 输出(包括原始 NSE 脚本详细信息)将保存到 `examples/sample_output.json`。 ## 项目结构 ``` 01-port-scanning-nmap/ ├── README.md ├── scripts/ │ └── nmap-portscanner.py └── examples/ └── sample_output.json ``` ## 我学到了什么 - 如何运行并解读 Nmap 服务/版本检测扫描 (`-sV`) - Nmap 的脚本引擎 (NSE) 如何利用 `vuln` 和 `vulners` 脚本类别将扫描范围扩展到漏洞检测 - 如何使用 `python-nmap` 以编程方式解析和构建原始扫描数据 - 为什么 `tcpwrapped` 并不总意味着服务无法识别,以及脚本探测如何在此类端口上依然揭示有用的发现 - 过滤/摘要工具输出的重要性——原始 NSE 输出非常冗长,需要进行后处理才能在报告中发挥作用
标签:CTI, Nmap, Python, 插件系统, 数据统计, 无后门, 端口扫描, 虚拟驱动器, 逆向工具