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