ARP協定攻擊與欺騙分析-交換機工作原理
一:交換機的工作原理
(一):實驗拓撲
<a href="http://s3.51cto.com/wyfs02/M01/6D/41/wKioL1VfVFTxwLJEAAEWLUyFHiI257.jpg" target="_blank"></a>
1:主機A與主機B通信
交換機的工作原理
(1):主機A将一個帶有主機A的的ip位址和MAC位址的資料進行封裝成幀,向區域網路中發送廣播。
(2):交換機1的接口G0/0/1接收到主機A發送來的資料幀,會立即将資料幀的源MA地
址和接收資料幀的接口G0/0/1記錄在它的MAC位址表中。此時的源MAC位址是主機A。
(3):交換機這個時候檢視自己MAC位址表,看看自己的MAC位址表中是否記錄了資料幀的目标MAC位址和預設的接口。如果自己的MAC位址表中有,則按照記錄的預設接口轉發出去,這個時候發送的是一條單點傳播,因為此時發送的路線是一條明确的路線;如果自己的MAC位址表中沒有目标MAC位址,那麼就會将資料幀在除了接收資料幀的接口的其它接口處轉發出去,由于此時資料幀發送的路線是一條不明确的路徑,是以這個時候發送的是一條廣播。從上圖中我們可以看到,資料幀是從g0/0/2接口轉發出去的,但是這個時候的MAC位址表是不記存資料幀的源MAC位址的,因為這個接口不是接收口。
(4):這個時候網絡中的所有主機都會接收到交換機轉發出來的資料幀,當将資料幀身上的幀脫掉後,看到了資料包的尋找的主機不是自己的,就會立即把資料包丢棄,而看到資料包上尋找的主機是自己時,就會把自己的ip位址和MAC位址寫在資料包中,然後将資料包封裝成幀,再進行回包。值得一提的是這裡的過程很ARP請求封包的過程是一樣的。此時資料幀上的源MAC位址是主機B,目标MAC位址是主句A。
(5):資料幀從主機B的接口轉發出去後來到了交換機的g0/0/2接口,此時交換機會立刻将資料幀的源MAC位址和ip位址記存在交換機的MAC位址表中。此時的源MAC位址是主機B。
(6):交換機看到了資料幀上的目标MAC位址是主機A,在檢視自己的MAC緩存表中時,看到了它,并且知道了它的預設接口是g0/0/1,這時,交換機會将資料幀按照預設接口轉發出去。
(7):主機A在收到了主機B的回複後,脫掉資料幀身上幀,檢視資料包,看到了資料包上的源MAC位址是主機A,就會立刻将源MAC位址記錄到自己的位址表中。
(8):這個時候主機A與主機B通信時就不用發送廣播了,直接發送單點傳播。
2:主機A與主機C通信
(1):主機A将一個帶有主機A的的ip位址和MAC位址的資料進行封裝成幀,向區域網路中發送廣播。
(2):交換機1的接口的g0/0/1收到資料幀後,将資料幀身上的源MAC位址記錄到疾患及的MAC位址表中。交換機1檢視自己MAC位址表,沒有發現它的目标MAC位址,就會在g0/02接口處和g0/0/4接口處将資料幀轉發出去。
(3):主機B接收到交換機1發來的資料幀後,脫掉資料幀身上的幀,看到資料包上的尋找的目标不是自己,就會立即将資料包丢掉,不進行回複。
(4):在交換機2的接口處接收到了交換機1發送來的資料幀後,也立即将資料幀身上的源MAC位址記存在交換機身上的MAC位址表中。
(5):交換機2在檢視資料幀後,了解了它的目标,然後交換機2檢視自己的MAC位址表尋找他它目标,沒有找到目标,交換機将資料幀直接從出來接收資料幀的其它接口處轉發出去。
(6):主句C收到資料幀後,将資料幀身上的幀脫掉,檢視資料包,看到它尋找的是自己,就會将自己的MAC位址寫進資料包中,此時的資料包上的源MAC位址是主句C,目标MAC位址主機A。然後将資料包進行封裝成幀,從接收的接口處轉發出去。
(7):交換機2的g/0/0/3接口接收到了資料幀,就會将資料幀上的源MAC位址記存在MAC位址表上。
(8):交換機2在打開資料幀的時候,看到了資料幀的目标MAC位址,交換機2檢視自己的MAC位址表,發現有它的目标MAC位址,然後交換機2就會按照MAC位址表中的預設接口轉發出去,即g0/0/4接口。
(9):交換機1的g0/0/4接口接收到資料幀,看到了資料幀身上的源MAC位址和目标MAC位址,就立刻将它們記存在交換機的MAC位址表中。
(10):交換機1也檢視自己的MAC位址表,找到了資料幀的目标MAC位址,将資料幀按照MAC位址表的預設接口轉發出去。注:這個時候就不會在接口g0/0/2處轉發了,而是以單點傳播的形式直接發送給目标主機。
(11):主機A接收到資料幀後,叫資料幀身上的幀脫掉,檢視資料包,發現了源MAC位址,就将它記錄在自己的MAC位址表中。
(12):這個時候主機A與主機C再通信就不會再使用廣播了,直接發送單點傳播就OK了。
------------------------------------------------------------------------------------------------------------------------------
二:ARP協定的基礎知識
1:ARP協定概念:
位址解析協定,具有三層的協定。
2:ARP協定功能:
通過ip位址獲得目标主機的MAC位址。
3:ARP協定的工作原理:
主機A向主機B發送一個資料,這個資料中包含了發送者的ip位址和MAC位址。在資料發送之前,主機A會檢視自己的ARP快取記錄,尋找目标ip位址,如果找到了目标ip位址,也就知道了目标MAC位址,是以這個時候(即資料鍊路層)就會将資料進行封裝成幀(即資料幀),直接發送給目标就OK了。那麼如果在ARP快取記錄中沒有找到目标ip位址,這個時候還是會将資料進行封裝成幀,在網絡中發送一個廣播---ARP請求封包,在這個封包中的二層中寫了“MAC address ff ff ff ff ff ff ”這裡的意思就是指:請求尋找主句B的MAC位址。在同一個網段中的所有裝置都收到了主句A發送來的請求封包,在将封包的幀脫掉露出資料包時發現了它尋找的目标不是自己的,就會直接将資料包丢掉,不予理會;而在發現它尋找的目标就是自己時,就會将發送者的ip位址,MAC位址記存在自己的ARP快取記錄中,然後就進行回包。那麼在回包之前,主機B會将自己的ip位址和MAC位址寫進資料包中,(這個時候主機B就成為發送者了,那麼資料包的源ip位址和源MAC位址就是指主機B的,目标ip位址和目标MAC位址就是指主機A了。)然後再将資料包進行封裝成資料幀。進行回包。這個時候主機A收到了主機B發送來的資料幀時,脫掉資料幀,打開資料包,就會看到自己要尋找的ip位址和MAC位址了,然後就會将這資訊記存在自己ARP
緩存表中。
4:ARP協定的欺騙
由于ARP快取記錄會老化,時間長了會對資料進行遺忘。那麼攻擊者就會利用這一點進行欺騙。通常欺騙有兩種----1:截獲網絡資料,進行修改。2:僞造網關
-------------------------------------------------------------------------------------------------------------------------------
三:ARP協定的實驗驗證
<a href="http://s3.51cto.com/wyfs02/M02/6D/41/wKioL1VfVGPDjxeOAAHa5stS_yk995.jpg" target="_blank"></a>
(1):同一個網段下測驗:
1:緩存表形式驗證
主機1與主機4
<a href="http://s3.51cto.com/wyfs02/M01/6D/45/wKiom1VfUvGRsLeqAAH2puFbKRY739.jpg" target="_blank"></a>
<a href="http://s3.51cto.com/wyfs02/M02/6D/41/wKioL1VfVHuQnjMPAAIkyVB2EQ8246.jpg" target="_blank"></a>
我們看到主機1和主機4的MAC位址。
先看主機1的緩存表
<a href="http://s3.51cto.com/wyfs02/M02/6D/45/wKiom1VfUv6iIGAXAACz8lBG0XQ330.jpg" target="_blank"></a>
圖上可以看到.主機1的ARP快取記錄空空如也,并沒有任何緩存表,這就說明資料幀在發送之前或者發送出去後沒有回包的情況下,主機的緩存表中是不會出現的。
試試主機1與主機4 ping通之後的情況。
<a href="http://s3.51cto.com/wyfs02/M00/6D/45/wKiom1VfUwfjvZ_YAAJsRQ4l0sA280.jpg" target="_blank"></a>
這個時候主機1與主機4之間已經能夠通信了,說明主機1尋找主機4得到了主機4的回複了。
現在來看看主機1的ARP快取記錄
<a href="http://s3.51cto.com/wyfs02/M01/6D/41/wKioL1VfVJqiNRGCAAFGxv2Cmak571.jpg" target="_blank"></a>
這個時候我們看到了主機的ARP快取記錄中已經有了一個MAC位址,和我們尋找的目标ip位址。MAC位址是主機4的。這就說明主機在接收到回包後,會将資料包上的源MAC位址記存在自己的APR緩存表中。
2:在以抓包的形式驗證
在主機1的資料幀轉發出口處找去封包,由于我們要抓的是ARP封包,是以我們再過濾器中過濾下。
<a href="http://s3.51cto.com/wyfs02/M01/6D/45/wKiom1VfUxnSElw5AALAuQzDZGU676.jpg" target="_blank"></a>
上圖中說明我們已經到了兩個封包,第一個是廣播封包,第二個是單點傳播封包。
檢視廣播封包進行分析
為什麼請求封包是廣播,而不是單點傳播呢?
我們用廣播封包的分析進行回答。
<a href="http://s3.51cto.com/wyfs02/M02/6D/41/wKioL1VfVLCRg45SAAURR0LDQT0588.jpg" target="_blank"></a>
我們從上圖中可以看到請求封包不論是2層,還是三層中都是以廣播的形式的的,因為在2層裝置交換機中是不知道目标的MAC位址的,三層裝置路由器中也是不知道目标的MAC位址的。是以要用廣播的的形式進行區域網路内大範圍的尋找,直到目标的回應。
那麼我們來看單點傳播形式的回複封包
回複封包為什麼是以單點傳播的形式發送,而不是以廣播的形式呢?
我們用下面的單點傳播封包的分析來回答。
<a href="http://s3.51cto.com/wyfs02/M02/6D/45/wKiom1VfUzbz72FFAAU3QxZKADM022.jpg" target="_blank"></a>
上圖中我們可以清楚的看到不論在2層還是3層中都可以看到源MAC位址和目标MAC的位址。因為資料包來的時候以廣播的形式找到主機4的,那麼也就是說資料包已經知道的回包路徑,是以就不要進行廣播尋求目标主機了,而是以單點傳播形式回複。
這個時候,主機1已經學到主機4的MAC位址了,在以後中主機1要與主機4通信的話就是以單點傳播的形式進行了。
注:主機1與主機2通信,抓取到兩個封包之後,再次讓主機1與主機2通信的話,抓取到的封包依然是先前的兩個封包。因為後面的通信單點傳播封包是不會再出現的。如果再次抓取到了兩個封包,那就說明先前的ARP快取記錄中MAC位址已經不存在了,隻要時間一長,ARP快取記錄就會過期或者将裡面的内容遺忘。
這個時候主句1與主機4通信的時候就是以單點傳播的形式發送資料包了。因為現在再去主機1處抓取封包是抓不到封包的,隻會出現先前的兩個封包,那麼我們再路由器的下接口g0/0/0處抓取封包試試看。
在路由器下接口抓取封包分析
<a href="http://s3.51cto.com/wyfs02/M00/6D/41/wKioL1VfVM3Rpdu5AAJIeDQw6m8290.jpg" target="_blank"></a>
上圖中可以看到我們隻抓取到了一個廣播封包,
<a href="http://s3.51cto.com/wyfs02/M00/6D/45/wKiom1VfU0-Tw_C1AAUCejI2y6g572.jpg" target="_blank"></a>
從上圖中我們可以看出廣播ARP請求封包2層3層中都不知道目标主機4的MAC位址的。沒有回複封包,也就是說廣播在路由器這裡是被阻擋在外了。
那麼我們要問了這裡為什麼隻是一個封包,為什麼是廣播封包?
因為主機第一次發送資料幀的時候是以廣播的形式的,資料幀在通過這裡卻被擋住了。路由器是具有“大悲掌”功能的,具有隔離廣播的功能,ARP封包隻會在以太網中通過,不能再網絡中通過,那麼也就是說即使路由器另一邊有目标主機4,資料幀也是不會到達目标主機4的,是以就不會有回複封包了,就隻會有一個封包,且是一個得不到回複的廣播封包。
注:當路由器的另一個接口下的區域網路中有目标主機,且這個目标主機與路由器的另一個接口是同一段的直連,這個時候廣播就可以通過路由器了,路由器在這個時候是不會隔離廣播的。
(二):在不同網段下測驗
1:緩存表式驗證
<a href="http://s3.51cto.com/wyfs02/M01/6D/41/wKioL1VfVObz-3D-AAIw_cqR-NE441.jpg" target="_blank"></a>
看到了主機2的MAC位址
<a href="http://s3.51cto.com/wyfs02/M01/6D/45/wKiom1VfU2ijxgmGAAP6U6p6lLg675.jpg" target="_blank"></a>
從上圖中,主機1與主機2在沒有通信之前是主機1的ARP快取記錄中是沒有任何MAC位址的,而在通信之後,再看ARP快取記錄的時候,看到了MAC位址,與主句2的MAC位址一樣。這就說明主機2對主機1發來的資料幀進行了回複,且主機1收到回複封包,并且将它(主機2)的MAC位址記存在自己的ARP快取記錄中了。
由ARP快取記錄分析我們可以得出“不在同一網段的主機想要通信必須經過網關”
2:抓取封包分析
因為通信的裝置是不同網段的,是以在主機接口處抓包是抓不到的,隻能在路由器下的接口抓取封包的。
在路由器g0/0/0接口下抓取封包
<a href="http://s3.51cto.com/wyfs02/M02/6D/41/wKioL1VfVQGwUXteAAJCZlyBbpE282.jpg" target="_blank"></a>
抓取到了兩個封包,一個廣播封包,一個單點傳播單點傳播封包。
先進行廣播分析
<a href="http://s3.51cto.com/wyfs02/M02/6D/45/wKiom1VfU4HAOnTqAATyWUPFsls951.jpg" target="_blank"></a>
上圖中可以看到廣播是一個請求封包,無論是2層中的MAC位址還是三層中的MAC位址都是全f,說明了主機1與主機2的通信是第一次,且主機1是不知道主機2的MAC位址的,是以就用廣播的形式來尋找目标主機2.
在三層的資訊中我們看到了目标ip位址是192.168.10.1,而不是像---“同一網段下測驗”---中的那樣,目标ip位址中顯現目标主機2的ip位址,這是為什麼呢?
‘
因為這是不同網段下的通信,路由器下的接口是主機裝置的網關。一個ARP封包隻能在同一個網段下發送,由于路由器将主機1與主機2的網段隔離,是以這時候主機1發送的廣播請求封包的目标位址是路由器下接口的ip,也就是ARP封包發送者的網關。
注:
(1):先是主機1到路由器下的g0/0/0接口的是一個目标ip位址是192.168.10.1的ARP請求廣播,
(2):然後資料幀有g0/0/0接口轉到g0/0/2接口,APR請求封包是不能網絡中通過的,但能在以太網中通過,。主機會主動請求網關的mac位址,由網關把資料中轉出去。當路由器把資料轉給對方的過程中會把mac位址替換掉。資料到g0/0/0時會把mac脫掉,然後從g0/0/2出口出來資料又重新封裝了mac,這個時候資料幀上寫的是g0/0/2的MAC位址,也就是
g0/0/2的MAC位址成為資料幀的源MAC位址了。
(3):最後是從g0/0/2接口道主機2的一條封包,這時的資料幀上的源MAC位址是192.168.20.1,目标ip位址是192.168.20.30了
-----------------------------------------------------------------------------------------------------------------------------
ARP封包在g0/0/2到目标主句2時的廣播封包是由g0/0/2接口的網關發送的,是以我們再目标主機接口處抓取封包的時候,尋找的不在是ARP封包了,而是icmp協定的封包。
主機1與目标主機2通信
檢視g0/0/2接口的MAC位址
<a href="http://s3.51cto.com/wyfs02/M00/6D/41/wKioL1VfVR3SxI-iAAI9KWJ9yTY351.jpg" target="_blank"></a>
上圖中我們已經看到了目标主機2的MAC位址已經記存在ARP快取記錄中了,是以我們可以得出主機1與目标主機2得到成功通信。
在圖上我們看到了不僅僅是g0/0/2接口的MAC位址,而且還有主機1,主機2和路由器上的各個網關的MAC的位址,但是我們卻沒有發現主機3的MAC位址,這是為什麼呢?
因為主機1與主機2的通信,主機2進行了資料幀的回包,是以路由器上記存了主機1和主機2的MAC位址。網關10.1 20.1 30.1 都在路由器上,是以路由器的ARP快取記錄中本身就有它們的MAC位址。那麼就是說想要主機3的網關,就要進行主機與主機3的通信,讓路由器的緩存表記存主句3的MAC位址。
實驗驗證
<a href="http://s3.51cto.com/wyfs02/M00/6D/45/wKiom1VfU5_C8yRxAAJjKQVzAAY893.jpg" target="_blank"></a>
主機1與主機3通信
<a href="http://s3.51cto.com/wyfs02/M01/6D/41/wKioL1VfVTKxM0O-AAJ05DbTGoU734.jpg" target="_blank"></a>
這個時候我們看到路由器的緩存表中已經有主機3的MAC位址。實驗驗證正确。
讓主機1與目标主機2通信,抓取封包
<a href="http://s3.51cto.com/wyfs02/M01/6D/45/wKiom1VfU7nhL7RsAAZuCmJFv1M198.jpg" target="_blank"></a>
上圖,我們抓取到了5條請求封包和5條回複封包。
檢視請求封包
<a href="http://s3.51cto.com/wyfs02/M02/6D/41/wKioL1VfVVXDwIV6AAS2t1GK6FM793.jpg" target="_blank"></a>
在資料鍊路層上我們看到了發送者的網關是g0/0/2的MAC位址和目标主機3的MAC位址。
是以我們很容易的就明白這個封包是在那一段上的。
但是網絡層中看到的發送者和資料鍊路層中的發送者為什麼不一樣?
因為在資料鍊路層中顯示的是現在封包的真實發送者和目标主機,但是網絡層中顯示的是資料鍊路層的封包是由網絡層的位址延生過來的,實際的發送者是192.168.10.10目标位址是192.168.20.20。
分析回複封包
<a href="http://s3.51cto.com/wyfs02/M02/6D/45/wKiom1VfU9jiAI02AAUXDGCyMwA205.jpg" target="_blank"></a>
由抓取封包分析我們可以得出“不在同一網段的主機想要通信必須經過網關”
通過上面的ARP快取記錄驗證和封包分析驗證都得到了同一個結論“不在同一網段的主機想要通信必須經過網關”。
四:ARP攻擊與欺騙
1、ARP攻擊的原理
一:攻擊主機制造假的arp應答,并發送給區域網路中除被攻擊的主機之外的所有主機,arp應答中包含被攻擊主機的ip位址和虛假的mac位址。
實驗拓撲
<a href="http://s3.51cto.com/wyfs02/M00/6D/41/wKioL1VfVWzzRpTOAAEQnqVztbQ520.jpg" target="_blank"></a>
過程:
1:主機2想要上internet,就要經過交換機和路由器
2:攻擊主機1對路由網關不斷的發送虛假ARP應答,路由器會不斷更新自己的ARP快取記錄。
3:這個時候網關想要對被攻擊主機2通信,但是緩存表中已沒有被攻擊主機的MAC位址,隻有虛假的MAC位址,而路由器又認為這是主機2的MAC位址,是以就發送資料給虛假MAC位址
4:攻擊主機截獲流量,檢視它的機密檔案
二:攻擊主機制造的arp應答,并發送給被攻擊主機,arp應答中包含除被攻擊主機之外的所有主機的ip位址和虛假的mac位址
<a href="http://s3.51cto.com/wyfs02/M00/6D/45/wKiom1VfU-vhbgmvAAEih2bQANc715.jpg" target="_blank"></a>
過程
1:主機發送虛假ARP給被攻擊主機,告訴它我是網關
2:被攻擊主機認為這是網關的MAC位址,就會回複它
3:攻擊主機就會很容易的得到被攻擊主機的秘密
看圖檔中案例。
2、ARP欺騙的原理
一般情況下,ARP欺騙并不是使網絡無法正常通信,而是通過冒充網關或其他主機使到達網關或主機的流量通過攻擊主機進行轉發。通過轉發流量可以對流量進行控制和檢視,進而控制流量或得到機密資訊。
ARP欺騙發送ARP應答給區域網路中其他主機,其中包含網關的ip位址和進行arp欺騙、額主機mac位址;并且也發送arp應答給網關,其中包含區域網路中所有主機的ip位址和進行arp欺騙的主機mac位址(有的軟體不發送arp應答欺騙網關)。當區域網路中主機和網關收到arp應答更新arp表後,主機和網關之間的流量就需要通過攻擊主機進行轉發以、是ARP欺騙網關和ARP欺騙主機
本文轉自 于學康 51CTO部落格,原文連結:http://blog.51cto.com/blxueyuan/1654642,如需轉載請自行聯系原作者