網(wǎng)絡(luò)嗅探技術(shù)淺析
一、嗅探可以做什么?為什么需要嗅探?
嗅探(sniff),就是竊聽網(wǎng)絡(luò)上流經(jīng)的數(shù)據(jù)包,而數(shù)據(jù)包里面一般會包含很多重要的私隱信息,如:你正在訪問什么網(wǎng)站,你的郵箱密碼是多少,你在和哪個MM聊QQ等等......而很多攻擊方式(如著名的會話劫持)都是建立在嗅探的基礎(chǔ)上的。
二、嗅探技術(shù)
在集線器盛行的年代,要做嗅探是件相當簡單的事情,你什么事情都不用干,集線器自動會把別人的數(shù)據(jù)包往你機器上發(fā)。但是那個年代已經(jīng)過去了,現(xiàn)在交換機已經(jīng)代替集線器成為組建局域網(wǎng)的重要設(shè)備,而交換機不會再把不屬于你的包轉(zhuǎn)發(fā)給你,你也不能再輕易地監(jiān)聽別人的信息了,注意,只是不再輕易地,不是不行!呵呵,要在交換機網(wǎng)絡(luò)下做嗅探還是有方法的,接下來我總結(jié)一下最近看到的關(guān)于交換機網(wǎng)絡(luò)嗅探的一些方法:
1、基于ARP欺騙的嗅探技術(shù)
以前搞ARP攻擊沒什么意思,它頂多就是把一些機器搞得不能上網(wǎng),真的沒啥意思,但自從交換機成為架設(shè)局域網(wǎng)的主流設(shè)備后,ARP攻擊有了新的用途:用ARP欺騙輔助嗅探!原理很簡單,先看看下面兩幅圖:
左圖是正常通信時,兩臺機器數(shù)據(jù)流向。右圖是B被A機器ARP欺騙后,兩臺機器的數(shù)據(jù)流向,著重看右圖,B被ARP欺騙后,數(shù)據(jù)的流向改變了,數(shù)據(jù)先是發(fā)給了A,然后再由A轉(zhuǎn)發(fā)給網(wǎng)關(guān);而從網(wǎng)關(guān)接收數(shù)據(jù)時,網(wǎng)關(guān)直接把發(fā)給B的數(shù)據(jù)轉(zhuǎn)發(fā)給了A,再由A轉(zhuǎn)發(fā)給B,而A的自己的數(shù)據(jù)流向是正常的。現(xiàn)在B的數(shù)據(jù)全部要流經(jīng)A,如果A要監(jiān)聽B是易于反掌的事情了。
再簡單說說這個ARP欺騙的過程吧,也就是怎么實現(xiàn)改變B的數(shù)據(jù)流向:
1).現(xiàn)在架設(shè)A的IP地址是192.168.1.11,MAC地址是:11-11-11-11-11-11;B的IP地址是192.168.1.77,MAC地址是77-77-77-77-77-77;網(wǎng)關(guān)IP地址是192.168.1.1,MAC地址是:01-01-01-01-01-01。
2).A發(fā)送ARP欺騙包(ARP應(yīng)答包)給B,告訴B:我(A)是網(wǎng)關(guān),你把訪問外網(wǎng)的數(shù)據(jù)發(fā)給我(A)吧!ARP欺騙包如下:
SrcIP: 192.168.1.1 ,SrcMAC:11-11-11-11-11-11
DstIP: 192.168.1.77 ,DstMAC:77-77-77-77-77-77
3).A發(fā)送ARP欺騙包(ARP應(yīng)答包)給網(wǎng)關(guān),告訴網(wǎng)關(guān):我(A)是機器B,結(jié)果網(wǎng)關(guān)把所有給B的數(shù)據(jù)都發(fā)到A那里了。ARP欺騙包如下:
SrcIP: 192.168.1. 77,SrcMAC:11-11-11-11-11-11
DstIP: 192.168.1. 1,DstMAC:01-01-01-01-01-01
4).機器A有一個輔助用的轉(zhuǎn)發(fā)軟件,它負責(zé)把“網(wǎng)關(guān)->B”和“B->網(wǎng)關(guān)”的數(shù)據(jù)包轉(zhuǎn)發(fā)。
至此,ARP欺騙的輔助任務(wù)完成了,接下來就是用你的嗅探器進行偷窺了~噢~哈哈!
這里有幾點值得注意一下的:
1).ARP欺騙包每隔一段時間要發(fā)一次,否則網(wǎng)關(guān)和B的ARP緩存會更新!
2).ARP欺騙完成后,網(wǎng)關(guān)的ARP記錄會有兩記錄的MAC地址是相同的,分別是:192.168.1.11(11-11-11-11-11-11)和192.168.1.77(11-11-11-11-11-11),這樣可能會比較明顯,嗯~可以把A自己在網(wǎng)關(guān)的ARP緩存改了:192.168.1.11(01-10-01-10-01-10,亂寫一個),但這樣會有兩個問題:一個是這個MAC是亂寫的,局域網(wǎng)內(nèi)根本沒有這個MAC地址的機器,根據(jù)交換機的工作原理,網(wǎng)關(guān)發(fā)給192.168.1.11這IP的機器的數(shù)據(jù)將會被廣播。第二個是,此刻你(A)的正常與外界通信的能力將會喪失。可以權(quán)衡考慮一下。
以前的一篇文章《Arp攻擊實戰(zhàn)》,里面所使用的ARP攻擊工具:"WinArpAttacker",它就有利用這種原理進行嗅探的功能,見下圖:
#p#
2、欺騙交換機緩存
用ARP欺騙輔助嗅探是一種比較舊的方式,現(xiàn)在的局域網(wǎng)機器很多都裝了ARP防火墻!如果機器裝了ARP防火墻,上面的嗅探方式就沒用了:<,那還有其他的方式嗎?嗯~有!那就是欺騙交換機緩存!
cncert的一個很出名的會話劫持工具SSCLONE就是采用這種方法進行嗅探的,它的網(wǎng)站上也有專門的文章說明“欺騙交換機緩存”的嗅探方法(見參考資料)。我在這里大概說一下原理吧。
交換機里面有一張CAM表,記錄了Mac-Port信息(這個端口對應(yīng)的機器的MAC地址是什么),MAC信息的獲取是:交換機從轉(zhuǎn)發(fā)的數(shù)據(jù)包中提取。所謂欺騙交換機緩存,就是修改這張CAM表以達到欺騙交換機的目的!比如現(xiàn)在有一個4端口的交換機,它的CAM表如下:
port1 -- 11-11-11-11-11-11
port2 -- 22-22-22-22-22-22
port3 -- 33-33-33-33-33-33
port4 -- 44-44-44-44-44-44
現(xiàn)在port1的機器A(IP是192.168.1.11,MAC地址為11-11-11-11-11-11)想要嗅探port2的機器B(IP是192.168.1.22,MAC地址為22-22-22-22-22-22),怎么辦呢?呵呵~流程如下:
機器A對外發(fā)送一個數(shù)據(jù)包,如下:
SrcIP:192.168.1.11 ScrMac:22-22-22-22-22-22
DstIP:xxx.xxx.xxx.xxx(隨便寫),DstMac:xx-xx-xx-xx-xx-xx(隨便寫)
此時,交換機收到這個包,發(fā)現(xiàn)在原來CAM里面,port1對應(yīng)的機器MAC地址是11-11-11-11-11-11,怎么現(xiàn)在變?yōu)椋?2-22-22-22-22-22了呢??哦,應(yīng)該是這臺機器的MAC地址變了吧~好!那我更新CAM表!
更新后的交換機CAM表如下:
port1 -- 22-22-22-22-22-22
port2 -- 22-22-22-22-22-22
port3 -- 33-33-33-33-33-33
port4 -- 44-44-44-44-44-44
現(xiàn)在有port1和port2對應(yīng)的MAC地址是一樣的。如果現(xiàn)在網(wǎng)關(guān)(假設(shè)現(xiàn)在port4連接的是網(wǎng)關(guān))來了一個數(shù)據(jù)包是給機器B(IP是192.168.1.22,MAC地址為22-22-22-22-22-22),交換機會順序查詢此刻的CAM表來確定該數(shù)據(jù)包轉(zhuǎn)發(fā)去哪個端口!在查詢port1時,發(fā)現(xiàn)此端口對應(yīng)MAC地址和數(shù)據(jù)包里的MAC地址相同,交換機直接就把包轉(zhuǎn)發(fā)到port1的機器A了,由于該包已轉(zhuǎn)發(fā)完畢,交換機繼續(xù)處理下一個數(shù)據(jù)包......就這樣,數(shù)據(jù)包又再次落入充滿窺探欲望的人手中!
這里也需要注意幾個問題:
1).A收到包后,還是需要轉(zhuǎn)發(fā)給B的,不然B和外面的對話就中斷了。
2).當A把包轉(zhuǎn)發(fā)給B時,需要修復(fù)交換機的CAM表。
當你看完以上這兩點注意時,可能會發(fā)現(xiàn)利用這種的一些缺陷:
1).A在轉(zhuǎn)發(fā)包給B時需要恢復(fù)CAM表,轉(zhuǎn)發(fā)后又要再次欺騙。如果在轉(zhuǎn)發(fā)包時,網(wǎng)關(guān)來了一個數(shù)據(jù)給B,此時的CAM表是正確的,交換機會把這個數(shù)據(jù)會直接發(fā)給B,A無法監(jiān)聽到這個包,由于每次轉(zhuǎn)發(fā)都需要完成以上操作,導(dǎo)致CAM表刷新相當頻繁,最后的結(jié)果是,A監(jiān)聽到的數(shù)據(jù)很不完整。
2).你接的交換機的端口號決定著你的命運!
如果B接的port1端口,A接的是port2端口,那么,用這種方式,A將永遠也嗅探不到B的信息,更悲觀的想一下,如果你連接的是這個交換機最后一個端口呢??!:<
3).跨交換機進行嗅探丟包非常多!
看下圖:
現(xiàn)在交換機A連接交換機B的port1,機器C連接port2,如果沒有機器B的話,機器A還是能比較順利監(jiān)聽機器到C的信息的,但是有了機器B就不同了,交換機的CAM表里port1這條記錄,會因為機器A和機器B的發(fā)包而經(jīng)常改變。導(dǎo)致的問題大家也可以想到了。
現(xiàn)在,防止欺騙交換機緩存的方法只有在交換機處綁定port-mac這對信息,但由于這和交換機原先設(shè)計的理念有矛盾,故這個是無法實現(xiàn)的,也就是說,沒有辦法防止:<
值得一說的是,現(xiàn)在無線網(wǎng)已經(jīng)興起了,和集線器時代一樣,在無線網(wǎng)絡(luò)監(jiān)聽別人的信息是不費吹灰之力的事情,無線網(wǎng)的安全也值深思。