ARP是什么?
ARP是通過網絡地址(IP)來定位機器MAC地址的協議,它通過解析網絡層地址(IP)來找尋數據鏈路層地址(MAC)的網絡傳輸協議。
對個定義不能理解的話,可以結合 TCP/IP 模型圖理解,如下:
ARP已經在很多網路層和數據鏈接層之間得以實現。不過在IPv6中用鄰居發現協議(NDP)代替地址解析協議(ARP)。
我的理解,ARP協議類似編程中的底層系統函數,一般用戶用不到,或者沒有太多單獨使用場景。它一般結合著上層的協議使用,比如上層的TCP、UDP協議在發包的時候,都必須要得到一些通信參數,比如本機IP,本機MAC,目標IP,目標MAC,如果在缺失MAC地址的時候,就會自動調用ARP協議,ARP會去自動獲取到對方的MAC地址,并填充回來。
ARP協議工作原理
ARP協議的目的:根據IP地址,獲取到機器的MAC地址。因為IP地址和MAC地址是兩個關鍵的通信參數,沒有他倆就做不了。
為什么要找MAC:IP和MAC都是用來定位機器的,IP地址的主要作用是在跨越不同網絡的情況下進行通信時對設備進行尋址,以便把數據包正確地發送到目標計算機。IP地址是邏輯地址,用于在網絡層尋址和路由選擇。IP地址可以分為公共IP地址和私有IP地址。私有IP地址是在局域網中使用的,只在局域網內部有效,用于在局域網中進行內部通信。
MAC地址在網絡接口控制器(NIC)中預設,一般由設備制造商分配,具有全球唯一性。在局域網中,設備之間的通信通常是通過MAC地址實現的,而不是通過IP地址。
下面將講解ARP協議怎么能拿到對方MAC的過程,主要分為三個步驟:
-
廣播找MAC過程
-
緩存IP、MAC過程
-
更新緩存過程
廣播找MAC過程:比如說你已經有一個目標IP地址了,你想找這個IP的MAC地址,那么ARP會這樣做,它會向路由(或交換機)廣播一條消息,上面主要填寫自己機器的信息,和想要的信息:
-
網絡層:?
目標IP
?表示要找個這個IP的MAC地址; -
網絡層:?
目標MAC
?00:00:00:00:00:00 表示要找這個機器的MAC地址,先用0占位; -
鏈路層:?
目標MAC
?ff:ff:ff:ff:ff:ff 表示在數據鏈路層進行廣播,查找這個目標IP的MAC;
局域網內的所有機器,都會收到這條消息。
緩存IP、MAC過程:非目標機器收到這條消息,知道不是找它,直接丟棄。
當目標IP機器收到這條消息后,知道是在找他,他就給這個源IP和源MAC回復一條消息,說我的MAC是XXX,你備份一下吧。
源IP機器收到目標機器的MAC后,防止后期還要用到,又要去找,浪費時間,就在本地緩存一份。
所以每臺主機都會緩存一份自己常用的IP和MAC地址表
,類似下面的圖:
更新緩存過程:局域網內,IP地址是可以變更的,當有一臺或多臺機器的IP發送了改變,那么他們本地維護的緩存表不就沒法使用了?或者就亂套了,想找張三,變成找到李四了。
解決:在變更了自己的IP之后,那么他們就會在局域網內發送一個特殊ARP包,內容大致是說,我的IP地址變更了,MAC地址也附上,你們也把自己的緩存更新一下。然后局域網內的所有機器,都屁顛屁顛的跟著更新自己的緩存。
ARP協議下的攻擊原理
更新緩存這個功能其實是個正常的功能,因為有些機器IP地址就是會經常變更,發個通告出來,讓大家修改一下地址也沒毛病。
問題就在于,有心懷不軌的攻擊者,他就利用了這個不驗證、不鑒權就直接修改緩存的機制。基于這個機制 ,攻擊者就可以開始攻擊了。
比如,他李四替換了張三的地址。更狠的,他直接把他自己主機地址和路由器的地址替換了,局域網內所有人的數據都往他機器上發了,他在轉發出去,然后他就能截取別人的流量,別人的小秘密全被他知道了!
常見的攻擊類型如下:
-
ARP 緩存投毒攻擊使攻擊者能夠通過破壞網絡的 ARP 表(MAC 到 IP 設備映射)來攔截網絡設備之間的通信。
-
ARP 欺騙網關攻擊中間人攻擊是同時欺騙局域網內的主機和網關,局域網中用戶的數據和網關的數據會發給同一個攻擊者,這樣,用戶與網關的數據就會泄露。
-
ARP 泛洪攻擊通過向網關發送大量ARP報文,導致網關無法正常響應。首先發送大量的ARP請求報文,然后又發送大量虛假的ARP響應報文,從而造成網關部分的CPU利用率上升難以響應正常服務請求,而且網關還會被錯誤的ARP表充滿導致無法更新維護正常ARP表,消耗網絡帶寬資源。
-
IP地址沖突攻擊通過對局域網中的物理主機進行掃描,掃描出局域網中的物理主機的MAC地址,然后根據物理主機的MAC進行攻擊,導致局域網內的主機產生IP地址沖突,影響用戶的網絡正常使用。
攻擊軟件
-
Ettercap
-
Ettercap的中間人攻擊,在它的選項欄里有四種:ARP緩存投毒,ICMP重定向,端口監聽,DHCP欺騙。
Ettercap的功能是很強大,從它的插件就可以看到功能有:發現可疑ARP活動、ARP響應、DNS欺騙、Dos攻擊、發現連接(交換環境)、發現Ettercap活動、列出子網未使用的IP、隔離主機、MAC泛洪、ssltrip等。
-
WireShark
-
網絡流量截取、分析
防范
以下是一些防御ARP投毒攻擊的方法:
-
使用靜態ARP表項:在關鍵設備上配置靜態ARP表項,避免動態ARP更新被惡意利用。
-
啟用ARP檢查:在交換機上啟用ARP檢查功能,過濾非法的ARP報文。
-
部署ARP防護軟件:使用專門的ARP防護軟件來監控和阻止可疑的ARP活動。
-
網絡隔離:將網絡劃分為更小的廣播域,限制ARP廣播范圍。
-
加強網絡監控:實時監控網絡流量,及時發現異常的ARP行為。
-
使用VPN:對重要通信使用VPN加密,防止ARP欺騙導致的數據泄露。
-
及時更新系統補丁:保持操作系統和網絡設備固件的最新更新,修復已知漏洞。
-
教育用戶:培訓網絡用戶識別潛在的ARP攻擊跡象。
-
使用安全協議:在可能的情況下,使用更安全的協議如IPv6來替代ARP (IPv6替換了ARP協議)。
-
定期安全審計:定期進行網絡安全審計,檢查ARP表和網絡配置。
這些方法可以綜合使用,以提高網絡對ARP投毒攻擊的防御能力。
文章轉載自:Mysticbinary
原文鏈接:https://www.cnblogs.com/mysticbinary/p/18296411
體驗地址:引邁 - JNPF快速開發平臺_低代碼開發平臺_零代碼開發平臺_流程設計器_表單引擎_工作流引擎_軟件架構