ARP協(xié)議是“Address Resolution Protocol”的縮寫,稱為地址解析協(xié)議。他的作用是規(guī)定了在ipv4地址和底層網(wǎng)絡(luò)硬件地址之間的轉(zhuǎn)換,提供從網(wǎng)絡(luò)層地址到相關(guān)硬件地址的動(dòng)態(tài)映射。因?yàn)樵谝蕴W(wǎng)環(huán)境中榛搔,數(shù)據(jù)傳輸是mac地址而不是IP地址,所以需要需要在兩者之間做一個(gè)轉(zhuǎn)換东揣。(傳輸過程中mac和ip為什么需要分別存在在上一篇博客有提到喔)
原理
在任何時(shí)候践惑,一臺(tái)主機(jī)有IP數(shù)據(jù)報(bào)文發(fā)送給另一臺(tái)主機(jī),它都要知道接收方的邏輯(IP)地址嘶卧。但是IP地址必須封裝成幀才能通過物理網(wǎng)絡(luò)尔觉。這就意味著發(fā)送方必須有接收方的物理(MAC)地址,因此需要完成邏輯地址到物理地址的映射芥吟。而ARP協(xié)議可以接收來自IP協(xié)議的邏輯地址侦铜,將其映射為相應(yīng)的物理地址,然后把物理地址遞交給數(shù)據(jù)鏈路層运沦。具體過程分為ARP請(qǐng)求和響應(yīng)
ARP請(qǐng)求
實(shí)際網(wǎng)絡(luò)中泵额,這個(gè)LAN可能有幾十上百的主機(jī)配深,我們只知道了IP地址的話怎樣才能順利的將數(shù)據(jù)包從Pc1發(fā)送到Pc2呢携添?
這時(shí),Pc1在發(fā)送數(shù)據(jù)包之前篓叶,ARP協(xié)議就會(huì)采用以太網(wǎng)的“廣播”功能進(jìn)行一次ARP請(qǐng)求:將會(huì)以廣播的形式發(fā)送一個(gè)ARP請(qǐng)求包烈掠,用來請(qǐng)求目標(biāo)IP的對(duì)應(yīng)mac地址,交換機(jī)或WiFi設(shè)備(無線路由器)收到廣播包時(shí)缸托,會(huì)將此數(shù)據(jù)發(fā)給同一局域網(wǎng)的其他所有主機(jī)左敌,此時(shí)每一臺(tái)主機(jī)都會(huì)接受并處理這個(gè)ARP請(qǐng)求報(bào)文,然后進(jìn)行驗(yàn)證俐镐,是目標(biāo)IP的主機(jī)會(huì)進(jìn)行響應(yīng)矫限,而拿到ARP請(qǐng)求包的其他主機(jī)發(fā)現(xiàn)目標(biāo)IP不是自己的IP則將其丟掉。
【也正是這種廣播的請(qǐng)求方式為網(wǎng)絡(luò)帶來了很多隱患】
ARP響應(yīng)
驗(yàn)證成功的主機(jī)會(huì)返回一個(gè)ARP響應(yīng)報(bào)文,這個(gè)響應(yīng)報(bào)文包含接收方的IP地址和物理地址叼风。當(dāng)然取董,ARP回應(yīng)包不在是通過廣播的形式去發(fā)送的,大部分網(wǎng)絡(luò)協(xié)議在設(shè)計(jì)的時(shí)候无宿,都需要保持極度克制茵汰,不需要的交互就砍掉,能合并的信息就合并孽鸡,能不用廣播就用單播蹂午,以此讓帶寬變得更多讓網(wǎng)絡(luò)變得更快。同時(shí)呢彬碱,兩臺(tái)主機(jī)分別寫入對(duì)方的IP和MAC到自己的ARP映射表中豆胸,這樣下次請(qǐng)求就不需要再次進(jìn)行ARP交互了。
【點(diǎn)對(duì)點(diǎn)鏈路不使用ARP協(xié)議堡妒∨渎遥】
ARP高速緩存
明白了ARP的工作原理之后,我們會(huì)發(fā)現(xiàn)上面提到了拿到IP對(duì)應(yīng)的mac地址后會(huì)進(jìn)行緩存皮迟,為了解決請(qǐng)求速度問題搬泥,每臺(tái)安裝TCP/IP協(xié)議的電腦里,都有一個(gè)ARP高速緩沖表伏尼,表里的IP地址與MAC地址是一一對(duì)應(yīng)的忿檩。
那么如何查看該表呢,我們可以在命令行鍵入arp -a獲取本機(jī)ARP高速緩存的所有內(nèi)容:
ARP代理
以上說的都是在一個(gè)本地網(wǎng)絡(luò)內(nèi)完成的爆阶,那如果ARP請(qǐng)求是從一個(gè)網(wǎng)絡(luò)主機(jī)發(fā)送到另一個(gè)網(wǎng)絡(luò)主機(jī)呢燥透?就引出了ARP代理的概念
如上圖所示,主機(jī)A需要與主機(jī)B通信時(shí)辨图,目的IP地址與本機(jī)的IP地址位于不同網(wǎng)絡(luò)班套,但是由于主機(jī)A未配置網(wǎng)關(guān),所以它會(huì)將以廣播形式發(fā)送ARP request報(bào)文故河,請(qǐng)求主機(jī)B的MAC地址吱韭。但是,廣播報(bào)文無法被路由器轉(zhuǎn)發(fā)鱼的,所以主機(jī)B無法收到主機(jī)A的ARP請(qǐng)求報(bào)文理盆,當(dāng)然也就無法應(yīng)答。
而在路由器上啟用代理ARP功能凑阶,就可以解決這個(gè)問題猿规。啟用代理ARP后,路由器收到這樣的請(qǐng)求宙橱,會(huì)查找路由表姨俩,如果存在主機(jī)B的路由表項(xiàng)蘸拔,路由器將會(huì)使用自己的G0/0/0接口的MAC地址來回應(yīng)該ARP request。主機(jī)A收到ARP reply后环葵,將以路由器的G0/0/0接口MAC地址作為目的MAC地址進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)都伪。
逆向ARP
我們知道我們計(jì)算機(jī)中的IP地址是自動(dòng)獲得的,在最開始我們也提到說ARP是將mac和IP做的一種映射积担,前面提到的都是已知IP地址去請(qǐng)求mac地址的方式陨晶,那我們計(jì)算機(jī)在獲得IP地址的時(shí)候,其實(shí)就是逆向ARP請(qǐng)求帝璧,也叫RARP.
ARP欺騙
由前面提過的工作原理就可以明白先誉,ARP協(xié)議的安全性是相當(dāng)?shù)偷模吘剐枰獙⒁粋€(gè)請(qǐng)求廣播出來的烁,那顯而易見褐耳,當(dāng)一個(gè)數(shù)據(jù)可以被所有人截獲的時(shí)候,他的危險(xiǎn)性就提升了n倍渴庆,其中被使用最多的就是ARP欺騙铃芦。所以我們經(jīng)常聽到的這些術(shù)語,包括"網(wǎng)絡(luò)掃描"襟雷、"內(nèi)網(wǎng)滲透"刃滓、"中間人攔截"、"局域網(wǎng)流控"耸弄、"流量欺騙"咧虎,基本都跟ARP脫不了干系。大量的安全工具计呈,例如大名鼎鼎的Cain砰诵、功能完備的Ettercap、操作傻瓜式的P2P終結(jié)者捌显,底層都要基于ARP欺騙實(shí)現(xiàn)茁彭。
ARP欺騙原理
ARP欺騙主要是攻擊者發(fā)送大量假的ARP數(shù)據(jù)包到網(wǎng)絡(luò)上,尤其是網(wǎng)關(guān)上扶歪。假設(shè)你的網(wǎng)關(guān)的IP地址是192.168.0.2,MAC地址為00-11-22-33-44-55,你發(fā)送的數(shù)據(jù)都會(huì)從這個(gè)MAC地址經(jīng)過理肺,這時(shí)候我發(fā)送大量ARP數(shù)據(jù)包,然而我的包是構(gòu)造出來的击罪,IP是你的IP哲嘲,但是MAC地址我替換成了我的MAC地址贪薪,這時(shí)候你更新你的ARP緩存時(shí)媳禁,就會(huì)把我機(jī)器的MAC地址當(dāng)成192.168.0.2的MAC地址,于是你的流量都到我這來了画切,我可以把你的數(shù)據(jù)改改再發(fā)給網(wǎng)關(guān)竣稽,或者什么都不做,你都上不了網(wǎng)了。
那么ARP欺騙核心其實(shí)就是:監(jiān)聽廣播段的ARPrequest毫别,然后處理信息并為請(qǐng)求主機(jī)返回一個(gè)虛假的mac地址娃弓,此時(shí)后返回的mac地址會(huì)覆蓋緩存表中的mac信息,這樣之后該主機(jī)向目標(biāo)IP發(fā)送的數(shù)據(jù)都會(huì)先經(jīng)過你返回的虛假mac地址岛宦,由你處理后再進(jìn)行二次發(fā)送(或直接截獲)
那么了解這么多我們一定要知道的幾條終端命令:
用“arp -d”可以刪除arp緩存表里的所有內(nèi)容
用“arp -s“可以手動(dòng)在arp表中制定ip地址與mac地址的對(duì)應(yīng)關(guān)系
用arp -a獲取本機(jī)ARP高速緩存的所有內(nèi)容