端口扫描工具

端口扫描工具（Port Scanner）指用于探测服务器或主机开放端口情况的工具。常被计算机管理员用于确认安全策略，同时被攻击者用于识别目标主机上的可运作的网络服务。

端口扫描定义是客户端向一定范围的服务器端口发送对应请求，以此确认可使用的端口。虽然其本身并不是恶意的网络活动，但也是网络攻击者探测目标主机服务，以利用该服务的已知漏洞的重要手段。端口扫描的主要用途仍然只是确认远程机器某个服务的可用性。

扫描多个主机以获取特定的某个端口被称为端口清扫（Portsweep），以此获取特定的服务。例如，基于SQL服务的计算机蠕虫就会清扫大量主机的同一端口以在 1433 端口上建立TCP连接。

类型

TCP扫描
最简单的端口扫描工具使用操作系统原生的网络功能，且通常作为SYN扫描的替代选项。Nmap将这种模式称为连接扫描，因为使用了类似Unix系统的connect()命令。如果该端口是开放的，操作系统就能完成TCP三次握手，然后端口扫描工具会立即关闭刚建立的该连接，防止拒绝服务攻击。这种扫描模式的优势是用户无需特殊权限。但使用操作系统原生网络功能不能实现底层控制，因此这种扫描方式并不流行。并且TCP扫描很容易被发现，尤其作为端口清扫的手段：这些服务会记录发送者的IP地址，入侵检测系统可能触发警报。

SYN扫描

SYN扫描是另一种TCP扫描。端口扫描工具不使用操作系统原生网络功能，而是自行生成、发送IP数据包，并监控其回应。这种扫描模式被称为「半开放扫描」，因为它从不建立完整的TCP连接。端口扫描工具生成一个SYN包，如果目标端口开放，则会返回SYN-ACK包。扫描端回应一个RST包，然后在握手完成前关闭连接。如果端口关闭了但未使用过滤，目标端口应该会持续返回RST包。

这种粗略的网络利用方式有几个优点：给扫描工具全权控制数据包发送和等待回应时长的权力，允许更详细的回应分析。关于哪一种对目标主机的扫描方式更不具备入侵性存在一些争议，但SYN扫描的优势是从不会建立完整的连接。然而，RST包可能导致网络堵塞，尤其是一些简单如打印机之类的网络设备。

UDP扫描
UDP扫描也是可能的，尽管存在一些技术挑战。 UDP是无连接协议，因此没有等同于TCP SYN的数据包。但是，如果将UDP数据包发送到未打开的端口，目标系统将响应ICMP端口不可达的消息。大多数UDP端口扫描器都使用这种扫描方法，并使用缺少响应来推断端口是否打开。但是，如果端口被防火墙阻止，则此方法将错误地报告端口已打开。如果端口不可达消息被阻塞，则所有端口将显示为打开。这种方法也受到ICMP速率限制的影响。

另一种方法是发送特定于应用程序的UDP数据包，希望生成应用层响应。例如，如果DNS服务器存在，向端口53发送DNS查询将导致响应。这种方法在识别开放端口方面更加可靠。然而，它仅限于应用程序特定的探测包可用时的端口扫描。一些工具（例如，NMAP）通常具有少于20个UDP服务的探针，而一些商业工具（例如，NESUS）有多达70个。在某些情况下，服务能在端口上被侦听，但被配置为不响应特定的探测包.

ACK扫描
ACK扫描是比较不常见的扫描类型之一，因为它不能确切地确定端口是打开的还是关闭的，但是可以确定端口是过滤的还是未过滤的。当尝试探测防火墙及其规则集的存在性时，这尤其有用。简单的包过滤将允许建立连接(带有ACK位集的包)，而更复杂的有状态防火墙可能不允许

窗口扫描

FIN扫描

其他类型

参考

安全软件
保全漏洞
基于网际协议的网络软件
網絡分析器