文章首發博客,你可以前往 閲讀原文
ARP(Address Resolution Protocol,地址解析協議)是一種在計算機網絡中用於將IP地址映射到MAC地址的協議。ARP協議通常在局域網中使用,它允許主機查找目標主機的MAC地址,以便在網絡中發送數據包
當一個主機需要向另一個主機發送數據包時,它需要知道目標主機的MAC地址,因為MAC地址是在數據鏈路層使用的地址。如果目標主機的IP地址已知,但是它的MAC地址未知,就需要使用ARP協議進行地址解析
ARP協議是屬於網絡層協議,基於IP協議
掃碼關注公眾號,查看更多最新優質文章
通信過程
假如局域網內有多個主機,當主機A需要和主機C進行通訊時,需要先獲得主機B的mac地址:
- 主機A先從自己的ARP緩存表中獲取主機B的mac地址
- 當沒有時會想局域網中發送arp廣播請求,路由器等設備接收到arp請求後,會將請求發送給局域網中的每個主機
- 當每個主機接收到arp請求後發現目標ip不是自己,就會丟棄掉arp數據包,不做任何迴應
- 而真正的主機接收到後,會將自己的mac地址以單播的形式響應給發送端
- 路由器等設備也會學習ip,當目標主機響應源主機時,路由器也會維護一份路由表,在路由器的路由表沒有過期時,路由器會直接返回目標主機的mac地址
真實環境抓包情況如下:
ARP首部
硬件類型:2字節,硬件地址類型,值為1時表示以太網協議類型:2字節,表示映射的協議地址類型,對於IP協議值為0x0800MAC地址長度:1字節,表示MAC地址長度,以字節為單位,此處為6IP協議地址長度: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欺騙?
- 使用靜態ARP表:靜態ARP表是手動配置的ARP表,可以避免ARP欺騙攻擊。管理員可以在網絡設備上手動配置每個設備的MAC地址和IP地址的對應關係,從而限制ARP欺騙攻擊
- 使用動態ARP檢測工具:動態ARP檢測工具可以檢測網絡中的ARP欺騙攻擊,並且可以發出警報或者自動阻止攻擊。例如,ARPwatch、ARPdefender等工具可以幫助管理員實時監控網絡中的ARP請求和響應,從而及時發現並防止ARP欺騙攻擊
- 使用加密協議:使用加密協議可以保護網絡中的通信,從而避免ARP欺騙攻擊。例如,使用SSL、TLS等加密協議可以保護Web應用程序的通信,從而避免中間人攻擊
- 使用虛擬專用網絡(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版)