ARP詳解

1.ARP簡介
地址解析協議(Address Resolution Protocol),其基本功能爲透過目標設備的IP地址,查詢目標設備的MAC地址,以保證通信的順利進行。它是IPv4中網絡層必不可少的協議,不過在IPv6中已不再適用,並被鄰居發現協議(NDP)所替代。

2.ARP工作流程
假設主機A和B在同一個網段,主機A要向主機B發送信息,具體的地址解析過程如下:
(1) 主機A首先查看自己的ARP表,確定其中是否包含有主機B對應的ARP表項。如果找到了對應的MAC地址,則主機A直接利用ARP表中的MAC地址,對IP數據包進行幀封裝,並將數據包發送給主機B。

(2) 如果主機A在ARP表中找不到對應的MAC地址,則將緩存該數據報文,然後以廣播方式發送一個ARP請求報文。ARP請求報文中的發送端IP地址和發送端MAC地址爲主機A的IP地址和MAC地址,目標IP地址和目標MAC地址爲主機B的IP地址和全0的MAC地址。由於ARP請求報文以廣播方式發送,該網段上的所有主機都可以接收到該請求,但只有被請求的主機(即主機B)會對該請求進行處理。

(3) 主機B比較自己的IP地址和ARP請求報文中的目標IP地址,當兩者相同時進行如下處理:將ARP請求報文中的發送端(即主機A)的IP地址和MAC地址存入自己的ARP表中。之後以單播方式發送ARP響應報文給主機A,其中包含了自己的MAC地址。

(4) 主機A收到ARP響應報文後,將主機B的MAC地址加入到自己的ARP表中以用於後續報文的轉發,同時將IP數據包進行封裝後發送出去。

這裏寫圖片描述
3.ARP報文格式

這裏寫圖片描述

先要清楚,一般說以太網地址就是指MAC地址

  字段1是ARP請求的目的以太網地址,全1時代表廣播地址。

  字段2是發送ARP請求的以太網地址。

  字段3以太網幀類型表示的是後面的數據類型,ARP請求和ARP應答這個值爲0x0806。

  字段4表示硬件地址的類型,硬件地址不只以太網一種,是以太網類型時此值爲1。

  字段5表示要映射的協議地址的類型,要對IPv4地址進行映射,此值爲0x0800。

  字段6和7表示硬件地址長度和協議地址長度,MAC地址佔6字節,IP地址佔4字節。

  字段8是操作類型字段,值爲1,表示進行ARP請求;值爲2,表示進行ARP應答;值爲3,表示進行RARP請求;值爲4,表示進行RARP應答。

  字段9是發送端ARP請求或應答的硬件地址,這裏是以太網地址,和字段2相同。

  字段10是發送ARP請求或應答的IP地址。

  字段11和12是目的端的硬件地址和協議地址。

4.抓包分析
下面是抓取的ARP數據包,可以對照上面的說明進行理解。
圖中紅框圈起來的是一對ARP請求和ARP應答。

這裏寫圖片描述
4.1 ARP請求報文

這裏寫圖片描述
4.2ARP應答報文
ARP應答分組中,將ARP請求中的源和目的地址進行交換,此外,變化的還有字段8 Opcode。其餘字段內容不會發生變化。

這裏寫圖片描述
5.其他
5.1 ARP表
設備通過ARP解析到目的MAC地址後,將會在自己的ARP表中增加IP地址到MAC地址的映射表項,以用於後續到同一目的地報文的轉發。

這裏寫圖片描述
5.1.1 動態ARP表
動態ARP表項由ARP協議通過ARP報文自動生成和維護,可以被老化,可以被新的ARP報文更新,可以被靜態ARP表項覆蓋。當到達老化時間、接口down時會刪除相應的動態ARP表項。

5.1.2 靜態ARP表
靜態ARP表項通過手工配置和維護,不會被老化,不會被動態ARP表項覆蓋。
配置靜態ARP表項可以增加通信的安全性。靜態ARP表項可以限制和指定IP地址的設備通信時只使用指定的MAC地址,此時攻擊報文無法修改此表項的IP地址和MAC地址的映射關係,從而保護了本設備和指定設備間的正常通信。

5.2 免費ARP
免費ARP指主機發送ARP查找自己的IP地址,通常發生在系統引導期間進行接口配置時。與標準ARP的區別就是免費ARP分組的目的IP地址字段封裝的是自己的IP地址,即向所在網絡請求自己的MAC地址。
免費ARP的作用有:
  1) 一個主機可以通過它來確定另一個主機是否設置了相同的 IP地址。

   正常情況下發送免費ARP請求不會收到ARP應答,如果收到了一個ARP應答,則說明網絡中存在與本機相同的IP地址的主機,發生了地址衝突。

  2)更新其他主機高速緩存中舊的硬件地址信息。

   如果發送免費ARP的主機正好改變了硬件地址,如更換了接口卡。

   其他主機接收到這個ARP請求的時候,發現自己的ARP高速緩存表中存在對應的IP地址,但是MAC地址不匹配,那麼就需要利用接收的ARP請求來更新本地的ARP高速緩存表表項。

  3)網關利用免費ARP防止ARP攻擊

  有些網關設備在一定的時間間隔內向網絡主動發送免費ARP報文,讓網絡內的其他主機更新ARP表項中的網關MAC地址信息,以達到防止或緩解ARP攻擊的效果。

  4)利用免費ARP進行ARP攻擊

  ARP協議並不只在發送了ARP請求才接收ARP應答,計算機只要接收到ARP應答數據包,就會使用應答中的IP和MAC地址對本地的ARP緩存進行更新。

  主機可以構造虛假的免費ARP應答,將ARP的源MAC地址設爲錯誤的MAC地址,並把這個虛假的免費ARP應答發送到網絡中,那麼所有接收到這個免費ARP應答的主機都會更新本地ARP表項中相應IP地址對應的MAC地址。更新成功後,這些主機的數據報文就會被轉發到錯誤的MAC地址,從而實現了ARP欺騙的攻擊。

5.3 代理ARP
代理ARP就是通過使用一個主機(通常爲router),來作爲指定的設備使用自己的 MAC 地址來對另一設備的ARP請求作出應答。

爲什麼需要代理ARP?

  先要了解,路由器的重要功能之一就是把局域網的廣播包限制在該網內,阻止其擴散,否則會造成網絡風暴。

  ARP請求是個廣播包,它詢問的對象如果在同一個局域網內,就會收到應答。但是如果詢問的對象不在同一個局域網該如何處理?路由器就提供了代理ARP爲這個問題提供瞭解決方案。

工作過程

這裏寫圖片描述

  兩臺主機A和B處於同一網段但不同的廣播段(不在同一物理網絡上)時,主機A發送ARP請求主機B的MAC地址時,因爲路由器不轉發廣播包的原因,ARP請求只能到達路由器。如果路由器啓用了代理ARP功能,並知道主機B屬於它連接的網絡,那麼路由器就用自己接口的MAC地址代替主機B的MAC地址來對主機A進行ARP應答。主機A接收ARP應答,但並不知道代理ARP的存在。

代理ARP的優缺點

  優點:代理ARP能在不影響路由表的情況下添加一個新的Router,使子網對該主機變得透明化。一般代理ARP應該使用在主機沒有配置默認網關或沒有任何路由策略的網絡上。

  缺點:從工作工程可以看到,這其實是一種ARP欺騙。而且,通過兩個物理網絡之間的路由器的代理ARP功能其實互相隱藏了物理網絡,這導致無法對網絡拓撲進行網絡概括。此外,代理ARP增加了使用它的那段網絡的ARP流量,主機需要更大的ARP緩存空間,也不會爲不使用ARP進行地址解析的網絡工作。

5.4 ARP攻擊
ARP協議的基本功能就是通過目標設備的IP地址,查詢目標設備的MAC地址,以保證通信的進行。 基於ARP協議的這一工作特性,黑客向對方計算機不斷髮送有欺詐性質的ARP數據包,數據包內包含有與當前設備重複的Mac地址,使對方在迴應報文時,由於簡單的地址重複錯誤而導致不能進行正常的網絡通信。

一般情況下,受到ARP攻擊的計算機會出現兩種現象:
1)不斷彈出“本機的XXX段硬件地址與網絡中的XXX段地址衝突”的對話框。
2) 計算機不能正常上網,出現網絡中斷的症狀。

因爲這種攻擊是利用ARP請求報文進行“欺騙”的,所以防火牆會誤以爲是正常的請求數據包,不予攔截。因此普通的防火牆很難抵擋這種攻擊。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章