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