0x01 網(wǎng)關(guān)是啥?
網(wǎng)關(guān)是工作在OSI七層模型中的傳輸層或者應(yīng)用層,用于高層協(xié)議的不同
網(wǎng)絡(luò)之間的連接,網(wǎng)關(guān)就好比一個(gè)房間通向另一個(gè)房間的一扇門(mén)。
0x02 ARP協(xié)議
ARP(Address Resolution Protocol)地址轉(zhuǎn)換協(xié)議,工作在OSI模型的數(shù)據(jù)鏈路層,在以太網(wǎng)中,網(wǎng)絡(luò)設(shè)備之間互相通信是用MAC地址而不是IP地址,ARP協(xié)議就是用來(lái)把IP地址轉(zhuǎn)換為MAC地址的。而RARP和ARP相反,它是反向地址轉(zhuǎn)換協(xié)議,把MAC地址轉(zhuǎn)換為IP地址。
假設(shè)A(192.168.1.2)與B(192.168.1.3)在同一局域網(wǎng),A要和B實(shí)現(xiàn)通信。A首先會(huì)發(fā)送一個(gè)數(shù)據(jù)包到廣播地址(192.168.1.255),該數(shù)據(jù)包中包含了源IP(A)、源MAC、目的IP(B)、目的MAC,這個(gè)數(shù)據(jù)包會(huì)被發(fā)放給局域網(wǎng)中所有的主機(jī),但是只有B主機(jī)會(huì)回復(fù)一個(gè)包含了源IP(B)、源MAC、目的IP(A)、目的MAC的數(shù)據(jù)包給A,同時(shí)A主機(jī)會(huì)將返回的這個(gè)地址保存在ARP緩存表中。
0x03 ARP欺騙原理
在每臺(tái)主機(jī)中都有ARP緩存表,緩存表中記錄了IP地址與MAC地址的對(duì)應(yīng)關(guān)系,而局域網(wǎng)數(shù)據(jù)傳輸依靠的是MAC地址(網(wǎng)絡(luò)設(shè)備之間互相通信是用MAC地址而不是IP地址)。
假設(shè)主機(jī) A 192.168.1.2,B 192.168.1.3,C 192.168.1.4; 網(wǎng)關(guān) G 192.168.1.1; 在同一局域網(wǎng),主機(jī)A和B通過(guò)網(wǎng)關(guān)G相互通信,就好比A和B兩個(gè)人寫(xiě)信,由郵遞員G送信,C永遠(yuǎn)都不會(huì)知道A和B之間說(shuō)了些什么話。但是并不是想象中的那么安全,在ARP緩存表機(jī)制存在一個(gè)缺陷,就是當(dāng)請(qǐng)求主機(jī)收到ARP應(yīng)答包后,不會(huì)去驗(yàn)證自己是否向?qū)Ψ街鳈C(jī)發(fā)送過(guò)ARP請(qǐng)求包,就直接把這個(gè)返回包中的IP地址與MAC地址的對(duì)應(yīng)關(guān)系保存進(jìn)ARP緩存表中,如果原有相同IP對(duì)應(yīng)關(guān)系,則原有的會(huì)被替換。
這樣C就有了偷聽(tīng)A和B的談話的可能,繼續(xù)思考上面的例子:
C假扮郵遞員,首先要告訴A說(shuō):“我就是郵遞員” (C主機(jī)向A發(fā)送構(gòu)造好的返回包,源IP為G 192.168.1.1,源MAC為C自己的MAC地址),愚蠢的A很輕易的相信了,直接把“C是郵遞員”這個(gè)信息記在了腦子里;
C再假扮A,告訴郵遞員:“我就是A” (C向網(wǎng)關(guān)G發(fā)送構(gòu)造好的返回包,源IP為A 192.168.1.2,源MAC地址為自己的MAC地址),智商捉急的郵遞員想都沒(méi)想就相信了,以后就把B的來(lái)信送給了C,C當(dāng)然就可以知道A和B之間聊了些什么

上面ABCG的故事就是ARP雙向欺騙的原理了
ARP單向欺騙就更好理解了,C只向A發(fā)送一個(gè)返回包,告訴A:G 192.168.1.1 的MAC地址為 5c-63-bf-79-1d-fa(一個(gè)錯(cuò)誤的MAC地址,C的MAC地址),A把這個(gè)信息記錄在了緩存表中,而G的緩存表不變,也就是說(shuō),A把數(shù)據(jù)包給了C,而G的包還是給A,這樣就是ARP單向欺騙了。
0x04 實(shí)戰(zhàn)ARP欺騙獲取圖片
-
目標(biāo)主機(jī)緩存表
1arp.jpg -
目標(biāo)IP和本機(jī)IP
目標(biāo)IP.jpg -
再進(jìn)行arp欺騙之前必須要開(kāi)啟IP轉(zhuǎn)發(fā),否則當(dāng)欺騙成功之后,目標(biāo)機(jī)會(huì)斷網(wǎng),這樣會(huì)被對(duì)方察覺(jué)。輸出1,說(shuō)明已經(jīng)成功開(kāi)啟IP轉(zhuǎn)發(fā)
sysctl -w net.ipv4.ip_forward=1 或者 echo 1 > /proc/sys/net/ipv4/ip_forward
image.png -
向目標(biāo)192.168.124.133發(fā)送返回包,包含內(nèi)容:
源ip(網(wǎng)關(guān)):172.16.44.254
源MAC:00:0c:29:19:f5:77
image.png
語(yǔ)句格式:arpspoof [-i interface] [-c own|host|both] [-t target] [-r] host
image.png
此時(shí)再來(lái)看目標(biāo)主機(jī)ARP緩存
2arp.jpg
可以看出目標(biāo)主機(jī)arp緩存已經(jīng)發(fā)生了變化,在緩存表中所記錄的網(wǎng)關(guān)(172.16.44.254)的MAC已經(jīng)變?yōu)榱斯粽叩腗AC以上就是一次簡(jiǎn)單的ARP欺騙了
0x05 運(yùn)行driftnet截取被攻擊機(jī)正在瀏覽的網(wǎng)頁(yè)的圖片


因?yàn)楸还魴C(jī)器還沒(méi)上網(wǎng)所以最上邊的終端窗口只有輸入的命令,右上的driftnet窗口黑乎乎一片什么都沒(méi)有,但是可以看到上邊的三個(gè)終端都已經(jīng)在工作了
接著我用被攻擊的機(jī)器上網(wǎng),測(cè)試效果






