局域网ARP协议和欺骗技术及其对策
生活随笔
收集整理的這篇文章主要介紹了
局域网ARP协议和欺骗技术及其对策
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ARP協議的概念和工作原理對學習網絡安全知識的初學者來說是首先遇到的幾個重要的知識點之一,其中ARP欺騙技術和及其對策更是學習網絡安全中的重點與難點,往往難以一下子掌握這些抽象復雜的機理。因此很有必要用詳細介始一下網絡安全中的ARP協議和欺騙技術相應的對策。
一,TCP/IP協議之ARP協議的定義
ARP協議即地址解析協議Address Resolution Protocol,ARP協議是將IP地址與網絡物理地址一一對應的協議。負責IP地址和網卡實體地址(MAC)之間的轉換。也就是將網絡層(IP層,也就是相當于ISO OSI 的第三層)地址解析為數據連接層(MAC層,也就是相當于ISO OSI的第二層)的MAC地址。如果您對網路七層協定有比較清晰的理解的話應該知道各個層級之間都使用其各自的協定。一張ARP的表,用來支持在MAC地址和IP地址之間的一一對應關系。它提供兩者的相互轉換。
二,ARP協議的工作原理
在以太網(Ethernet)中,一個網絡設備要和另一個網絡設備進行直接通信,除了知道目標設備的網絡層邏輯地址(如IP地址)外,還要知道目標設備的第二層物理地址(MAC地址)。ARP協議的基本功能就是通過目標設備的IP地址,查詢目標設備的MAC地址,以保證通信的順利進行。
當一個網絡設備需要和另一個網絡設備通信時,它首先把目標設備的IP地址與自己的子網掩碼進行"與"操作,以判斷目標設備與自己是否位于同一網段內。如果目標設備在同一網段內,并且源設備沒有獲得與目標IP地址相對應的MAC地址信息,則源設備以第二層廣播的形式(目標MAC地址為全1)發送ARP請求報文,在ARP請求報文中包含了源設備與目標設備的IP地址。同一網段中的所有其他設備都可以收到并分析這個ARP請求報文,如果某設備發現報文中的目標IP地址與自己的IP地址相同,則它向源設備發回ARP響應報文,通過該報文使源設備獲得目標設備的MAC地址信息。
如果目標設備與源設備不在同一網段,則源設備首先把IP分組發向自己的缺省網關(Default Gateway),由缺省網關對該分組進行轉發。如果源設備沒有關于缺省網關的MAC信息,則它同樣通過ARP協議獲取缺省網關的MAC地址信息。為了減少廣播量,網絡設備通過ARP表在緩存中保存IP與MAC地址的映射信息。在一次ARP的請求與響應過程中,通信雙方都把對方的MAC地址與IP地址的對應關系保存在各自的ARP表中,以在后續的通信中使用。ARP表使用老化機制,刪除在一段時間內沒有使用過的IP與MAC地址的映射關系。
還有當傳送過來的包要傳向一個LAN的主機時,當它到達網關時,網關要求ARP程序找到物理主機或與IP地址相對應的MAC地址。ARP程序在緩存中尋找,如果找到地址,就提供此地址,以便讓此包轉換成相應的長度和格式,以傳送到此主機。如果未找到,ARP程序就在網上廣播一個特殊格式的消息,看哪個機器知道與這個IP地址相關的MAC地址。如果一臺機器發現那是自己的IP地址,它就發送回應,這樣就指出了相應的地址。ARP程序就更新自己的緩存然后發送此包到回應的MAC地址。因為不同協議的相應處理方法不同,所以有不同網絡的地址解析請求。也有反向地址解析協議(RARP)供不知道IP地址的主機從ARP緩存中獲得IP地址。
我們還是來通過實驗更加深入直觀地了解ARP協議的工作原理吧。我們假設有兩臺主機:A機的IP地址是192.168.0.1,MAC地址是52-54-ab-27-82-83 。
B機的IP地址是192.168.0.2,MAC地址是52-54-ab-27-82-84 。
當主機A想與主機B進行通訊時,A機只知道B機的IP地址是192.168.0.2,當數據包封裝到MAC層時他如何知道B
的MAC地址呢,一般的OS中是這樣做的,在OS的內核中保存一分MAC地址表,就是我們一中介始到的。用arp -a就可以看見這個表的內容了,例如: \ C:/>arp -a
Interface: 192.168.0.X on Interface 0x1000002
Internet Address Physical Address Type
192.168.0.1 52-54-ab-27-82-83 dynamic
其中表內有IP和MAC地址的對應關系,當要過進行通訊時,系統先查看這個表中是否有相關的表項,如果有就直接使用,如果沒有系統就會發出一個ARP請求包,這個包的目的地址為ffffffffffff的廣播地址,他的作用就是詢問局域網內IP地址為192.168.0.2的主機的MAC地址,就像是A在局域網中發信息找一個IP地址為192.168
.0.2的主機MAC地址,同樣A機把自已的MAC地址告訴出去是52-54-ab-27-82-83 ,隨后所有主機都會接收到這個包,但只有IP為192.168.0.2的B才會響應一個ARP應答包給主機A,B機會回信息給A機說他的MAC地址是52-54-ab-27-82-84
,好這下主機A就知道B的MAC地址了,于時他就可以封包發送了,同時主機A將B的MAC地址放入ARP緩沖中,隔一定時間就將其刪除,確保不斷更新。
注意,在這個過程中,如果主機A在發送ARP請求時,假如該局域網內有一臺主機C的IP和A相同,C就會得知有一臺主機的IP地址同自已的IP地址相同,于時就蹦出一個IP沖突的對話筐。與ARP相對應的還有一個協議RARP:Reverse
Address Resolution Protocol,
反向地址解析協議,該協議主要用于工作站模型動態獲取IP的過程中,作用是由MAC地址向服務器取回IP地址。
三,如何實現ARP協議的欺騙技術和相應的對策
1,ARP協議欺騙技術
當我們設定一個目標進行ARP欺騙時,也就是把MAC地址通過一主機A發送到主機B上的數據包都變成發送給主機C的了,如果C能夠接收到A發送的數據包后,第一步屬于嗅探成功了,而對于主機A來目前是不可能意識到這一點,主機C接收到主機A發送給主機B的數據包可沒有轉交給B。當進行ARP重定向。打開主機C的IP轉發功能,A發送過來的數據包,轉發給C,好比一個路由器一樣。但是這就是ARP協議欺騙真正的一步,假如主機C進行發送ICMP重定向的話就麻煩了,因為他可以直接進行整個包的修改轉發,捕獲到主機A發送給的數據包,全部進行修改后再轉發給主機B,而主機B接收到的數據包完全認為是從主機A發送來的。這樣就是主機C進行ARP協議欺騙技術,對于網絡安全來是很重要的。當然還可以通過MAC地址進行欺騙的。
2,ARP協議欺騙技術相應對策
各種網絡安全的對策都是相對的,主要要看網管平時對網絡安全的重視性了。下面介始一些相應的對策:
1) 在系統中建立靜態ARP表 ,建立后對本身自已系統影響不大的,對網絡影響較大,破壞了動態ARP解析過程。靜態ARP協議表不會過期的,我們用“arp -d”命令清除ARP表,即手動刪除。但是有的系統的靜態ARP表項可以被動態刷新,如Solaris系統,那樣的話依靠靜態ARP表項并不能對抗ARP欺騙***,相反縱容了ARP欺騙***,因為虛假的靜態ARP表項不會自動超時消失。當然, 可以考慮利用cron機制補救之。(增加一個crontab) 為了對抗ARP欺騙***,對于Solaris系統來說,應該結合"禁止相應網絡接口做ARP解 析"和"使用靜態ARP表"的設置
2)在相對系統中禁止某個網絡接口做ARP解析(對抗ARP欺騙***),可以做靜態ARP協議設置(因為對方不會響應ARP請求報文) 如:arp -s XXX.XXX.XX.X 08-00-20-a8-2e-ac
在絕大多數操作系統如:Unix,BSD,NT等,都可以結合"禁止相應網絡 接口做ARP解析"和"使用靜態ARP表"的設置來對抗ARP欺騙***。而Linux系統,其靜態ARP表項不會被動態刷新,所以不需要"禁止相應網絡接口做ARP解析"即可對抗ARP欺騙***。
結尾:本文還較深入和直觀地介紹了ARP協議的基本原理與基本工作過程及ARP欺騙技術。以及其對策,如果你有什么更好的ARP欺騙技術的對策,歡迎交流。謝謝。
一,TCP/IP協議之ARP協議的定義
ARP協議即地址解析協議Address Resolution Protocol,ARP協議是將IP地址與網絡物理地址一一對應的協議。負責IP地址和網卡實體地址(MAC)之間的轉換。也就是將網絡層(IP層,也就是相當于ISO OSI 的第三層)地址解析為數據連接層(MAC層,也就是相當于ISO OSI的第二層)的MAC地址。如果您對網路七層協定有比較清晰的理解的話應該知道各個層級之間都使用其各自的協定。一張ARP的表,用來支持在MAC地址和IP地址之間的一一對應關系。它提供兩者的相互轉換。
二,ARP協議的工作原理
在以太網(Ethernet)中,一個網絡設備要和另一個網絡設備進行直接通信,除了知道目標設備的網絡層邏輯地址(如IP地址)外,還要知道目標設備的第二層物理地址(MAC地址)。ARP協議的基本功能就是通過目標設備的IP地址,查詢目標設備的MAC地址,以保證通信的順利進行。
當一個網絡設備需要和另一個網絡設備通信時,它首先把目標設備的IP地址與自己的子網掩碼進行"與"操作,以判斷目標設備與自己是否位于同一網段內。如果目標設備在同一網段內,并且源設備沒有獲得與目標IP地址相對應的MAC地址信息,則源設備以第二層廣播的形式(目標MAC地址為全1)發送ARP請求報文,在ARP請求報文中包含了源設備與目標設備的IP地址。同一網段中的所有其他設備都可以收到并分析這個ARP請求報文,如果某設備發現報文中的目標IP地址與自己的IP地址相同,則它向源設備發回ARP響應報文,通過該報文使源設備獲得目標設備的MAC地址信息。
如果目標設備與源設備不在同一網段,則源設備首先把IP分組發向自己的缺省網關(Default Gateway),由缺省網關對該分組進行轉發。如果源設備沒有關于缺省網關的MAC信息,則它同樣通過ARP協議獲取缺省網關的MAC地址信息。為了減少廣播量,網絡設備通過ARP表在緩存中保存IP與MAC地址的映射信息。在一次ARP的請求與響應過程中,通信雙方都把對方的MAC地址與IP地址的對應關系保存在各自的ARP表中,以在后續的通信中使用。ARP表使用老化機制,刪除在一段時間內沒有使用過的IP與MAC地址的映射關系。
還有當傳送過來的包要傳向一個LAN的主機時,當它到達網關時,網關要求ARP程序找到物理主機或與IP地址相對應的MAC地址。ARP程序在緩存中尋找,如果找到地址,就提供此地址,以便讓此包轉換成相應的長度和格式,以傳送到此主機。如果未找到,ARP程序就在網上廣播一個特殊格式的消息,看哪個機器知道與這個IP地址相關的MAC地址。如果一臺機器發現那是自己的IP地址,它就發送回應,這樣就指出了相應的地址。ARP程序就更新自己的緩存然后發送此包到回應的MAC地址。因為不同協議的相應處理方法不同,所以有不同網絡的地址解析請求。也有反向地址解析協議(RARP)供不知道IP地址的主機從ARP緩存中獲得IP地址。
我們還是來通過實驗更加深入直觀地了解ARP協議的工作原理吧。我們假設有兩臺主機:A機的IP地址是192.168.0.1,MAC地址是52-54-ab-27-82-83 。
B機的IP地址是192.168.0.2,MAC地址是52-54-ab-27-82-84 。
當主機A想與主機B進行通訊時,A機只知道B機的IP地址是192.168.0.2,當數據包封裝到MAC層時他如何知道B
的MAC地址呢,一般的OS中是這樣做的,在OS的內核中保存一分MAC地址表,就是我們一中介始到的。用arp -a就可以看見這個表的內容了,例如: \ C:/>arp -a
Interface: 192.168.0.X on Interface 0x1000002
Internet Address Physical Address Type
192.168.0.1 52-54-ab-27-82-83 dynamic
其中表內有IP和MAC地址的對應關系,當要過進行通訊時,系統先查看這個表中是否有相關的表項,如果有就直接使用,如果沒有系統就會發出一個ARP請求包,這個包的目的地址為ffffffffffff的廣播地址,他的作用就是詢問局域網內IP地址為192.168.0.2的主機的MAC地址,就像是A在局域網中發信息找一個IP地址為192.168
.0.2的主機MAC地址,同樣A機把自已的MAC地址告訴出去是52-54-ab-27-82-83 ,隨后所有主機都會接收到這個包,但只有IP為192.168.0.2的B才會響應一個ARP應答包給主機A,B機會回信息給A機說他的MAC地址是52-54-ab-27-82-84
,好這下主機A就知道B的MAC地址了,于時他就可以封包發送了,同時主機A將B的MAC地址放入ARP緩沖中,隔一定時間就將其刪除,確保不斷更新。
注意,在這個過程中,如果主機A在發送ARP請求時,假如該局域網內有一臺主機C的IP和A相同,C就會得知有一臺主機的IP地址同自已的IP地址相同,于時就蹦出一個IP沖突的對話筐。與ARP相對應的還有一個協議RARP:Reverse
Address Resolution Protocol,
反向地址解析協議,該協議主要用于工作站模型動態獲取IP的過程中,作用是由MAC地址向服務器取回IP地址。
三,如何實現ARP協議的欺騙技術和相應的對策
1,ARP協議欺騙技術
當我們設定一個目標進行ARP欺騙時,也就是把MAC地址通過一主機A發送到主機B上的數據包都變成發送給主機C的了,如果C能夠接收到A發送的數據包后,第一步屬于嗅探成功了,而對于主機A來目前是不可能意識到這一點,主機C接收到主機A發送給主機B的數據包可沒有轉交給B。當進行ARP重定向。打開主機C的IP轉發功能,A發送過來的數據包,轉發給C,好比一個路由器一樣。但是這就是ARP協議欺騙真正的一步,假如主機C進行發送ICMP重定向的話就麻煩了,因為他可以直接進行整個包的修改轉發,捕獲到主機A發送給的數據包,全部進行修改后再轉發給主機B,而主機B接收到的數據包完全認為是從主機A發送來的。這樣就是主機C進行ARP協議欺騙技術,對于網絡安全來是很重要的。當然還可以通過MAC地址進行欺騙的。
2,ARP協議欺騙技術相應對策
各種網絡安全的對策都是相對的,主要要看網管平時對網絡安全的重視性了。下面介始一些相應的對策:
1) 在系統中建立靜態ARP表 ,建立后對本身自已系統影響不大的,對網絡影響較大,破壞了動態ARP解析過程。靜態ARP協議表不會過期的,我們用“arp -d”命令清除ARP表,即手動刪除。但是有的系統的靜態ARP表項可以被動態刷新,如Solaris系統,那樣的話依靠靜態ARP表項并不能對抗ARP欺騙***,相反縱容了ARP欺騙***,因為虛假的靜態ARP表項不會自動超時消失。當然, 可以考慮利用cron機制補救之。(增加一個crontab) 為了對抗ARP欺騙***,對于Solaris系統來說,應該結合"禁止相應網絡接口做ARP解 析"和"使用靜態ARP表"的設置
2)在相對系統中禁止某個網絡接口做ARP解析(對抗ARP欺騙***),可以做靜態ARP協議設置(因為對方不會響應ARP請求報文) 如:arp -s XXX.XXX.XX.X 08-00-20-a8-2e-ac
在絕大多數操作系統如:Unix,BSD,NT等,都可以結合"禁止相應網絡 接口做ARP解析"和"使用靜態ARP表"的設置來對抗ARP欺騙***。而Linux系統,其靜態ARP表項不會被動態刷新,所以不需要"禁止相應網絡接口做ARP解析"即可對抗ARP欺騙***。
結尾:本文還較深入和直觀地介紹了ARP協議的基本原理與基本工作過程及ARP欺騙技術。以及其對策,如果你有什么更好的ARP欺騙技術的對策,歡迎交流。謝謝。
轉載于:https://blog.51cto.com/wgcys/30103
總結
以上是生活随笔為你收集整理的局域网ARP协议和欺骗技术及其对策的全部內容,希望文章能夠幫你解決所遇到的問題。