Sniffit是由Lawrence Berkeley Laboratory開發(fā)的,可以在Linux、Solaris、SGI等各種平臺(tái)運(yùn)行的網(wǎng)絡(luò)監(jiān)聽軟件,它主要是針對(duì)TCP/IP協(xié)議的不安全性對(duì)運(yùn)行該協(xié)議的機(jī)器進(jìn)行監(jiān)聽——當(dāng)然,數(shù)據(jù)包必須經(jīng)過運(yùn)行sniffit的機(jī)器才能進(jìn)行監(jiān)聽,因此它只能夠監(jiān)聽在同一個(gè)網(wǎng)段上的機(jī)器。而且還能夠自由地為其增加某些插件以實(shí)現(xiàn)額外功能。
一、安裝 軟件的安裝很簡單:
1、用tar zvfx sniffit.*.*.*.tgz將下載下來的sniffit.*.*.*.tgz解壓縮到你想要的目的文件夾, 如
果版本是0.3.7的話(應(yīng)該是最新版本吧,我不敢確定……),你會(huì)看到該目錄下出現(xiàn)一個(gè)
sniffit.0.3.7的目錄。
2、cd sniffit.0.3.7
3、./configure && make ,只要在這個(gè)過程中終端上沒有意外的error信息出現(xiàn),你就算編譯成功 了—
—可以得到一個(gè)二進(jìn)制的sniffit文件。
4、make clean把不用的垃圾掃掉……
二、使用方法
1、參數(shù)
這個(gè)東東具有如下的命令選項(xiàng):
-v 顯示版本信息
-t <ip nr/name> 讓程序去監(jiān)聽指定流向某IP的數(shù)據(jù)包
-s <ip nr/name>讓程序去監(jiān)聽從某IP流出的IP數(shù)據(jù)包,可以使用@通配符,如 -t 199.145.@
-i 顯示出窗口界面,能察看當(dāng)前在你所屬網(wǎng)絡(luò)上進(jìn)行連接的機(jī)器
-I 擴(kuò)展的交互模式,忽略所有其它選項(xiàng),比-i強(qiáng)大得多……
-c <file> 利用腳本來運(yùn)行程序
-F <device> 強(qiáng)制使程序使用網(wǎng)絡(luò)硬盤
-n 顯示出假的數(shù)據(jù)包。象使用ARP、RARP或者其他不是IP的數(shù)據(jù)包也會(huì)顯示出來
-N 只運(yùn)行plugin時(shí)的選項(xiàng),使其它選項(xiàng)失效
在-i 模式下無法工作的參數(shù):
-b 同時(shí)做-t和-s的工作……
-d 將監(jiān)聽所得內(nèi)容顯示在當(dāng)前終端——以十六進(jìn)制表示
-a 將監(jiān)聽所得內(nèi)容顯示在當(dāng)前終端——以ASCII字符表示
-x 打印TCP包的擴(kuò)展信息(SEQ, ACK, Flags),可以與'-a', '-d', '-s', '-t', '-b'一起運(yùn)作,注意—
—它是輸出在標(biāo)準(zhǔn)輸出的,如果只用-t,-s,-b 而沒有其它參數(shù)配合的話不會(huì)被寫入文件。
-R <file> 將所有通信記錄在文件中
-r <file> 這一選項(xiàng)將記錄文件送往sniffit,它需要-F的參數(shù)配合指明設(shè)備,假設(shè)你用 'eth0'(第一塊網(wǎng)
卡)來記錄文件,你必須在命令行里面加上'-F eth0'或者 '或者'或者'或者'或者'-F eth' -A 遇到不認(rèn)
識(shí)的字符時(shí)用指定的字符代替
-P <protocol> 定義監(jiān)聽的協(xié)議,DEFAULT為TCP——也可以選IP、ICMP、UDP……
-p <prot >定義監(jiān)聽端口,默認(rèn)為全部
-l <length> 設(shè)定數(shù)據(jù)包大小,default是300字節(jié)。
-M <plugin> 激活插件
-I,-i 模式下的參數(shù)
-D <device> 所有的記錄會(huì)被送到這個(gè)磁盤上。
-c 模式下的參數(shù)
-L<logparam>
其中l(wèi)ogparam可以是如下的內(nèi)容:
raw : 輕度
norm : 常規(guī)
telnet: 記錄口令(端口23)
ftp : 記錄口令(端口21)
mail : 記錄信件內(nèi)容(端口25)
比如說"ftpmailnorm"就是一個(gè)合法的logparam
2、圖形仿真界面
就是上面所說的-i選項(xiàng)啦,我們輸入sniffit -i 會(huì)出現(xiàn)一個(gè)窗口環(huán)境,從中可以看到自己所在的 網(wǎng)絡(luò)中
有哪些機(jī)器正在連接,使用什么端口號(hào),其中可用的命令如下:
q 退出窗口環(huán)境,結(jié)束程序
r 刷新屏幕,重新顯示正在在連線的機(jī)器
n 產(chǎn)生一個(gè)小窗口,包括TCP、IP、ICMP、UDP等協(xié)議的流量
g 產(chǎn)生數(shù)據(jù)包,正常情況下只有UDP協(xié)議才會(huì)產(chǎn)生,執(zhí)行此命令要回答一些關(guān)于數(shù)據(jù)包的問題
F1 改變來源網(wǎng)域的IP地址,默認(rèn)為全部
F2 改變目的網(wǎng)域的IP地址,默認(rèn)為全部
F3 改變來源機(jī)器的端口號(hào),默認(rèn)為全部
F4 改變目的機(jī)器的端口號(hào),默認(rèn)為全部
3、一些示例
假設(shè)有以下的設(shè)置:在一個(gè)子網(wǎng)中有兩臺(tái)主機(jī),一臺(tái)運(yùn)行了sniffer,我們稱之為sniffit.com,另 一臺(tái)
是66.66.66.7,我們稱之為target.com。
1、你希望檢查sniffer是否能運(yùn)行
sniffit:~/# sniffit -d -p 7 -t 66.66.66.7
并且開另一個(gè)窗口:
sniffit:~/$ telnet target.com 7
你可以看到sniffer將你telnet到對(duì)方7號(hào)端口echo服務(wù)的包捕獲了。
2、你希望截獲target.com上的用戶密碼
sniffit:~/# sniffit -p 23 -t 66.66.66.7
3、target.com主機(jī)的根用戶聲稱有奇怪的FTP連接并且希望找出他們的擊鍵
sniffit:~/# sniffit -p 21 -l 0 -t 66.66.66.7
4. 你希望能閱讀所有進(jìn)出target.com的信件
sniffit:~/# sniffit -p 25 -l 0 -b -t 66.66.66.7 &
或者
sniffit:~/# sniffit -p 25 -l 0 -b -s 66.66.66.7 &
5. 你希望使用用戶交互界面
sniffit:~/# sniffit -i
6. 有錯(cuò)誤發(fā)生而且你希望截獲控制信息
sniffit:~/# sniffit -P icmp -b -s 66.66.66.7
7. Go wild on scrolling the screen.
sniffit:~/# sniffit -P ip -P icmp -P tcp -p 0 -b -a -d -x -s 66.66.66.7
與之效果相當(dāng)?shù)氖?
sniffit:~/# sniffit -P ipicmptcp -p 0 -b -a -d -x -s 66.66.66.7
8. 你可以用'more 66*'讀取下列方式記錄下的密碼
sniffit:~/# sniffit -p 23 -A . -t 66.66.66.7
或者
sniffit:~/# sniffit -p 23 -A ^ -t dummy.net
三、高級(jí)應(yīng)用
1、用腳本執(zhí)行
這是配合選項(xiàng)-c的,其執(zhí)行方法也很簡單,比如以如下方式編輯一個(gè)叫sh的文件
select from host 180.180.180.1
select to host 180.180.180.10
select both port 21
然后執(zhí)行:sniffit -c sh
說明:監(jiān)聽從180.180.180.1送往180.180.180.10的數(shù)據(jù)包,端口為FTP口。這里不做更多說明,你 可以
自己去看里面的README。
2、插件
要獲取一個(gè)插件是很簡單的,你將它放入sniffit的目錄下,并且象如下方式編輯sn_plugin.h 文件:
#define PLUGIN1_NAME "My plugin"
#define PLUGIN1(x) main_plugin_function(x)
#include "my_plugin.plug"
注意:
a) 你可以讓plugin從0-9,所以從PLUGIN0_NAME到PLUGIN1_NAME……不必是連續(xù)的
d) #include "my_plugin.plug" 這是我的插件源代碼放置的地方。 如果想詳細(xì)了解的話,還是看看里面
的plugin.howto吧。
3、介紹 tod
這東東便是sniffit最有名的一個(gè)插件了,為什么叫TOD呢——touch of death,它可以輕易地切斷一個(gè)
TCP連接,原理是向一個(gè)TCP連接中的一臺(tái)主機(jī)發(fā)送一個(gè)斷開連接的IP包,這個(gè)IP包的RST位置1,便可以了
。
將下載下來的tod.tar.gz拷貝到sniffit所在目錄下,解壓安裝后
ln -s tod sniffit_key5
就可以將這相程序與F5鍵連接起來,想切斷哪臺(tái)機(jī)器的話,只要在窗口中將光標(biāo)指到需要斷線的機(jī)器上
按下F5鍵就可以了。你可以自由地定義成其它的F功能鍵——F1~F4不行,它們已經(jīng)被定義過了……
寫了這么多,好了,下課……


