摘要:為了更有效的防御ARP攻擊,本文分析了局域網(wǎng)中ARP協(xié)議的工作過程以及欺騙原理,給出了一種有效的充分考慮局域網(wǎng)安全性的防御算法,通過分析,可以認為這一算法是一個可以在網(wǎng)絡(luò)安全防范中充分應(yīng)用的,值得大力推廣。
關(guān)鍵詞:ARP攻擊;ARP協(xié)議;ARP防御
中圖分類號:TP393.08 文獻標(biāo)識碼:A 文章編號:1674-7712 (2012) 10-0131-01
一、ARP協(xié)議概述
ARP,也叫做地址解析協(xié)議,其功能是實現(xiàn)用IP地址經(jīng)過一系列的轉(zhuǎn)換形成物理地址。在常用的以太網(wǎng)環(huán)境下,為了能夠向目標(biāo)主機傳送正確的報文,我們要把目的主機的32位IP地址通過一定的方式轉(zhuǎn)換成為48位以太網(wǎng)的地址。要實現(xiàn)這一功能,需要有一組服務(wù)能夠?qū)崿F(xiàn)將IP地址轉(zhuǎn)換為物理地址,這組協(xié)議稱為ARP協(xié)議。
ARP攻擊就是通過偽造IP地址和MAC地址實現(xiàn)ARP欺騙,能夠在網(wǎng)絡(luò)中產(chǎn)生大量的ARP通信量使網(wǎng)絡(luò)阻塞,攻擊者只要持續(xù)不斷的發(fā)出偽造的ARP響應(yīng)包就能更改目標(biāo)主機ARP緩存中的IP-MAC條目,造成網(wǎng)絡(luò)中斷或中間人攻擊。
二、ARP攻擊原理
ARP欺騙分為二種,第一種ARP欺騙是截獲網(wǎng)關(guān)數(shù)據(jù)。它通過向路由器發(fā)送一系列錯誤的內(nèi)網(wǎng)MAC地址,并按照一定的頻率不斷進行發(fā)送,使真實的地址信息無法通過更新保存在路由器中,結(jié)果路由器的所有數(shù)據(jù)只能發(fā)送給錯誤的MAC地址,造成正常終端無法收到信息。
第二種ARP欺騙的原理是——偽造網(wǎng)關(guān)。它的原理是通過建立偽造的網(wǎng)關(guān),讓被它欺騙的PC機向偽造的網(wǎng)關(guān)發(fā)數(shù)據(jù),而不是通過正常的路由器途徑上網(wǎng)。
三、ARP攻擊防御算法
主機在接收到ARP請求報文,和接收到相對滯后的ARP應(yīng)答報文,都有可能發(fā)生ARP欺騙。因此,我們基于以下三點來設(shè)計防御算法:
1.當(dāng)主機接收到一個ARP 請求情況的時候,向發(fā)送方回復(fù)一個應(yīng)答報文,但是不更新ARP緩沖區(qū),并再向源主機發(fā)送一個ARP請求,發(fā)送請求報文后的過程按第3點來處理。2.對于所有的未發(fā)送過ARP請求,而主機接收到的ARP 應(yīng)答報文采取丟棄操作。3.主機在先發(fā)送了ARP 請求的情況下,接受到目標(biāo)IP 回復(fù)的ARP 應(yīng)答,判斷是否是目標(biāo)主機發(fā)送的第一個應(yīng)答報文,如果是,則更新緩沖區(qū),如果不是,與之前接收的應(yīng)答包對比,判斷是否要丟棄該包。
為了實現(xiàn)這一算法,我們在程序中建立兩個鏈表:一個是request,用來存儲的是發(fā)送過請求報文的目標(biāo)主機的IP地址;另一個是response,用來存放那些收到了ARP應(yīng)答的IP地址與MAC地址的映射對。我們將兩個線性表設(shè)置為動態(tài)更新模式,在算法中編寫一個固定時間段的代碼,超過編寫的時間段的記錄會被自動刪除。這樣我們便可以很方便的實現(xiàn)線性表的動態(tài)更新模式。算法的具體模塊如下:
void rec_ARP_req() //接收ARP請求處理模塊
{
接收ARP請求報文;
if(目標(biāo)IP=本機IP)
{
回復(fù)ARP請求;
sen_ARP_req(); //調(diào)用發(fā)送ARP請求函數(shù)發(fā)送請求
}
else
丟棄該請求包;
}
void sen_ARP_req() //發(fā)送ARP請求函數(shù)
{
if(目標(biāo)IP不在request表中)
添加目標(biāo)IP到request表中;
發(fā)送ARP請求;
}
void rec_ARP_rep() //接收ARP應(yīng)答處理模塊
{
接收ARP應(yīng)答;
添加IP-MAC映射信息到response表中;
刪除request表中對應(yīng)項;
更新ARP緩沖區(qū);
if(源IP不在request中)
丟棄該ARP應(yīng)答包;
else
{
if(源MAC地址=對應(yīng)項MAC地址)
更新ARP緩沖區(qū);
else
丟棄該ARP應(yīng)答包;
}
}
在程序中,通過引入鏈表等數(shù)據(jù)結(jié)構(gòu),執(zhí)行速度也許會比原來的執(zhí)行速度慢。特別是在接受ARP應(yīng)答處理模塊當(dāng)中,每收到一次ARP應(yīng)答,就要更新一次ARP緩沖區(qū),更改后的協(xié)議要對該應(yīng)答進行復(fù)雜的處理,判斷是否發(fā)生過ARP欺騙攻擊。但是,本文的算法在安全性能上改善了以往的算法中對于ARP報文不進行檢驗操作的不足,增強了主機對ARP攻擊的防御,同時,程序也具有較強的靈活性,這也是傳統(tǒng)的算法所不能比的。
四、結(jié)論
本文提出的算法,充分考慮了ARP協(xié)議自身的不足,從網(wǎng)絡(luò)安全性的角度出發(fā),對收到的ARP請求或應(yīng)答先進行檢驗,雖然可能會降低程序運行速度,但是卻可以使ARP協(xié)議的安全性能得到大大提升,能夠有效防止ARP欺騙與攻擊的發(fā)生,具有廣泛的可應(yīng)用性。
參考文獻:
[1]RICHARD STEVENS W1 TCP/ IP 詳解(卷1:協(xié)議)[M].北京:機械工業(yè)出版社,20001
[2]唐濤.ARP欺騙攻擊分析及一種新防御算法[J].科技風(fēng),2008:33-34
[3]鄭文兵,李成忠.ARP欺騙原理及一種防范算法[J].江南大學(xué)學(xué)報(自然科學(xué)版),2003:574-577