图解ARP协议分析实例
一 ARP協(xié)議
ARP (地址解析協(xié)議)
地址解析協(xié)議,即ARP(Address Resolution Protocol),是根據(jù)IP地址獲取物理地址的一個TCP/IP協(xié)議。主機(jī)發(fā)送信息時將包含目標(biāo)IP地址的ARP請求廣播到網(wǎng)絡(luò)上的所有主機(jī),并接收返回消息,以此確定目標(biāo)的物理地址;收到返回消息后將該IP地址和物理地址存入本機(jī)ARP緩存中并保留一定時間,下次請求時直接查詢ARP緩存以節(jié)約資源。地址解析協(xié)議是建立在網(wǎng)絡(luò)中各個主機(jī)互相信任的基礎(chǔ)上的,網(wǎng)絡(luò)上的主機(jī)可以自主發(fā)送ARP應(yīng)答消息,其他主機(jī)收到應(yīng)答報(bào)文時不會檢測該報(bào)文的真實(shí)性就會將其記入本機(jī)ARP緩存;由此攻擊者就可以向某一主機(jī)發(fā)送偽ARP應(yīng)答報(bào)文,使其發(fā)送的信息無法到達(dá)預(yù)期的主機(jī)或到達(dá)錯誤的主機(jī),這就構(gòu)成了一個ARP欺騙。ARP命令可用于查詢本機(jī)ARP緩存中IP地址和MAC地址的對應(yīng)關(guān)系、添加或刪除靜態(tài)對應(yīng)關(guān)系等。相關(guān)協(xié)議有RARP、代理ARP。NDP用于在IPv6中代替地址解析協(xié)議。
OSI模型把網(wǎng)絡(luò)工作分為七層,IP地址在OSI模型的第三層,MAC地址在第二層,彼此不直接打交道。
功能
地址解析協(xié)議由互聯(lián)網(wǎng)工程任務(wù)組(IETF)在1982年11月發(fā)布的RFC 826中描述制定。 地址解析協(xié)議是IPv4中必不可少的協(xié)議,而IPv4是使用較為廣泛的互聯(lián)網(wǎng)協(xié)議版本(IPv6仍處在部署的初期)。
OSI模型把網(wǎng)絡(luò)工作分為七層,IP地址在OSI模型的第三層,MAC地址在第二層,彼此不直接打交道。在通過以太網(wǎng)發(fā)送IP數(shù)據(jù)包時,需要先封裝第三層(32位IP地址)、第二層(48位MAC地址)的報(bào)頭,但由于發(fā)送時只知道目標(biāo)IP地址,不知道其MAC地址,又不能跨第二、三層,所以需要使用地址解析協(xié)議。使用地址解析協(xié)議,可根據(jù)網(wǎng)絡(luò)層IP數(shù)據(jù)包包頭中的IP地址信息解析出目標(biāo)硬件地址(MAC地址)信息,以保證通信的順利進(jìn)行。
原理
工作過程
主機(jī)A的IP地址為192.168.1.1,MAC地址為0A-11-22-33-44-01;
主機(jī)B的IP地址為192.168.1.2,MAC地址為0A-11-22-33-44-02;
當(dāng)主機(jī)A要與主機(jī)B通信時,地址解析協(xié)議可以將主機(jī)B的IP地址(192.168.1.2)解析成主機(jī)B的MAC地址,以下為工作流程:
第1步:根據(jù)主機(jī)A上的路由表內(nèi)容,IP確定用于訪問主機(jī)B的轉(zhuǎn)發(fā)IP地址是192.168.1.2。然后A主機(jī)在自己的本地ARP緩存中檢查主機(jī)B的匹配MAC地址。
第2步:如果主機(jī)A在ARP緩存中沒有找到映射,它將詢問192.168.1.2的硬件地址,從而將ARP請求幀廣播到本地網(wǎng)絡(luò)上的所有主機(jī)。源主機(jī)A的IP地址和MAC地址都包括在ARP請求中。本地網(wǎng)絡(luò)上的每臺主機(jī)都接收到ARP請求并且檢查是否與自己的IP地址匹配。如果主機(jī)發(fā)現(xiàn)請求的IP地址與自己的IP地址不匹配,它將丟棄ARP請求。
第3步:主機(jī)B確定ARP請求中的IP地址與自己的IP地址匹配,則將主機(jī)A的IP地址和MAC地址映射添加到本地ARP緩存中。
第4步:主機(jī)B將包含其MAC地址的ARP回復(fù)消息直接發(fā)送回主機(jī)A。
第5步:當(dāng)主機(jī)A收到從主機(jī)B發(fā)來的ARP回復(fù)消息時,會用主機(jī)B的IP和MAC地址映射更新ARP緩存。本機(jī)緩存是有生存期的,生存期結(jié)束后,將再次重復(fù)上面的過程。主機(jī)B的MAC地址一旦確定,主機(jī)A就能向主機(jī)B發(fā)送IP通信了。
工作要素:ARP緩存
查看ARP緩存
ARP緩存是個用來儲存IP地址和MAC地址的緩沖區(qū),其本質(zhì)就是一個IP地址-->MAC地址的對應(yīng)表,表中每一個條目分別記錄了網(wǎng)絡(luò)上其他主機(jī)的IP地址和對應(yīng)的MAC地址。每一個以太網(wǎng)或令牌環(huán)網(wǎng)絡(luò)適配器都有自己單獨(dú)的表。當(dāng)?shù)刂方馕鰠f(xié)議被詢問一個已知IP地址節(jié)點(diǎn)的MAC地址時,先在ARP緩存中查看,若存在,就直接返回與之對應(yīng)的MAC地址,若不存在,才發(fā)送ARP請求向局域網(wǎng)查詢。
為使廣播量最小,ARP維護(hù)IP地址到MAC地址映射的緩存以便將來使用。ARP緩存可以包含動態(tài)和靜態(tài)項(xiàng)目。動態(tài)項(xiàng)目隨時間推移自動添加和刪除。每個動態(tài)ARP緩存項(xiàng)的潛在生命周期是10分鐘。新加到緩存中的項(xiàng)目帶有時間戳,如果某個項(xiàng)目添加后2分鐘內(nèi)沒有再使用,則此項(xiàng)目過期并從ARP緩存中刪除;如果某個項(xiàng)目已在使用,則又收到2分鐘的生命周期;如果某個項(xiàng)目始終在使用,則會另外收到2分鐘的生命周期,一直到10分鐘的最長生命周期。靜態(tài)項(xiàng)目一直保留在緩存中,直到重新啟動計(jì)算機(jī)為止。
工作媒介:報(bào)文
地址解析協(xié)議是通過報(bào)文工作的。報(bào)文包括如下字段:
ARP報(bào)文格式
硬件類型
協(xié)議類型
硬件地址長度
協(xié)議長度 操作類型
發(fā)送方硬件地址(0-3字節(jié))
發(fā)送方硬件地址(4-5字節(jié)) 發(fā)送方IP地址(0-1字節(jié))
發(fā)送方IP地址(2-3字節(jié)) 目標(biāo)硬件地址(0-1字節(jié))
目標(biāo)硬件地址(2-5字節(jié))
目標(biāo)IP地址(0-3字節(jié))
硬件類型:指明了發(fā)送方想知道的硬件接口類型,以太網(wǎng)的值為1;
協(xié)議類型:指明了發(fā)送方提供的高層協(xié)議類型,IP為0800(16進(jìn)制);
硬件地址長度和協(xié)議長度:指明了硬件地址和高層協(xié)議地址的長度,這樣ARP報(bào)文就可以在任意硬件和任意協(xié)議的網(wǎng)絡(luò)中使用;
操作類型:用來表示這個報(bào)文的類型,ARP請求為1,ARP響應(yīng)為2,RARP請求為3,RARP響應(yīng)為4;
發(fā)送方硬件地址(0-3字節(jié)):源主機(jī)硬件地址的前3個字節(jié);
發(fā)送方硬件地址(4-5字節(jié)):源主機(jī)硬件地址的后3個字節(jié);
發(fā)送方IP地址(0-1字節(jié)):源主機(jī)硬件地址的前2個字節(jié);
發(fā)送方IP地址(2-3字節(jié)):源主機(jī)硬件地址的后2個字節(jié);
目標(biāo)硬件地址(0-1字節(jié)):目的主機(jī)硬件地址的前2個字節(jié);
目標(biāo)硬件地址(2-5字節(jié)):目的主機(jī)硬件地址的后4個字節(jié);
目標(biāo)IP地址(0-3字節(jié)):目的主機(jī)的IP地址。[3]?
二 實(shí)例
arp-storm.pcap,下載自https://wiki.wireshark.org/SampleCaptures
打開文件;
看到源都是CiscoInc_af:f4:54;那么這應(yīng)是在一個以Cisco路由器或交換機(jī)為服務(wù)器的局域網(wǎng)中;
協(xié)議分級;
按長度過濾一下,所有包長度都是60;取非后一個包也沒有;
看下面,選中某一部分,在包的16進(jìn)制數(shù)據(jù)中的對應(yīng)內(nèi)容也會被選中;
目的地址:廣播;
源地址;
協(xié)議類型;
Padding,應(yīng)該是填充;
硬件類型;
操作類型:請求;
三 ARP命令
ARP緩存中包含一個或多個表,它們用于存儲IP地址及其經(jīng)過解析的MAC地址。ARP命令用于查詢本機(jī)ARP緩存中IP地址-->MAC地址的對應(yīng)關(guān)系、添加或刪除靜態(tài)對應(yīng)關(guān)系等。如果在沒有參數(shù)的情況下使用,ARP命令將顯示幫助信息。
常見用法
arp -a或arp –g
用于查看緩存中的所有項(xiàng)目。-a和-g參數(shù)的結(jié)果是一樣的,多年來-g一直是UNIX平臺上用來顯示ARP緩存中所有項(xiàng)目的選項(xiàng),而Windows用的是arp -a(-a可被視為all,即全部的意思),但它也可以接受比較傳統(tǒng)的-g選項(xiàng)。
arp -a Ip
如果有多個網(wǎng)卡,那么使用arp -a加上接口的IP地址,就可以只顯示與該接口相關(guān)的ARP緩存項(xiàng)目。
arp -s Ip 物理地址
可以向ARP緩存中人工輸入一個靜態(tài)項(xiàng)目。該項(xiàng)目在計(jì)算機(jī)引導(dǎo)過程中將保持有效狀態(tài),或者在出現(xiàn)錯誤時,人工配置的物理地址將自動更新該項(xiàng)目。
arp -d Ip
使用該命令能夠人工刪除一個靜態(tài)項(xiàng)目。
總結(jié)
以上是生活随笔為你收集整理的图解ARP协议分析实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 四个C++函数模板实例
- 下一篇: wireshark过滤规则学习总结