Linux 測試軟件“嗅探器”系列
Sniffer是一種常用的收集有用數(shù)據(jù)方法,它幾乎能得到任何以太網(wǎng)上的傳送的數(shù)據(jù)包。這些數(shù)據(jù)可以是用戶的帳號和密碼,可以是一些商用機密數(shù)據(jù)等等。這些嗅探器很容易被入侵者完成入侵以后種植在受害者服務(wù)器當(dāng)中,有的只是簡單的用來捕捉用戶名和密碼,有的則非常強大可記錄所有的網(wǎng)絡(luò)數(shù)據(jù)流。 Linux操作系統(tǒng)下有很多這樣的優(yōu)秀工具,下面,我們來具體看看。
(1)Linux 測試軟件tcpdump
這是一個專業(yè)的網(wǎng)絡(luò)管理工具,而且這個工具也留下了不少網(wǎng)絡(luò)攻擊故事。它能把匹配規(guī)則的數(shù)據(jù)包的包頭顯示出來,使用TCPDump去查找網(wǎng)絡(luò)問題或者去監(jiān)視網(wǎng)絡(luò)上的狀況.。tcpdump的安裝十分簡單,一般由兩種安裝方式。一種是以rpm包的形式來進行安裝。另外一種是以源程序的形式安裝。以rpm 包的形式安裝是最簡單的安裝方法,通過rpm命令可以直接安裝。以超級用戶登錄后,使用命令:#rpm -ivh tcpdump.rpm,就可以順利安裝了。
Tcpdump采用命令行的方式使用,它的命令格式為:
tcpdump [-adeflnNOpqStvx ] [ -c 數(shù)量 ] [ -F 文件名 ]
[ -i 網(wǎng)絡(luò)接口 ] [ -r 文件名] [ -s snaplen ]
 [ -T 類型 ] [ -w 文件名 ] [表達式 ]
其中,“-a”表示將網(wǎng)絡(luò)地址和廣播地址轉(zhuǎn)變成名字;“-d”表示將匹配信息包的代碼以人們能夠理解的匯編格式給出;“-e”表示在輸出行打印出數(shù)據(jù)鏈路層的頭部信息;“-c”表示在收到指定的包的數(shù)目后,tcpdump就會停止;“-F”表示從指定的文件中讀取表達式,忽略其它的表達式;“-i”表示指定監(jiān)聽的網(wǎng)絡(luò)接口;“-r”表示從指定的文件中讀取包(這些包一般通過-w選項產(chǎn)生);“-w”表示直接將包寫入文件中,并不分析和打印出來;“- T” 表示將監(jiān)聽到的包直接解釋為指定的類型的報文,常見的類型有遠程過程調(diào)用和snmp簡單網(wǎng)絡(luò)管理協(xié)議。
tcpdump的表達式是一個正則表達式,tcpdump利用它作為過濾報文的條件,如果一個報文滿足表達式的條件,則這個報文將會被捕獲。如果沒有給出任何條件,網(wǎng)絡(luò)上所有的信息包將會被截獲。在表達式中一般如下幾種類型的關(guān)鍵字,一種是關(guān)于類型的關(guān)鍵字,主要包括host、net、port等。第二種是確定傳輸方向的關(guān)鍵字,主要包括src , dst ,dst or src, dst and src等,這些關(guān)鍵字指明了傳輸?shù)姆较?。第三種是協(xié)議的關(guān)鍵字,主要包括fddi,ip ,arp,rarp,tcp,udp等類型。除了這三種類型的關(guān)鍵字之外,其他重要的關(guān)鍵字如下:gateway、broadcast、less、 greater,還有三種邏輯運算“或、非、與”,這些關(guān)鍵字可以形成強大的組合條件來滿足人們的需要。例如,想要截獲所有210.27.48.1 的主機收到的和發(fā)出的所有的數(shù)據(jù)包:
#tcpdump host 210.27.48.1
想要獲取主機210.27.48.1除了和主機210.27.48.2之外所有主機通信的ip包,使用命令:
#tcpdump ip host 210.27.48.1 and ! 210.27.48.2
如果想要獲取主機210.27.48.1接收或發(fā)出的telnet包,使用如下命令:
#tcpdump tcp port 23 host 210.27.48.1
下面我們介紹幾種典型的tcpdump命令的輸出信息。比如,使用如下命令:
#tcpdump --e host ice
其中,ice 是一臺裝有l(wèi)inux的主機,她的MAC地址是2E:19:24:28:AF:1A。H219是一臺裝有SOLARIC的SUN工作站,它的MAC地址是8:0:20:79:5B:46;上一條命令的輸出結(jié)果如下所示:
21:50:12.847509 eth0 < 8:0:20:79:5b:46 2E:19:24:28:AF:1A ip 60: h219.33357 > ice.telnet 0:0(0) ack 22535 win 8760 (DF)
分析:21:50:12是顯示的時間,847509是ID號,eth0 <表示從網(wǎng)絡(luò)接口eth0 接受該數(shù)據(jù)包,eth0 >表示從網(wǎng)絡(luò)接口設(shè)備發(fā)送數(shù)據(jù)包, 8:0:20:79:5b:46是主機H219的MAC地址,它表明是從源地址H219發(fā)來的數(shù)據(jù)包。2E:19:24:28:AF:1A是主機ICE的 MAC地址,表示該數(shù)據(jù)包的目的地址是ICE . ip 是表明該數(shù)據(jù)包是IP數(shù)據(jù)包,60 是數(shù)據(jù)包的長度, h219.33357 > ice.telnet 表明該數(shù)據(jù)包是從主機H219的33357端口發(fā)往主機ICE的TELNET(23)端口. ack 22535 表明對序列號是222535的包進行響應(yīng). win 8760表明發(fā)送窗口的大小是8760.
再比如,使用命令:
#tcpdump arp
到的輸出結(jié)果是:
22:32:42.802509 eth0 > arp who-has route tell ice (2E:19:24:28:AF:1A)
22:32:42.802902 eth0 < arp reply route is-at 0:90:27:12:10:66 (2E:19:24:28:AF:1A)
分析: 22:32:42是時間戳, 802509是ID號, eth0 >表明從主機發(fā)出該數(shù)據(jù)包, arp表明是ARP請求包, who-has route tell ice表明是主機ICE請求主機ROUTE的MAC地址。 2E:19:24:28:AF:1A是主機ICE的MAC地址。此外,這個軟件還可以分析UDP等數(shù)據(jù)包等,結(jié)合LINUX環(huán)境熟練使用后,我們就可以充分發(fā)揮它的威力。
(2)Linux 測試軟件Hunt
Hunt具有直觀的命令追蹤和會話錄制功能,它以tar.gz的格式發(fā)布,文件下載后,首先需要解壓縮。運行Hunt后,將啟動一個很直觀的菜單,界面如下:
 
- --- Main Menu --- rcvpkt 0, free/alloc 63/64 ------
 - l/w/r) list/watch/reset connections
 - u) host up tests
 - a) arp/simple hijack (avoids ack storm if arp used)
 - s) simple hijack
 - d) daemons rst/arp/sniff/mac
 - o) options
 - x) exit
 - *> w
 - 0) 192.168.0.1 [1049] --> 192.168.0.2 [23]
 - choose conn> 0
 - dump [s]rc/[d]st/oth > b
 
注:上面的輸入(黑色字體部分)指示hunt來記錄0號連接,并輸出源和目的信息,則hunt將活動信息到終端屏幕上??梢钥吹?,hunt的輸出非常直觀明了,易于閱讀。hunt還提供有以下工具:允許指定任意一個感興趣的連接,而不是記錄所有的東西;允許指定任意一個連接,而不僅僅是以SYN剛剛開始的連接;提供活動會話劫持。
(3)Linux 測試軟件Linsniffer
linsniffer是一個簡單實用的嗅探器。它主要的功能是捕捉用戶名和密碼。
軟件下載后,使用下面的命令來編譯和運行l(wèi)insniffer:
$cc linsniffer.c -o linsniffer
$linsniffer
啟動以后linsniffer將創(chuàng)建一個空文件:tcp.log來存儲嗅探結(jié)果。在測試中我創(chuàng)建一個名為cndes的用戶,密碼為123456。然后使用該用戶來登錄Linux服務(wù)器,并進行一些常見的用戶操作。這是一個典型的用戶操作過程。下面,我們看看linsniffer產(chǎn)生的嗅探結(jié)果:
 
- gnss => linux.test.net [21]
 - USER cndes
 - PASS 123456
 - SYST
 - PORT 172,16,0,1,4,192
 - LIST -al
 - PORT 172,16,0,1,4,193
 - LIST
 - PORT 172,16,0,1,4,194
 - LIST -F
 - CWD lg
 - PORT 172,16,0,1,4,195
 - LIST -F
 
輸出內(nèi)容十分直觀。我們可以分析如下:首先,它記錄到Linux主機的FTP連接:gnss => linux.test.net [21]。然后,linsniffer捕獲了用戶名和密碼。最后,linsniffer記錄了cndes使用的每一個命令。輸出結(jié)果非常清楚,非常適合竊聽密碼及記錄常見的活動。不過,這個軟件不太適合進行更加復(fù)雜的分析。
(4)Linux 測試軟件Linux-sniff
linux_sniffer提供相對更復(fù)雜的探測結(jié)果。首先,使用如下命令編譯linux_sniffer
$cc linux_sniffer.c -o linuxsniff
下面是被linux_sniffer記錄的一次telnet會話過程:
 
- GNSS 2# telnet 192.168.0.1
 - Connected to 192.168.0.1.
 - login: cndes
 - password:
 - [cndes@linux2 cndes]$ w
 - 19:55:29 up 58 min, 4 users, load average: 0.00, 0.00, 0.00
 - USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
 - root tty1 7:44pm 27.00s 0.17s 0.06s -bash
 - root tty2 7:46pm 1:56 0.24s 0.01s linuxsniff
 - root tty3 7:44pm 10:43 0.17s 0.07s -bash
 - cndes ttyp0 gnss 7:55pm 1.00s 0.26s 0.04s w
 - [cndes@linux2 cndes]$ who
 - root tty1 May 20 19:44
 - root tty2 May 20 19:46
 - root tty3 May 20 19:44
 - cndes ttyp0 May 20 19:55 (gnss)
 - [cndes@linux2 cndes]$ finger -l
 - Login: root Name: root
 - Directory: /root Shell: /bin/bash
 - On since Thu May 20 19:44 (PDT) on tty1 35 seconds idle
 - On since Thu May 20 19:46 (PDT) on tty2 2 minutes 4 seconds idle
 - On since Thu May 20 19:44 (PDT) on tty3 10 minutes 51 seconds idle
 - No mail.
 - No Plan.
 - Login: cndes Name: Caldera OpenLinux User
 - Directory: /home/cndes Shell: /bin/bash
 - On since Thu May 20 19:55 (PDT) on ttyp0 from gnss
 - No mail.
 - No Plan.
 - (5)Linux 測試軟件Ettercap
 
Ettercap是一款局域網(wǎng)環(huán)境下的網(wǎng)絡(luò)監(jiān)視、攔截和記錄工具,支持多種主動或被動的協(xié)議分析,有數(shù)據(jù)插入、過濾、保持連接同步等功能,還有一個能支持多種嗅探模式套件,能夠檢查網(wǎng)絡(luò)環(huán)境是否是交換局域網(wǎng),并且能使用主動或被動的操作系統(tǒng)指紋識別技術(shù),讓本地攻擊者充分了解當(dāng)前局域網(wǎng)的情況。
(6)Linux 測試軟件DSniff
DSniff是由Dug Song開發(fā)的一個網(wǎng)絡(luò)審計、測試和嗅探軟件套件,其中,dsniff、filesnarf、mailsnarf、msgsnarf、rlsnarf和 webspy可以用于監(jiān)視網(wǎng)絡(luò)上我們感興趣的數(shù)據(jù),如口令、e-mail、文件等。arpspoof、dnsspoof和macof則可以很容易地載取到攻擊者通常難以獲取的網(wǎng)絡(luò)信息,如二層交換數(shù)據(jù)。
(7)Linux 測試軟件Ethereal
Ethereal是一款免費的網(wǎng)絡(luò)協(xié)議分析程序,支持Unix、Windows。借助這個程序,我們可以直接從網(wǎng)絡(luò)上抓取數(shù)據(jù)進行分析,也可以對其他嗅探器抓取的數(shù)據(jù)進行分析,查看每一個數(shù)據(jù)包的摘要和詳細信息。Ethereal有多種強大的特征,如支持幾乎所有的協(xié)議、豐富的過濾語言、易于查看 TCP會話經(jīng)重構(gòu)后的數(shù)據(jù)流等。
(8)Linux 測試軟件sniffit
sniffit是一個TCP/IP/ICMP協(xié)議數(shù)據(jù)報監(jiān)聽器,它能給出這些協(xié)議數(shù)據(jù)報的詳細技術(shù)信息及符合監(jiān)聽條件的數(shù)據(jù)報的各種不同的格式。 sniffit可以進行方便的配置實現(xiàn)對接入的數(shù)據(jù)報進行過濾。而配置文件允許非常確定地指定需要處理的數(shù)據(jù)報。缺省情況下,sniffit可以處理以太和PPP設(shè)備,也可以用在其他的設(shè)備上。
由于Linux系統(tǒng)下嗅探器的優(yōu)秀功能和強大的殺傷力,因此,新的軟件層出不窮,而各個優(yōu)秀軟件的改進版本或增強版也不斷涌現(xiàn),讀者朋友可以在實際使用中多多收集。
【編輯推薦】















 
 
 

 
 
 
 