天天看點

網絡嗅探技術淺析

<b>一.嗅探可以做什麼?為什麼需要嗅探?</b>

  嗅探(sniff),就是竊聽網絡上流經的資料包,而資料包裡面一般會包含很多重要的私隐資訊,如:你正在通路什麼網站,你的郵箱密碼是多少,你在和哪個MM聊QQ等等......而很多攻擊方式(如著名的會話劫持)都是建立在嗅探的基礎上的。

<b>二.嗅探技術</b>

  以前搞ARP攻擊沒什麼意思,它頂多就是把一些機器搞得不能上網,真的沒啥意思,但自從交換機成為架設區域網路的主流裝置後,ARP攻擊有了新的用途:用ARP欺騙輔助嗅探!原理很簡單,先看看下面兩幅圖:

  

  左圖是正常通信時,兩台機器資料流向。右圖是B被A機器ARP欺騙後,兩台機器的資料流向,着重看右圖,B被ARP欺騙後,資料的流向改變了,資料先是發給了A,然後再由A轉發給網關;而從網關接收資料時,網關直接把發給B的資料轉發給了A,再由A轉發給B,而A的自己的資料流向是正常的。現在B的資料全部要流經A,如果A要監聽B是易于反掌的事情了。

  再簡單說說這個ARP欺騙的過程吧,也就是怎麼實作改變B的資料流向:

  1).現在架設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;網關IP位址是192.168.1.1,MAC位址是:01-01-01-01-01-01。

  2).A發送ARP欺騙包(ARP應答包)給B,告訴B:我(A)是網關,你把通路外網的資料發給我(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發送ARP欺騙包(ARP應答包)給網關,告訴網關:我(A)是機器B,結果網關把所有給B的資料都發到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有一個輔助用的轉發軟體,它負責把“網關-&gt;B”和“B-&gt;網關”的資料包轉發。

至此,ARP欺騙的輔助任務完成了,接下來就是用你的嗅探器進行偷窺了~噢~哈哈!

  這裡有幾點值得注意一下的:

  1).ARP欺騙包每隔一段時間要發一次,否則網關和B的ARP緩存會更新!

  2).ARP欺騙完成後,網關的ARP記錄會有兩記錄的MAC位址是相同的,分别是:192.168.1.11(11-11-11-11-11-11)和192.168.1.77(11-11-11-11-11-11),這樣可能會比較明顯,嗯~可以把A自己在網關的ARP緩存改了:192.168.1.11(01-10-01-10-01-10,亂寫一個),但這樣會有兩個問題:一個是這個MAC是亂寫的,區域網路内根本沒有這個MAC位址的機器,根據交換機的工作原理,網關發給192.168.1.11這IP的機器的資料将會被廣播。第二個是,此刻你(A)的正常與外界通信的能力将會喪失。可以權衡考慮一下。

<b>2.欺騙交換機緩存</b>

  用ARP欺騙輔助嗅探是一種比較舊的方式,現在的區域網路機器很多都裝了ARP防火牆!如果機器裝了ARP防火牆,上面的嗅探方式就沒用了:&lt;,那還有其他的方式嗎?嗯~有!那就是欺騙交換機緩存!

  cncert的一個很出名的會話劫持工具SSCLONE就是采用這種方法進行嗅探的,它的網站上也有專門的文章說明“欺騙交換機緩存”的嗅探方法(見參考資料)。我在這裡大概說一下原理吧。

  交換機裡面有一張CAM表,記錄了Mac-Port資訊(這個端口對應的機器的MAC位址是什麼),MAC資訊的擷取是:交換機從轉發的資料包中提取。所謂欺騙交換機緩存,就是修改這張CAM表以達到欺騙交換機的目的!比如現在有一個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

現在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對外發送一個資料包,如下:

  SrcIP:192.168.1.11  ScrMac:22-22-22-22-22-22

  DstIP:xxx.xxx.xxx.xxx(随便寫),DstMac:xx-xx-xx-xx-xx-xx(随便寫)

  此時,交換機收到這個包,發現在原來CAM裡面,port1對應的機器MAC位址是11-11-11-11-11-11,怎麼現在變為:22-22-22-22-22-22了呢??哦,應該是這台機器的MAC位址變了吧~好!那我更新CAM表!

  更新後的交換機CAM表如下:

  port1 -- 22-22-22-22-22-22

現在有port1和port2對應的MAC位址是一樣的。如果現在網關(假設現在port4連接配接的是網關)來了一個資料包是給機器B(IP是192.168.1.22,MAC位址為22-22-22-22-22-22),交換機會順序查詢此刻的CAM表來确定該資料包轉發去哪個端口!在查詢port1時,發現此端口對應MAC位址和資料包裡的MAC位址相同,交換機直接就把包轉發到port1的機器A了,由于該包已轉發完畢,交換機繼續處理下一個資料包......就這樣,資料包又再次落入充滿窺探欲望的人手中!

  這裡也需要注意幾個問題:

  1).A收到包後,還是需要轉發給B的,不然B和外面的對話就中斷了。

  2).當A把包轉發給B時,需要修複交換機的CAM表。

當你看完以上這兩點注意時,可能會發現利用這種的一些缺陷:

  1).A在轉發包給B時需要恢複CAM表,轉發後又要再次欺騙。如果在轉發包時,網關來了一個資料給B,此時的CAM表是正确的,交換機會把這個資料會直接發給B,A無法監聽到這個包,由于每次轉發都需要完成以上操作,導緻CAM表重新整理相當頻繁,最後的結果是,A監聽到的資料很不完整。

  2).你接的交換機的端口号決定着你的命運!

  如果B接的port1端口,A接的是port2端口,那麼,用這種方式,A将永遠也嗅探不到B的資訊,更悲觀的想一下,如果你連接配接的是這個交換機最後一個端口呢??!:&lt;

  3).跨交換機進行嗅探丢包非常多!

  看下圖:

現在交換機A連接配接交換機B的port1,機器C連接配接port2,如果沒有機器B的話,機器A還是能比較順利監聽機器到C的資訊的,但是有了機器B就不同了,交換機的CAM表裡port1這條記錄,會因為機器A和機器B的發包而經常改變。導緻的問題大家也可以想到了。

  現在,防止欺騙交換機緩存的方法隻有在交換機處綁定port-mac這對資訊,但由于這和交換機原先設計的理念有沖突,故這個是無法實作的,也就是說,沒有辦法防止:&lt;

  值得一說的是,現在無線網已經興起了,和集線器時代一樣,在無線網絡監聽别人的資訊是不費吹灰之力的事情,無線網的安全也值深思呀~

  有什麼想法大家踴躍發言呀~!:&gt;

<b>三.參考資料:</b>

1.http://www.cncert.net/TEC/network/2008-7-26/161.html

2.http://blog.csdn.net/zhihui13/archive/2008/10/10/3048272.aspx

本文轉自hyddd部落格園部落格,原文連結:http://www.cnblogs.com/hyddd/archive/2009/01/21/1379531.html,如需轉載請自行聯系原作者。

繼續閱讀