ping命令來(lái)分析ICMP攻擊以及欺騙問(wèn)題
對(duì)于ICMP協(xié)議我們來(lái)說(shuō)已經(jīng)講解了不少內(nèi)容。關(guān)于它的一些基本情況,相信大家也已經(jīng)了解了不少。這里我們主要講解一下ICMP攻擊以及欺騙的問(wèn)題。對(duì)于這個(gè)問(wèn)題,我們將用Ping命令的有關(guān)操作進(jìn)行分析。
一、 ICMP簡(jiǎn)介
ICMP的全稱(chēng)是Internet Control Message Protocol(網(wǎng)間報(bào)文控制協(xié)議),它是IP不可分割的一部分,用來(lái)提供錯(cuò)誤報(bào)告。一旦發(fā)現(xiàn)各種錯(cuò)誤類(lèi)型就將其返回原主機(jī),我們平時(shí)最常見(jiàn)的ping命令就是基于ICMP的。
|-----------------------------------------
| |
| ------ ICMP ECHO request ------ |
| |HOST| -------------> |HOST| |
| | A | <----------------------- | B | |
| | | 如果存活或者沒(méi)有過(guò)濾 | | |
| ------ 將返回ICMP RCHO REPLY ------ |
| |
-----------------------------------------
這種機(jī)制就是我們通常所用的ping命令來(lái)檢測(cè)目標(biāo)主機(jī)是否可以ping到。ICMP的統(tǒng)計(jì)信息包含收發(fā)的各種類(lèi)型的ICMP報(bào)文的計(jì)數(shù)以及收發(fā)錯(cuò)誤報(bào)文的計(jì)數(shù)。
利用"show statistics ICMP"可以察看各個(gè)統(tǒng)計(jì)信息。
顯示 說(shuō)明
Message 消息
Errors 錯(cuò)誤消息
Destination Unreachable 目標(biāo)不可到達(dá)消息
Time Exceeded 超時(shí)消息
Parameter Problems 參數(shù)錯(cuò)誤消息
Source Quenchs 源抑制消息
Redirecrs 重定向消息
Echos Echo消息
Echo Replies Echo 響應(yīng)消息
Timestamps 時(shí)間戳消息
Timestamp Replies 時(shí)間戳響應(yīng)消息
Address Masks 地址掩碼請(qǐng)求消息
Address Mask Replies 地址掩碼響應(yīng)消息#p#
二、 ICMP攻擊及欺騙技術(shù)
1、 ICMP攻擊導(dǎo)致拒絕服務(wù)(DoS)
服務(wù)拒絕攻擊企圖通過(guò)使你的服務(wù)計(jì)算機(jī)崩潰或把它壓跨來(lái)阻止你提供服務(wù),服務(wù)拒絕攻擊是最容易實(shí)施的攻擊行為。
由于在早期的階段,路由器對(duì)包的最大尺寸都有限制,許多操作系統(tǒng)對(duì)TCP/IP棧的實(shí)現(xiàn)在ICMP包上都是規(guī)定64KB,并且在對(duì)包的標(biāo)題頭進(jìn)行讀取之后,要根據(jù)該標(biāo)題頭里包含的信息來(lái)為有效載荷生成緩沖區(qū),當(dāng)產(chǎn)生畸形的,聲稱(chēng)自己的尺寸超過(guò)ICMP上限的包也就是加載的尺寸超過(guò)64K上限時(shí),就會(huì)出現(xiàn)內(nèi)存分配錯(cuò)誤,導(dǎo)致TCP/IP堆棧崩潰,致使接受方當(dāng)機(jī)。這就是所說(shuō)的"ping of death",現(xiàn)在網(wǎng)絡(luò)上很多號(hào)稱(chēng)能夠致使系統(tǒng)死機(jī)的軟件都是基于這個(gè)原理,我們所熟悉的工具"Winnuke"就是一例。對(duì)路由器而言,向Intel Express Switch或其后的主機(jī)發(fā)送一畸形的ICMP包可能導(dǎo)致系統(tǒng)崩。通過(guò)本地或遠(yuǎn)程發(fā)送的畸形包能蒙騙服務(wù)器。當(dāng)服務(wù)器收到畸形的ICMP包時(shí),它將繼續(xù)檢查才對(duì),然而它將丟失所有的路由功能,而且不將檢查其它連接了。主要影響Intel Express Switch 500 系列。
另外,Windows也有拒絕服務(wù)漏洞,對(duì) Win98 NT4/SP5,6 Win2K都有影響 ,當(dāng)如上系統(tǒng)受到非法碎片包包含不合法碎片 ICMP ECHOs (pings)和UDP packets攻擊,Windows系統(tǒng)會(huì)拒絕服務(wù)。直至CPU占用率達(dá)到100%,最后系統(tǒng)崩潰。(參見(jiàn)原程序)
ICMP重定向提供了一種相當(dāng)有效的DoS.不象ARP入口,這些特定主機(jī)路由入口永不過(guò)期。注意,攻擊沒(méi)有要求必須從局域網(wǎng)內(nèi)發(fā)起,事實(shí)可以從廣域網(wǎng)上發(fā)起。如果子網(wǎng)所用DNS位于網(wǎng)關(guān)外,產(chǎn)生一個(gè)到該DNS的錯(cuò)誤路由是很容易的,
通過(guò)在Pwin98下測(cè)試,由ICMP重定向包產(chǎn)生的路由都是掩碼為255.255.255.255的特定主機(jī)路由,沒(méi)有辦法產(chǎn)生諸如255.255.0.0這樣掩碼下的網(wǎng)絡(luò)路由。此外,由ICMP重定向包產(chǎn)生的路由還是會(huì)過(guò)期的,會(huì)被刪除,但耗時(shí)很長(zhǎng)。許多桌面操作系統(tǒng)線(xiàn)性搜索自己的路由表,如果你利用ICMP重定向包加了太多特定主機(jī)路由到它們的路由表中,極其容易造成系統(tǒng)的癱瘓。對(duì)于Unix系統(tǒng),雖然搜索路由表時(shí)不是線(xiàn)性搜索,但過(guò)多的特定主機(jī)路由會(huì)消耗大量的內(nèi)存空間。
下面是一個(gè)具體實(shí)例:
今年八月海信集團(tuán)懸賞50萬(wàn)人民幣測(cè)試防火墻,雖然結(jié)果是沒(méi)有人能夠拿到防火墻后面的密碼,但是防火墻遭到大量的ICMP攻擊,導(dǎo)致防火墻的IP地址ping不通,造成大量攻擂者以為海信公司言而無(wú)信,取消了測(cè)試,轉(zhuǎn)而怒牽于海信公司主頁(yè),于是就有了八月轟動(dòng)全國(guó)IT界的海信主頁(yè)被黑事件,下面是海信公司自己提供的防火墻遭攻擊記錄:
攻擊類(lèi)型 攻擊次數(shù)
1 ICMP攻擊 334050
2 碎片攻擊 25524
3 端口掃描 4365
4 WEB服務(wù)攻擊 1227
5 UDP攻擊 234
6 拒絕服務(wù)攻擊 12
事實(shí)可以看到,造成海信服務(wù)器"拒絕服務(wù)"的絕大多數(shù)攻擊來(lái)自于ICMP攻擊。
2、 基于重定向(redirect)的路由欺騙技術(shù)
首先我們應(yīng)該知道,微軟的Windows98和NT系統(tǒng)都保持著一張已知的路由器列表,列表中位于第一項(xiàng)的路由器是默認(rèn)路由器,如果默認(rèn)路由器關(guān)閉,則位于列表第二項(xiàng)的路由器成為缺省路由器。缺省路由向發(fā)送者報(bào)告另一條到特定主機(jī)的更短路由,就是ICMP重定向。攻擊者可利用ICMP重定向報(bào)文破壞路由,并以此增強(qiáng)其竊聽(tīng)能力。除了路由器,主機(jī)必須服從ICMP重定向。如果一臺(tái)機(jī)器想網(wǎng)絡(luò)中的另一臺(tái)機(jī)器發(fā)送了一個(gè)ICMP重定向消息,這就可能引起其他機(jī)器具有一張無(wú)效的路由表。如果一臺(tái)機(jī)器偽裝成路由器截獲所有到某些目標(biāo)網(wǎng)絡(luò)或全部目標(biāo)網(wǎng)絡(luò)的IP數(shù)據(jù)包,這樣就形成了竊聽(tīng)。通過(guò)ICMP技術(shù)還可以抵達(dá)防火墻后的機(jī)器進(jìn)行攻擊和竊聽(tīng)。在一些網(wǎng)絡(luò)協(xié)議中,IP源路徑選項(xiàng)允許IP數(shù)據(jù)報(bào)告自己選擇一條通往目的主機(jī)的路徑(這是一個(gè)非常不好,但是又無(wú)可奈何的技術(shù)手段,多路徑正是網(wǎng)絡(luò)連接的精髓部分!)。攻擊者試圖與防火墻后面的一個(gè)不可到達(dá)的主機(jī)A連接,只需在送出的ICMP報(bào)文中設(shè)置IP源路徑選項(xiàng),使報(bào)文有一個(gè)目的地址指向防火墻,而最終地址是主機(jī)A.當(dāng)報(bào)文到達(dá)防火墻時(shí)被允許通過(guò),因?yàn)樗赶蚍阑饓Χ皇侵鳈C(jī)A.防火墻的IP層處理該報(bào)文的源路徑域并被發(fā)送到內(nèi)部網(wǎng)上,報(bào)文就這樣到達(dá)了不可到達(dá)的主機(jī)A .
我在查閱資料的時(shí)候,所有基于ICMP路由欺騙的技術(shù)都是停留在理論上的論述,沒(méi)有找到相關(guān)的具體攻擊實(shí)例和原程序。#p#
三、 防御方法
出于系統(tǒng)安全性的考慮,在ICMP中有八條配置命令,可以分別用來(lái)禁止或使能四種類(lèi)型的ICMP報(bào)文的發(fā)送。
ICMP echo enable ,ICMP echo disable,利用上面兩條命令可以使能或禁止ICMP的echo reply報(bào)文的發(fā)送。一旦禁止該類(lèi)型的報(bào)文,從其他機(jī)器利用ping命令搜索該路由器時(shí),路由器將不作出反應(yīng)。
ICMP mask enable,ICMP mask disable,利用上面兩條命令可以使能或禁止ICMP的Mask Reply報(bào)文的發(fā)送。當(dāng)在路由器上禁止該類(lèi)型的報(bào)文時(shí),路由器對(duì)于來(lái)自其他機(jī)器的mask reguest請(qǐng)求不作反應(yīng)。
ICMP unreach enable,ICMP unreach disable,利用上面兩條命令可以使能或禁止Destination Unreachable報(bào)文的發(fā)送。當(dāng)在路由器上禁止該類(lèi)型的報(bào)文時(shí),路由器對(duì)于其無(wú)法轉(zhuǎn)發(fā)的ip報(bào)文將不再向其源地址發(fā)送Destination Unreachable的報(bào)文。利用show ICMP命令可以觀察當(dāng)前ICMP以上各項(xiàng)的設(shè)置。
ICMP redirect enable,ICMP redirect disable,利用上面兩條命令可以使能或禁止ICMP的重定向(redirect)報(bào)文的發(fā)送。當(dāng)在路由器上禁止該類(lèi)型的報(bào)文時(shí),路由器對(duì)于可能的路由錯(cuò)誤不作反應(yīng)。避免ICMP重定向欺騙的最簡(jiǎn)單方法是將主機(jī)配置成不處理ICMP重定向消息,在Linux下可以利用firewall明確指定屏蔽ICMP重定向包。
另一種方法是驗(yàn)證ICMP的重定向消息。例如檢查ICMP重定向消息是否來(lái)自當(dāng)前正在使用的路由器。這要檢查重定向消息發(fā)送者的IP地址并效驗(yàn)該IP地址與ARP高速緩存中保留的硬件地址是否匹配。ICMP重定向消息應(yīng)包含轉(zhuǎn)發(fā)IP數(shù)據(jù)報(bào)的頭信息。報(bào)頭雖然可用于檢驗(yàn)其有效性,但也有可能被窺探儀加以偽造。無(wú)論如何,這種檢查可增加你對(duì)重定向消息有效性的信心,并且由于無(wú)須查閱路由表及ARP高速緩存,所以做起來(lái)比其他檢查容易一些。
一臺(tái)4.4BSD主機(jī)接收到ICMP重定向報(bào)文,為了防止失常的路由、主機(jī)或者惡意的入侵者不正確的修改系統(tǒng)路由表,做了如下檢查:
1. 新路由必須是直達(dá)的
2. 重定向包必須來(lái)自去往目標(biāo)的當(dāng)前路由
3. 重定向包不能通知主機(jī)用自己做路由(Pwin98不是這樣的)
4. 被改變的路由必須是一條間接路由
因此若A和B在同一子網(wǎng),A不可能利用ICMP重定向使B發(fā)往子網(wǎng)內(nèi)IP的包流向自己。但可以使B發(fā)往子網(wǎng)外IP的包流向自己。
結(jié)束語(yǔ):
在本文撰寫(xiě)之初,我以為只要掌握ICMP的知識(shí)就夠了,隨著文章探討問(wèn)題的深入,我發(fā)現(xiàn)"ICMP的隱蔽攻擊技術(shù)"同IP地址欺騙,ARP欺騙,以及網(wǎng)絡(luò)竊聽(tīng)分析(sniffing),還有拒絕服務(wù)、系統(tǒng)漏洞、防火墻保護(hù)、入侵反跟蹤等問(wèn)題是密不可分的。ICMP作為IP協(xié)議的一個(gè)輔助部分,它的隱蔽技術(shù)其實(shí)就是IP的隱蔽技術(shù),這一點(diǎn)我在文中已經(jīng)提及,在此不再贅述,涉及其他同志課題的具體問(wèn)題,我在此也沒(méi)有過(guò)多的展開(kāi)。在這短短幾千字的文章內(nèi),我不可能講到ICMP攻擊技術(shù)的方方面面,很多問(wèn)題也分析得不夠透徹,有很多不足的地方,還請(qǐng)老師和同學(xué)指正。在此文的撰寫(xiě)過(guò)程中,我參考了大量的書(shū)籍以及internet上的資料,書(shū)籍主要有:機(jī)械工業(yè)版的《INTERNET網(wǎng)絡(luò)安全專(zhuān)業(yè)參考手冊(cè)》、《INTERNET防火墻與網(wǎng)絡(luò)安全》、清華影印版的《TCP/IP網(wǎng)絡(luò)互連技術(shù)II 設(shè)計(jì)與實(shí)現(xiàn)》網(wǎng)上的資料多半來(lái)自于BBS:"白云黃鶴"、"水木清華"和"華南木棉"并感謝以上三個(gè)大學(xué)的很多不知名的朋友給予我指點(diǎn)和幫助。