【文章內(nèi)容簡介】
不會把其他節(jié)點的數(shù)據(jù)轉(zhuǎn)發(fā)給嗅探主機,也就是說數(shù)據(jù)包根本不會發(fā)送給不是目的主機的端口進行驗證 MAC 地址是否匹配。在交換式局域網(wǎng)中,經(jīng)常發(fā)生各種事故,很多事故的發(fā)生大多是 ARP 攻擊造成的。比如網(wǎng)絡(luò)速度受到 P2P 終結(jié)者等的網(wǎng)管軟件 限制、網(wǎng)絡(luò)掉線、本機提示 IP 沖突、擔心 通訊數(shù)據(jù)受到監(jiān)控、各種 ARP 攻擊軟件之苦等這些問題是我們上網(wǎng)時經(jīng)常遇到的。由于各種 ARP 攻擊軟件的盛行,使我們遭受很多損 畢業(yè)論文(設(shè)計) 第 8 頁失,甚至造成嚴重后果。正常網(wǎng)絡(luò)通信的數(shù)據(jù)流向是從本機發(fā)送數(shù)據(jù)到遠程網(wǎng)關(guān)然后通過解包匹配目的端口的 MAC 地址從而確定從網(wǎng)關(guān)哪個端口轉(zhuǎn)發(fā)到出去。ARP 攻擊后,數(shù)據(jù)包的轉(zhuǎn)發(fā)途徑是從本機到遠程網(wǎng)關(guān),遠程網(wǎng)關(guān)的 MAC地址被欺騙,發(fā)送給偽裝的嗅探主機,嗅探主機分析后再轉(zhuǎn)發(fā)給目的主機,甚至不再轉(zhuǎn)發(fā)。所以 ARP 攻擊成為交換式局域網(wǎng)中最主要的嗅探攻擊方式,其次還有ARP 欺騙,端口鏡像等的攻擊方式,這些攻擊通常使用一些局域網(wǎng)攻擊軟件來實現(xiàn),常見的網(wǎng)絡(luò)嗅探工具有Sniff、Wireshark、TCPDump、Libcap (Winpcap)等。這些嗅探工具通過偽造ARP 數(shù)據(jù)包來欺騙交換機,向交換機持續(xù)不斷的發(fā)送 ARP 數(shù)據(jù)包,使交換機更新 ARP 緩存表來達到欺騙的目的。這樣發(fā)送到目的主機的數(shù)據(jù)包就被轉(zhuǎn)發(fā)到嗅探主機的端口,而目的主機不會接收到任何的數(shù)據(jù)包。通過圖 22 可以更加直觀的了解 ARP 欺騙的攻擊原理。攻擊者 C1 通過不斷的發(fā)送偽造的 ARP 響應(yīng),告訴主機 C2:主機 C3 的 IP 地址是 對應(yīng)的 MAC 地址是 aa: aa: aa: aa: aa: aa,主機 C2 不會去探究這個信息是否正確,會把這個對應(yīng)關(guān)系寫入自己的 ARP 緩存表中,之后在發(fā)送數(shù)據(jù)時,將本應(yīng)該發(fā)往主機 B 的數(shù)據(jù)發(fā)送給了攻擊者 C1。同樣的,攻擊者 C1 向主機 C3 也發(fā)送一個偽造的 ARP 響應(yīng),告訴主機 C3:主機 C2 的 IP 地址 對應(yīng)的MAC 地址是 aa: aa: aa: aa: aa: aa,主機 C3 也會更新自己的 MAC 地址表,同時也會將數(shù)據(jù)發(fā)送給攻擊者。在這個例子中,IP 地址是不會起作用的,因為 IP 地址只能確定網(wǎng)絡(luò)層的傳輸,對于鏈路層和物理層是沒有用處的。這時攻擊者 C1 就控制了主機 C2 和主機 C3 之間的流量,可以選擇被動的監(jiān)聽,以期獲得密碼和其他一些秘密信息,當然攻擊者也可以偽造雙方之間的通信數(shù)據(jù),當然這已經(jīng)不是僅僅嗅探那么簡單了,但無疑會造成更加嚴重的后果。 畢業(yè)論文(設(shè)計) 第 9 頁 圖 22 ARP 欺騙原理圖 畢業(yè)論文(設(shè)計) 第 10 頁3 嗅探協(xié)議和數(shù)據(jù)包的分析 概述通過對嗅探的全面剖析可知,嗅探技術(shù)的主要應(yīng)用在 TCP/IP 協(xié)議簇的數(shù)據(jù)鏈路層和網(wǎng)絡(luò)層。主要應(yīng)用的協(xié)議有地址解析協(xié)議 ARP 和逆向地址解析協(xié)議RARP。在數(shù)據(jù)傳輸?shù)倪^程中,先是二進制比特流在物理層進行傳輸,通過在數(shù)據(jù)鏈路層解封裝去掉幀頭和幀尾變成數(shù)據(jù)幀,經(jīng)過地址解析協(xié)議 ARP 的 IP 地址和 MAC 地址的轉(zhuǎn)換解析,物理地址 MAC 變?yōu)?IP 地址,在網(wǎng)絡(luò)層開始往上層傳輸。這就需要我們了解在物理設(shè)備鏈路中的傳輸過程。 嗅探交換機工作原理一個具有三層交換功能的設(shè)備,是一個帶有第三層路由功能的第二層交換機,但它是二者的有機結(jié)合,并不是簡單地把路由器設(shè)備的硬件及軟件疊加在局域網(wǎng)交換機上。其原理是:假設(shè)兩個使用 IP 協(xié)議的結(jié)點 A、B 通過第三層交換機進行通信,發(fā)送結(jié)點 A 在開始發(fā)送時,把自己的 IP 地址與結(jié)點 B 的 IP 地址比較,判斷結(jié)點 B 是否與自己在同一子網(wǎng)內(nèi)。若目的結(jié)點 B 與發(fā)送結(jié)點 A 在同一子網(wǎng)內(nèi),則進行二層的轉(zhuǎn)發(fā)。若兩個結(jié)點不在同一子網(wǎng)內(nèi),如發(fā)送結(jié)點 A 要與目的結(jié)點 B通信,發(fā)送結(jié)點 A 要向“缺省網(wǎng)關(guān)”發(fā)出 ARP 封包,而缺省網(wǎng)關(guān)的 IP 地址其實是三層交換機的三層交換模塊。當發(fā)送結(jié)點 A 對 “缺省網(wǎng)關(guān)”的 IP 地址廣播出一個 ARP 請求時,如果三層交換模塊在以前的通信過程中已經(jīng)知道結(jié)點 B的 MAC 地址,則向發(fā)送結(jié)點 A 回復(fù)結(jié)點 B 的 MAC 地址。否則三層交換模塊根據(jù)路由信息向結(jié)點 B 廣播一個 ARP 請求,結(jié)點 B 得到此 ARP 請求后向三層交換模塊回復(fù)其 MAC 地址,三層交換模塊保存此地址并回復(fù)給發(fā)送結(jié)點 A,同時將結(jié)點 B 的 MAC 地址發(fā)送到二層交換引擎的 MAC 地址表中。從這以后,當結(jié)點 A 向結(jié)點 B 發(fā)送的數(shù)據(jù)報便全部交給二層交換處理,信息得以高速交換。由于僅僅在路由過程中才需要三層處理,絕大部分數(shù)據(jù)都通過二層交換轉(zhuǎn)發(fā),因此三層交換機的速度很快,接近二層交換機的速度,同時比相同路由器的價 畢業(yè)論文(設(shè)計) 第 11 頁格低很多。以太網(wǎng)交換機(以下簡稱交換機)是工作在 OSI 參考模型數(shù)據(jù)鏈路層的設(shè)備,外表和集線器相似。它通過判斷數(shù)據(jù)幀的目的 MAC 地址,從而將幀從合適的端口發(fā)送出去。交換機的沖突域僅局限于交換機的一個端口上。比如,一個站點向網(wǎng)絡(luò)發(fā)送數(shù)據(jù),集線器將會向所有端口轉(zhuǎn)發(fā),而交換機將通過對幀的識別,只將幀單點轉(zhuǎn)發(fā)到目的地址對應(yīng)的端口,而不是向所有端口轉(zhuǎn)發(fā),從而有效地提高了網(wǎng)絡(luò)的可利用帶寬 [6]。以太網(wǎng)交換機實現(xiàn)數(shù)據(jù)幀的單點轉(zhuǎn)發(fā)是通過 MAC 地址的學習和維護更新機制來實現(xiàn)的。以太網(wǎng)交換機的主要功能包括MAC 地址學習、幀的轉(zhuǎn)發(fā)及過濾和避免回路。以太網(wǎng)交換機可以有多個端口,每個端口可以單獨與一個結(jié)點連接,也可以與一個共享介質(zhì)式的以太網(wǎng)集線器(HUB)連接。如果一個端口只連接一個結(jié)點,那么這個結(jié)點就可以獨占整個帶寬,這類端口通常被稱作專用端口;如果一個端口連接一個與端口帶寬相同的以太網(wǎng),那么這個端口將被以太網(wǎng)中的所有結(jié)點所共享,這類端口被稱為共享端口。例如一個帶寬為 100Mbps 的交換機有 10 個端口,每個端口的帶寬為 100Mbps。而 HUB 的所有端口共享帶寬,同樣一個帶寬 100Mbps 的 HUB,如果有 10 個端口,則每個端口的平均帶寬為10Mbps,如圖 31 所示。圖 31 交換機數(shù)據(jù)轉(zhuǎn)發(fā)原理圖 畢業(yè)論文(設(shè)計) 第 12 頁交換機的 MAC 地址表中,一條表項主要由一個主機 MAC 地址和該地址所位于的交換機端口號組成。整張地址表的生成采用動態(tài)自學習的方法,即當交換機收到一個數(shù)據(jù)幀以后,將數(shù)據(jù)幀的源地址和輸入端口記錄在 MAC 地址表中。思科的交換機中,MAC 地址表放置在內(nèi)容可尋址存儲器(ContentAddress able Memory,CAM )中,因此也被稱為 CAM 表。當然,在存放 MAC 地址表項之前,交換機首先應(yīng)該查找 MAC 地址表中是否已經(jīng)存在該源地址的匹配表項,僅當匹配表項不存在時才能存儲該表項。每一條地址表項都有一個時間標記,用來指示該表項存儲的時間周期。地址表項每次被使用或者被查找時,表項的時間標記就會被更新。如果在一定的時間范圍內(nèi)地址表項仍然沒有被引用,它就會從地址表中被移走。因此,MAC 地址表中所維護的一直是最有效和最精確的 MAC 地址/端口信息。交換機的 MAC 地址表也可以手工靜態(tài)配置,靜態(tài)配置的記錄不會被老化。由于 MAC 地址表中對于同一個 MAC 地址只能有一個記錄,所以如果靜態(tài)配置某個目的地址和端口號的映射關(guān)系以后,交換機就不能再動態(tài)學習這個主機的MAC 地址。以圖 32 所示為例,來說明交換機的地址學習過程圖 32 交換機地址學習圖(1)最初交換機 MAC 地址表為空。(2)如果有數(shù)據(jù)需要轉(zhuǎn)發(fā),如主機PC1 發(fā)送數(shù)據(jù)幀給主機 PC3,此時,在 MAC 地址表中沒有記錄,交換機將向除向 E0/1 以外的其它所有端口轉(zhuǎn)發(fā),在轉(zhuǎn)發(fā)數(shù)據(jù)幀之前,它首先檢查這個幀的 畢業(yè)論文(設(shè)計) 第 13 頁源 MAC 地址 M1,并記錄與之對應(yīng)的端口 E0/1,于是交換機生成(M1,E0/1)這樣一條記錄,并加入到 MAC 地址表內(nèi)。交換機是通過識別數(shù)據(jù)幀的源 MAC 地址學習到 AMC 地址和端口的對應(yīng)關(guān)系的。當?shù)玫?MAC 地址與端口的對應(yīng)關(guān)系后,交換機將檢查 MAC 地址表中是否已經(jīng)存在該對應(yīng)關(guān)系。如果不存在,交換機就將該對應(yīng)關(guān)系添加到 MAC 地址表;如果已經(jīng)存在,交換機將更新該表項。(3)循環(huán)上一步,MAC 地址表不斷加入新的 MAC 地址與端口對應(yīng)信息。直到 MAC 地址表記錄完成為止。此時,如主機 PC1 再次發(fā)送數(shù)據(jù)幀給主機 PC3 時,由于 MAC 地址表中已經(jīng)記錄了該幀的目的地址的對應(yīng)交換機端口號,則直接將數(shù)據(jù)轉(zhuǎn)發(fā)到 E0/3 端口,不再向其他端口轉(zhuǎn)發(fā)數(shù)據(jù)幀。 嗅探交換機的數(shù)據(jù)轉(zhuǎn)發(fā)方式和幀過濾以太網(wǎng)交換機的數(shù)據(jù)交換與轉(zhuǎn)發(fā)方式可以分為直接交換、存儲轉(zhuǎn)發(fā)交換和改進的直接交換 3 類。(1)直接交換在直接交換方式下,交換機邊接收邊檢測。一旦檢測到目的地址字段,便將數(shù)據(jù)幀傳送到相應(yīng)的端口上,而不管這一數(shù)據(jù)是否出錯,出錯檢測任務(wù)由結(jié)點主機完成。這種交換方式交換延遲時間短,但缺乏差錯檢測能力,不支持不同輸入/輸出速率的端口之間的數(shù)據(jù)轉(zhuǎn)發(fā)。(2)存儲轉(zhuǎn)發(fā)交換在存儲轉(zhuǎn)發(fā)方式中,交換機首先要完整地接收站點發(fā)送的數(shù)據(jù),并對數(shù)據(jù)進行差錯檢測。如接收數(shù)據(jù)是正確的,再根據(jù)目的地址確定輸出端口號,將數(shù)據(jù)轉(zhuǎn)發(fā)出去。這種交換方式具有差錯檢測能力并能支持不同輸入/輸出速率端口之間的數(shù)據(jù)轉(zhuǎn)發(fā),但交換延遲時間較長 [7]。(3)改進的直接交換改進的直接交換方式是將直接交換與存儲轉(zhuǎn)發(fā)交換結(jié)合起來,在接收到數(shù)據(jù)的前 64 字節(jié)之后,判斷數(shù)據(jù)的頭部字段是否正確,如果正確則轉(zhuǎn)發(fā)出去。這種方式對于短數(shù)據(jù)來說,交換延遲與直接交換方式比較接近;而對于長數(shù)據(jù)來 畢業(yè)論文(設(shè)計) 第 14 頁說,由于它只對數(shù)據(jù)前部的主要字段進行差錯檢測,交換延遲將會減少。交換機建立起 MAC 地址表后,它就可以對通過的信息進行過濾了。以太網(wǎng)交換機在地址學習的同時還檢查每個幀,并基于幀中的目的地址做出是否轉(zhuǎn)發(fā)或轉(zhuǎn)發(fā)到何處的決定。如圖 33 所示為兩個以太網(wǎng)和三臺計算機通過以太網(wǎng)交換機相互連接的示意圖。通過一段時間的地址學習,交換機形成了圖 33 所示的 MAC 地址表。圖 33 交換機的幀過濾假設(shè)主機 A 需要向主機 G 發(fā)送數(shù)據(jù),因為主機 A 通過集線器連接到交換機的端口 1,所以,交換機從端口 1 讀入數(shù)據(jù),并通過 MAC 地址表決定將該數(shù)據(jù)幀轉(zhuǎn)發(fā)到哪個端口。在圖 33 中,主機 G 通過集線器連接到交換機的端口5,于是,交換機將該數(shù)據(jù)幀轉(zhuǎn)發(fā)到端口 5,不再向端口 端口 端口 3 和端口 4 轉(zhuǎn)發(fā)。 畢業(yè)論文(設(shè)計) 第 15 頁假設(shè)主機 A 需要向主機 B 發(fā)送數(shù)據(jù)幀,交換機同樣在端口 1 接收該數(shù)據(jù)。通過搜索地址映射表,交換機發(fā)現(xiàn)主機 B 與端口 1 相連,與發(fā)送的源主機處于同一端口。這時交換機不再轉(zhuǎn)發(fā),簡單地將數(shù)據(jù)丟棄,數(shù)據(jù)幀被限制在本地流動。這是交換機和集線器截然不同的地方。 嗅探數(shù)據(jù)包的轉(zhuǎn)發(fā)過程關(guān)于嗅探與 ARP 欺騙的原理,需要深刻的了解數(shù)據(jù)在網(wǎng)絡(luò)中的轉(zhuǎn)發(fā)過程。在不同網(wǎng)絡(luò)環(huán)境中,數(shù)據(jù)的傳輸過程有著不同的傳輸過程。這里簡單的分析在交換式和共享式局域網(wǎng)環(huán)境中的傳輸過程,對數(shù)據(jù)在傳輸過程中發(fā)生的變化,嗅探在其中扮演的角色,對于數(shù)據(jù)包的傳輸影響。因為嗅探包含主動嗅探和被動嗅探,而 ARP 欺騙又是一個單獨的技術(shù),欺騙的目的只是讓數(shù)據(jù)經(jīng)過本機,即:主動嗅探=ARP 欺騙 +抓包。其實真正在傳輸過程中是靠計算機的網(wǎng)卡地址即 MAC 機 A (IP : MAC : AAAAAAAAAAAA)、B (IP : MAC : BBBBBBBBBBBB)?,F(xiàn)在用 A 去 ping B:看見 Reply from : bytes=32 time10ms TTL=32 這樣的信息。然后在命令行中輸入 ARP a,會看見 BBBBBBBBBBBB dynamic 這樣的信息。這就是 ARP 高速緩存中 IP 地址和 MAC 地址的一個映射關(guān)系,在以太網(wǎng)中,數(shù)據(jù)傳遞靠的是 MAC,而并不是 IP 地址。其實在這背后就隱藏著 ARP 的秘密。但是網(wǎng)絡(luò)上這么多計算機,A 是怎么找到 B 的?那么下面就讓我們就來分析一下細節(jié)。首先 A 并不知道 B 在哪里,那么 A 首先就會發(fā)一個廣播的 ARP 請求,即目的 MAC 為 FFFFFF FFFFFF,目的 IP 為 B 的 ,再帶上自己的源 IP 和源 MAC。那么這個網(wǎng)段上的所有計算機都會接收到來自 A 的 ARP 請求,由于每臺計算機都有自己唯一的 MAC 和 IP,那么它會分析目的 IP 即 是不是自己的 IP?如果不是,網(wǎng)卡會自動丟棄數(shù)據(jù)包。如果 B 接收到了,