來自:木馬帝國的http://article.mmbest.com/article/4/2006/2006032415506.html
?
?? TCP/IP漏洞是指利用主機協議棧處理及協議本身機制的缺陷造成的安全漏洞,這類安全漏洞很容易造成系統緩沖區溢出,不識別IP欺騙,而要是在處理大量異常連接,畸形消息時更容易導致拒絕服務。這類漏洞從PoD到DRDoS,每一種攻擊都是黑客技術的杰作,而且越來越可怕,越來越難對付。我就在這里給大家詳細介紹一下各種各樣的TCP/IP網絡拒絕服務攻擊及其大體防范方法。
一 死亡之Ping(ping of death)
1.原理
不用我多說了,大名鼎鼎的Ping早已經家喻戶曉了。早期的Ping之所以能稱為死亡之Ping,那是因為在早期階段路由器對包的最大尺寸都有限制,很多操作系統對TCP/IP棧的實現在ICMP包上都是規定為64KB,并且在對包的標題頭進行讀取之后,要根據該標題頭里包含的信息為有效載荷生成緩沖區。當產生畸形的包——加載尺寸超過64KB上限的包時,就會出現內存分配錯誤,從而導致TCP/IP堆棧崩潰,使系統死機。理論上Ping發出的ICMP數據包最大為65507字節,如果超過這個限度,就會導致目標系統緩沖區溢出,TCP/IP堆棧崩潰而死機。
2.攻擊
Ping命令的-l參數可以定制包的大小,-t參數可以循環發送無數包,但是僅有這些是不夠的,黑客們通常使用自己的Ping工具,甚至可以調動眾多肉雞進行分布式攻擊。
Tosser是一款很實用的網絡測試工具,提供了Ping和Trace功能,如圖1所示。
javascript:resizepic(this) border=0>
圖1
3.防御
現在所有標準的TCP/IP都已經具備對付超大尺寸包的能力了,各種操作系統(Windows 98之后的Windows NT,Linux,Unix和Mac OS)都能抵抗一般的死亡之Ping,并且大多數防火墻都能夠自動過濾這些攻擊,所以現在的普通Ping是很難形成Death之勢了。針對Ping攻擊只需利用路由器,防火墻對ICMP進行有效的篩選即可。
二 古老的Smurf
1.原理
Smurf是一種很古老的DoS攻擊。這種方法使用了廣播地址,廣播地址的尾數通常為0,比如:192.168.1.0。在一個有N臺計算機的網絡中,當其中一臺主機向廣播地址發送了1KB大小的ICMP Echo Requst時,那么它將收到N KB大小的ICMP Reply,如果N足夠大它將淹沒該主機,最終導致該網絡的所有主機都對此ICMP Echo Requst作出答復,使網絡阻塞!利用此攻擊時,假冒受害主機的IP,那么它就會收到應答,形成一次拒絕服務攻擊。Smurf攻擊的流量比Ping of death洪水的流量高出一兩個數量級,而且更加隱蔽。
2.攻擊
Smurf2K是一個強大的攻擊工具,它通過一個儲存廣播列表地址的文件,記錄下Internet上可用的主機,然后利用這些主機發起進攻。如圖2所示:
javascript:resizepic(this) border=0>
?
圖2
3.防御
為了防止黑客利用你的網絡進行Smurf攻擊,關閉外部路由器或防火墻的廣播地址特性;為了防止被攻擊,在防火墻上設置規則丟棄掉ICMP包。
三 Fraggle攻擊
1.原理
Fraggle攻擊與Smurf攻擊類似,只是利用UDP協議;雖然標準的端口是7,但是大多數使用Fraggle攻擊的程序允許你指定其它的端口。Fraggle攻擊是這樣實現的:攻擊者掌握著大量的廣播地址,并向這些地址發送假冒的UDP包,通常這些包是直接到目標主機的7號端口——也就是Echo端口,而另一些情況下它卻到了Chargen端口,攻擊者可以制造一個在這兩個端口之間的循環來產生網絡阻塞。
2.攻擊
編寫Fraggle攻擊程序時只要把Smurf攻擊程序的代碼作一下修改就可以了。
3.防御
最好的防止系統受到Smurf和Fraggle攻擊的方法是在防火墻上過濾掉ICMP報文,或者在服務器上禁止Ping,并且只在必要時才打開Ping服務。
四 原子彈——OOB Nuke
1.原理
OOB Nuke又名Windows nuke,是在1997年5月被發現的,這種攻擊將導致Windows 95/98藍屏,在當時的IRC聊天用戶中很流行。OOB Nuke攻擊的實現是由于Windows 95/98不能正確的處理帶外數據。在TCP協議中提供了“緊急方式”,是傳輸的一端告訴另一端有些具有某種方式的“緊急數據”已經放到普通的數據流中,如何處理由接受方決定。通過設置TCP首部中的兩個字段發出這種通知,URG比特被設置為1,并且一個16比特的緊急指針被設置為一個正的偏移量,某些實現將TCP的緊急方式稱之為帶外數據。問題在于Windows? 95/98不知道如何處理帶外數據。OOB Nuke一般使用139端口。
2.攻擊
僅提供一款工具:WindowsNuke2,如下圖3所示:
javascript:resizepic(this) border=0>
?
圖3
3.防御
打相關的補丁或者將你的Windows 95/98升級到2000或更高,不過連微軟都已經放棄了Windows 95/98,估計現在還在使用它的人少之又少了。
五?Land攻擊
1.原理
Land攻擊是由著名的黑客組織RootShell發現的,于1997年11月20日公布的,原理比較簡單,就是利用TCP連接三握手中的缺陷,向目標主機發送源地址與目標地址一樣的數據包,造成目標主機解析Land包占用太多的資源,從而使網絡功能完全癱瘓。具體說應該是,Land攻擊打造一個特別的SYN包,其源地址和目標地址被設置成同一個計算機的地址,這時將導致該計算機向它自己的地址發送SYN-ACK消息,結果這個地址又發回ACK消息并創建一個空連接,每個這樣的連接都將保留直到超時。
2.攻擊
Land攻擊對Windows 95很有效,但實際上,很多基于BSD的操作系統都有這個漏洞。不同的操作系統對Land攻擊反應不同,很多Unix將崩潰,而Windows NT會變得非常緩慢,而且對Linux,路由器,其它大量的Unix都具有相當的攻擊力。這里提供Land程序的源代碼(請見光盤)。
3.防御
打最新的相關的安全補丁,在防火墻上進行配置,將那些在外部接口上進入的含有內部源地址的包過濾掉,包括10域,127域,192.168域,172.16到172.31域。由于Land攻擊主要是構造IP包,使源IP和目標IP相同,源端口和目的端口相同,所以如果使用Tcpdump,可記錄到攻擊特征為:
23:45:13 815705 192.168.0.111 23>192.168.0.111 23:S 3868:3868(0) Windows 2048
六 淚滴——Teardrop攻擊
1.原理
對于一些大的IP包,需要對其進行分片傳送,這是為了迎合鏈路層的MTU(最大傳輸單元)的要求。比如,一個4500字節的IP包,在MTU為1500的鏈路上傳輸的時候,就需要分成三個IP包。
在IP報頭中有一個偏移字段和一個分片標志(MF),如果MF標志設置為1,則表面這個IP包是一個大IP包的片斷,其中偏移字段指出了這個片斷在整個IP包中的位置。例如,對一個4500字節的IP包進行分片(MTU為1500),則三個片斷中偏移字段的值依次為:0,1500,3000。這樣接收端就可以根據這些信息成功的組裝該IP包。
如果一個攻擊者打破這種正常情況,把偏移字段設置成不正確的值,即可能出現重合或斷開的情況,就可能導致目標操作系統崩潰。比如,把上述偏移設置為0,1300,3000。這就是所謂的淚滴攻擊。
2.攻擊
在早期的由BSD實現的網絡協議中,在處理數據包分段時存在漏洞,后來的一些操作系統都沿用了BSD的代碼,所以這個漏洞在Linux,Windows 98和Windows NT中都是存在的。網上有一個Linux上運行的Teardrop程序——Teardrop.c,它就是實現這樣的攻擊的。下載地址是:http://www.computec.ch/software/denial_of_service/teardrop/teardrop.c
3.防御:
安裝最新的服務包,設置防火墻時對分段進行重組,而不是轉發它們。
七 UDP Flood
1.原理
做個簡單的實驗,用Telnet連接到對方TCP chargen 19號端口,看看返回了什么?很吃驚的是,返回了大量的回應數據,如果能加以利用的話就能夠發動DoS攻擊了。先介紹一下Chargen服務, RFC0864中定義了這種服務,其UDP/TCP均使用了19號端口。UDP chargen server若收到一個封包,就會隨一個封包回去;而TCP chargen server若發現與Client的連線存在,就會不斷的發送封包給Client,所以TCP chargen可以直接誘發DoS攻擊。不過常用的還是UDP chargen,它常被用來作為DDoS中放大網絡流量之用,一般要結合Echo服務。Echo服務用的是UDP的7號端口,如果它收到一個包,就會把包中的負載按原樣返回,而如果你向UDP的19號端口Chargen發送一個任意字符,它將返回一個假的隨機字符串。UDP Flood攻擊就是通過偽造與某一臺主機的Chargen服務之間的UDP連接,回復地址指向開著Echo服務的一臺主機,這就能在兩臺主機之間產生無用的數據流,如果數據流足夠多就會導致DoS。
UDP Flood圖解(如圖4所示):
javascript:resizepic(this) border=0>
?圖4
2.攻擊
一個典型的UDP Flood攻擊工具——UDP Flooder,如圖5所示:
javascript:resizepic(this) border=0>
圖5
3.防御
關掉一些不必要的TCP/IP服務,或者對防火墻進行配置,阻斷來自Internet的請求這些服務的UDP請求。
八 分布式拒絕服務——DDoS
1.原理
大名鼎鼎的DDoS在2000年的“電子珍珠港事件”中名聲大震,我也沒必要說很多。從名字中我們就能得知,它是利用很多臺機器一起發動攻擊。攻擊手法可能只是簡單的Ping,也可能是SYN Flood或其它,但是由于它調用了很多臺機器,所以規模很大,火力更猛,而且因為它利用了TCP/IP網絡協議的缺陷,所以很難防御這種進攻。
2.攻擊
2001年用來攻擊Yahoo等網站的程序——TFN,Trinoo,TFN2K等都堪稱是黑客技術的杰作,而且網上都有它們的源代碼。
3.防御
主要談一下防御。要阻止這種進攻關鍵是網絡出口反欺騙過濾器的功能是否強大,也就是說如果你的WEB服務器收到的數據包的源IP地址是偽造的話,你的邊界路由器或防火墻必須能夠識別出來并將其丟棄,最快速的方法是和ISP聯手通過丟包等方法一起來阻擋這種龐大的進攻。另外針對DDoS進攻是集中于某一個IP地址的特點,使用移動IP地址技術也是一種不錯的選擇。大多數的DDoS攻擊代碼是公開的,分析源代碼我們也可以根據其特點設計出有效的反擊方法,或者使用工具檢測這種進攻。現在已經出現了名為Ngrep的工具,它使用DNS來跟蹤TFN2K駐留程序。
九 分布式反射拒絕服務——DRDoS
1.原理
一種比DDoS更可怕的攻擊方式已經出現了!它就是DRDoS——分布式反射拒絕服務(Distributed Reflection Denial of Service)。DRDoS不同于以往的拒絕服務方式,它對DDoS作了改進,它是通過對正常的服務器進行網絡連接請求來達到攻擊目的的。從TCP的三次握手中我們知道了任何合法的TCP連接請求都會得到返回數據包,而這種攻擊方法就是將這個返回包直接返回到被攻擊的主機上,這里涉及到數據包內的源IP地址問題,就是利用數據包的IP地址欺騙方法,欺騙被利用的網絡服務器提供TCP服務,讓此服務器認為TCP請求連接都是被攻擊主機上發送的,接著它就會發送“SYN+ACK”數據包給被攻擊主機,惡意的數據包就從被利用的服務器“反射”到了被害主機上,形成洪水攻擊。
DRDoS圖解(如圖9所示):
javascript:resizepic(this) border=0>
?
圖9
3.攻擊
DRDoS很好地隱蔽了攻擊者的真實地址,利用時我們也可以使用威力更大的方式。DRDoS攻擊體系如圖10所示:
javascript:resizepic(this) border=0>
?
圖10
這里提供一款命令行攻擊工具——DRDoS(安全焦點有下載),使用很簡單,但是威力很大。慎用!
3.防御
防御這種攻擊需要相當高的專業技巧,一般來說應該讓網絡安全事件響應小組來取證分析,并請信息安全服務商來解決。