地址解析協議(Address Resolution Protocol,ARP)是在僅知道主機的IP地址時確定其物理地址的一種協議。
下面假設在一個局域網內,主機A要向主機B發送IP數據報。
ARP協議工作過程
- A先在其ARP高速緩存中查看有無B的IP地址。如有,就在ARP高速緩存中查出其對應的硬件地址,再把這個硬件地址寫入MAC幀,然后通過局域網把該MAC幀發往此硬件地址。如果查不到B的IP的項目,則進入第(2)步。
- A的ARP進程在本局域網上廣播發送一個ARP請求分組,主要內容是A自己的IP地址、MAC地址,詢問的IP地址(也就是B的IP地址)。
- 在本局域網上的所有主機運行的ARP進程都收到此ARP請求分組。
- 主機B的IP地址與ARP請求分組中要查詢的IP地址一致,就收下這個ARP請求分組,並向A單播發送ARP響應分組(其中寫入了B自己的硬件地址),同時將A的地址映射寫入自己的ARP高速緩存中。由於其余的所有主機IP地址都與ARP請求分組要查詢的IP地址不一致,因此都不理睬這個ARP請求分組。
- A收到B的ARP響應分組后,就在其ARP高速緩存中寫入B的IP地址到硬件地址的映射。
至此,A得到了從B的IP地址到其MAC地址的映射。當這個映射項目在高速緩存中保存超過生存時間,將被從高速緩存中刪除。
ARP欺騙的原理與現象
ARP欺騙的核心思想就是向目標主機發送偽造的 應 ARP答,並使目標主機接收應答中偽造的IP地址與MAC地址之間的映射對,以此更新目標主機ARP緩存。下面就在理論上說明實施ARP欺騙的過程(見圖 : 1) S代表源主機,也就是將要被欺騙的目標主機; D代表目的主機,源主機本來是向它發送數據; A代表攻擊者,進行ARP欺騙。
當S想要向D發送數據時,假設目前他的ARP緩存中沒有關於D的記錄,那么他首先在局域網中廣播包含D的IP地址的ARP請求。但此時A具有與D相同的IP地址,於是分別來自A與D的ARP響應報文將相繼到達S。如果A控制自己的ARP響應晚於D的ARP響應到達S, S就會將如下偽造映射:
D的IP地址 → A的MAC地址
保存在自己的ARP緩存中。在這個記錄過期之前,凡是S 發送給D的數據實際上都將發送給A。 而S卻毫不察覺。或者A在上述過程中,利用其它方法直接抑制來自D的ARP應答將是一個更有效的方法而不用依賴於不同操作系統的處理機制。進一步, A可不依賴於上述過程,直接在底層偽造ARP響應報文來達到同樣的目的。
從影響網絡連接通暢的方式來看,ARP欺騙分為二種,一種是對路由器ARP表的欺騙;另一種是對內網PC的網關欺騙。
一般來說,ARP欺騙攻擊的后果非常嚴重,大多數情況下會造成大面積掉線;如果是被中間人攻擊,截取Internet與這個目標主機的之間的全部通信,則會導致信息泄露,在主機看來訪問外部服務的響應變慢;或者對於服務器而言,上層應用忙於處理這種異常而無法響應外來請求。
ARP欺騙的防范
1.主機級被動檢測
當系統接收到來自局域網上的ARP請求時,系統檢查該請求發送端的IP地址是否與自己的IP地址相同。如果相同,則說明該網絡上另有一台機器與自己具有相同的IP地址。
2.主機級主動檢測
主機定期向所在局域網發送查詢自己IP地址的ARP請求報文。如果能夠收到另一ARP響應報文,則說明該網絡上另
有一台機器與自己具有相同的IP地址。
3.服務器級檢測
當服務器收到ARP響應時,為了證實它的真實性,根據反向地址解析協議(RARP)就用從響應報文中給出的 地 MAC
址再生成一個RARP請求,它詢問這樣一個問題:“如果你是這個MAC地址的擁有者,請回答你的IP地址”。這樣就會查詢到這個MAC地址對應的IP地址,比較這兩個IP地址,如果不同,則說明對方偽造了ARP響應報文。
4.網絡級檢測
配置主機定期向中心管理主機報告其ARP緩存的內容。這樣中心管理主機上的程序就會查找出兩台主機報告信息的不一致,以及同一台主機前后報告內容的變化。這些情況反映了潛在的安全問題。或者利用網絡嗅探工具連續監測網絡內主機硬件地址與IP地址對應關系的變化。
