端口扫描工具

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

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

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

类型

TCP扫描
最简单的端口扫描工具使用操作系统原生的网络功能，且通常作为SYN扫描的替代选项。Nmap将这种模式称为连接扫描，因为使用了类似Unix系统的connect()命令。如果该端口是开放的，操作系统就能完成TCP三次握手，然后端口扫描工具会立即关闭刚建立的该连接，防止拒绝服务攻击。Erikson, Jon (1977). HACKING the art of exploitation (2nd ed.). San Francisco: NoStarch Press. p. 264. ISBN 1-59327-144-1.这种扫描模式的优势是用户无需特殊权限。但使用操作系统原生网络功能不能实现底层控制，因此这种扫描方式并不流行。并且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位集的包)，而更复杂的有状态防火墙可能不允许。

窗口扫描
由于其过时的特性，窗口扫描在确定端口是否打开或关闭时是相当不可靠的，已经很少使用。它生成与ACK扫描相同的数据包，在返回时检查数据包的窗口字段是否被修改。当数据包到达目标时，如果端口是打开的，则设计缺陷试图为数据包创建一个窗口大小，在数据包返回发送方之前用1标记数据包的窗口字段。在不支持这种实现的系统中使用这种扫描技术，窗口字段返回0，将打开的端口标记为关闭。

FIN扫描
由于SYN扫描不够隐蔽，防火墙通常会阻止SYN形式的数据包。FIN报文无需修改即可绕过防火墙。关闭的端口会用适当的RST包回复FIN包，而打开的端口则会忽略。这是TCP的一种典型行为，并在某些方面是不可避免的。

其他类型

参考

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