0x00:简介
渗透测试信息搜集阶段,在发现目标服务器所开放端口时,扫描方式可分为三种,分别是:隐蔽扫描,全链接扫描和僵尸扫描。
全链接扫描:即正常的请求,过程包含了三次握手,判断端口开放的依据是第三次握手返回的信息是否为 FIN/ACK。
隐蔽扫描:即只发送第一次握手的 SYN 包,判断端口开放的依据是返回的信息是否为 SYN/ACK,如果为 SYN/ACK 则端口开放,否则为未开放状态。未开放时会返回 RST/ACK 的信息。
僵尸扫描:即用僵尸机(非自己的机器)对目标服务器进行端口探测,因为使用的为僵尸机,所以其隐蔽性高,追查不到自己的 IP,利用程度比隐蔽扫描和全链接扫描要大。
0x01:原理
僵尸扫描可分为自己的机器、僵尸机和目标服务器。
第一步:扫描者直接向僵尸机发送第二次握手包,即 SYN/ACK,类似于隐蔽扫描,直接发送 SYN/ACK,僵尸机会返回一个 RST 包,RST 包中包含了 ipid 参数,此参数为数据包的序列号,记录此序列号,例如为 x。
第二步:扫描者伪造自己的 ip 为僵尸机的 ip,向目标服务器发送第一次握手包 SYN,发送后就关闭了链接,这时的目标服务器收到的是一个不正常的 SYN 包。
第三步:端口开放的情况,当目标服务器端口开放时,收到 SYN 后会返回一个 SYN/ACK,这个包是返回给僵尸机的,因为 SYN 是自己伪造僵尸机发的,所以僵尸机会直接返回一个 RST,此时 RST 的序号为 x+1.
第四步:端口关闭的情况,当目标服务器只收到一个 SYN 时,因为没有完整的后续握手,所以会返回一个 RST 包。因为这时的僵尸机直接收到了一个 RST 包,所以后面不会再有发送其他握手包的情况,此时包序号还停留在 x。
第五步:扫描者再次直接向僵尸机发送 SYN/ACK 包,不完整的握手,还是类似于隐蔽扫描,所以僵尸机会直接返回 RST 包,此时