Stories

Detail Return Return

ARP協議 - Stories Detail

文章首發博客,你可以前往 閲讀原文

ARP(Address Resolution Protocol,地址解析協議)是一種在計算機網絡中用於將IP地址映射到MAC地址的協議。ARP協議通常在局域網中使用,它允許主機查找目標主機的MAC地址,以便在網絡中發送數據包

當一個主機需要向另一個主機發送數據包時,它需要知道目標主機的MAC地址,因為MAC地址是在數據鏈路層使用的地址。如果目標主機的IP地址已知,但是它的MAC地址未知,就需要使用ARP協議進行地址解析

ARP協議是屬於網絡層協議,基於IP協議

掃碼關注公眾號,查看更多最新優質文章

通信過程


假如局域網內有多個主機,當主機A需要和主機C進行通訊時,需要先獲得主機B的mac地址:

  1. 主機A先從自己的ARP緩存表中獲取主機B的mac地址
  2. 當沒有時會想局域網中發送arp廣播請求,路由器等設備接收到arp請求後,會將請求發送給局域網中的每個主機
  3. 當每個主機接收到arp請求後發現目標ip不是自己,就會丟棄掉arp數據包,不做任何迴應
  4. 而真正的主機接收到後,會將自己的mac地址以單播的形式響應給發送端
  5. 路由器等設備也會學習ip,當目標主機響應源主機時,路由器也會維護一份路由表,在路由器的路由表沒有過期時,路由器會直接返回目標主機的mac地址

真實環境抓包情況如下:

ARP首部

  • 硬件類型:2字節,硬件地址類型,值為1時表示以太網
  • 協議類型:2字節,表示映射的協議地址類型,對於IP協議值為0x0800
  • MAC地址長度:1字節,表示MAC地址長度,以字節為單位,此處為6
  • IP協議地址長度:1字節,表示IP的長度,以字節為單位,此處為4
  • 操作類型:2字節,指定本次ARP報文類型。ARP請求(1)、ARP應答(2)、RARP請求(3)、RARP應答(4)
  • 源MAC地址:6字節,發送方的硬件地址
  • 源IP地址:4字節,發送方的IP地址
  • 目的MAC地址:6字節,接收方硬件地址,在請求報文中該字段值全為0,即00:00:00:00:00:00,表示任意地址,等待接收方來補充
  • 目的IP地址:4字節,接收方的IP地址

抓包情況如下:

ARP緩存表

為了避免每次通信都要進行這種轉換,每個設備(如路由器、交換機、網關等)都會在自己的ARP緩存表中存儲已經進行過ARP請求並得到迴應的IP地址和MAC地址的對應關係。當設備需要與該IP地址對應的設備進行通信時,就可以直接從ARP緩存表中獲取對應的MAC地址,而不用再次發送ARP請求

ARP緩存表中的每個條目通常包含以下信息:

  • IP地址:需要轉換為MAC地址的IP地址
  • MAC地址:與IP地址對應的MAC地址
  • 接口:該MAC地址所在的網絡接口
  • 時間戳:上次從目標設備獲取該MAC地址的時間

查看主機維護的arp緩存表:

➜ arp -ae
Address           HWtype  HWaddress           Flags Mask    Iface
192.168.11.11     ether   xx:1b:xx:b5:e2:12   C             ens160
192.168.11.235    ether   xx:ef:xx:5b:d1:a5   C             ens160
192.168.11.194    ether   xx:a4:xx:0a:xx:c5   C             ens160
192.168.11.120    ether   xx:9c:23:xx:b0:xx   C             ens160
gateway           ether   xx:05:a5:xx:9b:8f   C             ens160
192.168.10.1      ether   6e:xx:33:xx:45:xx   C             ens256

ARP緩存表的大小有限,當表滿了時,新的ARP請求會替換最早的條目。此外,由於ARP緩存表中的信息是動態的,因此有時需要手動清除過期的ARP緩存表項

動態ARP表

動態ARP表是由ARP和計算機自動維護的,它會記錄最近進行過通信的IP地址和MAC地址的映射關係,並在一定時間內保持這種關係。當通信終止一段時間後,這些映射關係就會被清除。這種清除機制可以確保ARP表中的信息是最新的,但也可能導致頻繁地進行ARP請求

靜態ARP表

靜態ARP表是由管理員手動設置的,它不會自動更新。管理員可以在靜態ARP表中指定某個IP地址對應的MAC地址,這樣ARP表中就會一直保持這種映射關係,直到管理員手動刪除或更新它。這種方式可以減少ARP請求的次數,提高網絡性能,但需要管理員進行手動維護,可能導致靜態ARP表中的信息不夠實時

RARP

ARP是將IP地址轉換為MAC地址,而RARP(Reverse Address Resolution Protocol,反向地址解析協議)是一種用於將MAC地址轉換為IP地址的協議,與ARP相反

當一個網絡設備啓動時,它通常知道自己的MAC地址,但不知道自己的IP地址。此時,設備可以向網絡中的RARP服務器發送一個RARP請求,請求服務器將自己的MAC地址轉換為IP地址;RARP服務器將在自己的RARP表中查找該MAC地址對應的IP地址,並將IP地址返回給設備;由於DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)的出現,RARP協議已經逐漸被淘汰。DHCP協議可以動態地分配IP地址和其他網絡配置信息,而不需要依賴於RARP服務器

代理ARP

代理ARP(Proxy ARP)是一種網絡協議,它允許一個主機為另一個主機響應ARP請求,從而實現兩個不在同一子網內的主機之間的通信。代理ARP通常在路由器或交換機等設備上實現,這些設備會監視網絡中的ARP請求,並根據需要向其他子網中的主機發送ARP響應

當一個主機需要與另一個不在同一子網內的主機通信時,它會向本地網段的網關發送ARP請求,請求網關的MAC地址。如果網關啓用了代理ARP功能,並且知道目標主機的MAC地址,它就會響應ARP請求,將目標主機的MAC地址發送給源主機,源主機就可以使用該MAC地址向目標主機發送數據包

ARP欺騙

ARP可以説是最不安全的協議,傳播中沒有身份驗證,對於網絡中的任意主機都可以接收到發送者的arp包,因此可以假裝成目標主機並返回給源主機錯誤的mac地址,當源主機發送數據時就會將數據發送到錯誤的主機上,造成數據泄露等安全問題

ARP欺騙示意圖:

主機A想要和主機C進行通信,發送的ARP數據包被hacker截取後,偽造成主機C,將自己的mac地址發送給主機A,主機A就會將hacker的mac地址存到自己的arp緩存表中,這樣以後發送到主機C的數據全都會發送到hacker的主機上

ARP欺騙會造成數據的泄露,假如網頁上沒有使用https證書,數據都會以明文的形式傳輸,很容易泄露數據。如下圖:當在網頁上提交表單,通過抓包工具就可以看到數據內容

如何防範ARP欺騙?

  1. 使用靜態ARP表:靜態ARP表是手動配置的ARP表,可以避免ARP欺騙攻擊。管理員可以在網絡設備上手動配置每個設備的MAC地址和IP地址的對應關係,從而限制ARP欺騙攻擊
  2. 使用動態ARP檢測工具:動態ARP檢測工具可以檢測網絡中的ARP欺騙攻擊,並且可以發出警報或者自動阻止攻擊。例如,ARPwatch、ARPdefender等工具可以幫助管理員實時監控網絡中的ARP請求和響應,從而及時發現並防止ARP欺騙攻擊
  3. 使用加密協議:使用加密協議可以保護網絡中的通信,從而避免ARP欺騙攻擊。例如,使用SSL、TLS等加密協議可以保護Web應用程序的通信,從而避免中間人攻擊
  4. 使用虛擬專用網絡(VPN):使用VPN可以將網絡流量加密並隧道化,從而避免ARP欺騙攻擊。VPN可以將本地網絡與遠程網絡之間建立一個安全的隧道,從而保護網絡通信的安全

ARP泛洪

ARP泛洪(ARP Flooding)是一種網絡攻擊方法,它利用ARP協議的特性向網絡中廣播大量的虛假ARP請求,從而導致網絡中所有主機的ARP緩存被污染

ARP泛洪攻擊的原理是攻擊者向網絡中發送大量虛假的ARP請求包,每個ARP請求包都包含一個虛假的IP地址和MAC地址。當網絡中的其他主機接收到ARP請求包時,它們會更新自己的ARP緩存,將虛假的MAC地址與IP地址映射起來。這樣,當這些主機向虛假IP地址發送數據包時,數據包會被髮送到錯誤的MAC地址,從而無法到達真正的目標主機。如果攻擊者攔截這些數據包並篡改它們,就可以實現中間人攻擊或拒絕服務攻擊等行為

為了防止ARP泛洪攻擊,可以採取以下幾種措施:

  • 使用靜態ARP表:在網絡中使用靜態ARP表,將每個IP地址與MAC地址手動映射起來,這樣可以避免ARP緩存被污染。但是,靜態ARP表的管理比較困難,需要手動進行維護
  • 使用ARP防火牆:在網絡中使用ARP防火牆,對所有的ARP請求和響應進行過濾和驗證,可以有效地防止ARP欺騙和ARP泛洪攻擊
  • 使用網絡安全設備:在網絡中使用網絡安全設備,例如交換機和路由器等,可以對ARP請求和響應進行監控和過濾,從而保護網絡安全

總結

ARP協議用來將IP地址映射為mac地址,ARP協議是個非常不安全的協議,因此很容易稱為攻擊的漏洞,為了防範ARP攻擊,要採取必要的措施來防止攻擊

參考文獻

  • 計算機網絡(自定向下方法第7版)
  • TCP/IP詳解 卷1:協議(原書第2版)
user avatar tianmiaogongzuoshi_5ca47d59bef41 Avatar aqiongbei Avatar ayuan01 Avatar yixiyidong Avatar weidewei Avatar it1042290135 Avatar zhaodawan Avatar cbuc Avatar potato1314 Avatar shimiandeshatanku Avatar snowwolfarden Avatar bencjl Avatar
Favorites 36 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.