交换网络中的sniffer讨论-基于交换网络的ARP spoofing sniffer
轉自--http://blog.csdn.net/zhangnn5/article/details/6810347
在閱讀這篇文章之前,我假設你已經知道TCP/IP協議,ARP協議,知道什么是sniffer等基本網絡知識。
在一般的局域網里面,經常會有兩種接入方式,一種是HUB接入(這里的HUB是指普通HUB),一種是交換機直接接入(這里的交換機是比較高級的交換機,老式交換機不在此列)。采用HUB方式接入的網絡,數據傳送的時候,是采用廣播的方式發送,這個時候,只要一臺主機將自己的網卡設置成混雜模式(promiscuous mode),就可以嗅探到整個網絡的數據。 此篇文章不打算討論這種網絡環境的嗅探(sniffer)和反嗅探(anti sniffer)方法,主要是想就交換機方式直接接入的網絡環境如何sniffer以及如何anti sniffer做一個比較粗淺的分析。
我們知道,一臺計算機想要接入到網絡中,必須要有兩個地址。一個是網卡的地址,我們稱之為MAC地址,它是固化在網卡中的。在以太網中,我們通過MAC地址來進行數據傳送和數據交換。在以太網環境中,數據會分幀傳送,每一個數據幀都會包含自己的MAC和目的MAC地址信息; 另外一個地址是平時所說的IP地址,定義在網絡層,每一臺網絡計算機都會有一個或者多個IP地址,這是一個虛擬的數據,并且可以隨時更改。IP地址和MAC地址是同時使用的,在數據傳送過程中,一個完整的TCP/IP包需要由以太網進行數據封裝,數據分幀,最后再通過物理層傳輸到目標計算機。在以太網封裝上層的TCP/IP包的時候,它需要知道源MAC地址和目的MAC地址,但是我們只能給出一個對方的IP地址,這個時候就需要一個協議來支持IP到MAC的轉換,這就是ARP,Address Resolution Protocol.?在局域網中,ARP是通過廣播的方式來發送的,比如,我的機器IP是192.168.7.110(A),需要知道192.168.7.119(B)機器的MAC地址,那從A機器就會廣播一個ARP包,這個包里帶有B機器的IP,如果B機器收到了此ARP包,那么他就會同樣返回一個ARP包,里面帶有響應的MAC地址。A收到這個ARP包后,得到B的MAC地址,這個時候以太網就可以開始封裝TCP/IP包了,可以開始正常的數據傳送了。比如:
d:\>arp -a
view plain
可以清楚的看到,在未和192.168.7.119通訊之前,本機是沒有該IP對應MAC地址的,但一旦通訊后,我們就知道了對方的MAC地址,windows會將對方MAC地址存在自己的ARP cache里面。
為了節省網絡資源以及通訊時間,多數操作系統會保留一張ARP緩存表,里面記錄曾經訪問的IP和MAC地址影射記錄,一旦局域網中有一個新的ARP廣播,對應一個IP到MAC的記錄,這個ARP緩存表就會被刷新,MAC地址會更換成新的廣播包里定義的MAC地址,這個時候就存在一個問題,在更新的時候,系統并沒有去檢查是否真的是由該機器廣播出來的,局域網中的惡意用戶就會利用欺騙的方式來更改網絡途徑,將真正的MAC地址替換成自己的MAC地址,這種方法稱之為:ARP spoofing。
交換機在處理數據的時候,它會根據自己機器內部的一個MAC到端口的數據表來查詢符合要求的MAC地址數據包該發往哪個端口。這張表從交換機開機的時候就存在,在每個端口第一次數據傳送的時候就會記錄對應的端口的MAC地址. 通過發送我們偽造的MAC地址數據包到交換機,就可以欺騙交換機刷新自己的MAC地址到端口的數據表,假設A主機連接在2口,假設我在4口,要sniffer A主機的數據,那么我就需要偽造一個ARP數據包,告訴交換機A主機MAC地址是在4口,那么交換機就會將本來發送到A主機的數據會轉送到4口上,這個時候我就可以監聽到了A主機的數據傳送了,這個就是基于交換網絡的arp欺騙sniffer過程。
通過arp 欺騙,一般sniffer有幾個方法:
1. 就是上面介紹的欺騙MAC進行數據竊聽,但由于A收不到數據,這樣它會重新發布ARP包,這樣導致sniffer很容易暴露,而且效果不好,A會丟包,同樣你的sniffer 一樣不會抓到全部的數據。
2. 發起"中間人"竊聽。攻擊者可以在兩臺通訊主機之間插入一個中轉回路,這樣,攻擊者既可以sniffer到兩機的數據,同樣還可以不影響兩機的通訊。我們假設X是攻擊者的機器,A和B是目標機器。
X如果想發起攻擊,首先在向A主機發送一個ARP包,讓A認為B機器IP對應的MAC地址是X主機的,同時再向B機器發送一個ARP包,讓B機器認為A機器IP對應的MAC地址是X主機的,如下圖:
3. MAC flood攻擊
通過快速(比如超過1000線程) 發送大量偽造MAC地址數據包,會造成交換機的MAC-端口表塞滿,但為了正常數據不被丟棄,大多數交換機會采取類似HUB一樣方式:廣播的方式發送數據。這個時候,再在網絡中任何一臺機器設置網卡為混雜模式,就可以sniffer到任何想要監聽的數據了。
*注: 以上方法我并沒有正式測試過,理論上可行,實際上還有待驗證。
上面介紹了幾種常見的基于switch網絡的arp spoofing sniffer方法,那么對于一個管理員來說,如何防范這種方式的數據嗅探呢?
嚴格來說,沒有一種通用的方法來解決arp欺騙造成的問題,最大的可能就是采用靜態的ARP緩存表,由于靜態的ARP表不可以刷新,那么偽造的ARP包將會被直接丟棄。但這樣造成的問題就是,整個網絡中的所有機器,都必須要建立一個靜態的MAC表,在大型網絡中,會增加交換機的負擔,造成效率下降。如果機器更換,那么就要手工去更改MAC地址表,很顯然,在大型網絡中這種方式是不適用的。
在這里需要注意的是,windows下即使你建立了靜態的MAC到IP的影射表,但是在收到了強制更新的ARP包后,依然會刷新機器的影射表,一樣會被sniffer到。
高級交換機還提供了MAC綁定功能,指定交換機某個端口和某個MAC綁定,這種方法可以很有效的防止MAC克隆(clone)方式的竊聽,但是對于上述的arp 欺騙攻擊效果不大。
最可靠的方法就是采用第三方軟件來解決,Arpwatch是一個運行在Unix平臺下的免費工具,他可以檢測到網絡中所有MAC地址的變化,一旦網絡中的MAC地址有變化,它就會發送一封email到指定地點。
后記:這篇小文寫的很簡短,其實在交換網絡中還有其他幾種攻擊方法,比如MAC clone等,而且交換網絡中的sniffer方法還不止這一種,我這里只是介紹最常見,容易發生和編程實現的sniffer方法,希望對大家有所幫助。本人水平有限,如有錯誤,請不吝指責
轉載于:https://www.cnblogs.com/linyawen/archive/2011/10/26/2224828.html
總結
以上是生活随笔為你收集整理的交换网络中的sniffer讨论-基于交换网络的ARP spoofing sniffer的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网页编码格式
- 下一篇: mac编辑器coda使用小贴条