端口扫描介绍(三)——僵尸扫描实操

僵尸扫描:


过程(扫描者、僵尸机、目标机):
端口打开状态:
一:由扫描者给僵尸机发一个SYN/ACK包(为发生三次握手),正常情况下,僵尸机返回一个RST给扫描者,收到一个IPID值
二:扫描者向目标服务器发一个SYN包(这个包是要伪造源地址的,不能透露scanner,这个包的源IP是要为造成僵尸机的IP),因为是SYN包,这个目标服务器就会向僵尸机的IP发一个SYN/ACK包,僵尸机(莫名奇妙收到一个ACK包,这个包是我们扫描目标,目标回给我们的ACK包,但是是僵尸机的IP,所以包给了僵尸机)收到后,有两个ACK包?(一个我们发的,一个目标给的),僵尸机看来这个不是正常的数据包,再返回一个RST包,因为是递增的就是IPID+1。
因为不能让IPID稳定能是被识别,僵尸机要足够空闲不可发生通信。
三:扫描者再向僵尸机发一个SYN/ACK,僵尸机而话不说直接回一个RST包,这里的RST的IPID+2了
四:如果扫描者接受到IPID+2这个RST包,那么就能判定目标的这个端口就是开放的状态。

(IPID——>IPID+1——>IPID+2)

端口关闭状态:
第一步一样;
第二步扫描者向目标发一个SYN包,端口未开,就会给僵尸机发一个RST是IPID,僵尸机不会再跟目标通信;
第三步:扫描者给僵尸机发一个SYN/ACK包,僵尸机返回一个RST给扫描者,但是这里扫描者扫收是IPID+1。

(IPID——>IPID+1)

实例演示:

1、合格的僵尸机,最好是XP,2000,2003这类早期的机器,因为这类早期的机器的IPID是递增的,即+1
2、完成地址伪造

僵尸扫描:
***************1、nmap。2、Scary。×××××××××××××××××××××××

Scapy——————zombie.py

i=IP()
t=TCP()
rz=(i/t)
rt=(i/t)
rz[IP].dst=IPz       //僵尸机的IP
rz[TCP].dport=445       //僵尸机端口
rz[TCP].flags="SA"
rt[IP].src=IPz       //僵尸机IP
rt[IP].dst=IPt        //目标IP
rt[TCP].dport=22         //目标端口
rt[TCP].flags="S"
az1=sr1(rz)   ————>  at=sr1(rt.timeout=1)  ————>  at=sr1(rt)    ————>   az2=sr1(rz)
az1.display()      ————>    az2.display()
显示出来直接看ID的结果          //要快速输入

脚本:
==============================================================

#!/usr/bin/python
import logging
logging.getlogger("scapy.runtime").setLevel(logging.ERROR)
from scapy.all import*


==============================================================


————Nmap
发现僵尸机:
 

nmap -p445 1.1.1.1 --script=ipidseq.nse 

#--scrlpt这是调用nmap的脚本,测试僵尸
#可以换IP测试、换端口测试——————
|_ipidseq:Incremental表示合格
扫描目标

    nmap 1.1.1.1 -sI 1.1.1.2 -Pn -p 0-100


#1.1.1.1是目标IP,-sI跟僵尸机

不得不说还是nmap强大。


隐蔽扫描的主要是:Scapy、nmap为主。

猜你喜欢

转载自blog.csdn.net/Jack0610/article/details/88174774