1. 概述
端口扫描是一种用于探测目标主机上哪些 TCP/IP 端口处于开放状态的技术。
无论是网络安全人员还是黑客,都会使用端口扫描来查找网络系统中的漏洞。黑客通过发现漏洞实施攻击,而安全人员则通过发现漏洞进行修复,从而提升系统的安全性。
本文将介绍端口扫描的基本概念、类型及其常用方法。
2. 什么是端口?
端口是一个操作系统中用于网络通信的虚拟地址,它通过编号来标识。不同的服务运行在不同的端口上,各自接收对应的网络流量。端口号的范围是从 0 到 65535。
防火墙控制着计算机端口上的网络流量,它可以允许或阻止特定端口的通信。
以下是一些常见的默认端口和服务:
- 端口 20 和 21:FTP(文件传输协议),用于在客户端和服务器之间传输文件
- 端口 22:SSH(安全外壳协议),用于远程登录和命令执行
- 端口 25:SMTP(简单邮件传输协议),用于电子邮件的传输
- 端口 53:DNS(域名系统),用于将域名解析为对应的 IP 地址
- 端口 80:HTTP(超文本传输协议),用于传输超媒体文档
进行端口扫描时,我们常用的一个工具是 Nmap(网络映射器),它是目前最流行、最强大的开源端口扫描工具之一。
3. 端口扫描的类型与结果
端口扫描主要分为两种类型:
- 水平扫描(Horizontal Scanning):对一组 IP 地址扫描某个特定端口
- 垂直扫描(Vertical Scanning):对某个特定 IP 地址扫描多个端口
例如,水平扫描的结构如下图所示:
端口扫描的结果通常分为以下几种状态:
- ✅ Open(开放):该端口有服务在监听,并且可以接受连接
- ❌ Closed(关闭):没有服务在监听该端口
- ⚠️ Filtered(过滤):防火墙或其他网络设备阻止了连接,无法确定端口是否开放
- ⚠️ Open|Filtered(开放或过滤):无法判断端口是开放还是被过滤
4. 端口扫描的方法
端口扫描有多种实现方式,大多数基于 TCP 或 UDP 协议。
4.1. TCP SYN 扫描
这是最常用的扫描方法,速度快且相对隐蔽。它不会完成完整的 TCP 三次握手,因此也被称为“半开放扫描”。
扫描器发送一个 SYN 包后:
- 如果收到 SYN/ACK 回复,说明端口是 开放的
- 如果收到 RST 回复,说明端口是 关闭的
- 如果多次请求都没有响应,说明端口是 被过滤的
4.2. TCP Connect 扫描
这种方法通过操作系统发起完整的 TCP 连接来判断端口状态。适用于没有原始报文权限的场景(如某些受限环境)。
缺点是:
- 速度慢,需要更多数据包
- 由于建立了完整连接,更容易被目标系统记录日志
4.3. TCP ACK 扫描
这种扫描用于探测防火墙规则,判断其是否为状态防火墙,并识别哪些端口被过滤。
发送仅设置 ACK 标志的 TCP 包:
- 如果收到 RST 响应,说明端口是 未被过滤的
- 但无法判断端口是开放还是关闭
4.4. TCP NULL、FIN 和 XMAS 扫描
这三种方法利用了 TCP RFC 793 中的漏洞来判断端口状态:
- NULL 扫描:不设置任何标志位
- FIN 扫描:设置 FIN 标志位
- XMAS 扫描:设置 FIN、PSH 和 URG 标志位
如果端口是关闭的,目标系统会返回 RST;如果是开放或被过滤的,则不会响应。如果收到 ICMP 不可达错误(如 type 3, code 3),说明端口被过滤。
示例:XMAS 扫描结果如下图所示:
4.5. UDP 扫描
UDP 是无连接协议,因此 UDP 扫描不如 TCP 精确。
扫描器发送 UDP 包后:
- 若收到 ICMP 端口不可达(type 3, code 3),说明端口 关闭
- 若收到其他 ICMP 不可达错误(如 type 3, code 1/2/9/10/13),说明端口 被过滤
- 若收到 UDP 响应包,说明端口 开放
- 若多次重试都没有响应,说明端口是 开放或被过滤
示意图如下:
5. 总结
本文介绍了端口的基本概念、端口扫描的类型和常用方法。黑客利用扫描结果寻找攻击入口,而安全人员则用它来加固系统防护。掌握这些知识对于理解网络攻击原理和防御策略至关重要。
✅ 踩坑提醒:使用 Nmap 时务必遵守法律和道德规范,未经授权的扫描行为可能违法。
⚠️ 建议:实际测试时建议在内网或授权环境中进行,避免误伤他人系统。