ARP攻擊原理詳細(xì)分析
ARP攻擊原理詳細(xì)分析
針對(duì)ARP表的攻擊
ARP表是IP地址和MAC地址的映射關(guān)系表,任何實(shí)現(xiàn)了IP協(xié)議棧的設(shè)備,一般情況下都通過該表維護(hù)IP地址和MAC地址的對(duì)應(yīng)關(guān)系,這是為了避免ARP解析而造成的廣播數(shù)據(jù)報(bào)文對(duì)網(wǎng)絡(luò)造成沖擊。ARP表的建立一般情況下是通過二個(gè)途徑:
1、 主動(dòng)解析,如果一臺(tái)計(jì)算機(jī)想與另外一臺(tái)不知道MAC地址的計(jì)算機(jī)通信,則該計(jì)算機(jī)主動(dòng)發(fā)ARP請(qǐng)求,通過ARP協(xié)議建立(前提是這兩臺(tái)計(jì)算機(jī)位于同一個(gè)IP子網(wǎng)上);
2、 被動(dòng)請(qǐng)求,如果一臺(tái)計(jì)算機(jī)接收到了一臺(tái)計(jì)算機(jī)的ARP請(qǐng)求,則首先在本地建立請(qǐng)求計(jì)算機(jī)的IP地址和MAC地址的對(duì)應(yīng)表。
因此,如果一個(gè)攻擊者通過變換不同的IP地址和MAC地址,向同一臺(tái)設(shè)備,比如三層交換機(jī)發(fā)送大量的ARP請(qǐng)求,則被攻擊設(shè)備可能會(huì)因?yàn)锳RP緩存溢出而崩潰。
針對(duì)ARP表項(xiàng),還有一個(gè)可能的攻擊就是誤導(dǎo)計(jì)算機(jī)建立正確的ARP表。根據(jù)ARP協(xié)議www.runet.cn,如果一臺(tái)計(jì)算機(jī)接收到了一個(gè)ARP請(qǐng)求報(bào)文,在滿足下列兩個(gè)條件的情況下,該計(jì)算機(jī)會(huì)用ARP請(qǐng)求報(bào)文中的源IP地址和源MAC地址更新自己的ARP緩存:
1、 如果發(fā)起該ARP請(qǐng)求的IP地址在自己本地的ARP緩存中;
2、 請(qǐng)求的目標(biāo)IP地址不是自己的。
可以舉一個(gè)例子說明這個(gè)過程,假設(shè)有三臺(tái)計(jì)算機(jī)A,B,C,其中B已經(jīng)正確建立了A和C計(jì)算機(jī)的ARP表項(xiàng)。假設(shè)A是攻擊者,此時(shí),A發(fā)出一個(gè)ARP請(qǐng)求報(bào)文,該請(qǐng)求報(bào)文這樣構(gòu)造:
1、 源IP地址是C的IP地址,源MAC地址是A的MAC地址;
2、 請(qǐng)求的目標(biāo)IP地址是A的IP地址。
這樣計(jì)算機(jī)B在收到這個(gè)ARP請(qǐng)求報(bào)文后(ARP請(qǐng)求是廣播報(bào)文,網(wǎng)絡(luò)上所有設(shè)備都能收到),網(wǎng)站防御系統(tǒng)發(fā)現(xiàn)B的ARP表項(xiàng)已經(jīng)在自己的緩存中,但MAC地址與收到的請(qǐng)求的源MAC地址不符,于是根據(jù)ARP協(xié)議,使用ARP請(qǐng)求的源MAC地址(即A的MAC地址)更新自己的ARP表。
這樣B的ARP混存中就存在這樣的錯(cuò)誤ARP表項(xiàng):C的IP地址跟A的MAC地址對(duì)應(yīng)。這樣的結(jié)果是, B發(fā)給C的數(shù)據(jù)都被計(jì)算機(jī)A接收到。
針對(duì)流項(xiàng)目表的攻擊
有的網(wǎng)絡(luò)設(shè)備為了加快轉(zhuǎn)發(fā)效率,建立了所謂的流緩存。所謂流,可以理解為一臺(tái)計(jì)算機(jī)的一個(gè)進(jìn)程到另外一臺(tái)計(jì)算機(jī)的一個(gè)進(jìn)程之間的數(shù)據(jù)流。如果表現(xiàn)在TCP/IP協(xié)議上,則是由(源IP地址,目的IP地址,協(xié)議號(hào),源端口號(hào),目的端口號(hào))五元組共同確定的所有數(shù)據(jù)報(bào)文。
一個(gè)流緩存表一般由該五元組為索引,每當(dāng)設(shè)備接收到一個(gè)IP報(bào)文后,會(huì)首先分析IP報(bào)頭,把對(duì)應(yīng)的五元組數(shù)據(jù)提取出來,進(jìn)行一個(gè)HASH運(yùn)算,然后根據(jù)運(yùn)算結(jié)果查詢流緩存,如果查找成功,則根據(jù)查找的結(jié)果進(jìn)行處理,如果查找失敗,則新建一個(gè)流緩存項(xiàng),查路由表,根據(jù)路由表查詢結(jié)果填完整這個(gè)流緩存,然后對(duì)數(shù)據(jù)報(bào)文進(jìn)行轉(zhuǎn)發(fā)(具體轉(zhuǎn)發(fā)是在流項(xiàng)目創(chuàng)建前還是創(chuàng)建后并不重要)。
可以看出,如果一個(gè)攻擊者發(fā)出大量的源IP地址或者目的IP地址變化的數(shù)據(jù)報(bào)文,就可能導(dǎo)致設(shè)備創(chuàng)建大量的流項(xiàng)目,因?yàn)椴煌脑碔P地址和不同的目標(biāo)IP地址對(duì)應(yīng)不同的流。這樣可能導(dǎo)致流緩存溢出。