免责声明:
此文章仅用于学习研究使用,请勿用于违法犯罪,请遵守《网络安全法》等相关法律法规。

僵尸扫描

僵尸扫描概述

僵尸扫描可以实现本地机不直接与目标主机接触,还可以探测出目标主机开放的端口。僵尸扫描拥有极高的隐蔽特性,相对于全连接扫描和隐蔽扫描而言,僵尸扫描实施条件苛刻。僵尸扫描中的僵尸主机指的是一个闲置的操作系统(这里的闲置是指主机不会主动和任何人通信 ),且此系统中ip数据包中的ID是递增的,僵尸扫描可以不拿到肉鸡权限

IPID:指的是通信过程中,IP数据包中的ID

僵尸扫描在实际环境中很少用到,更多的是要学习僵尸扫描的思维

想要实现僵尸扫描有两个前提条件:

  1. 目标网络可伪造源地址进行访问
  2. 选择的僵尸机需要在互联网上是一个闲置的操作系统,并且系统使用递增的IPID,如XP系统

僵尸扫描原理

img

img

第一步:攻击者发送SYN/ACK的请求包至僵尸机,基于TCP三次握手协议,僵尸机会返回一个RST包及系统此时的IPID

image-20210801175335031

第二步:攻击者向目标机发送一个源地址为僵尸机IP的SYN数据包,目标机收到后,由于源IP是僵尸机的地址,若端口开放,便向僵尸机发送SYN/ACK的应答包,僵尸机则回复一个RST包(此时僵尸机的IPID+1)。

第三步:攻击者再重复第一步的操作,此时僵尸机便向攻击者返回RST包及IPID,若与第一步相比自增2,则证明目标机该端口开放,自增1则端口为关闭状态。若自增大于2则说明该僵尸机不是一个完全闲置的状态

僵尸扫描实例

  1. 实验环境

    • 扫描机:Kali Linux(192.168.20.132)
    • 僵尸机:Win2003(192.168.0.195)
    • 目标机:Metasploitable2(192.168.20.134)
  2. 实验步骤

首先扫描出僵尸机所开放的端口

image-20210802150450812

使用scapy工具构造包,准备好以下三条命令,等会直接复制,防止在实验途中僵尸机发送其他数据包影响结果

zr1=sr1(IP(dst="192.168.0.195")/TCP(flags="SA",dport=445))    //向僵尸机发送S+A数据包以获取RST回应,并将RST回应包保存到zr1中
sr1(IP(src="192.168.0.195",dst="192.168.20.134")/TCP(dport=22),timeout=1)  //构造相应端口的TCP请求包,向目标机发送源为僵尸机的TCP协议包
zr2=sr1(IP(dst="192.168.0.195")/TCP(flags="SA",dport=445))    //再次向僵尸机发送S+A数据包以获取RST回应,并将RST回应包保存到zr2中

image-20210802152252416

查看变量zr1和zr2,比较结果

>>> zr1.display()
>>> zr2.display()

image-20210802152341603

image-20210802152417696

查看结果发现id自增了2,说明目标机22端口为开放状态。下面使用nmap工具检验该实验是否正确

image-20210802152617040

目标机22端口确实为开放状态,实验成功

最后修改:2021 年 08 月 03 日 02 : 44 PM
如果觉得我的文章对你有用,请随意赞赏