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