ICMP,ARP協議


 

ICMP

ICMP是(Internet Control Message Protocol)Internet控制報文協議。它是TCP/IP協議族的一個子協議,用於在IP主機、路由器之間傳遞控制消息。控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡本身的消息。這些控制消息雖然並不傳輸用戶數據,但是對於用戶數據的傳遞起着重要的作用。

 ICMP協議是一種面向無連接的協議,用於傳輸出錯報告控制信息。它是一個非常重要的協議,它對於網絡安全具有極其重要的意義。

   它是 TCP/IP協議族的一個子協議,屬於網絡層協議,主要用於在主機與路由器之間傳遞控制信息,包括報告錯誤、交換受限控制和狀態信息等。當遇到IP數據無法訪問目標、IP路由器無法按當前的傳輸速率轉發 數據包等情況時,會自動發送ICMP消息。
   
   我們在網絡中經常會使用到ICMP協議,比如我們經常使用的用於檢查網絡通不通的 Ping 命令(Linux和Windows中均有),這個“Ping”的過程實際上就是ICMP協議工作的過程。還有其他的 網絡命令 跟蹤路由 的Tracert命令也是基於ICMP協議的。
 

應對ICMP攻擊

  雖然ICMP協議給 黑客 以可乘之機,但是ICMP攻擊也並非無葯可醫。只要在日常 網絡管理 中未雨綢繆,提前做好准備,就可以有效地避免ICMP攻擊造成的損失。
 
  對於“Ping of Death”攻擊,可以采取兩種方法進行防范:第一種方法是在路由器上對ICMP數據包進行 帶寬 限制,將ICMP占用的帶寬控制在一定的范圍內,這樣即使有ICMP攻擊,它所占用的帶寬也是非常有限的,對整個網絡的影響非常少;第二種方法就是在主機上設置ICMP數據包的處理規則,最好是設定拒絕所有的ICMP數據包。
 

ARP

 
ARP協議是“Address Resolution Protocol”(地址解析協議)的縮寫。在局域網中,網絡中實際傳輸的是“幀”,幀里面是有目標主機的MAC地址的。在以太網中,一個主機要和另一個主機進行直接通信,必須要知道目標主機的MAC地址。但這個目標MAC地址是如何獲得的呢?它就是通過地址解析協議獲得的。所謂“地址解析”就是主機在發送幀前將目標IP地址轉換成目標MAC地址的過程。ARP協議的基本功能就是通過目標設備的IP地址,查詢目標設備的MAC地址,以保證通信的順利進行。
 
為了解釋ARP協議的作用,就必須理解數據在網絡上的傳輸過程。這里舉一個簡單的PING例子。
 
  假設我們的計算機IP地址是192.168.1.1,要執行這個命令:ping192.168.1.2。該命令會通過ICMP協議發送ICMP數據包。該過程需要經過下面的步驟:
 
  1、應用程序構造數據包,該示例是產生ICMP包,被提交給內核(網絡驅動程序);
 
  2、內核檢查是否能夠轉化該IP地址為MAC地址,也就是在本地的ARP緩存中查看IP-MAC對應表[1]
 
  3、如果存在該IP-MAC對應關系,那么跳到步驟7;如果不存在該IP-MAC對應關系,那么接續下面的步驟;
 
  4、內核進行ARP廣播,發送ARP幀,目的地的MAC地址是FF-FF-FF-FF-FF-FF,ARP命令類型為REQUEST(1),其中包含有自己的MAC地址;
 
  5、當192.168.1.2主機接收到該ARP請求后,將源主機的IP地址及MAC更新至自己的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
 

FAQ

  1. 什么是ARP?
 
  ARP (Address Resolution Protocol) [1]是個地址解析協議。最白的說法是:在IP-以太網中,當一個上層協議要發包時,有了節點的IP地址,ARP就能提供該節點的MAC地址。
 
  2. 為什么要有ARP? OSI 模式把網絡工作分為七層,彼此不直接打交道,只通過接口(layre interface). IP地址在第三層, MAC地址在第二層。協議在發生數據包時,得先封裝第三層 (IP地址),第二層 (MAC地址)的報頭, 但協議只知道目的節點的IP地址,不知道其地址,又不能跨第二、三層,所以得用ARP的服務。
 
  3. 什么是ARP cache? ARP cache 是個用來儲存(IP, MAC)地址的緩沖區。當ARP被詢問一個已只IP地址節點的MAC地址時,先在ARP cache 查看,若存在,就直接返回MAC地址,若不存在,才發送ARP request向局域網查詢。
 
  4. ARP 有什么命令行?常用的包括:(格式因操作系統、路由器而異,但作用類似)- 顯示ARP cache: show arp; arp -a - 清除ARP cache: arp -d
 
  ARP屬於OSI哪一層?
 
  ARP介於數據鏈接層與網絡層之間,應屬於2.5層。
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM