2007真不愧是黑客年,這兩天很多客戶來電稱被拒絕服務,這樣的事情的確是非常麻煩,不過現在的情況來看更多的攻擊則來自有商業利益的攻擊行為,這不得不值得我們去思考。
   
拒絕服務攻擊即攻擊者想辦法讓目標機器停止提供服務或資源訪問。這些資源包括磁盤空間、內存、進程甚至網絡帶寬,從而阻止正常用戶的訪問。其實對網絡帶寬 進行的消耗性攻擊只是拒絕服務攻擊的一小部分,只要能夠對目標造成麻煩,使某些服務被暫停甚至主機死機,都屬於拒絕服務攻擊。拒絕服務攻擊問題也一直得不 到合理的解決,究其原因是因為這是由於網絡協議本身的安全缺陷造成的,從而拒絕服務攻擊也成為了攻擊者的終極手法。

攻擊者進行拒絕服務攻擊,實際上讓服務器實現兩種效果:一是迫使服務器的緩衝區滿,不接收新的請求;二是使用IP欺騙,迫使服務器把合法用戶的連接復位,影響合法用戶的連接。

接下來瞭解一下幾種常見的拒絕服務攻擊的原理:

1.SYN Foold
SYN Flood是當前最流行的DoS(拒絕服務攻擊)與DDoS(Distributed Denial Of Service分佈式拒絕服務攻擊)的方式之一,這是一種利用TCP協議缺陷,發送大量偽造的TCP連接請求,使被攻擊方資源耗盡(CPU滿負荷或內存不 足)的攻擊方式。

SYN Flood攻擊的過程在TCP協議中被稱為三次握手(Three-way Handshake),而SYN Flood拒絕服務攻擊就是通過三次握手而實現的。

(1) 攻擊者向被攻擊服務器發送一個包含SYN標誌的TCP報文,SYN(Synchronize)即同步報文。同步報文會指明客戶端使用的端口以及TCP連接的初始序號。這時同被攻擊服務器建立了第一次握手。

(2) 受害服務器在收到攻擊者的SYN報文後,將返回一個SYN+ACK的報文,表示攻擊者的請求被接受,同時TCP序號被加一,ACK(Acknowledgement)即確認,這樣就同被攻擊服務器建立了第二次握手。

(3) 攻擊者也返回一個確認報文ACK給受害服務器,同樣TCP序列號被加一,到此一個TCP連接完成,三次握手完成。

具體原理是:TCP連接的三次握手中,假設一個用戶向服務器發送了SYN報文後突然死機或掉線,那麼服務器在發出SYN+ACK應答報文後是無法收到客戶 端的ACK報文的(第三次握手無法完成),這種情況下服務器端一般會重試(再次發送SYN+ACK給客戶端)並等待一段時間後丟棄這個未完成的連接。這段 時間的長度我們稱為SYN Timeout,一般來說這個時間是分鐘的數量級(大約為30秒~2分鐘);一個用戶出現異常導致服務器的一個線程等待1分鐘並不是什麼很大的問題,但如 果有一個惡意的攻擊者大量模擬這種情況(偽造IP地址),服務器端將為了維護一個非常大的半連接列表而消耗非常多的資源。即使是簡單的保存並遍歷也會消耗 非常多的CPU時間和內存,何況還要不斷對這個列表中的IP進行SYN+ACK的重試。實際上如果服務器的TCP/IP棧不夠強大,最後的結果往往是堆棧 溢出崩潰—— 既使服務器端的系統足夠強大,服務器端也將忙於處理攻擊者偽造的TCP連接請求而無暇理睬客戶的正常請求(畢竟客戶端的正常請求比率非常之小),此時從正 常客戶的角度看來,服務器失去響應,這種情況就稱作:服務器端受到了SYN Flood攻擊(SYN洪水攻擊)。

2.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數據,使服務器不對合法用戶服務,從而實現了對受害服務器的拒絕服務攻擊。

3. UDP洪水攻擊
攻擊者利用簡單的TCP/IP服務,如Chargen和Echo來傳送毫無用處的佔滿帶寬的數據。通過偽造與某一主機的Chargen服務之間的一次的 UDP連接,回覆地址指向開著Echo服務的一台主機,這樣就生成在兩台主機之間存在很多的無用數據流,這些無用數據流就會導致帶寬的服務攻擊。

4. Ping洪流攻擊
由於在早期的階段,路由器對包的最大尺寸都有限制。許多操作系統對TCP/IP棧的實現在ICMP包上都是規定64KB,並且在對包的標題頭進行讀取之 後,要根據該標題頭裡包含的信息來為有效載荷生成緩衝區。當產生畸形的,聲稱自己的尺寸超過ICMP上限的包也就是加載的尺寸超過64K上限時,就會出現 內存分配錯誤,導致TCP/IP堆棧崩潰,致使接受方死機。

5. 淚滴(teardrop)攻擊
淚滴攻擊是利用在TCP/IP堆棧中實現信任IP碎片中的包的標題頭所包含的信息來實現自己的攻擊。IP分段含有指明該分段所包含的是原包的哪一段的信息,某些TCP/IP(包括service pack 4以前的NT)在收到含有重疊偏移的偽造分段時將崩潰。

6. Land攻擊
Land攻擊原理是:用一個特別打造的SYN包,它的原地址和目標地址都被設置成某一個服務器地址。此舉將導致接受服務器向它自己的地址發送SYN- ACK消息,結果這個地址又發回ACK消息並創建一個空連接。被攻擊的服務器每接收一個這樣的連接都將保留,直到超時,對Land攻擊反應不同,許多 UNIX實現將崩潰,NT變的極其緩慢(大約持續5分鐘)。

7. Smurf攻擊
一個簡單的Smurf攻擊原理就是:通過使用將回覆地址設置成受害網絡的廣播地址的ICMP應答請求(ping)數據包來淹沒受害主機的方式進行。最終導 致該網絡的所有主機都對此ICMP應答請求作出答覆,導致網絡阻塞。它比ping of death洪水的流量高出1或2個數量級。更加複雜的Smurf將源地址改為第三方的受害者,最終導致第三方崩潰。

8.Fraggle攻擊
原理:Fraggle攻擊實際上就是對Smurf攻擊作了簡單的修改,使用的是UDP應答消息而非ICMP。
原文出處
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 ivan0914 的頭像
    ivan0914

    I'n Blog 之萬象真藏

    ivan0914 發表在 痞客邦 留言(0) 人氣()