中間人攻擊——ARP欺騙的原理、實(shí)戰(zhàn)及防御
1.1 什么是網(wǎng)關(guān)
首先來(lái)簡(jiǎn)單解釋一下什么是網(wǎng)關(guān),網(wǎng)關(guān)工作在OSI七層模型中的傳輸層或者應(yīng)用層,用于高層協(xié)議的不同網(wǎng)絡(luò)之間的連接,簡(jiǎn)單地說(shuō),網(wǎng)關(guān)就好比是一個(gè)房間通向另一個(gè)房間的一扇門(mén)。
1.2 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緩存表中。
1.3 ARP欺騙原理
上面提到過(guò)了ARP緩存表,在每臺(tái)主機(jī)都有一個(gè)ARP緩存表,緩存表中記錄了IP地址與MAC地址的對(duì)應(yīng)關(guān)系,而局域網(wǎng)數(shù)據(jù)傳輸依靠的是MAC地址。
假設(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地址),A把這個(gè)信息記錄在了緩存表中,而G的緩存表不變,也就是說(shuō),A把數(shù)據(jù)包給了C,而G的包還是給A,這樣就是ARP單向欺騙了。
2.1 實(shí)戰(zhàn)ARP欺騙
ARP欺騙又被稱為ARP毒化,屬于中間人攻擊,我用虛擬機(jī)來(lái)模擬一下ARP欺騙的全過(guò)程
首先,看一下
ARP緩存表中默認(rèn)已經(jīng)存在了網(wǎng)關(guān)IP、MAC地址的記錄
看一下目標(biāo)主機(jī)的ARP緩存表
目標(biāo)IP與本機(jī)IP
再進(jìn)行arp欺騙之前必須要開(kāi)啟IP轉(zhuǎn)發(fā),否則當(dāng)欺騙成功之后,目標(biāo)機(jī)會(huì)斷網(wǎng),這樣會(huì)被對(duì)方察覺(jué)
sysctl -w net.ipv4.ip_forward=1 或者 echo 1 > /proc/sys/net/ipv4/ip_forward
已經(jīng)成功開(kāi)啟IP轉(zhuǎn)發(fā)
向目標(biāo)192.168.124.133發(fā)送返回包,包含內(nèi)容:
源ip:192.168.124.2
源MAC:00:0c:29:86:a1:04
此時(shí)再來(lái)看目標(biāo)主機(jī)ARP緩存
可以看出目標(biāo)主機(jī)arp緩存已經(jīng)發(fā)生了變化,在緩存表中所記錄的網(wǎng)關(guān)(192.168.124.2)的MAC已經(jīng)變?yōu)榱斯粽叩腗AC
以上就是一次簡(jiǎn)單的ARP欺騙了
2.2 ARP欺騙的危害
局域網(wǎng)之間主機(jī)通信會(huì)收到影響,如果是網(wǎng)關(guān)欺騙,上互聯(lián)網(wǎng)也會(huì)受影響
黑客利用ARP欺騙可以竊取用戶敏感信息、掛馬等
在這里我簡(jiǎn)單演示一下ARP欺騙嗅探Telnet賬戶密碼
3 怎樣防范ARP欺騙
1.在主機(jī)綁定網(wǎng)關(guān)MAC與IP地址為靜態(tài)(默認(rèn)為動(dòng)態(tài)),命令:arp -s 網(wǎng)關(guān)IP 網(wǎng)關(guān)MAC
2.在網(wǎng)關(guān)綁定主機(jī)MAC與IP地址
3.使用ARP防火墻