相關學習資料
http://baike.baidu.com/view/149421.htm?fromtitle=ARP%E5%8D%8F%E8%AE%AE&fromid=1742212&type=syn http://blog.csdn.net/dog250/article/details/7251689 http://www.cnitblog.com/flutist1225/articles/19996.html
目錄
1. ARP協議簡介 2. ARP協議格式 3. ARP運行機制 4. 保證ARP工作正常的策略
1. ARP協議簡介
OSI模型把網絡工作分為七層,IP地址在OSI模型的第三層,MAC地址在第二層,彼此不直接打交道。在通過以太網發送IP數據包時,需要先封裝第三層(32位IP地址)、第二層(48位MAC地址)的報頭,但由於發送時只知道目標IP地址,不知道其MAC地址,又不能跨第二、三層,所以需要使用地址解析協議。使用地址解析協議,可根據網絡層IP數據包包頭中的IP地址信息解析出目標硬件地址(MAC地址)信息,以保證通信的順利進行。
地址解析協議,即ARP(Address Resolution Protocol),是根據IP地址獲取物理地址的一個TCP/IP協議。其功能是:
1. 主機將ARP請求廣播到網絡上的所有主機,並接收返回消息,確定目標IP地址的物理地址 2. 將IP地址和硬件地址存入本機ARP緩存中 3. 下次請求時直接查詢ARP緩存
地址解析協議是建立在網絡中各個主機互相信任的基礎上的,網絡上的主機可以自主發送ARP應答消息,其他主機收到應答報文時不會檢測該報文的真實性就會將其記錄在本地的ARP緩存中
學習ARP協議,我們必須明白幾點:
1. ARP是用於將網絡層的IP解析成數據鏈路層的MAC地址的,ARP協議工作在數據鏈路層,我們在學習它的協議格式的時候需要有這種層次感 2. ARP協議工作在數據鏈路層,所以它沒有端口的概念,即ARP不是像DNS、DHCP那種C/S模式,它就是一個單純的數據鏈路層的廣播
2. ARP協議格式
ARP這個協議的作用是:當源主機知道目的主機的IP地址而不知道對方的MAC地址的話可以使用ARP這個廣播協議來獲得對方的MAC地址,獲得硬件地址的原因是主機通信是通過MAC地址來實現的。
1. 以太網首部 1.1 以太網目的MAC地址: 六個字節的硬件地址地址。 1) ARP請求解析包 因為客戶端這個時候並不知道目標IP的MAC地址,所以"ARP請求解析包"一定是一個數據鏈路層廣播數據包,所以這個字段一定是一個FF:FF:FF:FF:FF:FF(廣播MAC地址) 2) ARP解析回應包 硬件地址,包含發送方的MAC地址,當廣播發出時,目標主機的網絡協議棧接收下這個數據包,發現是一個ARP解析包,並且target ip是自己,就對這個數據包的發送方進行回應。 1.2 以太網源地址: 發出給ARP包的主機地址。格式與目的地址相同 。 1.3 以太幀類型: 用來表明上層協議的類型,在ARP協議中這個字段的值為: 0806 。 1.4 幀檢查序列: 用於對數據幀中數據的差錯檢查的(注意是檢測,不是糾錯) 2. ARP數據包 2.1 ARP數據包頭部 2.1.1 硬件類型: 指明了發送方想知道的硬件接口類型,以太網的值為1 2.1.2 協議類型: 指明了發送方提供的高層協議類型,即哪個協議想要使用ARP解析服務,IP為0800(16進制),一般情況下都是IP協議在使用ARP服務,
故我們通過抓包看到的大都是0800 2.1.3 硬件地址長度: 指的是MAC地址的長度,長度為6 單位是字節 。 2.1.4 協議長度: 如果是IP4則這個值為4,單位是字節 。 2.1.5 操作類型(op): 用來表示這個報文的類型 1) ARP請求為1 2) ARP響應為2 3) RARP請求為3 4) RARP響應為4; 2.2 ARP數據字段 2.2.1 發送方硬件地址: 發送方的MAC地址 2.2.2 發送方IP地址: 發送方的IP地址 2.2.3 目標硬件地址: 1) ARP請求解析包 00:00:00:00:00:00,因為請求方這個時候並不知道目標主機的MAC地址,所以填全0 2) ARP解析回應包 請求方的MAC地址,這個目標主機返回給請求方的解析回應包 2.2.4 目標IP地址: 目的主機的IP地址
3. ARP運行機制
0x1: 請求方發送ARP請求解析數據包
我們可以看到,ARP請求解析的過程是一個廣播過程
0x2: 目標回應方返回ARP解析回應包
我們可以看到,ARP回應包的發送是一個定向發送的過程,從而請求方也可以從這個回應包中得到它想要的"請求解析目標"的MAC地址
0x3: 請求方將請求解析的IP對應的MAC地址存入ARP緩存
請求解析方收到ARP回應包之后,不會進行任何判斷,就直接將對應的MAC地址存入自己的ARP緩存中(這也是ARP投毒攻擊的產生原因)
arp --help -a 查看緩存中的所有項目 -s, --set 設置一個新的ARP項目、不帶任何參數表示查看靜態MAC地址 -d, --delete 人工刪除一個靜態項目 -v, --verbose be verbose -n, --numeric don't resolve names -i, --device specify network interface (e.g. eth0) -D, --use-device read <hwaddr> from given device -A, -p, --protocol specify protocol family -f, --file read new entries from file or from /etc/ethers
當協議棧中需要再次進行IP解析的時候,系統會自動到"ARP緩存表"中查找是否已經存在相應的IP表項,如果已存在則使用之,如果不存在,則執行解析流程,對指定的IP進行ARP解析,同時,ARP緩存表的項目如果在一段時間內沒有使用,就會自動過期刪除
4. 保證ARP工作正常的策略
ARP機制是一種"無狀態"、"無驗證"的協議,它很容易受到一種"ARP投毒"攻擊,為了保證局域網內ARP機制的正常運行,可以采取以下措施
1. 設置靜態的MAC-->IP對應表,不要讓本機刷新設定好的轉換表,這是一個很有效的方法 1) 網關 將所有的客戶端的MAC以及對應IP進行靜態綁定,防止攻擊者假冒客戶端 2) 普通客戶端 綁定網關MAC地址,防止攻擊者假冒網關 2. 停止使用ARP,使用靜態ARP緩存表,將ARP做為永久條目保存在對應表中。 3. 管理員定期輪詢當前網絡、主機健康情況,檢查主機上的ARP緩存。
防御ARP攻擊的工具
1. ARPon http://arpon.sourceforge.net/download.html 2. ARP Wath http://www.linuxcommand.org/man_pages/arpwatch8.html 3. XARP http://www.securityfocus.com/tools/6908
Copyright (c) 2014 LittleHann All rights reserved