ClevelandHenry22/NEXSCAN-Port-Scanner

GitHub: ClevelandHenry22/NEXSCAN-Port-Scanner

一款纯 Python 编写的多线程 TCP 端口扫描器,专为网络安全实验环境设计,支持 Banner 抓取和结果导出。

Stars: 1 | Forks: 0

# NEXSCAN - 端口扫描器 **专为 Kali Linux 打造 | 已针对 Metasploitable2 测试** ### 什么是 NEXSCAN? **NEXSCAN** 是一个用纯 Python 编写的多线程 TCP 端口扫描器。无需外部库,无需 root 权限 —— *只需 Python 3.10+ 以及一个你被允许扫描的目标。* *它专为实验环境构建。如果你正在运行 Kali Linux 攻击 Metasploitable2(或任何其他故意存在漏洞的虚拟机),这个工具将完全满足你的需求 —— 快速、输出简洁、支持 Banner 抓取以及结果导出。* ## 实验环境设置 (Kali + Metasploitable2) - *以 Kali 作为攻击机* - *Metasploitable2 作为目标机* - *两台虚拟机应位于同一网络中(VirtualBox 中 Host-Only 或 NAT Network 均可)* ## 工作流程 1. **查找 Metasploitable2 的 IP 地址** *启动 Metasploitable2,使用 `msfadmin / msfadmin` 登录,然后运行*: `ifconfig` - *记下 IP* ![m2 IP](/screenshots/ifcnfg.png) 2. **在 Kali 上设置 NEXSCAN** `mkdir ~/nexscan` - *创建 nexscan 目录* `cd ~/nexscan` - *进入该目录* `nano port_scanner.py` - *粘贴完整脚本,然后* `Ctrl+O` --> *回车保存*, `Ctrl+X` *退出* - [port_scanner.py](/port_scanner.py) `chmod +x port_scanner.py` - *使其可执行* ![setup](/screenshots/nx1.png) 3. **运行你的第一次扫描** `python3 port_scanner.py -t 192.168.56.5 --group top-100 --banners` `python3 port_scanner.py` --> *运行脚本* `-t 192.168.56.101` --> *将 Metasploitable2 设置为目标* `--group top-100` --> *扫描最常见的 100 个端口,而不是全部 65,535 个* `--banners` --> *抓取服务 Banner,以便你可以查看每个开放端口上实际运行的内容(版本信息、服务名称)* ![nx output](/screenshots/nx2.png) ![nx output2](/screenshots/nx3.png) 4. **保存结果** `python3 port_scanner.py -t 192.168.56.5 -p 1-1024 --output results.json` `-p 1-1024` --> *扫描 1 到 1024 端口,这些被称为知名端口,几乎涵盖了所有重要服务 (HTTP, SSH, FTP)* `--output results.json` --> *不仅仅是打印到终端,而是将发现的所有内容保存到名为 `results.json` 的文件中* ![saved output](/screenshots/out1.png) ![saved output2](/screenshots/out2.png) ![saved output3](/screenshots/new-out3.png) ## 所有选项 ``` -t, --target Target IP or hostname [required] -p, --ports Range: 1-1024 or list: 22,80,443 --group Predefined port group [default: top-20] --threads Concurrent threads [default: 100] --timeout Seconds to wait per port [default: 1.0] --banners Grab service banners (fingerprinting) -v, --verbose Show closed and filtered ports too --output Output filename (e.g. scan.json) --format json | csv | txt [default: json] ``` ## 端口组 ## | 组名 | 覆盖范围 | |----------|-------------------------------------------------------------| | top-20 | 最常被扫描的 20 个端口 —— 一个很好的起点 | | top-100 | 1 到 100 端口 | | web | 80, 443, 8080, 8888, 9000, 9200 及其他 | | database | MySQL, PostgreSQL, MongoDB, Redis, MSSQL, Oracle | | remote | SSH, RDP, VNC, Telnet, WinRM | | mail | SMTP, POP3, IMAP 及其 TLS 变体 | | all | 所有 65,535 个端口 —— 配合 `--threads 300+` 和较低的超时时间使用 | ## 在 Metasploitable2 上预期会看到什么 *Metasploitable2 充满了故意设置的和配置错误的服务。* *典型的扫描通常会显示如下端口:* - 21 - FTP(vsftpd2.3.4 - 后门版本) - 22 - SSH - 23 - Telnet (开放且无需认证) - 80 - HTTP (DVWA,phpMyAdmin) - 139/445 - Samba (SMB 共享) - 3306 - MySQL(通常无 root 密码) - 5432 - PostgreSQL - 5900 - VNC - 6667 -IRC (UnrealIRCd - 同样存在后门) - 以及许多其他端口 *使用 `--banners` 运行以抓取版本字符串* ## 工作原理 1. **解析目标** --> *DNS 查询*,IP 验证,公网/私网检查* 2. **构建端口列表** --> *来自 `-p` 范围,`--group`,或手动列表* 3. **线程池** --> *ThreadPoolExecutor 并发调度扫描任务* 4. **TCP 连接扫描** --> *socket.connect_ex() - 完整的 3 次握手* 5. **Banner 抓取** --> *可选 - 发送 HTTP HEAD 或换行符,读取响应* 6. **明确结果** --> *open(开放) / closed(关闭) / filtered(被过滤)* 7. **实时显示** --> *颜色编码表格 + 实时进度条* 8. **汇总与导出** --> *统计,危险标记,可选文件输出* ***TCP Connect Scan** 中使用的技术 —— 完成完整的握手,无需提升权限,在大多数网络配置下可靠工作。不具备隐蔽性(连接会显示在日志中),但这在本实验中无关紧要。* ## 经验总结 - TCP 连接实际是如何工作的 —— 3 次握手,在网络层面上 open/closed/filtered 意味着什么。 - 什么是端口,它们为什么存在,以及为什么某些端口比其他的更重要 - 如何使用 `socket` 模块在代码中建立真正的网络连接 - `ThreadPoolExecutor` 是如何工作的,以及为什么多线程能让扫描器速度大幅提升 - 如何使用 `argparse` 构建合适的 CLI 工具 —— 就像构建真正的工具那样 - 什么是侦察以及为什么端口扫描始终是任何评估的第一步 - 为什么像 Telnet、SMB 和 Redis 这样的某些端口在发现开放时被认为是危险的 - 什么是 Banner 抓取,以及攻击者如何利用版本信息来查找已知漏洞 - 端口关闭 (closed) 和被过滤 (filtered) 之间的区别 —— 以及从扫描器的角度看防火墙是什么样的 - 为什么了解你自己的网络上运行着什么,在防御方面同样重要 ## 法律免责声明 仅在你拥有或获得明确测试权限的系统上使用此工具。未经授权的端口扫描是非法的。 ## 作者 **Cleveland Henry Lore** *网络安全爱好者* ## 参考资料 - [IANA 服务名称和端口号注册表](https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml) — 所有端口号及其分配服务的官方注册表 - [Nmap: The Art of Port Scanning](https://nmap.org/book/man-port-scanning-techniques.html) — 端口扫描技术和方法的行业标准参考 - [RFC 793 – Transmission Control Protocol (TCP)](https://www.rfc-editor.org/rfc/rfc793) — 定义 TCP 连接(以及端口扫描)工作原理的基础 RFC
标签:AES-256, Banner Grabbing, Metasploitable2, Python, Qt框架, TCP扫描, 二进制发布, 实验环境, 开源工具, 插件系统, 数据统计, 无后门, 服务器安全, 服务识别, 漏洞评估, 端口扫描, 系统独立性, 网络安全, 脚本, 隐私保护