深剖ARP協(xié)議的“欺騙行為”
IP地址的工作不單單是IP協(xié)議來完成的,其中還有很多細(xì)小的協(xié)議來協(xié)助這個(gè)工作。那么其中惡名昭住的ARP協(xié)議也是其中的一名。為什么說它惡名昭?。恳?yàn)獒槍@個(gè)協(xié)議的漏洞和攻擊一直是我們安全問題的重要防范對象。
一、ARP協(xié)議工作原理
在TCP IP協(xié)議中,每一個(gè)網(wǎng)絡(luò)結(jié)點(diǎn)是用IP地址標(biāo)識的,IP地址是一個(gè)邏輯地址。而在以太網(wǎng)中數(shù)據(jù)包是靠48位MAC地址(物理地址)尋址的。因此,必須建立IP地址與MAC地址之間的對應(yīng)(映射)關(guān)系,ARP協(xié)議就是為完成這個(gè)工作而設(shè)計(jì)的。
TCP IP協(xié)議棧維護(hù)著一個(gè)ARP cache表,在構(gòu)造網(wǎng)絡(luò)數(shù)據(jù)包時(shí),首先從ARP表中找目標(biāo)IP對應(yīng)的MAC地址,如果找不到,就發(fā)一個(gè)ARP request廣播包,請求具有該IP地址的主機(jī)報(bào)告它的MAC地址,當(dāng)收到目標(biāo)IP所有者的ARP reply后,更新ARP cache.ARP cache有老化機(jī)制。
二、ARP協(xié)議的缺陷
ARP協(xié)議是建立在信任局域網(wǎng)內(nèi)所有結(jié)點(diǎn)的基礎(chǔ)上的,它很高效,但卻不安全。它是無狀態(tài)的協(xié)議,不會(huì)檢查自己是否發(fā)過請求包,也不管(其實(shí)也不知道)是否是合法的應(yīng)答,只要收到目標(biāo)MAC是自己的ARP reply包或ARP廣播包(包括ARP request和ARP reply),都會(huì)接受并緩存。這就為ARP欺騙提供了可能,惡意節(jié)點(diǎn)可以發(fā)布虛假的ARP報(bào)文從而影響網(wǎng)內(nèi)結(jié)點(diǎn)的通信,甚至可以做“中間人”。
三、常見ARP協(xié)議欺騙形式
1、假冒ARP reply包(單播)
XXX,I have IP YYY and my MAC is ZZZ!
2、假冒ARP reply包(廣播)
Hello everyone! I have IP YYY and my MAC is ZZZ!
向所有人散布虛假的IP/MAC
3、假冒ARP request(廣播)
Ihave IP XXX and my MAC is YYY.
Who has IP ZZZ? tell me please!
表面為找IP ZZZ的MAC,實(shí)際是廣播虛假的IP、MAC映射(XXX,YYY)
4、假冒ARP request(單播)
已知IP ZZZ的MAC
Hello IP ZZZ! I have IPXXX and my MAC is YYY.
5、假冒中間人
欺騙主機(jī)(MAC為MMM)上啟用包轉(zhuǎn)發(fā)
向主機(jī)AAA發(fā)假冒ARP Reply:
AAA,I have IP BBB and my MAC is MMM,
向主機(jī)BBB發(fā)假冒ARP Reply:
BBB,I have IP AAA and my MAC is MMM
由于ARP Cache的老化機(jī)制,有時(shí)還需要做周期性連續(xù)ARP協(xié)議欺騙。