端口扫描原理
端口扫描的各种方式的原理
端口扫描概述
端口扫描的目的是找出目标系统上提供的服务列表。端口扫描程序挨个尝试与 TCP/UDP端口连接,然后根据端口与服务的对应关系,结合服务器端的反应推断目标系统上是否运行了某项服务,攻击者通过这些服务可能获得关于目标系统的进一步的知识或通往目标系统的途径。根据端口扫描利用的技术,扫描可以分成多种类型,下面分别叙述。
完全连接扫描
完全连接扫描利用 TCP/IP 协议的三次握手连接机制,使源主机和目的主机的某个端口建立一次完整的连接。如果建立成功,则表明该端口开放。否则,表明该端口关闭。
半连接扫描
半连接扫描是指在源主机和目的主机的三次握手连接过程中,只完成前两次握手,不建立一次完整的连接。
SYN 扫描
首先向目标主机发送连接请求,当目标主机返回响应后,立即切断连接过程,并查看响应情况。如果目标主机返回ACK信息,表示目标主机的该端口开放。如果目标主机返回RESET 信息,表示该端口没有开放。
ID 头信息扫描
这种扫描方法需要用一台第三方机器配合扫描,并且这台机器的网络通信量要非常少,即dumb主机。 首先由源主机A向dumb主机B发出连续的PING数据包,并且查看主机B返回的数据包的ID头信息。一般而言,每个顺序数据包的ID头的值会增加1。然后由源主机A假冒主机B 的地址向目的主机C的任意端口(1~65535)发送SYN数据包。这时,主机C向主机B发送的数据包有两种可能的结果∶ ·SYNACK 表示该端口处于监听状态。● RSTACK 表示该端口处于非监听状态。 那么,由后续PING 数据包的响应信息的ID头信息可以看出,如果主机C的某个端口是开放的,则主机B返回A的数据包中,ID头的值不是递增1,而是大于1。如果主机C的某个端口是非开放的,则主机B返回A的数据包中,ID头的值递增1,非常规律。
隐蔽扫描
隐蔽扫描是指能够成功地绕过IDS、防火墙和监视系统等安全机制,取得目标主机端口信息的一种扫描方式。
SYN|ACK 扫描
由源主机向目标主机的某个端口直接发送SYN|ACK 数据包,而不是先发送SYN数据包。由于这种方法不发送SYN 数据包,目标主机会认为这是一次错误的连接,从而会报错。如果目标主机的该端口没有开放,则会返回RST信息。如果目标主机的该端口处于开放 状态(LISTENING),则不会返回任何信息,而是直接将这个数据包抛弃掉。
FIN 扫描
源主机A向目标主机B发送FIN 数据包,然后查看反馈信息。如果端口返回RESET信息,则说明该端口关闭。如果端口没有返回任何信息,则说明该端口开放。
ACK 扫描
首先由主机A向目标主机B发送FIN数据包,然后查看反馈数据包的TTL值和WIN值。开放端口所返回的数据包的TTL值一般小于64,而关闭端口的返回值一般大于64。开放端口所返回的数据包的WIN值一般大于0,而关闭端口的返回值一般等于0。
NULL扫描
将源主机发送的数据包中的ACK、FIN、RST、SYN、URG、PSH等标志位全部置空。如果目标主机没有返回任何信息,则表明该端口是开放的。如果返回RST信息,则表明该端口是关闭的。
XMAS 扫描
XMAS扫描的原理和NULL扫描相同,只是将要发送的数据包中的ACK、FIN、RST、SYN、URG、PSH等头标志位全部置成1.如果目标主机没有返回任何信息,则表明该端口是开放的。如果返回 RST信息,则表明该端口是关闭的。 网络端口扫描是攻击者必备的技术,通过扫描可以掌握攻击目标的开放服务,根据扫描所获得的信息,为下一步的攻击做准备。