Linux 測試軟件“嗅探器”系列
Sniffer是一種常用的收集有用數據方法,它幾乎能得到任何以太網上的傳送的數據包。這些數據可以是用戶的帳號和密碼,可以是一些商用機密數據等等。這些嗅探器很容易被入侵者完成入侵以后種植在受害者服務器當中,有的只是簡單的用來捕捉用戶名和密碼,有的則非常強大可記錄所有的網絡數據流。 Linux操作系統下有很多這樣的優秀工具,下面,我們來具體看看。
(1)Linux 測試軟件tcpdump
這是一個專業的網絡管理工具,而且這個工具也留下了不少網絡攻擊故事。它能把匹配規則的數據包的包頭顯示出來,使用TCPDump去查找網絡問題或者去監視網絡上的狀況.。tcpdump的安裝十分簡單,一般由兩種安裝方式。一種是以rpm包的形式來進行安裝。另外一種是以源程序的形式安裝。以rpm 包的形式安裝是最簡單的安裝方法,通過rpm命令可以直接安裝。以超級用戶登錄后,使用命令:#rpm -ivh tcpdump.rpm,就可以順利安裝了。
Tcpdump采用命令行的方式使用,它的命令格式為:
tcpdump [-adeflnNOpqStvx ] [ -c 數量 ] [ -F 文件名 ]
[ -i 網絡接口 ] [ -r 文件名] [ -s snaplen ]
[ -T 類型 ] [ -w 文件名 ] [表達式 ]
其中,“-a”表示將網絡地址和廣播地址轉變成名字;“-d”表示將匹配信息包的代碼以人們能夠理解的匯編格式給出;“-e”表示在輸出行打印出數據鏈路層的頭部信息;“-c”表示在收到指定的包的數目后,tcpdump就會停止;“-F”表示從指定的文件中讀取表達式,忽略其它的表達式;“-i”表示指定監聽的網絡接口;“-r”表示從指定的文件中讀取包(這些包一般通過-w選項產生);“-w”表示直接將包寫入文件中,并不分析和打印出來;“- T” 表示將監聽到的包直接解釋為指定的類型的報文,常見的類型有遠程過程調用和snmp簡單網絡管理協議。
tcpdump的表達式是一個正則表達式,tcpdump利用它作為過濾報文的條件,如果一個報文滿足表達式的條件,則這個報文將會被捕獲。如果沒有給出任何條件,網絡上所有的信息包將會被截獲。在表達式中一般如下幾種類型的關鍵字,一種是關于類型的關鍵字,主要包括host、net、port等。第二種是確定傳輸方向的關鍵字,主要包括src , dst ,dst or src, dst and src等,這些關鍵字指明了傳輸的方向。第三種是協議的關鍵字,主要包括fddi,ip ,arp,rarp,tcp,udp等類型。除了這三種類型的關鍵字之外,其他重要的關鍵字如下:gateway、broadcast、less、 greater,還有三種邏輯運算“或、非、與”,這些關鍵字可以形成強大的組合條件來滿足人們的需要。例如,想要截獲所有210.27.48.1 的主機收到的和發出的所有的數據包:
#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接收或發出的telnet包,使用如下命令:
#tcpdump tcp port 23 host 210.27.48.1
下面我們介紹幾種典型的tcpdump命令的輸出信息。比如,使用如下命令:
#tcpdump --e host ice
其中,ice 是一臺裝有linux的主機,她的MAC地址是2E:19:24:28:AF:1A。H219是一臺裝有SOLARIC的SUN工作站,它的MAC地址是8:0:20:79:5B:46;上一條命令的輸出結果如下所示:
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 <表示從網絡接口eth0 接受該數據包,eth0 >表示從網絡接口設備發送數據包, 8:0:20:79:5b:46是主機H219的MAC地址,它表明是從源地址H219發來的數據包。2E:19:24:28:AF:1A是主機ICE的 MAC地址,表示該數據包的目的地址是ICE . ip 是表明該數據包是IP數據包,60 是數據包的長度, h219.33357 > ice.telnet 表明該數據包是從主機H219的33357端口發往主機ICE的TELNET(23)端口. ack 22535 表明對序列號是222535的包進行響應. win 8760表明發送窗口的大小是8760.
再比如,使用命令:
#tcpdump arp
到的輸出結果是:
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 >表明從主機發出該數據包, arp表明是ARP請求包, who-has route tell ice表明是主機ICE請求主機ROUTE的MAC地址。 2E:19:24:28:AF:1A是主機ICE的MAC地址。此外,這個軟件還可以分析UDP等數據包等,結合LINUX環境熟練使用后,我們就可以充分發揮它的威力。
(2)Linux 測試軟件Hunt
Hunt具有直觀的命令追蹤和會話錄制功能,它以tar.gz的格式發布,文件下載后,首先需要解壓縮。運行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是一個簡單實用的嗅探器。它主要的功能是捕捉用戶名和密碼。
軟件下載后,使用下面的命令來編譯和運行linsniffer:
$cc linsniffer.c -o linsniffer
$linsniffer
啟動以后linsniffer將創建一個空文件:tcp.log來存儲嗅探結果。在測試中我創建一個名為cndes的用戶,密碼為123456。然后使用該用戶來登錄Linux服務器,并進行一些常見的用戶操作。這是一個典型的用戶操作過程。下面,我們看看linsniffer產生的嗅探結果:
- 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
輸出內容十分直觀。我們可以分析如下:首先,它記錄到Linux主機的FTP連接:gnss => linux.test.net [21]。然后,linsniffer捕獲了用戶名和密碼。最后,linsniffer記錄了cndes使用的每一個命令。輸出結果非常清楚,非常適合竊聽密碼及記錄常見的活動。不過,這個軟件不太適合進行更加復雜的分析。
(4)Linux 測試軟件Linux-sniff
linux_sniffer提供相對更復雜的探測結果。首先,使用如下命令編譯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是一款局域網環境下的網絡監視、攔截和記錄工具,支持多種主動或被動的協議分析,有數據插入、過濾、保持連接同步等功能,還有一個能支持多種嗅探模式套件,能夠檢查網絡環境是否是交換局域網,并且能使用主動或被動的操作系統指紋識別技術,讓本地攻擊者充分了解當前局域網的情況。
(6)Linux 測試軟件DSniff
DSniff是由Dug Song開發的一個網絡審計、測試和嗅探軟件套件,其中,dsniff、filesnarf、mailsnarf、msgsnarf、rlsnarf和 webspy可以用于監視網絡上我們感興趣的數據,如口令、e-mail、文件等。arpspoof、dnsspoof和macof則可以很容易地載取到攻擊者通常難以獲取的網絡信息,如二層交換數據。
(7)Linux 測試軟件Ethereal
Ethereal是一款免費的網絡協議分析程序,支持Unix、Windows。借助這個程序,我們可以直接從網絡上抓取數據進行分析,也可以對其他嗅探器抓取的數據進行分析,查看每一個數據包的摘要和詳細信息。Ethereal有多種強大的特征,如支持幾乎所有的協議、豐富的過濾語言、易于查看 TCP會話經重構后的數據流等。
(8)Linux 測試軟件sniffit
sniffit是一個TCP/IP/ICMP協議數據報監聽器,它能給出這些協議數據報的詳細技術信息及符合監聽條件的數據報的各種不同的格式。 sniffit可以進行方便的配置實現對接入的數據報進行過濾。而配置文件允許非常確定地指定需要處理的數據報。缺省情況下,sniffit可以處理以太和PPP設備,也可以用在其他的設備上。
由于Linux系統下嗅探器的優秀功能和強大的殺傷力,因此,新的軟件層出不窮,而各個優秀軟件的改進版本或增強版也不斷涌現,讀者朋友可以在實際使用中多多收集。
【編輯推薦】