ARP協議區分_ARP原理
發表時間:2023-07-13 來源:明輝站整理相關軟件相關文章人氣:
[摘要]ARP(AddressResolutionProtocol)地址解析協議用于將計算機的網絡地址(IP地址32位)轉化為物理地址(MAC地址48位)[RFC826]。 ARP協議是屬于鏈路層的協議,...
ARP(AddressResolutionProtocol)地址解析協議用于將計算機的網絡地址(IP地址32位)轉化為物理地址(MAC地址48位)[RFC826]。 ARP協議是屬于鏈路層的協議, 在以太網中的數據幀從一個主機到達網內的另一臺主機是根據48位的以太網地址(硬件地址)來確定接口的, 而不是根據32位的IP地址。 內核(如驅動)必須知道目的端的硬件地址才能發送數據。 當然, 點對點的連接是不需要ARP協議的。
ARP協議的數據結構:
typedefstructarphdr { unsignedshortarp_hrd;/*硬件類型*/ unsignedshortarp_pro;/*協議類型*/ unsignedchararp_hln;/*硬件地址長度*/ unsignedchararp_pln;/*協議地址長度*/ unsignedshortarp_op;/*ARP操作類型*/
unsignedchararp_sha[6];/*發送者的硬件地址*/ unsignedlongarp_spa;/*發送者的協議地址*/ unsignedchararp_tha[6];/*目標的硬件地址*/ unsignedlongarp_tpa;/*目標的協議地址*/ }ARPHDR,*PARPHDR;
|
為了解釋ARP協議的作用, 就必須理解數據在網絡上的傳輸過程。 這里舉一個簡單的PING例子。
假設我們的計算機IP地址是192.168.1.1, 要執行這個命令:ping192.168.1.2。 該命令會通過ICMP協議發送ICMP數據包。 該過程需要經過下面的步驟:
1、應用程序構造數據包, 該示例是產生ICMP包, 被提交給內核(網絡驅動程序);
2、內核檢查是否能夠轉化該IP地址為MAC地址, 也就是在本地的ARP緩存中查看IP-MAC對應表;
3、如果存在該IP-MAC對應關系, 那么跳到步驟9;如果不存在該IP-MAC對應關系, 那么接續下面的步驟;
4、內核進行ARP廣播, 目的地的MAC地址是FF-FF-FF-FF-FF-FF, ARP命令類型為REQUEST(1), 其中包含有自己的MAC地址;
5、當192.168.1.2主機接收到該ARP請求后, 就發送一個ARP的REPLY(2)命令, 其中包含自己的MAC地址;
6、本地獲得192.168.1.2主機的IP-MAC地址對應關系, 并保存到ARP緩存中;
7、內核將把IP轉化為MAC地址, 然后封裝在以太網頭結構中, 再把數據發送出去;
使用arp-a命令就可以查看本地的ARP緩存內容, 所以, 執行一個本地的PING命令后, ARP緩存就會存在一個目的IP的記錄了。 當然, 如果你的數據包是發送到不同網段的目的地, 那么就一定存在一條網關的IP-MAC地址對應的記錄。
知道了ARP協議的作用, 就能夠很清楚地知道, 數據包的向外傳輸很依靠ARP協議, 當然, 也就是依賴ARP緩存。 要知道, ARP協議的所有操作都是內核自動完成的, 同其他的應用程序沒有任何關系。 同時需要注意的是, ARP協議只使用于本網絡。
ARP協議的利用和相關原理介紹。
一、交換網絡的嗅探
ARP協議并不只在發送了ARP請求才接收ARP應答。 當計算機接收到ARP應答數據包的時候, 就會對本地的ARP緩存進行更新, 將應答中的IP和MAC地址存儲在ARP緩存中。 因此, 在上面的假設網絡中, B向A發送一個自己偽造的ARP應答, 而這個應答中的數據為發送方IP地址是192.168.10.3(C的IP地址), MAC地址是DD-DD-DD-DD-DD-DD(C的MAC地址本來應該是CC-CC-CC-CC-CC-CC, 這里被偽造了)。 當A接收到B偽造的ARP應答, 就會更新本地的ARP緩存, 將本地的IP-MAC對應表更換為接收到的數據格式, 由于這一切都是A的系統內核自動完成的, A可不知道被偽造了。
ARP欺騙的主要用途就是進行在交換網絡中的嗅探。 有關交換網絡的嗅探不是本文的討論內容。
二、IP地址沖突
我們知道, 如果網絡中存在相同IP地址的主機的時候, 就會報告出IP地址沖突的警告。 這是怎么產生的呢?
比如某主機B規定IP地址為192.168.0.1, 如果它處于開機狀態, 那么其他機器A更
改IP地址為192.168.0.1就會造成IP地址沖突。 其原理就是:主機A在連接網絡(或更改IP地址)的時候就會向網絡發送ARP包廣播自己的IP地址, 也就是freearp。 如果網絡中存在相同IP地址的主機B, 那么B就會通過ARP來reply該地址, 當A接收到這個reply后, A就會跳出IP地址沖突的警告, 當然B也會有警告。
因此用ARP欺騙可以來偽造這個ARPreply, 從而使目標一直遭受IP地址沖突警告的困擾。
三、阻止目標的數據包通過網關
比如在一個局域網內通過網關上網, 那么連接外部的計算機上的ARP緩存中就存在網關IP-MAC對應記錄。 如果, 該記錄被更改, 那么該計算機向外發送的數據包總是發送到了錯誤的網關硬件地址上, 這樣, 該計算機就不能夠上網了。
這里也主要是通過ARP欺騙進行的。 有兩種辦法達到這樣的目的。
1、向目標發送偽造的ARP應答數據包, 其中發送方的IP地址為網關的地址, 而MAC地址則為一個偽造的地址。 當目標接收到該ARP包, 那么就更新自身的ARP緩存。 如果該欺騙一直持續下去, 那么目標的網關緩存一直是一個被偽造的錯誤記錄。 當然, 如果有些了解的人查看ARP-a, 就知道問題所在了。
2、這種方法非常狠, 欺騙網關。 向網關發送偽造的ARP應答數據包, 其中發送方的IP地址為目標的IP地址, 而MAC地址則為一個偽造的地址。 這樣, 網關上的目標ARP記錄就是一個錯誤的, 網關發送給目標的數據報都是使用了錯誤的MAC地址。 這種情況下, 目標能夠發送數據到網關, 卻不能接收到網關的任何數據。 同時, 目標自己查看ARP-a卻看不出任何問題來。
四、通過ARP檢測混雜模式節點
在混雜模式中, 網卡進行包過濾不同于普通模式。 本來在普通模式下, 只有本地地址的數據包或者廣播(多播等)才會被網卡提交給系統核心, 否則的話, 這些數據包就直接被網卡拋棄。 現在, 混合模式讓所有經過的數據包都傳遞給系統核心, 然后被sniffer等程序利用。
通過特殊設計的ARP請求可以用來在一定程度上檢測處于混雜模式的節點, 比如對網絡中的每個節點都發送MAC地址為FF-FF-FF-FF-FF-FE的ARP請求。 對于網卡來說這不是一個廣播地址(FF-FF-FF-FF-FF-FF), 所以處于普通模式的節點就會直接拋棄該數據包, 但是多數操作系統核心都認為這是一個廣播地址, 如果有一般的sniffer程序存在, 并設置網卡為混雜模式, 那么系統核心就會作出應答, 這樣就可以判斷這些節點是否存在嗅探器了。
可以查看, 很多基于ARP的攻擊都是通過ARP欺騙實現的。 至于ARP欺騙的防范, 還是盡可能使用靜態的ARP。 對于WIN, 使用arp-s來進行靜態ARP的設置。 當然, 如果能夠完全使用靜態的IP+MAC對應, 就更好了, 因為靜態的ARP緩存只是相對的。
當然, 可以有一些方法來實現ARP欺騙的檢測。 設置一個ARP的嗅探器, 其中維護著一個本地網絡的IP-MAC地址的靜態對應表, 查看所有經過的ARP數據, 并檢查其中的IP-MAC對應關系, 如果捕獲的IP-MAC對應關系和維護的靜態對應關系對應不上, 那么就表明是一個欺騙的ARP數據包了。
一個ARP數據包發送程序源代碼和編譯好的EXE程序可以參考ARPSender程序。 注意:需要先安裝WinPcap。
上面是電腦上網安全的一些基礎常識,學習了安全知識,幾乎可以讓你免費電腦中毒的煩擾。