Kali Linux 網(wǎng)絡(luò)掃描秘籍 第三章 端口掃描(三)

第三章 端口掃描(三)

作者:Justin Hutchens

譯者:飛龍

協(xié)議:CC BY-NC-SA 4.0

3.13 Dmitry 連接掃描

另一個可以對遠程系統(tǒng)執(zhí)行 TCP 連接掃描的 替代工具就是 Dmitry虫给。不像 Nmap 和 Metasploit廓旬,Dmitry 是個非常簡單的工具辛友,我們可以使用它來執(zhí)行簡單快速的掃描抱既,而不需要任何配置。這個秘籍展示了如何使用 Dmitry 來自執(zhí)行 TCP 連接掃描捧挺。

準備

為了使用 Dmitry 執(zhí)行 TCP 連接掃描虑绵,你需要一個運行 TCP 網(wǎng)絡(luò)服務(wù)的遠程服務(wù)器。這個例子中我們使用 Metasploitable2 實例來執(zhí)行任務(wù)闽烙。配置 Metasploitable2 的更多信息請參考第一章中的“安裝 Metasploitable2”秘籍翅睛。

操作步驟

Dmitry 是個多用途的工具,可以用于執(zhí)行目標系統(tǒng)上的 TCP 掃描黑竞。它的功能十分有限捕发,但是它是個簡單的工具很魂,快速而高效扎酷。為了查看 Dmitry 的可用選項遏匆,我們在終端中不帶任何參數(shù)來啟動這個程序:

root@KaliLinux:~# dmitry 
Deepmagic Information Gathering Tool 
"There be some deep magic going on"

Usage: dmitry [-winsepfb] [-t 0-9] [-o %host.txt] host
  -o   Save output to %host.txt or to file specified by -o file  
  -i   Perform a whois lookup on the IP address of a host  
  -w   Perform a whois lookup on the domain name of a host 
  -n   Retrieve Netcraft.com information on a host 
  -s   Perform a search for possible subdomains
  -e   Perform a search for possible email addresses 
  -p   Perform a TCP port scan on a host 
* -f   Perform a TCP port scan on a host showing output reporting filtered ports 
* -b   Read in the banner received from the scanned port 
* -t 0-9 Set the TTL in seconds when scanning a TCP port ( Default 2 ) 
*Requires the -p flagged to be passed 

就像輸出中所說的那樣帝蒿,-p選項用于執(zhí)行 TCP 端口掃描。為了實現(xiàn)它陵叽,我們以被掃描系統(tǒng)的 IP 地址來使用這個選項巩掺。Dmitry 擁有 150 個常用的預(yù)配置端口,它會掃描這些页畦。在這些端口中胖替,它會展示任何發(fā)現(xiàn)的開放端口≡ビВ考慮下面的例子:

root@KaliLinux:~# dmitry -p 172.16.36.135 
Deepmagic Information Gathering
Tool "There be some deep magic going on"

ERROR: Unable to locate Host Name for 172.16.36.135 
Continuing with limited modules 
HostIP:172.16.36.135 
HostName:

Gathered TCP Port information for 172.16.36.135 
--------------------------------

 Port    State
 
21/tcp    open 
22/tcp    open 
23/tcp    open 
25/tcp    open 
53/tcp    open 
80/tcp    open 
111/tcp    open 
139/tcp    open

Portscan Finished: Scanned 150 ports, 141 ports were in state closed 

Dmitry 中的 TCP 端口掃描并不能自定義独令。但是它是個簡單高效的方法來訪問單個主機上的常用服務(wù)。我們也可以使用-o選項好芭,并通過指定文件名稱燃箭,將 DMitry 掃描結(jié)果輸出到文本文件中。

root@KaliLinux:~# dmitry -p 172.16.36.135 -o output 
root@KaliLinux:~# ls Desktop  output.txt 
root@KaliLinux:~# cat output.txt 
ERROR: Unable to locate 
Host Name for 172.16.36.135 
Continuing with limited modules 
HostIP:172.16.36.135 
HostName:

Gathered TCP Port information for 172.16.36.135 
--------------------------------

 Port    State 
21/tcp    open 
22/tcp    open 
23/tcp    open 
25/tcp    open
53/tcp    open 
80/tcp    open 
111/tcp    open 
139/tcp    open

Portscan Finished: Scanned 150 ports, 141 ports were in state closed

工作原理

定義如何執(zhí)行 TCP 連接掃描的底層機制和之前討論的其它工具一樣舍败。和其他工具相比招狸,Dmitry 的使用性主要源于簡潔敬拓,并不需要管理多個配置項,像我們使用 Nmap 和 Metasploit 那樣裙戏。我們可以輕易通過指定響應(yīng)模式乘凸,以及將 IP 地址傳遞給他來啟動 Dmitry。它能夠快讀掃描常用的 150 個端口累榜,以及其中所有開放端口的值营勤。

Netcat TCP 端口掃描

由于 Netcat 是個網(wǎng)路哦套接字連接和管理工具,它可以輕易轉(zhuǎn)換為 TCP 端口掃描工具壹罚。這個秘籍展示了如何使用 Netcat 執(zhí)行 TCP 連接掃描葛作。

準備

為了使用 Netcat 執(zhí)行 TCP 連接掃描,你需要一個運行 TCP 網(wǎng)絡(luò)服務(wù)的遠程服務(wù)器渔嚷。這個例子中我們使用 Metasploitable2 實例來執(zhí)行任務(wù)进鸠。配置 Metasploitable2 的更多信息請參考第一章中的“安裝 Metasploitable2”秘籍。

操作步驟

Netcat 是個非常易用形病,功能多樣的網(wǎng)絡(luò)工具客年,可以用于多種目的。Netcat 的一種非常高效的使用方式就是執(zhí)行端口掃描漠吻。為了確定使用選項量瓜,nc應(yīng)該以-h選項調(diào)用,像這樣:

root@KaliLinux:~# nc -h 
[v1.10-40] 
connect to somewhere:  nc [-options] hostname port[s] [ports] ... 
listen for inbound:  nc -l -p port [-options] [hostname] [port] 
options:  
  -c shell commands  as `-e'; use /bin/sh to exec [dangerous!!]
  -e filename    program to exec after connect [dangerous!!]  
  -b      allow broadcasts  
  -g gateway    source-routing hop point[s], up to 8  
  -G num      source-routing pointer: 4, 8, 12, ...  
  -h      this cruft  
  -i secs      delay interval for lines sent, ports scanned  
  -k                      set keepalive option on socket 
  -l      listen mode, for inbound connects  
  -n      numeric-only IP addresses, no DNS 
  -o file      hex dump of traffic  -p port      local port number  
  -r      randomize local and remote ports  
  -q secs      quit after EOF on stdin and delay of secs 
  -s addr      local source address 
  -T tos      set Type Of Service 
  -t      answer TELNET negotiation 
  -u      UDP mode 
  -v      verbose [use twice to be more verbose] 
  -w secs      timeout for connects and final net reads 
  -z      zero-I/O mode [used for scanning] 
port numbers can be individual or ranges: lo-hi [inclusive]; hyphens in port names must be backslash escaped (e.g. 'ftp\-data'). 

正如輸出所表示的那樣途乃,-z選項可以高效用于掃描绍傲。為了掃描目標系統(tǒng)上的 TCP 80 端口,我們使用-n選項來表明所使用的 IP 地址耍共,-v選項用于詳細輸出烫饼,-z選項用于掃描,像這樣:

root@KaliLinux:~# nc -nvz 172.16.36.135 80 
(UNKNOWN) [172.16.36.135] 80 (http) open 
root@KaliLinux:~# nc -nvz 172.16.36.135 443 
(UNKNOWN) [172.16.36.135] 443 (https) : Connection refused

開放端口上的掃描嘗試執(zhí)行會返回 IP 地址试读,端口地址杠纵,以及端口狀態(tài)。對活動主機的關(guān)閉端口執(zhí)行相同掃描會顯式簡介被拒絕钩骇。我們可以在尋呼哪種自動化這個過程比藻,像這樣:

root@KaliLinux:~# for x in $(seq 20 30); do nc -nvz 172.16.36.135 $x; done 
(UNKNOWN) [172.16.36.135] 20 (ftp-data) : Connection refused 
(UNKNOWN) [172.16.36.135] 21 (ftp) open
(UNKNOWN) [172.16.36.135] 22 (ssh) open 
(UNKNOWN) [172.16.36.135] 23 (telnet) open 
(UNKNOWN) [172.16.36.135] 24 (?) : Connection refused 
(UNKNOWN) [172.16.36.135] 25 (smtp) open 
(UNKNOWN) [172.16.36.135] 26 (?) : Connection refused 
(UNKNOWN) [172.16.36.135] 27 (?) : Connection refused 
(UNKNOWN) [172.16.36.135] 28 (?) : Connection refused 
(UNKNOWN) [172.16.36.135] 29 (?) : Connection refused 
(UNKNOWN) [172.16.36.135] 30 (?) : Connection refused

通過將輸出傳遞給STDOUT,之后過濾輸出倘屹,我們能夠分離出提供開放端口細節(jié)的行银亲。我們甚至可以更加簡明,通過僅僅提取我們需要的信息纽匙。如果單個主機被掃描了务蝠,我們可能能夠利用第三和第四個字段;

root@KaliLinux:~# for x in $(seq 20 30); do nc -nvz 172.16.36.135 $x; done 2>&1 | grep open | cut -d " " -f 3-4 
21 (ftp) 
22 (ssh) 
23 (telnet) 
25 (smtp) 

通過從輸出提取這些字段烛缔,cut函數(shù)可以用于以空格分隔符请梢,之后通過指定要輸出的字段分離這些行赠尾。但是,還有另一種高效的方法毅弧,就是在 Netcat 中指定端口范圍气嫁,而不需要將工具傳遞金循環(huán)中。通過向nc中傳入端口地址值的序列够坐,Netcat 會自動展示其中的開放端口:

root@KaliLinux:~# nc 172.16.36.135 -nvz 20-30 
(UNKNOWN) [172.16.36.135] 25 (smtp) open 
(UNKNOWN) [172.16.36.135] 23 (telnet) open 
(UNKNOWN) [172.16.36.135] 22 (ssh) open 
(UNKNOWN) [172.16.36.135] 21 (ftp) open

但是寸宵,像之前那樣,我們需要將它的輸出傳給STDOUT元咙,以便將其傳遞給cut函數(shù)梯影。通過展示 2 到 4 的字段,我們可以限制 IP 地址庶香、端口號以及相關(guān)服務(wù)的輸出甲棍,像這樣:

root@KaliLinux:~# nc 172.16.36.135 -nvz 20-30 2>&1 | cut -d " " -f 2-4 
[172.16.36.135] 25 (smtp) 
[172.16.36.135] 23 (telnet) 
[172.16.36.135] 22 (ssh) 
[172.16.36.135] 21 (ftp)

我們可以在 bash 中使用loop函數(shù)來使用 Netcat 掃描多個主機地址序列,之后提取相同的細節(jié)來確定不同的被掃描 IP 地址中赶掖,哪個端口是開著的感猛。

root@KaliLinux:~# for x in $(seq 0 255); do nc 172.16.36.$x -nvz 80 2>&1 | grep open | cut -d " " -f 2-4; done
[172.16.36.135] 80 (http) 
[172.16.36.180] 80 (http)

工作原理

執(zhí)行 TCP 連接掃描的同居通過執(zhí)行完整的三次握手,和遠程系統(tǒng)的所有被掃描端口建立連接奢赂。端口的狀態(tài)取決于連接是否成功建立陪白。如果連接建立,端口被認為是開放的膳灶,如果連接不能成功建立咱士,端口被認為是關(guān)閉的。

3.15 Scapy 僵尸掃描

我們可以識別目標系統(tǒng)的開放端口轧钓,而不留下和系統(tǒng)交互的證據(jù)序厉。這種機器隱蔽的掃描形式就是僵尸掃描,并且只能在網(wǎng)絡(luò)中存在其他擁有少量網(wǎng)絡(luò)服務(wù)和遞增 IPID 序列的主機時執(zhí)行毕箍。這個秘籍展示了如何使用 Scapy 執(zhí)行僵尸掃描弛房。

準備

為了使用 Scapy 執(zhí)行僵尸掃描,你需要擁有運行 TCP 服務(wù)的遠程系統(tǒng)霉晕,以及另一個擁有 IPID 遞增序列的遠程系統(tǒng)。在所提供的例子中捞奕,Metasploitable2 用作掃描目標牺堰,WindowsXP 用作 IPID 遞增的僵尸。關(guān)于如何在本地實驗環(huán)境下配置系統(tǒng)的更多信息颅围,請參考第一章的“安裝 Metasploitable2”和“安裝 Windows 服務(wù)器”秘籍伟葫。此外,這一節(jié)也需要使用文本編輯器將腳本寫到文件系統(tǒng)院促,例如 VIM 或 Nano筏养。如何編寫腳本的更多信息斧抱,請參考第一章中的“使用文本編輯器(VIM 或 Nano)”秘籍。

操作步驟

所有 IP 封包中都存在的值是 ID 號渐溶。取決于系統(tǒng)辉浦,ID 號會隨機生成,可能始終從零開始茎辐,或者可能在每個發(fā)送的 IP 封包中都遞增 1宪郊。如果發(fā)現(xiàn)了 IPID 遞增的主機,并且這個主機并不和其它網(wǎng)路系統(tǒng)交互拖陆,它就可以用作識別其它系統(tǒng)上開放端口的手段弛槐。我們可以通過發(fā)送一系列 IP 封包,并分析響應(yīng)依啰,來識別遠程系統(tǒng)的 IPID 序列模式乎串。

>>> reply1 = sr1(IP(dst="172.16.36.134")/TCP(flags="SA"),timeout=2,verbo se=0) 
>>> reply2 = sr1(IP(dst="172.16.36.134")/TCP(flags="SA"),timeout=2,verbo se=0) 
>>> reply1.display()

###[ IP ]###  
    version= 4L  
    ihl= 5L  
    tos= 0x0  
    len= 40  
    id= 61  
    flags=
    frag= 0L 
    ttl= 128 
    proto= tcp 
    chksum= 0x9938 
    src= 172.16.36.134
    dst= 172.16.36.180 
    \options\ 
###[ TCP ]###  
    sport= http   
    dport= ftp_data  
    seq= 0    
    ack= 0 
    dataofs= 5L  
    reserved= 0L  
    flags= R   
    window= 0     
    chksum= 0xe22 
    urgptr= 0  
    options= {}
###[ Padding ]###  
    load= '\x00\x00\x00\x00\x00\x00' 
>>> reply2.display()
###[ IP ]### 
    version= 4L 
    ihl= 5L
    tos= 0x0  
    len= 40 
    id= 62 
    flags= 
    frag= 0L 
    ttl= 128
    proto= tcp 
    chksum= 0x992d 
    src= 172.16.36.134 
    dst= 172.16.36.180
    \options\ 
###[ TCP ]###   
    sport= http    
    dport= ftp_data 
    seq= 0   
    ack= 0    
    dataofs= 5L  
    reserved= 0L 
    flags= R   
    window= 0   
    chksum= 0xe22   
    urgptr= 0  
    options= {}
###[ Padding ]###  
    load= '\x00\x00\x00\x00\x00\x00'

如果我們向 Windows 獨立系統(tǒng)發(fā)送兩個 IP 封包,我們可以檢測響應(yīng)中的 ID 屬性的整數(shù)值速警。要注意第一個請求的回復(fù)的 ID 是 61叹誉,第二個是 62。這個主機確實存在遞增的 IPID 序列坏瞄,并假設(shè)它保持獨立桂对。它可以用作高效的僵尸,來進行僵尸掃描鸠匀。為了執(zhí)行僵尸掃描蕉斜,必須向僵尸系統(tǒng)發(fā)送初始的 SYN+ACK 請求,來判斷返回的 RST 中的當前 IPID 值缀棍。之后宅此,向掃描目標發(fā)送偽造的 SYN 掃描,帶有僵尸系統(tǒng)的 IP 原地址爬范。如果端口是打開的父腕,掃描目標會發(fā)送 SYN+ACK 響應(yīng)給僵尸。由于僵尸沒有實際發(fā)送初始的 SYN 請求青瀑,它會將 SYN+ACK 解釋為來路不明璧亮,并且項目表發(fā)送 RST 封包。因此將 IPID 增加 1斥难。最后枝嘶,應(yīng)該向僵尸發(fā)送另一個 SYN+ACK 封包,它會返回 RST 封包并將 IPID 再次增加 1哑诊。IPID 比起初始響應(yīng)增加了 2群扶,折表示所有這些時間都發(fā)生了,并且被掃描系統(tǒng)的目標端口是開放的。

反之竞阐,如果端口是關(guān)閉的缴饭,會發(fā)生不同的系列時間,這僅僅會導(dǎo)致最后的 RST 響應(yīng)早呢更加 1骆莹。如果被掃描系統(tǒng)的目標端口是關(guān)閉的颗搂,RST 封包會發(fā)給僵尸系統(tǒng),作為初始的偽造的 SYN 封包的響應(yīng)汪疮。由于 RST 封包沒有任何回應(yīng)峭火,僵尸系統(tǒng)的 IPID 值無變化。所以智嚷,作為 SYN+ACK 封包的響應(yīng)卖丸,返回給掃描系統(tǒng)的最后的 RST 封包的 IPID 值只會增加 1。

為了簡化這個過程盏道,下面的腳本以 Python 編寫稍浆,它能識別可用僵尸系統(tǒng),也對掃描目標執(zhí)行了僵尸掃描猜嘱。

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

def ipid(zombie):   
    reply1 = sr1(IP(dst=zombie)/TCP(flags="SA"),timeout=2,verbose=0)   
    send(IP(dst=zombie)/TCP(flags="SA"),verbose=0)   
    reply2 = sr1(IP(dst=zombie)/TCP(flags="SA"),timeout=2,verbose=0)   
    if reply2[IP].id == (reply1[IP].id + 2):      
        print "IPID sequence is incremental and target appears to be        idle.  ZOMBIE LOCATED"      
        response = raw_input("Do you want to use this zombie to perform        a scan? (Y or N): ")      
        if response == "Y":         
            target = raw_input("Enter the IP address of the target           system: ")         
            zombiescan(target,zombie)   
    else:      
        print "Either the IPID sequence is not incremental or the target        is not idle.  NOT A GOOD ZOMBIE"

def zombiescan(target,zombie):   
    print "\nScanning target " + target + " with zombie " + zombie   print "\n---------Open Ports on Target--------\n"   
    for port in range(1,100):      
        try:         
            start_val = sr1(IP(dst=zombie)/TCP(flags="SA",dport=port),tim          eout=2,verbose=0)         
            send(IP(src=zombie,dst=target)/TCP(flags="S",dport=port),verbose=0)         
            end_val = sr1(IP(dst=zombie)/TCP(flags="SA"),timeout=2,verbo          se=0)         
            if end_val[IP].id == (start_val[IP].id + 2):           
                print port     
        except:      
            pass

print "-----------Zombie Scan Suite------------\n" 
print "1 - Identify Zombie Host\n" 
print "2 - Perform Zombie Scan\n" ans = raw_input("Select an Option (1 or 2): ") 
if ans == "1":   
    zombie = raw_input("Enter IP address to test IPID sequence: ")   
    ipid(zombie) 
else:   
    if ans == "2":  
        zombie = raw_input("Enter IP address for zombie system: ")      
        target = raw_input("Enter IP address for scan target: ")      
        zombiescan(target,zombie)

在執(zhí)行腳本過程中衅枫,用戶會收到量個選項的提示。通過選項選項 1朗伶,我們可以掃描或評估目標的 IPID 序列來判斷是否主機是個可用的僵尸弦撩。假設(shè)主機是獨立的,并擁有遞增的 IPID 序列论皆,主機就可以用作僵尸益楼。并且用戶會被詢問是否使用僵尸來執(zhí)行掃描。如果執(zhí)行了掃描点晴,會對 TCP 端口前 100 個地址的每個地址執(zhí)行前面討論的過程感凤。像這樣:

root@KaliLinux:~# ./zombie.py 
-----------Zombie Scan Suite-----------

1 - Identify Zombie Host
2 - Perform Zombie Scan

Select an Option (1 or 2): 1 
Enter IP address to test IPID sequence: 172.16.36.134 
IPID sequence is incremental and target appears to be idle.  ZOMBIE LOCATED 
Do you want to use this zombie to perform a scan? (Y or N): Y 
Enter the IP address of the target system: 172.16.36.135

Scanning target 172.16.36.135 with zombie 172.16.36.134

---------Open Ports on Target-------

21 
22 
23 
25 
53 
80

工作原理

僵尸掃描是個枚舉目標系統(tǒng)開放端口的隱秘方式,不需要留下任何交互的痕跡粒督。將偽造請求的組合發(fā)給目標系統(tǒng)陪竿,以及將正常請求發(fā)給僵尸系統(tǒng),我們就可以通過評估僵尸系統(tǒng)的響應(yīng)的 IPID 值來映射目標系統(tǒng)的開放端口屠橄。

3.18 Nmap 僵尸掃描

就像上一個秘籍,在編程自定義腳本對于理解僵尸掃描背后的工作原理很有幫助族跛。Nmap 中還有另一種高效的掃描模式,可以用于執(zhí)行僵尸掃描锐墙。這個秘籍展示了如何使用 Nmap 執(zhí)行僵尸掃描礁哄。

準備

為了使用 Nmap 執(zhí)行僵尸掃描,你需要擁有運行 TCP 服務(wù)的遠程系統(tǒng)贮匕,以及另一個擁有 IPID 遞增序列的遠程系統(tǒng)姐仅。在所提供的例子中花枫,Metasploitable2 用作掃描目標刻盐,WindowsXP 用作 IPID 遞增的僵尸掏膏。關(guān)于如何在本地實驗環(huán)境下配置系統(tǒng)的更多信息,請參考第一章的“安裝 Metasploitable2”和“安裝 Windows 服務(wù)器”秘籍敦锌。此外馒疹,這一節(jié)也需要使用文本編輯器將腳本寫到文件系統(tǒng),例如 VIM 或 Nano乙墙。如何編寫腳本的更多信息颖变,請參考第一章中的“使用文本編輯器(VIM 或 Nano)”秘籍。

操作步驟

僵尸掃描可以在 Nmap 中帶參數(shù)執(zhí)行听想。但是腥刹,我們可以使用 Metasploit 快速發(fā)現(xiàn)任何可用的僵尸候選項,通過掃描整個地址范圍和評估 PIPD 序列汉买,而不是使用 Nmap 僵尸掃描衔峰。為了這樣做,我們需要使用msfconsole命令打開 Metasploit蛙粘,并選項 IPID 序列輔助模塊垫卤,像這樣:

root@KaliLinux:~# msfconsole  
+-------------------------------------------------------+  
|  METASPLOIT by Rapid7                                 |  
+---------------------------+---------------------------+
|      __________________   |                           |  
|  ==c(______(o(______(_()  | |""""""""""""|======[***  |  
|             )=\           | |  EXPLOIT   \            |  
|            // \\          | |_____________\_______    |  
|           //   \\         | |==[msf >]============\   |  
|          //     \\        | |______________________\  |  
|         // RECON \\       | \(@)(@)(@)(@)(@)(@)(@)/   |  
|        //         \\      |  *********************    |  
+---------------------------+---------------------------+  
|      o O o                |        \'\/\/\/'/         |  
|              o O          |         )======(          |  
|                 o         |       .'  LOOT  '.        |  
| |^^^^^^^^^^^^^^|l___      |      /    _||__   \       |  
| |    PAYLOAD     |""\___, |     /    (_||_     \      |  
| |________________|__|)__| |    |     __||_)     |     |  
| |(@)(@)"""**|(@)(@)**|(@) |    "       ||       "     |  
|  = = = = = = = = = = = =  |     '--------------'      |  
+---------------------------+---------------------------+

Using notepad to track pentests? Have Metasploit Pro report on hosts, services, sessions and evidence -- type 'go_pro' to launch it now.

       =[ metasploit v4.6.0-dev [core:4.6 api:1.0] 
+ -- --=[ 1053 exploits - 590 auxiliary - 174 post 
+ -- --=[ 275 payloads - 28 encoders - 8 nops

msf > use auxiliary/scanner/ip/ipidseq 
msf  auxiliary(ipidseq) > show options

Module options (auxiliary/scanner/ip/ipidseq):

   Name       Current Setting  Required  Description   
   ----       ---------------  --------  ----------   
   INTERFACE                   no        The name of the interface   
   RHOSTS                      yes       The target address range or CIDR identifier   
   RPORT      80               yes       The target port
   SNAPLEN    65535            yes       The number of bytes to capture   
   THREADS    1                yes       The number of concurrent threads   
   TIMEOUT    500              yes       The reply read timeout in milliseconds 

這個輔助模塊可以用于在主機地址序列或網(wǎng)絡(luò)范圍中執(zhí)行掃描,可以使用 CIDR 記法來定義出牧。為了使掃描速度增加穴肘,我們可以將THREADS變量設(shè)為合理的并發(fā)任務(wù)數(shù)量,像這樣:

msf  auxiliary(ipidseq) > set RHOSTS 172.16.36.0/24 
RHOSTS => 172.16.36.0/24 
msf  auxiliary(ipidseq) > set THREADS 25 
THREADS => 25 
msf  auxiliary(ipidseq) > show options

Module options (auxiliary/scanner/ip/ipidseq):

   Name       Current Setting  Required  Description   
   ----       ---------------  --------  ----------   INTERFACE                   no        The name of the interface   
   RHOSTS     172.16.36.0/24   yes       The target address range or CIDR identifier   
   RPORT      80               yes       The target port   
   SNAPLEN    65535            yes       The number of bytes to capture   
   THREADS    25               yes       The number of concurrent threads   
   TIMEOUT    500              yes       The reply read timeout in milliseconds 

一旦為所需變量設(shè)置了合理的值舔痕,我們可以使用show options來再次驗證掃描配置评抚。IPID 序列掃描之后可以使用run命令來執(zhí)行。

msf  auxiliary(ipidseq) > run

[*] 172.16.36.1's IPID sequence class: Randomized 
[*] 172.16.36.2's IPID sequence class: Incremental! 
[*] Scanned 026 of 256 hosts (010% complete) 
[*] Scanned 052 of 256 hosts (020% complete) 
[*] Scanned 077 of 256 hosts (030% complete)
[*] Scanned 103 of 256 hosts (040% complete) 
[*] Scanned 128 of 256 hosts (050% complete) 
[*] 172.16.36.134's IPID sequence class: Incremental! 
[*] 172.16.36.135's IPID sequence class: All zeros 
[*] Scanned 154 of 256 hosts (060% complete) 
[*] Scanned 180 of 256 hosts (070% complete) 
[*] Scanned 205 of 256 hosts (080% complete) 
[*] Scanned 231 of 256 hosts (090% complete) 
[*] Scanned 256 of 256 hosts (100% complete) 
[*] Auxiliary module execution completed 

由于 IPID 序列掃描模塊會遍歷所提供的網(wǎng)絡(luò)范圍赵讯,它會識別被發(fā)現(xiàn)主機的 IPID 序列模式盈咳,并且表示出哪些是 0,隨機或遞增的边翼。用于僵尸掃描的理想候選項必須擁有遞增的 IPID鱼响,并且不會被網(wǎng)絡(luò)上的其它主機嚴重影響鹰贵。一旦識別了遞增的獨立主機醋拧,我們可以在 Nmap 中使用-sI選項并且傳入僵尸主機的 IP 地址來執(zhí)行僵尸掃描。

root@KaliLinux:~# nmap 172.16.36.135 -sI 172.16.36.134 -Pn -p 0-100

Starting Nmap 6.25 ( http://nmap.org ) at 2014-01-26 14:05 CST I
dle scan using zombie 172.16.36.134 (172.16.36.134:80); Class: Incremental 
Nmap scan report for 172.16.36.135 
Host is up (0.045s latency). 
Not shown: 95 closed|filtered ports 
PORT   STATE SERVICE 
21/tcp open  ftp 
22/tcp open  ssh 
23/tcp open  telnet 
25/tcp open  smtp 
53/tcp open  domain 
80/tcp open  
http MAC Address: 00:0C:29:3D:84:32 (VMware)

Nmap done: 1 IP address (1 host up) scanned in 2.75 seconds

上面的例子中惠拭,僵尸掃描執(zhí)行在掃描目標172.16.36.135的前 100 個 TCP 端口上债鸡。獨立主機172.16.36.134用作僵尸江滨,-Pn選項用于阻止 Nmap 嘗試 ping 掃描目標。這個示例中厌均,我們識別并枚舉了所有列出的開放端口唬滑,而不會直接和被掃描主機交互。反之,偽造了來源的封包會發(fā)給掃描目標晶密,并且只有掃描系統(tǒng)和僵尸主機之間才有直接的交互擒悬。

工作原理

僵尸掃描的底層機制和上一個秘籍中討論過的 Scapy 的例子相同。但是稻艰,使用 Nmap 僵尸掃描模式使我們能夠使用知名的集成工具來快速執(zhí)行此類工具懂牧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市尊勿,隨后出現(xiàn)的幾起案子僧凤,更是在濱河造成了極大的恐慌,老刑警劉巖元扔,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件躯保,死亡現(xiàn)場離奇詭異,居然都是意外死亡澎语,警方通過查閱死者的電腦和手機吻氧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咏连,“玉大人盯孙,你說我怎么就攤上這事∷畹危” “怎么了振惰?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長垄懂。 經(jīng)常有香客問我骑晶,道長,這世上最難降的妖魔是什么草慧? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任桶蛔,我火速辦了婚禮,結(jié)果婚禮上漫谷,老公的妹妹穿的比我還像新娘仔雷。我一直安慰自己,他們只是感情好舔示,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布碟婆。 她就那樣靜靜地躺著,像睡著了一般惕稻。 火紅的嫁衣襯著肌膚如雪竖共。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天俺祠,我揣著相機與錄音公给,去河邊找鬼借帘。 笑死,一個胖子當著我的面吹牛淌铐,可吹牛的內(nèi)容都是我干的姻蚓。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼匣沼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了捂龄?” 一聲冷哼從身側(cè)響起释涛,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎倦沧,沒想到半個月后唇撬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡展融,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年窖认,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片告希。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡扑浸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出燕偶,到底是詐尸還是另有隱情喝噪,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布指么,位于F島的核電站酝惧,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏伯诬。R本人自食惡果不足惜晚唇,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望盗似。 院中可真熱鬧哩陕,春花似錦、人聲如沸赫舒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽号阿。三九已至并鸵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間扔涧,已是汗流浹背园担。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工届谈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人弯汰。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓艰山,卻偏偏與公主長得像,于是被迫代替她去往敵國和親咏闪。 傳聞我的和親對象是個殘疾皇子曙搬,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容