各种端口扫描技术的相关原理

Xmas Tree扫描

发送一个flag为PSH,FIN,URG的包。如果对方主机端口开放则无反应。如果端口关闭,则会返回一个rst包。对windows主机来说无论端口开放与否,都返回rst。
在这里插入图片描述

Fin扫描

发送flag为fin的数据包,如果对方端口开放,则无反应。如果关闭则反回一个rst包。类似于Xmas Tree。对windows主机来说无论端口开放与否,都返回rst。

Null扫描

发送一个没有flag的tcp/ip包,如果端口开放则返回rst包,如果关闭则无反应。对windows主机来说无论端口开放与否,都返回rst数据包。

上述三种扫描Xmas tree,fin,null的原理基本相同,都是基于*unix平台的一种协议。

tcp全连接扫描

原理是与指定ip的指定端口进行一次TCP三次握手。如果成功则端口开放。
大概过程是,C端发送syn包,S端回复,syn+ack,最后C端回复ack+rst断开连接。下图为端口开放时候的tcp全连接扫描。
在这里插入图片描述

如果关闭则服务端回复的是rst+ack,且只有两个数据包,这个跟syn扫描端口关闭的时候的显示一样。
在这里插入图片描述

正常情况下TCP全连接的过程中最后一个包是ACK包。flag为ack并没有rst。如下图:
在这里插入图片描述

syn扫描

原理是发送syn包给服务端。如果服务端口开放则返回ack+syn。如果端口关闭则返回rst+ack。如下图:

在这里插入图片描述
如果端口开放,则服务端返回ack+syn,然后客户端再发送rst重制连接 。如下图
在这里插入图片描述

ack扫描

ack扫描不用与发现端口的开关情况,主要是为了发现服务器上是否存在防火墙。
客户端会发送一个flag为ack的数据包,如果服务器返回一个rst的包,这说明没有防火墙过滤这个包。如果无反应或者回复icmp包type类型为3,代码为1,2,3,9等,说明端口被过滤且存在防火墙。

udp扫描

客户端像服务端的指定端口发送一个udp数据包,如果服务器回应了这个包,则端口开放。如果返回icmp包且type等于3且代码等于3即返回端口不可达,则以为目标端口是关闭状态。如果type为3 且代码为1,2,9等,则是端口被过滤。

猜你喜欢

转载自blog.csdn.net/qq_41874930/article/details/108124906