對DDoS攻擊實(shí)例之SYN Flood攻擊的詳細(xì)內(nèi)容講述

2016-08-19 18:10:19 來源:互聯(lián)網(wǎng)作者:haolise 人氣: 次閱讀 338 條評論

此文章主要介紹的是DDoS攻擊實(shí)例SYNFlood攻擊,我們大家都知道SYN-Flood是目前使用最廣泛的DDoS攻擊手段,早先的DoS的手段在向分布式這一階段發(fā)展的時(shí)候也經(jīng)歷了千軍萬馬過獨(dú)木橋的過程。SYN-Flood的攻擊效果最好,應(yīng)...

此文章主要介紹的是DDoS攻擊實(shí)例 SYN Flood攻擊,我們大家都知道SYN-Flood是目前使用最廣泛的DDoS攻擊手段,早先的DoS的手段在向分布式這一階段發(fā)展的時(shí)候也經(jīng)歷了千軍萬馬過獨(dú)木橋的過程。

SYN-Flood的攻擊效果最好,應(yīng)該是眾黑客不約而同選擇它的原因吧。那么我們一起來看看SYN-Flood的詳細(xì)情況。

SYN-Flood是目前最流行的DDoS攻擊手段,早先的DoS的手段在向分布式這一階段發(fā)展的時(shí)候也經(jīng)歷了浪里淘沙的過程。SYN-Flood的攻擊效果最好,應(yīng)該是眾黑客不約而同選擇它的原因吧。那么我們一起來看看SYN-Flood的詳細(xì)情況。

Syn Flood原理 - 三次握手

Syn Flood利用了TCP/IP協(xié)議的固有漏洞。面向連接的TCP三次握手是Syn Flood存在的基礎(chǔ)。

TCP連接的三次握手

如圖二,在第一步中,客戶端向服務(wù)端提出連接請求。這時(shí)TCP SYN標(biāo)志置位??蛻舳烁嬖V服務(wù)端序列號區(qū)域合法,需要檢查??蛻舳嗽赥CP報(bào)頭的序列號區(qū)中插入自己的ISN。服務(wù)端收到該TCP分段后,在第二步以自己的ISN回應(yīng)(SYN標(biāo)志置位),同時(shí)確認(rèn)收到客戶端的第一個(gè)TCP分段(ACK標(biāo)志置位)。在第三步中,客戶端確認(rèn)收到服務(wù)端的ISN(ACK標(biāo)志置位)。到此為止建立完整的TCP連接,開始全雙工模式的數(shù)據(jù)傳輸過程。

Syn Flood攻擊者不會完成三次握手

假設(shè)一個(gè)用戶向服務(wù)器發(fā)送了SYN報(bào)文后突然死機(jī)或掉線,那么服務(wù)器在發(fā)出SYN+ACK應(yīng)答報(bào)文后是無法收到客戶端的ACK報(bào)文的(第三次握手無法完成),這種情況下服務(wù)器端一般會重試(再次發(fā)送SYN+ACK給客戶端)并等待一段時(shí)間后丟棄這個(gè)未完成的連接,這段時(shí)間的長度我們稱為SYN Timeout,一般來說這個(gè)時(shí)間是分鐘的數(shù)量級(大約為30秒-2分鐘);

一個(gè)用戶出現(xiàn)異常導(dǎo)致服務(wù)器的一個(gè)線程等待1分鐘并不是什么很大的問題,但如果有一個(gè)惡意的攻擊者大量模擬這種情況,服務(wù)器端將為了維護(hù)一個(gè)非常大的半連接列表而消耗非常多的資源----數(shù)以萬計(jì)的半連接,即使是簡單的保存并遍歷也會消耗非常多的CPU時(shí)間和內(nèi)存,何況還要不斷對這個(gè)列表中的IP進(jìn)行SYN+ACK的重試。

實(shí)際上如果服務(wù)器的TCP/IP棧不夠強(qiáng)大,最后的結(jié)果往往是堆棧溢出崩潰---即使服務(wù)器端的系統(tǒng)足夠強(qiáng)大,服務(wù)器端也將忙于處理攻擊者偽造的TCP連接請求而無暇理睬客戶的正常請求(畢竟客戶端的正常請求比率非常之小),此時(shí)從正??蛻舻慕嵌瓤磥?,服務(wù)器失去響應(yīng),這種情況我們稱做:服務(wù)器端受到了SYN Flood攻擊(SYN洪水攻擊)。

下面是我在實(shí)驗(yàn)室中模擬的一次Syn Flood攻擊的實(shí)際過程

這一個(gè)局域網(wǎng)環(huán)境,只有一臺攻擊機(jī)(PIII667/128/mandrake),被攻擊的是一臺Solaris 8.0 (spark)的主機(jī),網(wǎng)絡(luò)設(shè)備是Cisco的百兆交換機(jī)。這是在攻擊并未進(jìn)行之前,在Solaris上進(jìn)行snoop的記錄,snoop與tcpdump等網(wǎng)絡(luò)監(jiān)聽工具一樣,也是一個(gè)很好的網(wǎng)絡(luò)抓包與分析的工具。可以看到攻擊之前,目標(biāo)主機(jī)上接到的基本上都是一些普通的網(wǎng)絡(luò)包。 …

? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes

? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes

? -> (multicast) ETHER Type=0000 (LLC/802.3), size = 52 bytes

? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes

192.168.0.66 -> 192.168.0.255 NBT Datagram Service Type=17 Source=GU[0]

192.168.0.210 -> 192.168.0.255 NBT Datagram Service Type=17 Source=ROOTDC[20]

192.168.0.247 -> 192.168.0.255 NBT Datagram Service Type=17 Source=TSC[0]

? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes

192.168.0.200 -> (broadcast) ARP C Who is 192.168.0.102, 192.168.0.102 ?

? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes

? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes

192.168.0.66 -> 192.168.0.255 NBT Datagram Service Type=17 Source=GU[0]

192.168.0.66 -> 192.168.0.255 NBT Datagram Service Type=17 Source=GU[0]

192.168.0.210 -> 192.168.0.255 NBT Datagram Service Type=17 Source=ROOTDC[20]

? -> (multicast) ETHER Type=0000 (LLC/802.3), size = 52 bytes

? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes

? -> (broadcast) ETHER Type=886F (Unknown), size = 1510 bytes

接著,攻擊機(jī)開始發(fā)包,DDoS開始了…,突然間sun主機(jī)上的snoop窗口開始飛速地翻屏,顯示出接到數(shù)量巨大的Syn請求。這時(shí)的屏幕就好象是時(shí)速300公里的列車上的一扇車窗。這是在Syn Flood攻擊時(shí)的snoop輸出結(jié)果: …

127.0.0.178 -> lab183.lab.net AUTH C port=1352

127.0.0.178 -> lab183.lab.net TCP D=114 S=1352 Syn Seq=674711609 Len=0 Win=65535

127.0.0.178 -> lab183.lab.net TCP D=115 S=1352 Syn Seq=674711609 Len=0 Win=65535

127.0.0.178 -> lab183.lab.net UUCP-PATH C port=1352

127.0.0.178 -> lab183.lab.net TCP D=118 S=1352 Syn Seq=674711609 Len=0 Win=65535

127.0.0.178 -> lab183.lab.net NNTP C port=1352

127.0.0.178 -> lab183.lab.net TCP D=121 S=1352 Syn Seq=674711609 Len=0 Win=65535

127.0.0.178 -> lab183.lab.net TCP D=122 S=1352 Syn Seq=674711609 Len=0 Win=65535

127.0.0.178 -> lab183.lab.net TCP D=124 S=1352 Syn Seq=674711609 Len=0 Win=65535

127.0.0.178 -> lab183.lab.net TCP D=125 S=1352 Syn Seq=674711609 Len=0 Win=65535

127.0.0.178 -> lab183.lab.net TCP D=126 S=1352 Syn Seq=674711609 Len=0 Win=65535

127.0.0.178 -> lab183.lab.net TCP D=128 S=1352 Syn Seq=674711609 Len=0 Win=65535

127.0.0.178 -> lab183.lab.net TCP D=130 S=1352 Syn Seq=674711609 Len=0 Win=65535

127.0.0.178 -> lab183.lab.net TCP D=131 S=1352 Syn Seq=674711609 Len=0 Win=65535

127.0.0.178 -> lab183.lab.net TCP D=133 S=1352 Syn Seq=674711609 Len=0 Win=65535

127.0.0.178 -> lab183.lab.net TCP D=135 S=1352 Syn Seq=674711609 Len=0 Win=65535

這時(shí)候內(nèi)容完全不同了,再也收不到剛才那些正常的網(wǎng)絡(luò)包,只有DDoS包。大家注意一下,這里所有的Syn Flood攻擊包的源地址都是偽造的,給追查工作帶來很大困難。這時(shí)在被攻擊主機(jī)上積累了多少Syn的半連接呢?我們用netstat來看一下:

# netstat -an | grep SYN

192.168.0.183.9 127.0.0.79.1801 0 0 24656 0 SYN_RCVD

192.168.0.183.13 127.0.0.79.1801 0 0 24656 0 SYN_RCVD

192.168.0.183.19 127.0.0.79.1801 0 0 24656 0 SYN_RCVD

192.168.0.183.21 127.0.0.79.1801 0 0 24656 0 SYN_RCVD

192.168.0.183.22 127.0.0.79.1801 0 0 24656 0 SYN_RCVD

192.168.0.183.23 127.0.0.79.1801 0 0 24656 0 SYN_RCVD

192.168.0.183.25 127.0.0.79.1801 0 0 24656 0 SYN_RCVD

192.168.0.183.37 127.0.0.79.1801 0 0 24656 0 SYN_RCVD

192.168.0.183.53 127.0.0.79.1801 0 0 24656 0 SYN_RCVD

其中SYN_RCVD表示當(dāng)前未完成的TCP SYN隊(duì)列,統(tǒng)計(jì)一下:

# netstat -an | grep SYN | wc -l

5273

# netstat -an | grep SYN | wc -l

5154

# netstat -an | grep SYN | wc -l

5267

…..

共有五千多個(gè)Syn的半連接存儲在內(nèi)存中。這時(shí)候被攻擊機(jī)已經(jīng)不能響應(yīng)新的服務(wù)請求了,系統(tǒng)運(yùn)行非常慢,也無法ping通。

上述的相關(guān)內(nèi)容就是對對DDoS攻擊實(shí)例之SYN Flood攻擊的詳細(xì)內(nèi)容講述的描述,希望會給你帶來一些幫助在此方面。

文章轉(zhuǎn)自 ddos教程http://www.blddos.com/gonggao/2012/1016/9.html