艾泰路由器如何解決ARP攻擊的詳細(xì)分析
艾泰路由器的市場需求量很高,這里主要講解了艾泰路由器是如何解決ARP攻擊問題的。局域網(wǎng)內(nèi)有人使用ARP欺騙的木馬程序(比如:傳奇盜號的軟件,某些傳奇外掛中也被惡意加載了此程序)。要了解故障原理,我們先來了解一下ARP協(xié)議。
在局域網(wǎng)中,通過ARP協(xié)議來完成IP地址轉(zhuǎn)換為第二層物理地址(即MAC地址)的。ARP協(xié)議對網(wǎng)絡(luò)安全具有重要的意義。通過偽造IP地址和MAC地址實現(xiàn)ARP欺騙,能夠在網(wǎng)絡(luò)中產(chǎn)生大量的ARP通信量使網(wǎng)絡(luò)阻塞。
ARP協(xié)議是“Address Resolution Protocol”(地址解析協(xié)議)的縮寫。在局域網(wǎng)中,網(wǎng)絡(luò)中實際傳輸?shù)氖?ldquo;幀”,幀里面是有目標(biāo)主機(jī)的MAC地址的。在以太網(wǎng)中,一個主機(jī)要和另一個主機(jī)進(jìn)行直接通信,必須要知道目標(biāo)主機(jī)的MAC地址。但這個目標(biāo)MAC地址是如何獲得的呢?它就是通過地址解析協(xié)議獲得的。所謂“地址解析”就是主機(jī)在發(fā)送幀前將目標(biāo)IP地址轉(zhuǎn)換成目標(biāo)MAC地址的過程。ARP協(xié)議的基本功能就是通過目標(biāo)設(shè)備的IP地址,查詢目標(biāo)設(shè)備的MAC地址,以保證通信的順利進(jìn)行。
我們以主機(jī)A(192.168.16.1)向主機(jī)B(192.168.16.2)發(fā)送數(shù)據(jù)為例。當(dāng)發(fā)送數(shù)據(jù)時,主機(jī)A會在自己的ARP緩存表中尋找是否有目標(biāo)IP地址。如果找到了,也就知道了目標(biāo)MAC地址,直接把目標(biāo)MAC地址寫入幀里面發(fā)送就可以了;如果在ARP緩存表中沒有找到相對應(yīng)的IP地址,主機(jī)A就會在網(wǎng)絡(luò)上發(fā)送一個廣播,目標(biāo)MAC地址是“FF.FF.FF.FF.FF.FF”,這表示向同一網(wǎng)段內(nèi)的所有主機(jī)發(fā)出這樣的詢問:“192.168.16.2的MAC地址是什么?”網(wǎng)絡(luò)上其他主機(jī)并不響應(yīng)ARP詢問,只有主機(jī)B接收到這個幀時,才向主機(jī)A做出這樣的回應(yīng):“192.168.16.2的MAC地址是bb-bb-bb-bb-bb-bb”。這樣,主機(jī)A就知道了主機(jī)B的MAC地址,它就可以向主機(jī)B發(fā)送信息了。同時它還更新了自己的ARP緩存表,下次再向主機(jī)B發(fā)送信息時,直接從ARP緩存表里查找就可以了。ARP緩存表采用了老化機(jī)制,在一段時間內(nèi)如果表中的某一行沒有使用,就會被刪除,這樣可以大大減少ARP緩存表的長度,加快查詢速度。
ARP協(xié)議的基礎(chǔ)就是信任局域網(wǎng)內(nèi)所有的人,那么就很容易實現(xiàn)在以太網(wǎng)上的ARP欺騙。對目標(biāo)A進(jìn)行欺騙,A去Ping主機(jī)C卻發(fā)送到了DD-DD-DD-DD-DD-DD這個地址上。如果進(jìn)行欺騙的時候,把C的MAC地址騙為DD-DD-DD-DD-DD-DD,于是A發(fā)送到C上的數(shù)據(jù)包都變成發(fā)送給D的了。這不正好是D能夠接收到A發(fā)送的數(shù)據(jù)包了么,嗅探成功。對這個變化一點都沒有意識到,但是接下來的事情就讓A產(chǎn)生了懷疑。因為A和C連接不上了。D對接收到A發(fā)送給C的數(shù)據(jù)包可沒有轉(zhuǎn)交給C。
做“man in the middle”,進(jìn)行ARP重定向。打開D的IP轉(zhuǎn)發(fā)功能,A發(fā)送過來的數(shù)據(jù)包,轉(zhuǎn)發(fā)給C,好比一個路由器一樣。不過,假如D發(fā)送ICMP重定向的話就中斷了整個計劃。直接進(jìn)行整個包的修改轉(zhuǎn)發(fā),捕獲到A發(fā)送給C的數(shù)據(jù)包,全部進(jìn)行修改后再轉(zhuǎn)發(fā)給C,而C接收到的數(shù)據(jù)包完全認(rèn)為是從A發(fā)送來的。不過,C發(fā)送的數(shù)據(jù)包又直接傳遞給A,倘若再次進(jìn)行對C的ARP欺騙?,F(xiàn)在D就完全成為A與C的中間橋梁了,對于A和C之間的通訊就可以了如指掌了。