端口扫描工具(Port Scanner)指用于探测服务器或主机开放端口情况的工具。常被计算机管理员用于确认安全策略,同时被攻击者用于识别目标主机上的可运作的网络服务。
简介端口扫描定义是客户端向一定范围的服务器端口发送对应请求,以此确认可使用的端口。虽然其本身并不是恶意的网络活动,但也是网络攻击者探测目标主机服务,以利用该服务的已知漏洞的重要手段。端口扫描的主要用途仍然只是确认远程机器某个服务的可用性。
扫描多个主机以获取特定的某个端口被称为端口清扫(Portsweep),以此获取特定的服务。例如,基于SQL服务的计算机蠕虫就会清扫大量主机的同一端口以在 1433 端口上建立TCP连接。1
类型TCP扫描最简单的端口扫描工具使用操作系统原生的网络功能,且通常作为SYN扫描的替代选项。Nmap将这种模式称为连接扫描,因为使用了类似Unix系统的connect()命令。如果该端口是开放的,操作系统就能完成TCP三次握手,然后端口扫描工具会立即关闭刚建立的该连接,防止拒绝服务攻击。这种扫描模式的优势是用户无需特殊权限。但使用操作系统原生网络功能不能实现底层控制,因此这种扫描方式并不流行。并且TCP扫描很容易被发现,尤其作为端口清扫的手段:这些服务会记录发送者的IP地址,入侵检测系统可能触发警报。1
SYN扫描SYN扫描是另一种TCP扫描。端口扫描工具不使用操作系统原生网络功能,而是自行生成、发送IP数据包,并监控其回应。这种扫描模式被称为“半开放扫描”,因为它从不建立完整的TCP连接。端口扫描工具生成一个SYN包,如果目标端口开放,则会返回SYN-ACK包。扫描端回应一个RST包,然后在握手完成前关闭连接。如果端口关闭了但未使用过滤,目标端口应该会持续返回RST包。
这种粗略的网络利用方式有几个优点:给扫描工具全权控制数据包发送和等待回应时长的权力,允许更详细的回应分析。关于哪一种对目标主机的扫描方式更不具备入侵性存在一些争议,但SYN扫描的优势是从不会建立完整的连接。然而,RST包可能导致网络堵塞,尤其是一些简单如打印机之类的网络设备。1
UDP扫描UDP扫描也是可能的,尽管存在一些技术挑战。 UDP是无连接协议,因此没有等同于TCP SYN的数据包。但是,如果将UDP数据包发送到未打开的端口,目标系统将响应ICMP端口不可达的消息。大多数UDP端口扫描器都使用这种扫描方法,并使用缺少响应来推断端口是否打开。但是,如果端口被防火墙阻止,则此方法将错误地报告端口已打开。如果端口不可达消息被阻塞,则所有端口将显示为打开。这种方法也受到ICMP速率限制的影响。
另一种方法是发送特定于应用程序的UDP数据包,希望生成应用层响应。例如,如果DNS服务器存在,向端口53发送DNS查询将导致响应。这种方法在识别开放端口方面更加可靠。然而,它仅限于应用程序特定的探测包可用时的端口扫描。一些工具(例如,NMAP)通常具有少于20个UDP服务的探针,而一些商业工具(例如,NESUS)有多达70个。在某些情况下,服务能在端口上被侦听,但被配置为不响应特定的探测包。1
本词条内容贡献者为:
王沛 - 副教授、副研究员 - 中国科学院工程热物理研究所