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*

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` - *使其可执行*

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,以便你可以查看每个开放端口上实际运行的内容(版本信息、服务名称)*


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` 的文件中*



## 所有选项
```
-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扫描, 二进制发布, 实验环境, 开源工具, 插件系统, 数据统计, 无后门, 服务器安全, 服务识别, 漏洞评估, 端口扫描, 系统独立性, 网络安全, 脚本, 隐私保护