|
一、什么是ICMP協(xié)議?
ICMP全稱Internet Control Message Protocol(網(wǎng)際控制信息協(xié)議)。提起ICMP,一些人可能會感到陌生,實際上,ICMP與我們息息相關(guān)。在網(wǎng)絡(luò)體系結(jié)構(gòu)的各層次中,都需要控制,而不同的層次有不同的分工和控制內(nèi)容,IP層的控制功能是最復(fù)雜的,主要負責(zé)差錯控制、擁塞控制等,任何控制都是建立在信息的基礎(chǔ)之上的,在基于IP數(shù)據(jù)報的網(wǎng)絡(luò)體系中,網(wǎng)關(guān)必須自己處理數(shù)據(jù)報的傳輸工作,而IP協(xié)議自身沒有內(nèi)在機制來獲取差錯信息并處理。為了處理這些錯誤,TCP/IP設(shè)計了ICMP協(xié)議,當(dāng)某個網(wǎng)關(guān)發(fā)現(xiàn)傳輸錯誤時,立即向信源主機發(fā)送ICMP報文,報告出錯信息,讓信源主機采取相應(yīng)處理措施,它是一種差錯和控制報文協(xié)議,不僅用于傳輸差錯報文,還傳輸控制報文。
二、ICMP報文格式
ICMP報文包含在IP數(shù)據(jù)報中,屬于IP的一個用戶,IP頭部就在ICMP報文的前面,所以一個ICMP報文包括IP頭部、ICMP頭部和ICMP報文(見圖表,ICMP報文的結(jié)構(gòu)和幾種常見的ICMP報文格式),IP頭部的Protocol值為1就說明這是一個ICMP報文,ICMP頭部中的類型(Type)域用于說明ICMP報文的作用及格式,此外還有一個代碼(Code)域用于詳細說明某種ICMP報文的類型,所有數(shù)據(jù)都在ICMP頭部后面。RFC定義了13種ICMP報文格式,具體如下:
類型代碼 類型描述
0 響應(yīng)應(yīng)答(ECHO-REPLY)
3 不可到達
4 源抑制
5 重定向
8 響應(yīng)請求(ECHO-REQUEST)
11 超時
12 參數(shù)失靈
13 時間戳請求
14 時間戳應(yīng)答
15 信息請求(*已作廢)
16 信息應(yīng)答(*已作廢)
17 地址掩碼請求
18 地址掩碼應(yīng)答
其中代碼為15、16的信息報文已經(jīng)作廢。
下面是幾種常見的ICMP報文:
1.響應(yīng)請求
我們?nèi)粘J褂米疃嗟膒ing,就是響應(yīng)請求(Type=8)和應(yīng)答(Type=0),一臺主機向一個節(jié)點發(fā)送一個Type=8的ICMP報文,如果途中沒有異常(例如被路由器丟棄、目標不回應(yīng)ICMP或傳輸失。,則目標返回Type=0的ICMP報文,說明這臺主機存在,更詳細的tracert通過計算ICMP報文通過的節(jié)點來確定主機與目標之間的網(wǎng)絡(luò)距離。
2.目標不可到達、源抑制和超時報文
這三種報文的格式是一樣的,目標不可到達報文(Type=3)在路由器或主機不能傳遞數(shù)據(jù)報時使用,例如我們要連接對方一個不存在的系統(tǒng)端口(端口號小于1024)時,將返回Type=3、Code=3的ICMP報文,它要告訴我們:“嘿,別連接了,我不在家的!”,常見的不可到達類型還有網(wǎng)絡(luò)不可到達(Code=0)、主機不可到達(Code=1)、協(xié)議不可到達(Code=2)等。源抑制則充當(dāng)一個控制流量的角色,它通知主機減少數(shù)據(jù)報流量,由于ICMP沒有恢復(fù)傳輸?shù)膱笪模灾灰V乖搱笪,主機就會逐漸恢復(fù)傳輸速率。最后,無連接方式網(wǎng)絡(luò)的問題就是數(shù)據(jù)報會丟失,或者長時間在網(wǎng)絡(luò)游蕩而找不到目標,或者擁塞導(dǎo)致主機在規(guī)定時間內(nèi)無法重組數(shù)據(jù)報分段,這時就要觸發(fā)ICMP超時報文的產(chǎn)生。超時報文的代碼域有兩種取值:Code=0表示傳輸超時,Code=1表示重組分段超時。
3.時間戳
時間戳請求報文(Type=13)和時間戳應(yīng)答報文(Type=14)用于測試兩臺主機之間數(shù)據(jù)報來回一次的傳輸時間。傳輸時,主機填充原始時間戳,接收方收到請求后填充接收時間戳后以Type=14的報文格式返回,發(fā)送方計算這個時間差。一些系統(tǒng)不響應(yīng)這種報文。
三、回到正題:這樣的攻擊有效嗎?
在前面講過了,ping使用的是ECHO應(yīng)答,不知道大家注意過沒有,ping的返回很慢,用NetXRAY抓包僅為1--5包/秒,這是為什么呢?事實上,ICMP本身并不慢(由于ICMP是SOCK_RAW產(chǎn)生的原始報文,速度比SOCK_STREAM的SYN和SOCK_DGRAM的UDP要快幾乎10倍。,這樣的速度是ping程序故意延遲的(為什么?M$可不想每個人都能用ping來干壞事),同樣,我測試過一些號稱“ping洪水”的程序,發(fā)現(xiàn)它們的效率和ping.exe沒什么兩樣,經(jīng)過Dependency Walker查看程序調(diào)用的函數(shù)發(fā)現(xiàn),他們用的是icmp.dll提供的IcmpSendEcho這個API,這個函數(shù)是計算ECHO時間的,速度當(dāng)然慢!而那兩個“高手”號召的ping攻擊實際上就是為了實現(xiàn)ICMP洪水攻擊,但是他們用的方法……想想洪水的速度和山澗小溪的速度相差多少吧!就用ping.exe和IcmpSendEcho這種小溪慢慢流淌的速度能做什么?還不是讓人家看笑話!這種攻擊根本就是浪費自己的時間。ㄈ缃襁經(jīng)常有人問ping -l 65500 -t的攻擊威力如何……哎,悲哀啊悲哀……)
1.ICMP洪水的成因
ping.exe和IcmpSendEcho速度慢的另一個原因是它們必須等待目標主機返回REPLY信息,這個過程需要花費大量時間,而Flood——洪水,顧名思義,是速度極快的,當(dāng)一個程序發(fā)送數(shù)據(jù)包的速度達到了每秒1000個以上,它的性質(zhì)就成了洪水產(chǎn)生器,洪水?dāng)?shù)據(jù)是從洪水產(chǎn)生器里出來的,但這樣還不夠,沒有足夠的帶寬,再猛的洪水也只能像公路塞車那樣慢慢移動,成了雞肋。要做真正的洪水,就需要有一條足夠?qū)挼母咚俟凡趴梢。極慢的發(fā)送速度 56Kbps小貓等于什么?等于一個未關(guān)緊的水龍頭,根本沒用。
由于ping.exe無法提速,這就需要專門的工具來做洪水了。足夠快的數(shù)據(jù)包速度 足夠的帶寬,這才是洪水。
2.實現(xiàn)ICMP洪水的前提
最大的前提是攻擊者的速度!如果你要用56K撥號去攻擊一個512Kbps ADSL用戶,后果和一只螞蟻伸腿想絆倒大象的天方夜譚是一樣的!其次是你的機器運行速度和數(shù)據(jù)吞吐量,由于涉及IP校驗和的計算(先設(shè)置頭校驗和域的數(shù)值為0,然后對整個數(shù)據(jù)報頭按每16位求異或,再把結(jié)果取反,就得到了校驗和),如果數(shù)據(jù)處理能力不夠,在這步就慢了一個級別,效果當(dāng)然大打折扣。最后就是目標機器的帶寬!如果對方比你大很多(例如你2M ADSL,別人用DDN或T1),那么任何Flood都是無病呻吟,撓癢都不夠。ㄏM灰賳枴靶〗,你的R-Series怎么不好用啊”、“我用小金的AnGryPing攻擊別人半天都沒事!”、“獨裁者的攻擊怎么無效啊?”這樣的問題了,天啊,我頭都大了!)
還有許多人都忽略的問題:發(fā)送的速度與數(shù)據(jù)包大小成反比,而且太大的數(shù)據(jù)包會被路由器等設(shè)備過濾掉!找到一個合適的數(shù)據(jù)包大小,對提高Flood的效率有很大幫助!
3.洪水——兩敗俱傷的攻擊方式
別以為洪水無所不能,實際上,你展開洪水攻擊時,攻擊程序在消耗對方帶寬和資源時,也在消耗你的帶寬和資源。這只是個看誰撐得住的攻擊而已。實際上,有經(jīng)驗的攻擊者都是用被控制的服務(wù)器(肉雞)來代替自己的機器發(fā)動攻擊的,不到萬不得已或者你對自己的機器網(wǎng)速有自信,否則盡量少用自己的機器來拼搏!
五、不**式的ICMP洪水
1.直接Flood
要做這個的首要條件是你的帶寬夠,然后就是要一個好用的ICMP Flooder,別用ping.exe那種探路用的垃圾,例如我以前發(fā)布的AnGryPing,發(fā)包速度達到6000---9000包/秒(512 Kbps ADSL),默認是32bytes的ECHO報文洪水,用它即使不能flood別人下去,防火墻也叫得夠慘的了。直接攻擊會暴露自己IP(如果對方?jīng)]有還擊能力那還無所謂,固定IP用戶不推薦使用這種Flood),直接Flood主要是為了顧及Win9x/Me不能偽造IP的缺陷,否則一般還是別用為妙。
簡單示意:
ICMP
攻擊者[IP=211.97.54.3]--------------------------------->受害者[截獲攻擊者IP=211.97.54.3]==>換IP回來反擊,嘿嘿
2.偽造IP的Flood
如果你是Win2000/XP并且是Administrator權(quán)限,可以試試看FakePing,它能隨意偽造一個IP來Flood,讓對方摸不到頭腦,屬于比較隱蔽陰險的Flood。
簡單示意:
偽造IP=1.1.1.1的ICMP
攻擊者[IP=211.97.54.3]--------------------------------->受害者[截獲攻擊者IP=1.1.1.1]==>倒死
3.反射
用采取這種方式的第一個工具的名稱來命名的“Smurf”洪水攻擊,把隱蔽性又提高了一個檔次,這種攻擊模式里,最終淹沒目標的洪水不是由攻擊者發(fā)出的,也不是偽造IP發(fā)出的,而是正常通訊的服務(wù)器發(fā)出的!
實現(xiàn)的原理也不算復(fù)雜,Smurf方式把源IP設(shè)置為受害者IP,然后向多臺服務(wù)器發(fā)送ICMP報文(通常是ECHO請求),這些接收報文的服務(wù)器被報文欺騙,向受害者返回ECHO應(yīng)答(Type=0),導(dǎo)致垃圾阻塞受害者的門口……
從示意圖可以看出,它比上面兩種方法多了一級路徑——受騙的主機(稱為“反射源”),所以,一個反射源是否有效或者效率低下,都會對Flood效果造成影響! 本新聞共 3頁,當(dāng)前在第 1頁 1 2 3 |
|
【收藏】【打印】【進入論壇】 |
|
|
|
|
|
|
|