今天早上一個朋友問我,說啥工具發(fā)現(xiàn)網(wǎng)絡(luò)中被嗅探的比較好,我說ISS的anti-Sniffer不行嗎,他說太慢!后來記起來以前逛網(wǎng)路的時候看到過這樣的一個程序,也是antisniffer類型的,所以又把其找了出來.
Sentinel主要是設(shè)計思想是portable,arrcurate implementation,就是說小巧點,精確實現(xiàn)幾個熟知的雜亂方式探測技術(shù)。其中Sentinel支持三種方法的遠程雜亂探測模式:DNS測試,Etherping測試,和ARP測試,其中還有一種ICMP ping Latency(ICMP PING反應(yīng)時間)正在開發(fā)中。
此程序需要Libnet和libpcap庫來支持,大家可以到下面的地址去下載:
LIbnet 1.0: http://www.packetfactory.net/Projects/libnet
libpcap 0.4: ftp://ftp.ee.lbl.gov/libpcap-0.4.tar.Z
首先說下它其中使用的三種模式:
--ARP測試模式:
這種方法是采用發(fā)送一個ARP請求,其中包含所有正確
信息除了偽造的目標(biāo)主機MAC硬件地址給我們的目標(biāo)主機,這樣如果目
標(biāo)主機沒有處于雜亂模式,它將不會理睬這些信息包,因為這些信息包
其認(rèn)為不是指定給它們的,所以不會進行響應(yīng)和回復(fù),但如果此目標(biāo)機器
處于雜亂模式,ARP請求就會發(fā)生并進行內(nèi)核處理,通過機器的回應(yīng)信息
我們就可以知道其處于雜亂模式。這種方法結(jié)合內(nèi)核的特性來查看機器
的運作狀態(tài),請看下面的Etherping 測試模式。
-- DNS測試模式:
DNS測試主要是針對網(wǎng)絡(luò)數(shù)據(jù)收集工具能執(zhí)行IP到名字
反轉(zhuǎn)解析來提供DNS名字來代替IP地址(The DNS tests operate on
the premise that many attacker network data gathering tools
perform IP to name inverse resolution to provide DNS names in
place of IP addresses)。在執(zhí)行反轉(zhuǎn)查詢中,工具會從被動網(wǎng)絡(luò)工具
模式轉(zhuǎn)變?yōu)橹鲃泳W(wǎng)絡(luò)工具,而那些沒有監(jiān)視網(wǎng)絡(luò)書記的工具就不會去解析
信息包中的IP地址。利用這種信息,ANTI SNIFFER工具可以自身在本地主機
中變?yōu)殡s亂模式并在我們網(wǎng)絡(luò)中發(fā)送無數(shù)個偽造的主機,這樣,ANTI SNIFFER
工具就可以嗅探DNS請求來查看目標(biāo)是否在請求解析那些不存在主機。
--Etherping 測試模式:
Etherping 測試模式依賴于目標(biāo)主機的內(nèi)核,也就所謂的內(nèi)核測試。
在通常情況下,硬件網(wǎng)絡(luò)接口卡過濾和丟棄那些MAC地址不同于自己機器
上的MAC地址的信息包或者不是廣播Ethernet 地址的地址。就是說信息包
是正確和實際的Ethernet地址或者是廣播Ethernet地址,接口就會把這些
地址COPY和傳遞給內(nèi)核進行進一步處理。
但某些系統(tǒng)假定包含在以太幀中的數(shù)據(jù)包含某個目標(biāo)主機中正確的IP地址
或者廣播地址,但具有不同于本地主機的MAC地址,當(dāng)NIC設(shè)置為雜亂模式,
發(fā)送給目標(biāo)主機的每個數(shù)據(jù)包它還是傻傻的傳遞給操作系統(tǒng)進行分析。這
樣通過發(fā)送包含正確IP地址和不正確MAC地址的ICMP ECHO包給要檢測的
主機,如果目標(biāo)主機回應(yīng)了我們的請求,我們就知道其處于雜亂模式了。
多種LINUX內(nèi)核存在這種問題,其中NETBSD也可以利用這個問題來檢測
雜亂模式,但需要使用廣播地址的信息包,這種信息包使用帶偽造ether
幀的IP地址,如66:66:66:66:66:66.
關(guān)于WINDOWS95,98,NT的操作系統(tǒng)在雜亂模式中確實是檢查信息包
ETHER地址的,如果信息包的NIC ETHER地址符合本地主機就讓堆棧來處理。
但WINDOWS對廣播的ether信息包存在問題,在普通環(huán)境下,如機器不在
雜亂模式下,NIC只把含有起本身MAC地址的信息包或者ether地址是
ff:ff:ff:ff:ff:ff傳遞給內(nèi)核。但當(dāng)在雜亂模式中驅(qū)動程序是檢查
ETHER地址,但它只檢查ETHER地址的第一個八未組是否為Oxff就來判斷
信息包是否為廣播或者其他,因此如果我們建立一個包含EHTER地址為
ff:00:00:00:00:00的IP正確的信息包并發(fā)送給目標(biāo)機器,如果其進行
了響應(yīng)的回應(yīng),就表示起處于雜亂模式。
但對WINDOWS的這種方法是依賴于所用的驅(qū)動程序的,默認(rèn)的微軟驅(qū)動
程序有此特性并且大多數(shù)供應(yīng)商的驅(qū)動程序也有此特性,但某些NIC
過濾廣播只是依靠第一個八為組,所以這些卡不適合此方法。
--網(wǎng)絡(luò)和機器的反應(yīng)時間測試(也可以說ICMP PING反應(yīng)時間):
這種模式是比較有效的測試方法,依據(jù)是靠對操作系統(tǒng)的影響來測試。
但其中的壞處就是這些測試會在短期內(nèi)產(chǎn)生一些
多數(shù)量的網(wǎng)絡(luò)通信。
這些測試假定當(dāng)網(wǎng)絡(luò)卡不處于雜亂模式時提供硬件過濾,這樣的話,信息
包不是指定給本身機器的將被網(wǎng)絡(luò)卡丟棄。當(dāng)在這中情況下,在網(wǎng)絡(luò)通信
信息量將動態(tài)增長對操作系統(tǒng)的影響很小,相反的處于雜亂狀態(tài)的機器由于不
對這層進行過濾,就把這些信息傳遞給系統(tǒng)或者用戶模式進行過濾,會對
操作系統(tǒng)產(chǎn)生比較大的影響。簡單的說,我們先正常情況下PING一機器,
再我們構(gòu)建很多偽造的TCP連接來ping程序來ping目標(biāo),并且注意RTT(round
trip time),這樣處于雜亂模式的機器由于會處理這些垃圾信息包,并
影響系統(tǒng)并導(dǎo)致網(wǎng)絡(luò)反映時間增加,然后來比較各個RTT,經(jīng)過多次測試和
人工判斷就能決定目標(biāo)機器上是否存在SNIFFER。
Sentinel是根據(jù)這些方法來進行測試的程序,是有源代碼形式發(fā)放的。使用于
OPENBSD 2.6 ;FREEBSD 3.X;NETBSD 1.4.1;LINUX2.2.X平臺。
編譯后使用方法為:
#./sentinel -t 192.168.0.1 -a 是ARP測試。
#./sentinel -t 192.168.0.1 -e 是etherping test;
#./sentinel -t 192.168.0.1 -f 1.1.1.1 -d 是DNS測試;
#./sentinel -t 192.168.0.1 -f 1.1.1.1 -d -a -e 是允許所有模式進行測試;
----------------------------------------------------------------------
參考:1,http://www.sentinel.net/projects/sentinel/ 的README;
2,http://www.l0pht.com/antisniff/tech-paper.html