數(shù)據(jù)轉(zhuǎn)發(fā)過(guò)程
在聊ARP之前,我們需要先了解一下我們?cè)诎l(fā)送一個(gè)數(shù)據(jù)時(shí)在網(wǎng)絡(luò)中發(fā)生了什么 ,它需要什么東西,又是怎么獲得的?對(duì)方又是怎么接收到的?當(dāng)前現(xiàn)網(wǎng)中我們都是使用TCP/IP協(xié)議棧進(jìn)行網(wǎng)絡(luò)通信的,假設(shè)當(dāng)前你正在通過(guò)火狐瀏覽器訪問(wèn)tide官網(wǎng)(www.tidesec.com),當(dāng)你輸入完網(wǎng)址,敲下回車鍵后,計(jì)算機(jī)內(nèi)部會(huì)發(fā)生如下事情:首先當(dāng)前計(jì)算機(jī)只知道域名為www.tidesec.com,此時(shí)要先向DNS服務(wù)器發(fā)送數(shù)據(jù)去請(qǐng)求www.tidesec.com的IP地址,DNS服務(wù)器收到數(shù)據(jù)包后發(fā)現(xiàn)計(jì)算機(jī)請(qǐng)求獲得www.tidesec.com的IP地址,將www.tidesec.com所綁定的IP地址打包發(fā)送給計(jì)算機(jī)。
火狐瀏覽器調(diào)用HTTP協(xié)議,完成應(yīng)用層數(shù)據(jù)封裝,HTTP依靠傳輸層的TCP進(jìn)行數(shù)據(jù)的可靠性傳輸,將封裝好的數(shù)據(jù)傳輸?shù)絺鬏攲?,傳輸層將?yīng)用層傳遞下來(lái)的Data添加上相應(yīng)的TCP頭部信息(源端口、目的端口)后。傳遞給網(wǎng)絡(luò)層,網(wǎng)絡(luò)層收到傳輸層傳遞愛(ài)的數(shù)據(jù)段后添加上相應(yīng)的IP頭部信息(源IP、目的IP)后將數(shù)據(jù)包傳遞給數(shù)據(jù)鏈路層,數(shù)據(jù)線路層收到后,添加上相應(yīng)的Ethernet頭部信息(源MAC地址、目的MAC地址)和FCS幀尾后將數(shù)據(jù)幀傳遞給物理層,根據(jù)物理介質(zhì)的不同,物理層負(fù)責(zé)將數(shù)字信號(hào)轉(zhuǎn)換成電信號(hào)、光信號(hào)、電磁波信號(hào)等,轉(zhuǎn)換完成的信號(hào)在網(wǎng)絡(luò)中開(kāi)始傳遞。
如剛剛上面數(shù)據(jù)發(fā)送方數(shù)據(jù)封裝的流程,我們看到了在封裝時(shí),傳輸層需要源目端口,這里源端口隨機(jī)分配,目的端口由服務(wù)器的應(yīng)用指定,網(wǎng)絡(luò)層需要源目IP,這里剛剛我們向DNS服務(wù)器請(qǐng)求www.tidesec.com時(shí)也獲得了tide官網(wǎng)的IP地址,也能實(shí)現(xiàn),那么現(xiàn)在數(shù)據(jù)鏈路層需要源目MAC地址,源MAC地址好說(shuō),自己的mac地址,那目的mac地址呢?該怎么獲取呢?這時(shí)就需要用到我們的ARP協(xié)議了。
地址解析協(xié)議(ARP)
ARP(Address Resolution Protocol)是一種網(wǎng)絡(luò)層協(xié)議,根據(jù)已知的目的IP地址解析獲得其對(duì)應(yīng)的MAC地址。在局域網(wǎng)中,每臺(tái)設(shè)備都有唯一的MAC地址,就像我們的身份證號(hào)一樣在全球獨(dú)一無(wú)二的,而IP地址是可以重復(fù)分配的。因此,當(dāng)一個(gè)設(shè)備需要發(fā)送數(shù)據(jù)包到另一個(gè)設(shè)備時(shí),它需要知道另一個(gè)設(shè)備的MAC地址。
那么ARP是怎么工作的呢?一般設(shè)備里都會(huì)有一個(gè)ARP緩存表,用來(lái)存放IP地址和MAC地址的關(guān)聯(lián)信息,在發(fā)送數(shù)據(jù)前,設(shè)備會(huì)先查找ARP緩存表,如果緩存表中存在對(duì)方設(shè)備的MAC地址,則直接采用該MAC地址來(lái)封裝幀,然后將幀發(fā)送出去。如果緩存表中不存在相應(yīng)信息,則通過(guò)ARP來(lái)獲取。
當(dāng)ARP緩存表為空時(shí),主機(jī)1通過(guò)發(fā)送ARP request報(bào)文來(lái)獲取主機(jī)2的MAC地址,由于不知道目的地址,因此ARP Request報(bào)文內(nèi)的目的MAC為廣播地址FF-FF-FF-FF-FF-FF,因?yàn)锳RP Request是廣播數(shù)據(jù)幀,因此交換機(jī)收到后,會(huì)對(duì)該幀執(zhí)行泛洪操作,也就是說(shuō)該網(wǎng)絡(luò)中所有主機(jī)包括網(wǎng)關(guān)都會(huì)接收到此ARP Request報(bào)文。
所有的主機(jī)接收到該ARP Request報(bào)文后,都會(huì)檢查它的目的IP地址字段與自身的IP地址是否匹配。主機(jī)2發(fā)現(xiàn)IP地址匹配,則會(huì)將ARP報(bào)文中的發(fā)送端MAC地址和發(fā)送端IP地址信息記錄到自己的ARP緩存表中。
這時(shí)主機(jī)2通過(guò)發(fā)送ARP Reply報(bào)文來(lái)響應(yīng)主機(jī)1的請(qǐng)求,此時(shí)主機(jī)2已知主機(jī)1的MAC地址,因此ARP Reply是單播數(shù)據(jù)幀。
主機(jī)1收到ARP Reply以后,會(huì)檢查ARP報(bào)文中目的端IP地址字段與自身的IP地址是否匹配。如果匹配,ARP報(bào)文中的發(fā)送端MAC地址和發(fā)送端IP地址會(huì)被記錄到主機(jī)1的ARP緩存表中。
至此,ARP工作結(jié)束,獲得目的IP對(duì)應(yīng)的MAC地址后,即可封裝完整的數(shù)據(jù)包進(jìn)行數(shù)據(jù)包的發(fā)送(上述工作過(guò)程為局域網(wǎng)內(nèi)的工作過(guò)程,如訪問(wèn)其他網(wǎng)段或外網(wǎng)中的IP地址時(shí),所獲得的MAC地址為網(wǎng)關(guān)的MAC地址,網(wǎng)關(guān)收到此ARP Request后會(huì)發(fā)送ARP Reply)
ARP欺騙
剛剛我們也看到了,ARP協(xié)議是通過(guò)廣播來(lái)獲取目標(biāo)設(shè)備的MAC地址的,當(dāng)一個(gè)設(shè)備需要發(fā)送數(shù)據(jù)到另一個(gè)設(shè)備時(shí),他會(huì)發(fā)送一個(gè)ARP請(qǐng)求,詢問(wèn)局域網(wǎng)內(nèi)的所有設(shè)備,是否具有指定IP地址對(duì)應(yīng)的MAC地址,目標(biāo)設(shè)備收到請(qǐng)求后會(huì)回復(fù)一個(gè)ARP應(yīng)答,告訴請(qǐng)求主機(jī)它的MAC地址。ARP欺騙利用了這種工作原理,攻擊者會(huì)發(fā)送偽造的ARP數(shù)據(jù)包,將自己偽裝成網(wǎng)關(guān)或其他設(shè)備,目標(biāo)設(shè)備收到偽造的ARP數(shù)據(jù)包后,會(huì)將攻擊者的MAC地址和其目標(biāo)IP地址相對(duì)應(yīng)寫(xiě)入ARP緩存表中,并將后續(xù)數(shù)據(jù)包發(fā)送給攻擊者。攻擊者就可以截獲目標(biāo)設(shè)備發(fā)送的數(shù)據(jù)包,甚至可以修改、篡改數(shù)據(jù)包中的內(nèi)容。同樣的ARP欺騙也分為單向欺騙和雙向欺騙。
單向欺騙
如下圖所示,攻擊者通過(guò)偽造ARP Request來(lái)將自己的MAC地址偽裝成網(wǎng)關(guān)IP相對(duì)應(yīng)的mac地址廣播出去,主機(jī)A收到該ARP Request后會(huì)將發(fā)現(xiàn)該ARP Request目的IP地址為自己,將該ARP Request中的目的IP地址與MAC地址寫(xiě)入到ARP緩存表后,然后發(fā)送ARP Reply,將本該傳輸給網(wǎng)關(guān)的數(shù)據(jù)錯(cuò)誤的傳輸給攻擊機(jī),使主機(jī)A得不到網(wǎng)關(guān)的響應(yīng)數(shù)據(jù),從而導(dǎo)致斷網(wǎng)。
以上就是ARP單向欺騙的原理,那我們?cè)趺磥?lái)實(shí)現(xiàn)呢?往下看 首先我們先來(lái)查看一下主機(jī)A的mac地址緩存表,當(dāng)前192.168.45.2就是當(dāng)前系統(tǒng)的網(wǎng)關(guān)地址,所對(duì)應(yīng)的也是真實(shí)的MAC地址
那么現(xiàn)在主機(jī)A也是可以正常上網(wǎng)的。
根據(jù)我們上面的思路來(lái)看,我們?nèi)绻胍屩鳈C(jī)A找不到網(wǎng)關(guān)無(wú)法上網(wǎng),我們只需要構(gòu)造一個(gè)IP地址為192.168.45.2的虛假mac地址的ARP Reply數(shù)據(jù)包就可以了,這里我們使用科萊網(wǎng)絡(luò)分析系統(tǒng)這個(gè)工具就可以實(shí)現(xiàn)這個(gè)功能。首先我們來(lái)先對(duì)當(dāng)前網(wǎng)段的MAC地址進(jìn)行一個(gè)掃描,獲得主機(jī)A的MAC地址。
這里獲得了主機(jī)A的MAC地址后,就可以點(diǎn)擊上面的數(shù)據(jù)包生成器。
添加ARP數(shù)據(jù)包
然后在目的MAC地址和目的IP中輸入我們的目標(biāo)主機(jī)的IP和MAC地址,源MAC地址任意輸即可,源IP輸入網(wǎng)關(guān)的IP地址。
然后點(diǎn)擊發(fā)送,選擇網(wǎng)卡,這里選擇循環(huán)發(fā)送,次數(shù)為0,讓它一直發(fā)送偽造的ARP數(shù)據(jù)包后點(diǎn)擊開(kāi)始。
這時(shí)我們抓包看一下當(dāng)前的網(wǎng)絡(luò)狀況,可以看到,源mac為00-01-02-03-04-05,尋找目的IP地址為192.168.45.131的ARP Request已經(jīng)發(fā)出。
這時(shí)我們?cè)賮?lái)看主機(jī)A的ARP地址表中是否有了變化
image.png
可以看到主機(jī)A中對(duì)應(yīng)192.168.45.2的MAC地址成功被我們修改為了00-01-02-03-04-05,那這時(shí)我們?cè)僭L問(wèn)一下百度來(lái)看看。
可以看到主機(jī)A目前已經(jīng)無(wú)法正常返回百度。
雙向欺騙
如下圖所示,攻擊機(jī)一直發(fā)送偽造的ARP Reply,欺騙網(wǎng)關(guān)自己是主機(jī)A,欺騙主機(jī)A自己是網(wǎng)關(guān),同時(shí)開(kāi)啟路由轉(zhuǎn)發(fā)功能,就可以讓主機(jī)A在正常上網(wǎng)的情況下截獲網(wǎng)絡(luò)數(shù)據(jù)包,所有數(shù)據(jù)都會(huì)經(jīng)過(guò)攻擊機(jī)然后再轉(zhuǎn)發(fā)給主機(jī)A。
如上圖所示,進(jìn)行ARP雙向欺騙后,主機(jī)A所有的通信都需要經(jīng)過(guò)攻擊機(jī),攻擊者再對(duì)目標(biāo)和網(wǎng)關(guān)之間的數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā),則可作為一個(gè)"中間人",實(shí)現(xiàn)監(jiān)聽(tīng)目標(biāo)卻又不影響目標(biāo)正常上網(wǎng)的目的??赏ㄟ^(guò)kali中自帶的arpspoof工具進(jìn)行攻擊,首先在kali上開(kāi)啟數(shù)據(jù)轉(zhuǎn)發(fā)
#終止 echo0>/proc/sys/net/ipv4/ip_forward #允許 echo1>/proc/sys/net/ipv4/ip_forward
首先來(lái)看我們攻擊機(jī)的mac地址為0029AE:FB
然后使用arpspoof進(jìn)行雙向毒化攻擊
arpspoof-ieth0-t192.168.45.143-r192.168.45.2
開(kāi)啟后我們?cè)賮?lái)看當(dāng)前網(wǎng)絡(luò)情況
可以看到當(dāng)前網(wǎng)絡(luò)中同時(shí)發(fā)出了兩個(gè)ARP Reply,源IP分別為網(wǎng)關(guān)和主機(jī)A,源mac為攻擊機(jī)的mac地址,這里我們?cè)賮?lái)看下主機(jī)A的MAC地址緩存表
可以看到當(dāng)前主機(jī)A的MAC地址緩存表中,192.168.45.2的mac地址與我們的攻擊機(jī)一致,這里我們?cè)L問(wèn)一下TideFinger 潮汐指紋識(shí)別網(wǎng)站,也是可以正常訪問(wèn)的。
然后再看我們攻擊機(jī)有沒(méi)有抓到主機(jī)A訪問(wèn)http://finger.tidesec.net/的流量
以上就是ARP雙向欺騙劫持流量的內(nèi)容,那么,ARP雙向欺騙除了能做流量劫持外,還可以做DNS劫持,假如主機(jī)A想要訪問(wèn)www.baidu.com,我們可以通過(guò)毒化DNS來(lái)達(dá)到讓主機(jī)A跳轉(zhuǎn)到我們的釣魚(yú)站點(diǎn)來(lái)。這里需要用到我們?cè)趉ali中自帶的ettercap,在使用前先修改一下它DNS的配置文件。
vim/etc/ettercap/etter.dns
然后打開(kāi)ettercap,點(diǎn)擊開(kāi)始按鈕
ettercap-G
掃描當(dāng)前網(wǎng)絡(luò)
將目標(biāo)主機(jī)和網(wǎng)關(guān)分別添加到Target1和Target2中
添加完畢之后,打開(kāi)ARP poisoning,選擇Sniff remote connections,點(diǎn)擊OK
然后選擇Plugins-Manager Plugins,勾選DNS_Spoof。
然后點(diǎn)擊左上角的start按鈕即可開(kāi)始攻擊。
這時(shí)再去訪問(wèn)www.baidu.com時(shí),即可跳轉(zhuǎn)的我們剛剛所劫持的網(wǎng)站中,如下圖所示。
審核編輯:劉清
-
DNS服務(wù)器
+關(guān)注
關(guān)注
0文章
21瀏覽量
8452 -
電磁波
+關(guān)注
關(guān)注
21文章
1457瀏覽量
53859 -
FCS
+關(guān)注
關(guān)注
4文章
32瀏覽量
14472 -
TCP協(xié)議
+關(guān)注
關(guān)注
1文章
91瀏覽量
12085
原文標(biāo)題:簡(jiǎn)析ARP欺騙
文章出處:【微信號(hào):Tide安全團(tuán)隊(duì),微信公眾號(hào):Tide安全團(tuán)隊(duì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論