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