殭屍掃描:
過程(掃描者、殭屍機、目標機):
端口打開狀態:
一:由掃描者給殭屍機發一個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爲主。