【網絡與系統安全實驗】拒絕服務攻擊及防禦

【網絡與系統安全實驗】拒絕服務攻擊及防禦

拒絕服務攻擊概述

拒絕服務攻擊的概念

“拒絕服務”這個詞來源於英文Denial of Service(簡稱DoS),它是一種簡單的破壞性攻擊,通常攻擊者利用TCP/IP協議中的某個弱點,或者系統存在的某些漏洞,對目標系統發起大規模的進攻,致使攻擊目標無法對合法的用戶提供正常的服務。簡單的說,拒絕服務攻擊就是讓攻擊目標癱瘓的一種的攻擊手段
拒絕服務攻擊可能是蓄意的,也可能是偶然的。當未被授權的用戶過量使用資源時,攻擊是蓄意的;當合法用戶無意地操作而使得資源不可用時,則是偶然的。應該對兩種拒絕服務攻擊都採取預防措施。 但是拒絕服務攻擊問題也一直得不到合理的解決,究其原因是因爲這是由於網絡協議本身的安全缺陷造成的。

拒絕服務攻擊的類型

DoS的攻擊方式有很多種。最基本的DoS攻擊就是利用合理的服務請求來佔用過多的服務資源,致使服務超載,無法響應其他的請求。這些服務資源包括網絡帶寬,文件系統空間容量,開放的進程或者向內的連接。這種攻擊會導致資源的匱乏,無論計算機的處理速度多麼快,內存容量多麼大,互連網的速度多麼快都無法避免這種攻擊帶來的後果。
傳統上,攻擊者所面臨的主要問題是網絡帶寬,由較小的網絡規模和較慢的網絡速度, 無法使攻擊者發出過多的請求。高帶寬是大公司所擁有的,而以個人爲主的黑客很難享用。爲了克服這個缺點,惡意的攻擊者開發了分佈式的攻擊。這樣,攻擊者就可以利用工具集合許多的網絡帶寬來對同一個目標發送大量的請求。

有兩種拒絕服務攻擊類型:
第一種是使一個系統或網絡癱瘓。第二種攻擊是向系統或網絡發送大量信息使系統或網絡不能響應。
這兩種攻擊既可以在本地機上進行也可以通過網絡進行。
1、使一個系統或網絡癱瘓
如果攻擊者發送一些非法的數據或數據包,就可以使得系統死機或重新啓動,那麼攻擊者就進行了一次拒絕服務攻擊,因爲沒有人能夠使用資源。以攻擊者的角度來看,攻擊的刺激之處在於可以只發送少量的數據包就使一個系統無法訪問。在大多數情況下,系統重新上線需要管理員的干預。所以,第一種攻擊是最具破壞力的,因爲做一點點就可以破壞系統,而修復卻需要人的干預。
2、使系統或網絡不能響應
如果一個系統在一分鐘之內只能處理10個數據包,攻擊者卻每分鐘向它發送20個數據包,這時,當合法用戶要連接系統時,用戶將得不到訪問權,因爲系統資源已經不足。進行這種攻擊時,攻擊者必須連續地向系統發送數據包。當攻擊者不向系統發送數據包時,攻擊停止,系統也就恢復正常了。此攻擊方法攻擊者要耗費很多精力,因爲他必須不斷地發送數據。有時,這種攻擊會使系統癱瘓,然而大多數情況下,恢復系統只需要少量人爲干預。通過控制大量機器實現分佈式拒絕服務攻擊成爲此類攻擊方法的主要形式。

拒絕服務攻擊的發展

由於防範手段的加強,拒絕服務攻擊手法也在不斷的發展。傳統的拒絕服務攻擊只是一臺機器向受害者發起攻擊。然而在1999年8月,一種新型的攻擊方式產生了,這就是DDoS(distributed Denial of Service attack,分佈式拒絕服務攻擊)。
之後這種攻擊方法開始大行其道,成爲黑客攻擊的主流手段。Yahoo、eBay、CNN等衆多知 站點相繼被身份不明的黑客在短短几天內連續破壞,系統癱瘓達幾個小時甚至幾十個小時之久。
分佈式拒絕服務攻擊可以使得分散在互聯網各處的機器共同完成對一臺主機攻擊的操作,從而使主機看起來好象是遭到了不同位置的許多主機的攻擊。這些分散的機器由幾臺主控制機操作進行多種類型的攻擊,如UDP flood, SYN flood等。

分佈式拒絕服務攻擊簡介

攻擊者可以在多臺機器上或與朋友合作,同時向一個目標主機或網絡發起攻擊。這時就不是僅僅一臺主機而是幾臺主機進行攻擊。這就使得防禦變得困難,因爲攻擊者來自於範圍廣泛的IP地址,而且來自每臺主機的少量的數據包有可能從入侵檢測系統的眼皮下溜掉。

典型拒絕服務攻擊技術

死亡之Ping(Ping of Death)

Ping是一個非常著名的程序,這個程序的目的是爲了測試另一臺主機是否可達。現在所有的操作系統上幾乎都有這個程序,它已經成爲系統的一部分。該程序發送一份ICMP回顯請求報文給目的主機,並等待返回ICMP回顯應答。根據回顯應答的內容判斷目的主機的狀況。這就是我們爲什麼在測試是否能連接到一臺主機採用的是Ping這臺主機的原因。
Ping之所以會造成傷害是源於ICMP協議中的一個問題,ICMP協議的報文長度是固定的,大小爲64KB。早期的很多操作系統在接收ICMP數據報文的時候,只開闢64KB的緩存區用於存放接收到的數據包。一旦發送過來的ICMP數據包的實際尺寸超過64KB(65536B),操作系統將收到的數據報文向緩存區填寫時,報文長度大於64KB,就會產生一個緩存溢出,結果將導致TCP/IP協議堆棧的崩潰,造成主機的重啓動或是死機。
Ping之所以能進行這樣的攻擊原因在於它本身就是一個用於發送ICMP協議的小程序,並且Ping程序有一個“-l”參數可指定發送數據包的尺寸, 因此,使用Ping這個常用小程序就可以簡單地實現這種攻擊。例如通過這樣一個命令:Ping -l 65540 192.168.1.140,如果對方主機存在這樣一個漏洞,就會形成一次拒絕服務攻擊。這種攻擊被稱爲死亡之Ping。死亡之Ping是一種很古老的攻擊了,現在的操作系統已經不會再有這樣的漏洞了。並且很多操作系統中附帶的Ping程序都已經被限制了發送數據包的大小(系統返回 Bad value)。

Ping Of Death攻擊的攻擊特徵、檢測方法和反攻擊方法總結如下:
1、攻擊特徵:該攻擊數據包大於65535個字節。由於部分操作系統接收到長度大於65535字節的數據包時,就會造成內存溢出、系統崩潰、重啓、內核失敗等後果,從而達到攻擊的目的。
2、檢測方法:判斷數據包的大小是否大於65535個字節。
3、反攻擊方法:使用新的補丁程序,當收到大於 65535個字節的數據包時,丟棄該數據包,並進行系統審計。

“淚滴”(teardrop)

“淚滴”也被稱爲分片攻擊,它是一種典型的利用TCP/IP協議的問題進行拒絕服務攻擊的方式,由於第一個實現這種攻擊的程序名稱爲Teardrop,所以這種攻擊也被稱爲 “淚滴”。
網絡中兩臺計算機在進行通信時,如果傳輸的數據量較大,無法在一個數據報文中傳輸完成,就會由TCP將數據拆分成多個分片,在傳送到目的計算機後再到堆棧中進行重組。爲了能在到達目標主機後進行將數據重組,IP包的TCP首部中包含有信息說明該分段是原數據的哪一段,這樣,目標主機在收到數據後,就能根據首部中的信息將各分片還原爲數據。

例如,從客戶機向服務器發送一個數據報文無法發送完成的數據,這些數據會被分片發送。先發送TCP連接的三次握手報文,接着客戶機向服務器發送三個數據報文,在這三個數據報文首部信息中,有每個報文的分片信息。
這就是報文重組的信息:
PSH 1:1025(1024) ack 1, win 4096
PSH 1025:2049(1024) ack 1, win 4096
PSH 2049:3073(1024) ack 1, win 4096
在這個報文中,可以看到在這三個報文中,第1個發送的數據報文中是原數據的第1~1025字節內容,第2個發送的報文包含的是第1025~2048字節,第3個數據報文是第2049~3073個字節,接着後面是繼續發送的分片和服務器的確認。當這些分片數據被髮送到目標主機後, 目標主機就能夠根據報文中的信息將分片重組,還原出數據。

如果入侵者僞造數據報文,向服務器發送含有重疊偏移信息的分段包到目標主機,例如如下所列的分片信息:
PSH 1:1025(1024) ack1, win4096
PSH 1000:2049(1024) ack1, win4096
PSH 2049:3073(1024) ack1, win4096
這樣的信息被目的主機收到後,在堆棧中重組時,由於畸形分片的存在,會導致重組出錯,這個錯誤並不僅僅是影響到重組的數據,由於協議重組算法,會導致內存錯誤,引起協議棧的崩潰。

“淚滴”攻擊特徵、檢測方法及反攻擊方法總結如下:
1、攻擊特徵:Teardrop工作原理是向被攻擊者發送多個分片的IP包,某些操作系統收到含有重疊偏移的僞造分片數據包時將會出現系統崩潰、重啓等現象。
2、檢測方法:對接收到的分片數據包進行分析, 計算數據包的偏移量(Offset)是否有誤。
3、反攻擊方法:添加系統補丁程序,丟棄收到的病態分片數據包並對這種攻擊進行審計。

IP欺騙DoS攻擊

這種攻擊利用RST位來實現。假設現在有一個合法用戶(61.61.61.61)已經同服務器建立了正常的連接,攻擊者構造攻擊的TCP數據,僞裝自己的IP爲61.61.61.61,並向服務器發送一個帶有RST位的TCP數據段。服務器接收到這樣的數據後,認爲61.61.61.61發送的連接有錯誤,就會清空緩衝區中建立好的連接。這時,如果合法用戶61.61.61.61再發送合法數據,服務器就已經沒有這樣的連接了,該用戶就必須從新開始建立連接。攻擊時,攻擊者會僞造大量的IP地址,向目標發送RST數據,使服務器不對合法用戶服務,從而實現了對受害服務器的拒絕服務攻擊。

UDP“洪水”

UDP“洪水”(UDP flood)主要是利用主機能自動進行回覆的服務(例如使用UDP協議的chargen服務和echo服務)來進行攻擊。
很多提供WWW和Mail等服務設備通常是使用Unix/Linux的服務器,它們默認打開一些被黑客惡意利用的UDP服務。如echo服務會顯示接收到的每一個數據包,而原本作爲測試功能的chargen服務會在收到每一個數據包時隨機反饋一些字符。由於這兩個服務的特性,當兩個或兩個以上系統存在這樣的服務時,入侵者僞造其中一臺主機向另一臺主機的echo或者chargen服務端口發送數據,echo和chargen服務會對發送到服務端口的數據自動進行回覆,這樣開啓echo和chargen服務的主機就會相互回覆數據。這種做法使一方的輸出成爲另一方的輸入,兩臺主機間會形成大量的UDP數據包。當多個系統之間互相產生UDP數據包時,最終將導致整個網絡癱瘓。

SYN“洪水”

SYN Flood是當前最流行的 DoS(拒絕服務攻擊) 與 DDoS(Distributed Denial Of Service分佈式拒絕服務攻擊)方式之一,這是一種利用TCP協議缺陷,發送大量僞造的TCP連接請求,使被攻擊方資源耗盡(CPU滿負荷或內存不足)的攻擊方式。
SYN Flood拒絕服務攻擊是通過三次握手實現的。TCP連接的三次握手中,假設一個用戶向服務器發送了SYN報文後突然死機或掉線,那麼服務器在發出SYN+ACK應答報文後是無法收到客戶端的ACK報文的,這種情況下服務器端一般會重試,並等待一段時間後丟棄這個未完成的連接。 這段時間的長度我們稱爲SYN Timeout,一般來說這個時間是分鐘的數量級。一個用戶出現異常導致服務器的一個線程等待1分鐘並不是什麼很大的問題,但如果有一個惡意的攻擊者大量模擬這種情況(僞造IP地址),服務器端將爲了維護一個非常大的半連接列表而消耗非常多的資源。即使是簡單的保存並遍歷半連接列表也會消耗非常多的CPU時間和內存,何況還要不斷對這個列表中的IP進行SYN+ACK的重試。
實際上如果服務器的TCP/IP棧不夠強大,最後的結果往往是堆棧溢出崩潰——既使服務器端的系統足夠強大,服務器端也將忙於處理攻擊者僞造的TCP連接請求而無暇理睬客戶的正常請求,此時從正常客戶的角度看來,服務器失去響應,這種情況就稱作:服務器端受到了SYN Flood攻擊(SYN洪水攻擊)。

SYN“洪水”的防禦
1、縮短SYN Timeout時間
由於SYN Flood攻擊的效果取決於服務器上保持的SYN半連接數,這個值=SYN攻擊的頻度 x SYN Timeout,所以通過縮短從接收到SYN報文到確定這個報文無效並丟棄該連接的時間,可以成倍的降低服務器的負荷。
2、設置SYN Cookie
就是給每一個請求連接的IP地址分配一個Cookie,如果短時間內連續受到某個IP的重複SYN報文,就認定是受到了攻擊,以後從這個IP地址來的包會被丟棄。
3、負反饋策略
正常情況下,OS對TCP連接的一些重要參數有一個常規的設置: SYN Timeout時間、SYN_x0002_ACK的重試次數、SYN報文從路由器到系統再到Winsock的延時等等。這個常規設置針對系統優化,可以給用戶提供方便快捷的服務;一旦服務器受到攻擊,SYN Half link 的數量超過系統中TCP活動Half link最大連接數的設置,系統將會認爲自己受到了SYN Flood攻擊,並將根據攻擊的判斷情況作出反應:減短SYN Timeout時間、減少SYN-ACK的重試次數、自動對緩衝區中的報文進行延時等等措施,力圖將攻擊危害減到最低。
4、退讓策略
是基於SYN Flood攻擊代碼的一個缺陷:SYN Flood一旦攻擊開始,將不會再進行域名解析。
切入點:假設一臺服務器在受到SYN Flood攻擊後迅速更換自己的IP地址,那麼攻擊者仍在不斷攻擊的只是一個空的IP地址,並沒有任何主機,而防禦方只要將DNS解析更改到新的IP地址就能在很短的時間內恢復用戶通過域名進行的正常訪問。爲了迷惑攻擊者,我們甚至可以放置一臺“犧牲”服務器讓攻擊者滿足於攻擊的“效果” 。
5、分佈式DNS負載均衡
在衆多的負載均衡架構中,基於DNS解析的負載均衡本身就擁有對SYN Flood的免疫力。
基於DNS解析的負載均衡能將用戶的請求分配到不同IP的服務器主機上,攻擊者攻擊的永遠只是其中一臺服務器,一來這樣增加了攻擊者的成本,二來過多的DNS請求可以幫助我們追查攻擊者的真正蹤跡。
6、防火牆
在防火牆設置了正確的規則後,可以識別SYN Flood攻擊所採用的攻擊方法,並將攻擊包阻擋在外。

Land攻擊

Land是因特網上最常見的拒絕服務攻擊類型,是由著名黑客組織rootshell發現的。
原理很簡單,向目標機發送大量的源地址和目標地址相同的包,造成目標機解析Land包時佔用大量的系統資源,從而使網絡功能完全癱瘓。
Land攻擊也是利用TCP的三次握手過程的缺陷進行攻擊。Land攻擊是向目標主機發送一個特殊的SYN包,包中的源地址和目標地址都是目標主機的地址。目標主機收到這樣的連接請求時會向自己發送SYN/ACK數據包,結果導致目標主機向自己發回ACK數據包並創建一個連接。大量的這樣的數據包將使目標主機建立很多無效的連接,系統資源被大量的佔用。

Land攻擊可簡要概括如下:
1、攻擊特徵:用於Land攻擊的數據包中的源地址和目標地址是相同的。操作系統接收到這類數據包時,不知道該如何處理堆棧中的這種情況,或者循環發送和接收該數據包,消耗大量的系統資源,從而有可能造成系統崩潰或死機等現象。
2、檢測方法:判斷網絡數據包的源/目標地址是否相同。
3、反攻擊方法:適當配置防火牆設備或過濾路由器的過濾規則可以防止這種攻擊行爲,並對這種攻擊進行審計。

Smurf攻擊

Smurf攻擊是以最初實現這種攻擊方式的程序名Smurf來命名的。攻擊方法利用IP欺騙和ICMP回覆以引起目標主機網絡阻塞而實現拒絕服務攻擊。
一個簡單的Smurf攻擊原理:構造一個回覆地址爲受害主機廣播地址的ICMP應答請求(ping)數據包來淹沒受害主機。這將導致該網絡的所有主機都對此ICMP應答請求作出答覆,導致網絡阻塞。它比ping of death洪水的流量高出1或2個數量級。

Fraggle攻擊

Fraggle攻擊原理與Smurf一樣,也是採用向廣播地址發送數據包,利用廣播地址的特性將攻擊放大以使目標主機拒絕服務。不同的是,Fraggle使用的是UDP應答消息(端口7ECHO服務和端口19 Chargen服務)而非ICMP。
攻擊者可以向子網廣播地址發送源地址爲受害網絡或受害主機的UDP包,端口號用7或19 ,子網絡啓用了此功能的每個系統都會向受害者的主機作出響應從而引發大量的包,導致受害網絡的阻塞或受害主機的崩潰。

分佈式反射拒絕服務攻擊

Smurf和Fraggle都利用了反射的特性,這裏我們所說的分佈式反射拒絕服務攻擊主要是利用TCP協議。

電子郵件炸彈

電子郵件炸彈是最古老的匿名攻擊之一,由於這種攻擊方式簡單易用,互聯網上也很容易找到這些發送匿名郵件的工具,並且入侵者只需要知道對方的電子郵件地址就可以進行攻擊了。
1、傳統的電子郵件炸彈只是簡單的往你的郵箱裏發送大量的郵件,入侵者的目的是要用垃圾郵件填滿你的郵箱後,正常的郵件就會因空間不夠而被服務器拒收。如果用戶的郵箱使用空間不受限制,那麼電子郵件炸彈攻擊就有可能影響到服務器的正常工作了。最有可能的情況是入侵者不斷髮送大量的電子郵件,由於用戶的郵箱空間不受限制,服務器會接收全部的郵件並保存在硬盤上。大量到來的郵件將不斷吞噬服務器上的硬盤空間,最終將耗盡服務器上的所有硬盤空間,使得服務器無法再對外服務。
2、還有一種可能是通過設置一臺機器不斷地大量向同一地址發送電子郵件,入侵者能夠耗盡接收者網絡的帶寬。電子郵件是通過SMTP協議進行發送的,最初的SMTP協議服務是不需要進行身份認證的,在發送電子郵件的過程中不對用戶進行身份認證。SMTP不會進行認證,郵件的發送人可以僞造任何郵件地址,甚至可以不寫發件人的信息。這就是能發送匿名郵件的原因。針對SMTP的問題,新的SMTP協議規範新增了2個命令,對發送郵件的發件人進行身份認證,在一定程度上降低了匿名電子郵件的風險。

畸形消息攻擊

畸形消息攻擊是一種有針對性的攻擊方式,它利用目標主機或者特定服務存在的安全漏洞進行攻擊。目前無論是Windows、Unix、Linux等各類操作系統上的許多服務都存在安全漏洞,由於這些服務在處理信息之前沒有進行適當正確的錯誤校驗,所以一旦收到畸形的信息就有可能會崩潰。

Slashdot effect

這種攻擊手法使web服務器或其他類型的服務器由於大量的網絡傳輸而過載,一般這些網絡流量是針對某一個頁面或一個鏈接而產生的。
當然這種現象也會在訪問量較大的網站上正常的發生,但一定要把這些正常現象和拒絕服務攻擊區分開來。如果您的服務器突然變得擁擠不堪,甚至無法響應再多的請求時,您應當仔細檢查一下這個資源匱乏的現象,確認在10000次點擊裏全都是合法用戶進行的,還是由5000個合法用戶和一個點擊了5000次的攻擊者進行的。

WinNuke攻擊

NetBIOS作爲一種基本的網絡資源訪問接口,廣泛的應用於文件共享,打印共享,進程間通信(IPC),以及不同操作系統之間的數據交換。爲了在TCP/IP協議棧上實現NetBIOS,RFC規定了一系列交互標準,以及幾個常用的TCP/UDP端口:
139:NetBIOS會話服務的TCP端口;
137:NetBIOS名字服務的UDP端口;
136:NetBIOS數據報服務的UDP端口。
WINDOWS操作系統的早期版本(WIN95/98/NT)的網絡服務(文件共享等)都是建立在NetBIOS之上的,因此,這些操作系統都開放了139端口(最新版本的WINDOWS 2000/XP/2003等,爲了兼容,也實現了NetBIOS over TCP/IP功能,開放了139端口)。
WinNuke攻擊就是利用了WINDOWS操作系統的一個漏洞,向這個139端口發送一些攜帶TCP帶外(OOB,out of band)數據報文,但這些攻擊報文與正常攜帶OOB數據報文不同的是,其指針字段與數據的實際位置不符,即存在重合,這樣WINDOWS操作系統在處理這些數據的時候,就會崩潰。

WinNuke攻擊的特徵、檢測方法和反攻擊方法概括如下:
1、攻擊特徵:WinNuke攻擊又稱帶外傳輸攻擊,它的特徵是被攻擊的目標端口通常是139、138、137、113、53,而且URG位設爲“1”,即緊急模式。
2、檢測方法:判斷數據包目標端口是否爲139、138、137等,並判斷URG位是否爲“1”。
3、反攻擊方法:適當配置防火牆設備或過濾路由器就可以防止這種攻擊手段(丟棄該數據包),並對這種攻擊進行審計(記錄事件發生的時間,源主機和目標主機的MAC地址和IP地址)

分佈式拒絕服務攻擊

概念

分佈式拒絕服務DDoS (Distributed Denial of Service)攻擊指藉助於客戶/服務器技術,將多個計算機聯合起來作爲攻擊平臺,對一個或多個目標發動DoS攻擊,從而成倍地提高拒絕服務攻擊的威力。

利用客戶/服務器技術,主控程序能在幾秒鐘內激活成百上千次代理程序的運行。
在進行分佈式拒絕服務攻擊前,入侵者必須先控制大量的無關主機,並在這些機器上安裝進行拒絕服務攻擊的軟件。互聯網上充斥着安全措施較差的主機,這些主機存在系統漏洞或配置上的錯誤,可能是一些沒有足夠安全技術力量的小站點或者一些企業的服務器,入侵者輕易就能進入這些系統。

分佈式拒絕服務攻擊的軟件一般分爲客戶端、服務端與守護程序,這些程序可以使協調分散在互聯網各處的機器共同完成對一臺主機攻擊的操作,從而使主機遭到來自不同地方的許多主機的攻擊。
客戶端:也稱攻擊控制檯,它是發起攻擊的主機
服務端:也稱攻擊服務器,它接受客戶端發來的控制命令
守護程序:也稱攻擊器、攻擊代理,它直接(如SYN Flooding)或者間接(如反射式DDoS)與攻擊目標進行通信
入侵者通過客戶端軟件向服務端軟件發出攻擊指令,服務端在接收到攻擊指令後,控制守護進程向目標主機發動攻擊。

採用三層結構的做法是確保入侵者的安全,一旦客戶端發出指令後,客戶端就能斷開連接,由服務端指揮守護進程攻擊。客戶端連接和發送指令的時間很短,隱蔽性極強。入侵者先控制多臺無關主機,在上面安裝守護進程與服務端程序。當需要攻擊時,入侵者從客戶端連接到安裝了服務端軟件的主機上,發出攻擊指令,服務端軟件指揮守護進程同時向目標主機發動拒絕服務攻擊。
通常情況下,服務端與守護進程間並不是一一對應的關係,而是多對多的關係。也就是說,一個安裝了守護進程的主機可以被多個服務端所控制,一個服務端軟件也同時控制多個守護進程。

DDoS攻擊過程主要有兩個步驟:攻佔代理主機和向目標發起攻擊。具體說來可分爲以下幾個步驟:
1、探測掃描大量主機以尋找可入侵主機;
2、入侵有安全漏洞的主機並獲取控制權;
3、在每臺被入侵主機中安裝攻擊所用的客戶進程或守護進程;
4、向安裝有客戶進程的主控端主機發出命令,由它們來控制代理主機上的守護進程進行協同入侵。

造成的影響

被DDoS攻擊時的現象
1、被攻擊主機上有大量等待的TCP連接;
2、網絡中充斥着大量的無用的數據包,源地址爲假;
3、製造高流量無用數據,造成網絡擁塞,使受害主機無法正常和外界通訊;
4、利用受害主機提供的服務或傳輸協議上的缺陷,反覆高速的發出特定的服務請求,使受害主機無法及時處理所有正常請求;
5、嚴重時會造成系統死機。
DDoS攻擊對Web站點的影響
1、當對一個Web站點執行 DDoS 攻擊時,這個站點的一個或多個Web服務會接到非常多的請求,最終使它無法再正常使用。
2、在一個DDoS攻擊期間,如果有一個不知情的用戶發出了正常的頁面請求,這個請求會完全失敗,或者是頁面下載速度變得極其緩慢,看起來就是站點無法使用。

工具

TFN2K

TFN(Tribe Flood Network)是德國著名黑客Mixter編寫的分佈式拒絕服務攻擊的攻擊工具,它是一個典型的分佈式拒絕服務攻擊的工具。TFN由服務端程序和守護程序組成,能實施ICMP flood、SYN flood、UDP flood和Smurf等多種拒絕服務攻擊。其在 Linux、Windows上都能運行,當服務端控制守護進程發動攻擊時,可以定製通信使用的協議,TFN2K目前可以使用TCP、UDP、ICMP三種協議中的任何一種。

服務端向守護進程發送的控制指令,守護進程是不會進行回覆。由於這一特點,網絡中的TFN2K的隱蔽性更強,檢測更加困難,因爲服務端可以將命令的數據報文的源地址信息進行僞造。

TFN2K所有命令都經過了CAST-256算法(RFC2612)加密。加密關鍵字在程序編譯時定義,並作爲TFN2K客戶端程序的口令。並且所有加密數據在發送前都被編碼(Base64)成可打印的ASCII字符。TFN2K守護程序接收數據包並解密數據。

爲保護自身,守護進程還能通過修改進程名方式來欺騙管理員,掩飾自己的真正身份。總之,TFN2K採用的單向通信、隨機使用通信協議、通信數據加密等多種技術以保護自身,使得實時檢測TFN2K更加困難。

TFN2K有一個獨特的設計,在每一個數據包後面填充了16個零(0x00),這樣做的目的是爲了使數據包的長度不固定,欺騙某些防火牆或者入侵檢測系統。然而,這項獨特的設計也成爲了TFN2K 的弱點。TFN2K的數據包後面填充的零(0x00)在經過Base64編碼後就變成了A(0x41)。這樣,尾部的數據包就成爲了TFN2K的特徵。當然這並不是說檢測到尾部有0x41的數據包就認爲網絡存在TFN2K,不過,如果在網絡中大量捕獲到這種類型的數據包的時候,管理員就該好好檢查網絡中的主機了。
另一種對TFN2K的檢測的方法是採用病毒檢測的通用做法,採用特徵碼。雖然TFN2K服務端和守護進程的文件名可以隨意修改,但是程序中必然存在不會改變的特徵字符串,這個不會改變的字符串就是程序的特徵碼,檢查系統中是否存在有這樣特徵碼的程序就能發現系統中存在的TFN2K。

TFN2K的抵禦方法有:
1、加固系統和網絡,以防系統被當做DDoS主機。
2、在邊界路由器上設置出口過濾,這樣做的原因是或許不是所有的TFN2K源地址都用內部網絡地址進行僞裝。
3、請求上游供應商配置入口過濾。

Trinoo

Trinoo也是一種比較常見的分佈式拒絕服務攻擊,Trinoo與TFN2K相比,雖然在很多方面都略遜一籌,但從總體上來說,Trinoo還是一個非常不錯的分佈式拒絕服務攻擊工具。它是一個典型的分佈式拒絕服務攻擊軟件,由兩部分組成,服務端和守護進程,而沒有專門的客戶端軟件,客戶端軟件可以使用通用的如Telnet來代替。

Trinoo的守護進程NC在編譯時就將安裝有服務程序的主機IP地址包含在內,這樣,守護進程NC一旦運行起來,就會自動檢測本機的IP地址,並將本機的IP地址發送到預先知道的服務器的31335端口(服務器開啓31335UDP端口接收守護進程)。同時,守護進程也在本機打開一個27444的UDP端口等待服務器端過來的命令。

Trinoo的服務器端在收到守護進程發回來的IP地址後,就明白已有一個守護進程準備完畢,可以發送指控命令了。主服務器會一直記錄並維護一個已激活守護程序的主機清單。

Trinooo的所有連接都需要口令,連接的口令是編譯時就指定的,缺省情況下服務端連接守護進程的口令是“144adsl”,而客戶端連接到服務端的口令是“beta almostdone”。不過口令在進行驗證時是明文進行傳送的。
Trinoo另一個比較有特色的設計是,當客戶端連接到服務端時,如果還有其他的連接建立,Trinoo會將一個包含連接IP地址的報警信息發送到已連接的主機。這樣,入侵者在控制服務端發動攻擊時,還能掌握系統上的用戶動向,確保Trinoo客戶端的安全。
在master程序(服務端)與代理程序(守護程序)的所有通訊中,Trinoo都使用了UDP協議。入侵檢測軟件能夠尋找使用UDP協議的數據流(類型17)。
Trinoo master程序的監聽端口是27655,攻擊者一般藉助telnet通過TCP連接到master程序所在計算機。入侵檢測軟件能夠搜索到使用TCP (類型6)並連接到端口27655上的數據流。
所有從master程序到代理程序的通訊都包含字符串"l44",並且被引導到代理的UDP 端口27444。入侵檢測軟件檢查到UDP 端口27444的連接,如果有包含字符串l44的信息包被髮送過去,那麼接受這個信息包的計算機可能就是DDoS代理。
Master和代理之間的通訊受到口令的保護,但是口令不是以加密格式發送的,因此它可以被“嗅探”到並被檢測出來。使用這個口令以及Dave Dittrich編寫的Trinot腳本,要準確地驗證出Trinoo代理的存在是很可能的。

Stacheldraht

Stacheldraht 也是一個分佈式拒絕服務攻擊,它很多方面類似於Trinoo和TFN,能發動ICMP Flood、SYN Flood、UDP Flood和Smurf等多種攻擊。它的主要特色是能進行自動更新。Stacheldraht跟TFN和trinoo一樣也是基於客戶機/服務器模式,其中Master程序與潛在的成千個代理程序進行通訊。在發動攻擊時,入侵者與master程序進行連接。Stacheldraht增加了以下新功能:攻擊者與master程序之間的通訊是加密的,以及使用rcp (remote copy,遠程複製)技術對代理程序進行更新。Stacheldraht同TFN一樣,可以並行發動數不勝數的DoS攻擊,類型多種多樣,而且還可建立帶有僞裝源IP地址的信息包。Stacheldraht所發動的攻擊包括UDP洪水、TCP SYN洪水、ICMP迴應洪水攻擊。

特徵1:在發動Stacheldraht攻擊時,攻擊者訪問master程序,向它發送一個或多個攻擊目標的IP地址。Master程序再繼續與所有代理程序進行通訊,指示它們發動攻擊。
防禦:Stacheldraht master程序與代理程序之間的通訊主要是由ICMP 迴音和迴音應答信息包來完成的。配置路由器或入侵檢測系統,不允許一切ICMP迴音和迴音應答信息包進入網絡,這樣可以挫敗Stacheldraht代理。但是這樣會影響所有要使用這些功能的Internet程序,例如ping。

特徵2:代理程序要讀取一個包含有效master程序的IP地址列表。代理會試圖與列表上所有的master程序進行聯繫。如果聯繫成功,代理程序就會進行一個測試,以確定它被安裝到的系統是否會允許它改變“僞造”信息包的源地址。
防禦:通過配置入侵檢測系統或使用嗅探器來搜尋它們的簽名信息,可以探測出這兩個行爲。

特徵2.1:代理會向每個master發送一個ICMP迴音應答信息包,其中有一個ID域包含值666,一個數據域包含字符串“skillz”。如果master收到了這個信息包,它會以一個包含值667的ID 域和一個包含字符串“ficken”的數據域來應答。代理和master通過交換這些信息包來實現週期性的基本接觸。
防禦:通過對這些信息包的監控,可以探測出Stacheldraht。

特徵2.2:一旦代理找到了一個有效master程序,它會向master發送一個ICMP信息包,其中有一個僞造的源地址,這是在執行一個僞造測試。這個假地址是“3.3.3.3”。如果master收到了這個僞造地址,在它的應答中,用ICMP信息包數據域中的“spoofworks”字符串來確認僞造的源地址是奏效的。
防禦:通過監控這些值,也可以將Stacheldraht檢測出來。

特徵3:Stacheldraht代理並不檢查 ICMP 迴音應答信息包來自哪裏,因此就有可能僞造 ICMP 信息包將其排除。

特徵4:Stacheldraht代理程序與TFN 和trinoo一樣,都可以用一個C程序DDoS_scan來探測。

拒絕服務攻擊的防禦

防禦的困難之處

1、不容易定位攻擊者的位置
Internet上絕大多數網絡都不限制源地址,也就是僞造源地址非常容易;
通過攻擊代理的攻擊,只能找到攻擊代理的位置;
各種反射式攻擊,無法定位源攻擊者。
2、完全阻止是不可能的,但是防範工作可以減少被攻擊的機會

防禦方法

1、有效完善的設計
一個站點越完善,它的狀況會越好。如果公司有一個運行關鍵任務的Web站點,用戶必須連接到Internet,但是與路由器之間只有一條單一的連接,服務器運行在一臺單一的計算機上,這樣的設計就不是完善的。
這種情況下,攻擊者對路由器或服務器進行DoS攻擊,使運行關鍵任務的應用程序被迫離線。理想情況下,公司不僅要有多條與Internet的連接,最好有不同地理區域的連接。公司的服務位置越分散,IP地址越分散,攻擊同時尋找與定位所有計算機的難度就越大。

2、帶寬限制
當DoS攻擊發生時,針對單個協議的攻擊會損耗公司的帶寬,以致拒絕合法用戶的服務。例如,如果攻擊者向端口25發送洪水般的數據,攻擊者會消耗掉所有帶寬,所以試圖連接端口80的用戶被拒絕服務。
一種防範方法是限制基於協議的帶寬。例如,端口25只能使用25%的帶寬,端口80只能使用50%的帶寬。

3、及時給系統安裝補丁
當新的DoS攻擊出現並攻擊計算機時,廠商一般會很快確定問題併發布補丁。如果一個公司關注最新的補丁,同時及時安裝,這樣被DoS攻擊的機會就會減少。
這些措施並不能阻止DoS攻擊耗盡公司的資源。還有在安裝補丁之前,先要對其進行測試。即使廠商聲明它可以彌補DoS漏洞,這並不意味着不會產生新的問題。

4、運行儘可能少的服務
運行儘可能少的服務可以減少被攻擊成功的機會。如果一臺計算機開了20個端口,這就使得攻擊者可以在大的範圍內嘗試對每個端口進行不同的攻擊。相反,如果系統只開了兩個端口,這就限制了攻擊者攻擊站點的攻擊類型。
另外,當運行的服務和開放的端口都很少時,管理員可以容易的設置安全,因爲要監聽和擔心的事情都很少了。

5、只允許必要的通信
這一防禦機制與上一個標準“運行儘可能少的服務”很相似,不過它側重於周邊環境,主要是防火牆和路由器。關鍵是不僅要對系統實施最少權限原則,對網絡也要實施最少權限原則。確保防火牆只允許必要的通信出入網絡。
許多公司只過濾進入通信,而對向外的通信不採取任何措施。這兩種通信都應該過濾。

6、封鎖敵意IP地址
當一個公司知道自己受到攻擊時,應該馬上確定發起攻擊的IP地址,並在其外部路由器上封鎖此IP地址。這樣做的問題是,即使在外部路由器上封鎖了這些IP地址,路由器仍然會因爲數據量太多而擁塞,導致合法用戶被拒絕對其他系統或網絡的訪問。
因此,一旦公司受到攻擊應立刻通知其ISP和上游提供商封鎖敵方數據包。因爲ISP擁有較大的帶寬和多點的訪問,如果他們封鎖了敵意通信,仍然可以保持合法用戶的通信,也可以恢復遭受攻擊公司的連接。

分佈式拒絕服務攻擊的防禦

分佈式拒絕服務攻擊的監測

許多人或工具在監測分佈式拒絕服務攻擊時常犯的錯誤是隻搜索那些DDoS工具的缺省特徵字符串、缺省端口、缺省口令等。人們必須着重觀察分析DDoS網絡通訊的普遍特徵,不管是明顯的,還是模糊的。使用網絡入侵監測系統(NIDS),根據異常現象在網絡入侵監測系統上建立相應規則,能夠較準確地監測出DDoS攻擊。實際上,DDoS的唯一檢測方式是:異常的網絡交通流量。

下面將分別介紹5種異常模式及相應的解決辦法。
1、根據分析,攻擊者在進行DDoS攻擊前總要解析目標的主機名。BIND域名服務器能夠記錄這些請求。由於每臺攻擊服務器在進行一個攻擊前會發出PTR反向查詢請求,也就是說在DDoS攻擊前域名服務器會接收到大量的反向解析目標IP主機名的PTR查詢請求。
2、當DDoS攻擊一個站點時,會出現明顯超出該網絡正常工作時的極限通訊流量的現象。現在的技術能夠分別對不同的源地址計算出對應的極限值。當明顯超出此極限值時就表明存在DDoS攻擊的通訊。因此可以在主幹路由器端建立ACL訪問控制規則以監測和過濾這些通訊。
3、特大型的ICMP和UDP數據包。正常的UDP會話一般都使用小的UDP包,通常有效數據內容不超過10字節。正常的ICMP消息也不會超過64到128字節。那些明顯大得多的數據包很有可能就是控制信息通訊用的,主要含有加密後的目標地址和一些命令選項。一旦捕獲到(沒有經過僞造的)控制信息通訊,DDoS服務器的位置就無所遁形了,因爲控制信息通訊數據包的目標地址是沒有僞造的。
4、不屬於正常連接通訊的TCP和UDP數據包。隱蔽的DDoS工具隨機使用多種通訊協議通過基於無連接通道發送數據。優秀的防火牆和路由規則能夠發現這些數據包。另外,那些連接到高於1024而且不屬於常用網絡服務的目標端口的數據包也是非常值得懷疑的。
5、數據段內容只包含文字和數字字符(例如,沒有空格、標點和控制字符)的數據包。這往往是數據經過BASE64編碼後而只會含有base64字符集字符的特徵。TFN2K發送的控制信息數據包就是這種類型的數據包。TFN2K(及其變種)的特徵模式是在數據段中有一串A字符(AAA……),這是經過調整數據段大小和加密算法後的結果。如果沒有使用BASE64編碼,對於使用了加密算法數據包,這個連續的字符就是“\0”。

分佈式拒絕服務攻擊的防禦

分佈式拒絕服務攻擊給網絡經濟造成的損失將越來越嚴重。雖然還沒有很好的措施來徹底解決分佈式拒絕服務攻擊問題,但下面有一些措施能降低系統受到拒絕服務攻擊的危害:
1、保持網絡安全
本質上,如果攻擊者無法獲得網絡的訪問權,無法攻克一臺主機,他就無法在系統上安裝DDoS服務器。要使一個系統成爲服務器,首先要以某種手段攻克它。如果周邊環境不會被突破,系統能夠保持安全,那麼一個公司的計算機系統就不會被用於攻擊其他系統。

2、安裝入侵檢測系統
如果單位的網絡連接到了Internet,要阻止所有的攻擊是不可能的,總有一些攻擊會突破防線。因此,能否儘可能快地探測到攻擊是非常關鍵的。以DDoS的角度來看,單位越快探測到系統被入侵或服務器被用來進行攻擊,該單位的網絡狀況越好。
所有這些的關鍵是使用入侵檢測系統(IDS)。
有兩種常用的IDS:基於網絡的和基於主機的。
基於網絡的IDS是網絡上被動的設備,負責嗅探通過給定網段的所有數據包。通過查看數據包,查找顯示可能的攻擊的簽名並對可疑行爲發出警報。
基於主機的IDS運行在一臺獨立的服務器上,並經常查看審計日誌以查找可能的攻擊信息。
正如有兩種類型IDS一樣,也有兩種構建IDS的技術:樣式匹配和不規則探測。
樣式匹配技術有一個關於已知攻擊特徵的數據庫。當它找到與給定樣式相同的數據包時就發出警報。
不規則探測系統決定什麼是網絡的正常通信,任何不符合這一規則的通信都被標爲可疑的。
可以想象,基於不規則探測的系統實現起來十分困難,因爲對於一個公司正常的通信對於另一個公司則是不正常的。因此大多數入侵檢測系統都是基於樣式匹配技術的。

3、使用掃描工具
由於許多公司網絡安全措施都進行得很慢,它們的網絡可能已經被攻克並用作了DDoS服務器,因此要掃描這些網絡查找DDoS服務器並儘可能的把它們從系統中關閉刪除。一些工具可以做到這些,而且大多數商業的漏洞掃描程序都能檢測到系統是否被用作DDoS服務器。

4、運行zombie工具
一個公司無法檢測是否被用作服務器,只有當攻擊發生時才能檢測到。這種情況下,網絡IDS會注意到大量的通信並註明出現了問題。這時可以使用Zombie Zapper使系統從數據包風暴中解脫出來。對於UNIX和Windows系統各有一個Zombie Zapper版本,現在可防範Trinoo、TFN和Stacheldraht等。

拒絕服務監控系統的設計

利用總結出的若干拒絕服務攻擊數據包的特徵,可以進行拒絕服務監控系統的設計,建立網絡通信中異常現象的模式庫,把實時採集網絡數據包與模式庫進行模式匹配,得到監控結果。
監控系統結構一般設計如下圖。
在這裏插入圖片描述
上圖中,採集器用來收集網絡通信信息,並向分析單元提供分析所需的數據,同時還能接收分析單元的指令,進一步採集分析單元所需的特定信息。分析單元可以採用人工神經元網絡對網絡採集信息和模式庫進行模式匹配得出分析報告,同時定期進行自學習,更新模式庫,及時跟蹤並反映拒絕服務攻擊模式的最新動態。

小結

無論是DoS還是DDoS攻擊,其目的是使受害主機或網絡無法及時接收並處理外界請求,表現爲:
1、製造大流量無用數據,造成通往被攻擊主機的網絡擁塞,使被攻擊主機無法正常和外界通信。
2、利用被攻擊主機提供服務或傳輸協議上處理重複連接的缺陷,反覆高頻的發出攻擊性的重複服務請求,使被攻擊主機無法及時處理其它正常的請求。
3、利用被攻擊主機所提供服務程序或傳輸協議的本身的實現缺陷,反覆發送畸形的攻擊數據引發系統錯誤的分配大量系統資源,使主機處於掛起狀態。
DoS/DDoS攻擊是很有效的攻擊方式,必須注意防範這種攻擊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章