常见端口扫描原理总结

  信息安全

秘密扫描类型有:TCP FIN扫描,TCP ACK扫描,NULL扫描, XMAS扫描, SYN/ACK扫描。

1. TCP connect扫描

该扫描client和server建立tcp连接,完成三次握手后,client主动关闭连接。server日志会记录下连接的内容。

2. SYN扫描

置位SYN标识flag,发送同步包,因为没有建立连接,所以扫描目标不会有任何记录。

若端口开放, 扫描器收到 SYN/ACK 标识回复。

若端口关闭, 扫描器收到 RST 标识回复。

3. NULL扫描

数据包flags标识位全都不设置,

若扫描主机是windows系统,不管端口开放情况,都会回复RST包。

若扫描主机是linux系统,若端口开放,则不回复。 若端口关闭,则回复RST包。可以探测操作系统。

4. FIN扫描

FIN标识符置位,表示释放TCP会话。

若端口开放, 目标主机不回复。

若端口关闭, 目标主机回复RST。

5. ACK扫描

扫描主机向目标主机发送ACK标识包,从返回信息中的TTL值得出端口开放信息。

6. Xmas扫描

同时置位URG/PSH/FIN,该方法和null扫描一样,无法判断windows系统的端口开放情况(Linux下收到该形式的数据包若端口开放会不回复),但是windows不管端口开放如何均会回复。


SYN扫描
这种扫描方式相对来说速度比较快.
原理为:
(1):本地主机向目标主机发送一个SYN数据段.(这里牵扯到TCP报文结构的问题,在TCP报文中SYN标志位用来建立连接,让连接的双方同步序列号.如果SYN=1而ACK=0,则表示该数据包为连接请求,如果SYN=1且ACK=1,则表示接受连接.)
(2):如果目标主机的回应报文中SYN=1,ACK=1,则说明该端口是活动的,那么接着,我们再发一个RST给目标主机,拒绝建立连接.
在这里,如果目标主机的回应为RST,则表示该端口为死端口,在这种情况下,我们不用再做任何回应.
3.FIN扫描
在TCP报文结构中,FIN段负责表示发送端已经没有数据要传输了,希望释放连接.
我们发送一个FIN=1的报文到一个关闭的端口时,该报文会被丢掉,并返回一个RST报文.但是,当FIN报文到一个活动的端口时,该报文只是被简单的丢掉,而不回应任何信息.
这种扫描方法的好处就是完全不建立TCP连接,从而大大减少了被目标主机记录下来的可能性,安全性较高.