通常情況下,免費(fèi)ARP主要用于檢測(cè)IP地址沖突。筆者對(duì)免費(fèi)ARP還可以防范ARP欺騙攻擊這部分內(nèi)容,在交換機(jī)上配置Gratuitous ARP(免費(fèi)ARP),來抵御針對(duì)網(wǎng)關(guān)的ARP欺騙攻擊,搭建了實(shí)驗(yàn)環(huán)境進(jìn)行驗(yàn)證,本文就將相關(guān)心得與大家分享和探討。
ARP報(bào)文有兩種類型:一種是由發(fā)送方發(fā)出的ARP Request廣播報(bào)文;另一種是由接收方返回的ARP Reply單播報(bào)文。免費(fèi)ARP(Gratuitous ARP)采用的是ARP Request廣播報(bào)文,但它的目的并不是要解析某個(gè)IP地址所對(duì)應(yīng)的MAC地址,在這種ARP報(bào)文中,目的IP地址和源IP地址都是同一個(gè),也就是發(fā)出免費(fèi)ARP報(bào)文的主機(jī)IP地址。如圖1所示就是用Wireshark抓取的免費(fèi)ARP報(bào)文內(nèi)容。
圖1 免費(fèi)ARP報(bào)文內(nèi)容
免費(fèi)ARP的作用主要有兩個(gè):一是用于IP地址沖突檢測(cè),二是用于更新ARP地址緩存表中的原有記錄。下面分別予以說明。
免費(fèi)ARP的主要作用就是用于判斷當(dāng)前主機(jī)所設(shè)置的IP地址是否已被別的主機(jī)所使用,當(dāng)免費(fèi)ARP報(bào)文以廣播的方式發(fā)送到網(wǎng)絡(luò)中之后,如果有某臺(tái)主機(jī)使用了當(dāng)前主機(jī)的IP地址,那么它就會(huì)發(fā)回一個(gè)ARP響應(yīng),這樣當(dāng)前主機(jī)就會(huì)發(fā)出IP地址沖突的警告,我們也可以得知沖突主機(jī)的MAC地址。
所以對(duì)于一臺(tái)使用靜態(tài)IP地址的主機(jī),如果重新設(shè)置IP地址,那么就必然要先發(fā)送一個(gè)免費(fèi)ARP的廣播,這點(diǎn)可以通過Wireshark抓包確認(rèn),在Wireshark的顯示過濾器中設(shè)置過濾條件為ARP,抓取到的免費(fèi)ARP報(bào)文如圖2所示。
圖2 免費(fèi)ARP報(bào)文
當(dāng)某臺(tái)主機(jī)的MAC地址發(fā)生變化時(shí),即IP地址不變,MAC地址改變,比如主機(jī)更換了網(wǎng)卡,這時(shí)這臺(tái)主機(jī)也會(huì)發(fā)送免費(fèi)ARP廣播。網(wǎng)絡(luò)中所有ARP緩存表中具有所對(duì)應(yīng)條目的主機(jī)(注意并非是所有主機(jī)),將會(huì)根據(jù)免費(fèi)ARP報(bào)文來更新自己的緩存表。
這點(diǎn)可以通過實(shí)驗(yàn)驗(yàn)證,網(wǎng)絡(luò)中有三臺(tái)主機(jī),A主機(jī)的IP地 址 為 192.168.80.77,MAC 為 00:0C:29:81:BA:30,在B主機(jī)中與A主機(jī)通信,使得B主機(jī)的ARP地址緩存表中產(chǎn)生相應(yīng)記錄:
192.168.80.7700-0C-29-81-BA-30 dynamic
然后在A主機(jī)上利用科來數(shù)據(jù)包生成器構(gòu)造一個(gè)免費(fèi)ARP報(bào)文,故意將源MAC地址修改為另一個(gè)不同的地址 00:0C:29:81:BA:88,然后將報(bào)文以廣播的形式發(fā)送出去,如圖3所示。
圖3 構(gòu)造的免費(fèi)ARP報(bào)文
此時(shí)B主機(jī)的ARP緩存表將據(jù)此更新:
192.168.80.7700-0C-29-81-BA-88 dynamic
而C主機(jī)由于一直沒有與A主機(jī)通信,緩存表中沒有相應(yīng)條目,因而不會(huì)產(chǎn)生新的條目。其實(shí)這種設(shè)計(jì)的目的也很好理解,如果C主機(jī)要與A主機(jī)通信,那么它自然會(huì)通過正常的ARP請(qǐng)求解析出主機(jī)A目前的MAC地址,因而主機(jī)A也就沒有必要利用免費(fèi)ARP通知主機(jī)C來更新ARP地址緩存表。
在交換機(jī)上通過設(shè)置免費(fèi)ARP來防御ARP攻擊,應(yīng)該是利用了免費(fèi)ARP的第二點(diǎn)特性。一般情況下,交換機(jī)上VLAN的IP地址也就是該網(wǎng)段內(nèi)主機(jī)的默認(rèn)網(wǎng)關(guān),因而交換機(jī)可以定期的在網(wǎng)絡(luò)中廣播免費(fèi)ARP,使得網(wǎng)絡(luò)中的所有主機(jī)都根據(jù)免費(fèi)ARP來更新自己的ARP地址緩存表,將網(wǎng)關(guān)IP地址對(duì)應(yīng)到正確的MAC地址,從而防止針對(duì)網(wǎng)關(guān)的ARP欺騙。
但是這種防御方式的思維很奇特,它并非要從根源上去阻止ARP欺騙攻擊,而是通過免費(fèi)ARP報(bào)文去跟ARP欺騙報(bào)文展開競(jìng)爭(zhēng),所有這種防御方式的效果如何就要打上個(gè)大大的問號(hào)了。在網(wǎng)上查找了一些相關(guān)資料,很少有提到用免費(fèi)ARP去防范ARP攻擊的,反倒是有不少資料提到如何利用免費(fèi)ARP去進(jìn)行ARP欺騙攻擊,其實(shí)這倒是一種很好的思路。
筆者也僅是從技術(shù)的角度提出一些個(gè)人的觀點(diǎn),希望能與大家共同探討。