ARP欺騙的攻擊與防范
如同現(xiàn)實(shí)社會(huì)一樣,網(wǎng)絡(luò)虛擬社會(huì)也存在著各式各樣的虛假信息,從黑客攻擊掉網(wǎng)絡(luò)釣魚(yú)甚至社會(huì)工程學(xué)欺詐,我們所要面對(duì)的安全問(wèn)題比比皆是。ARP(Address Resolution Protocol)是地址解析協(xié)議,是一種將IP地址轉(zhuǎn)化成物理地址的協(xié)議。一些攻擊者通過(guò)利用ARP欺騙技術(shù)實(shí)現(xiàn)對(duì)數(shù)據(jù)的截取和偵聽(tīng)。
一、ARP欺騙
ARP協(xié)議用于IP地址到MAC地址的轉(zhuǎn)換,此映射關(guān)系存儲(chǔ)在ARP緩存表中,若ARP緩存表被他人非法修改,則會(huì)導(dǎo)致發(fā)送給正確主機(jī)的數(shù)據(jù)包發(fā)送給另外一臺(tái)由攻擊者控制的主機(jī)。ARP欺騙(ARP spoofing),也叫ARP毒藥(ARP poison),即可完成這些功能。
假設(shè)攻擊者和目標(biāo)主機(jī)在同一個(gè)局域網(wǎng)中,并且想要截獲和偵聽(tīng)目標(biāo)主機(jī)到網(wǎng)關(guān)間的所有數(shù)據(jù)。當(dāng)然,對(duì)于使用集線器的局域網(wǎng)環(huán)境,攻擊者只需要把網(wǎng)卡設(shè)置為混雜模式即可。但是現(xiàn)在的局域網(wǎng)都是交換機(jī)了,不僅可以提高局域網(wǎng)的容量,而且可以提高安全性。在這種情況下,攻擊者首先會(huì)試探交換機(jī)是否存在失敗保護(hù)模式(fail-safe mode),是交換機(jī)所處的特殊模式狀態(tài)。交換機(jī)維護(hù)IP地址和MAC地址的映射關(guān)系時(shí)會(huì)花費(fèi)一定處理能力,當(dāng)網(wǎng)絡(luò)通信時(shí)出現(xiàn)大量虛假M(fèi)AC地址時(shí),某些類型的交換機(jī)會(huì)出現(xiàn)過(guò)載情況,從而轉(zhuǎn)換到失敗保護(hù)模式。若交換機(jī)不存在失敗保護(hù)模式,則需要使用ARP欺騙技術(shù)。
攻擊者主機(jī)需要兩塊網(wǎng)卡,IP地址分別是192.168.0.5和192.168.0.6,插入交換機(jī)的兩個(gè)端口,準(zhǔn)備截獲和偵聽(tīng)目標(biāo)主機(jī)192.168.0.3和路由器192.168.0.1之間的所有通信。另外攻擊者主機(jī)還需要有IP數(shù)據(jù)包轉(zhuǎn)發(fā)功能,此項(xiàng)功能在Linux下只需要執(zhí)行命令echo 1> /proc/sys/net/ipv4/ip_forward就可以。以192.168.0.4的網(wǎng)絡(luò)通信為例,正常的ARP轉(zhuǎn)換如下:
1.主機(jī)A192.168.0.4想要與路由器192.168.0.1通信,從而接入Internet。
2.主機(jī)A以廣播的方式發(fā)送ARP請(qǐng)求,希望得到路由器的MAC。
3.交換機(jī)收到ARP請(qǐng)求,并把此請(qǐng)求發(fā)送給連接到交換機(jī)的各個(gè)主機(jī)。同時(shí),交換機(jī)將更新它的MAC地址和端口之間的映射表,即將192.168.0.4綁定它所連接的端口。
4.路由器收到A的ARP請(qǐng)求后,發(fā)出帶有自身MAC地址的ARP響應(yīng)。
5.路由器更新ARP緩存表,綁定A的IP地址和MAC地址。
6.交換機(jī)收到了路由器對(duì)A的ARP響應(yīng)后,查找它的MAC地址和端口之間的映射表,把此ARP響應(yīng)數(shù)據(jù)包發(fā)送到相應(yīng)的端口。同時(shí),交換機(jī)更新它的MAC地址和端口之間的影射表,即將192.168.0.1綁定它所連接的端口。
7.主機(jī)A收到ARP響應(yīng)數(shù)據(jù)包,更新ARP緩存表,綁定路由器的IP地址和MAC地址。
8.主機(jī)A使用更新后的MAC地址信息把數(shù)據(jù)發(fā)送給路由器,通信通道就此建立。
ARP欺騙需要攻擊者迅速地誘使目標(biāo)主機(jī)192.168.0.3和路由器192.168.0.1都和它建立通信,從而使自己成為中間人MiM(Man in Middle)。換句話說(shuō),攻擊者的主機(jī)此時(shí)相當(dāng)于一個(gè)被攻擊者完全控制的路由器,目標(biāo)主機(jī)和路由器之間的所有數(shù)據(jù)通信都要由攻擊者主機(jī)轉(zhuǎn)發(fā),攻擊者也就能對(duì)數(shù)據(jù)作各種處理。要達(dá)到同時(shí)欺騙目標(biāo)主機(jī)和路由器的目的,攻擊者應(yīng)打開(kāi)兩個(gè)命令界面,執(zhí)行兩次ARP欺騙:一次誘使目標(biāo)主機(jī)認(rèn)為攻擊者的主機(jī)有路由器的MAC地址,這可以利用IP地址欺騙技術(shù),偽造路由器的IP地址,從攻擊者主機(jī)的一塊網(wǎng)卡上發(fā)送給目標(biāo)主機(jī)ARP請(qǐng)求包,則錯(cuò)誤的MAC地址和IP地址的映射將更新到目標(biāo)主機(jī);另一次使路由器相信攻擊者的主機(jī)具有目標(biāo)主機(jī)的MAC地址,方法和前面相似。
ARP欺騙的防范:
中毒的網(wǎng)絡(luò),就會(huì)一直有發(fā)送arp病毒包的,這些arp病毒包會(huì)誤導(dǎo)你的機(jī)器對(duì)網(wǎng)關(guān)mac地址的解析。所以需要綁定mac地址。兩種方法:
1、列出局域網(wǎng)內(nèi)所有機(jī)器的MAC地址。
# arpAddress HWtype HWaddress Flags Mask Iface
192.168.1.1 ether 00:07:E9:2A:6F:C6,然后,綁定MAC地址, #arp -s 192.168.1.1 00:07:E9:2A:6F:C6
注意:假如用戶的網(wǎng)關(guān)設(shè)置了hostname的話,這里192.168.1.1就有可能需要換成hostname。
2、創(chuàng)建一個(gè)/etc/ethers文件,比如你要綁定網(wǎng)關(guān),那就在/etc/ethers里寫(xiě)上:192.168.1.1 00:07:E9:2A:6F:C6,然后執(zhí)行 #arp -f ,每次重啟機(jī)器后需要重新綁定MAC地址。
另外,mac地址的綁定需要雙向的,即機(jī)器a綁定了機(jī)器b,機(jī)器b也要綁定機(jī)器a,這樣arp病毒才會(huì)被徹底擋住。
【編輯推薦】