在三次握手的過程中,伺服器為了響應乙個受到的syn報文段,會分配並初始化連線變數和快取,然後伺服器傳送乙個synack報文段進行響應,並等待客戶端的ack報文段。如果客戶不傳送ack來完成該三次握手的第三步,最終(通常在一分多鐘之後)伺服器將終止該半開連線並**資源。
這種tcp連線管理協議的特性就會有這樣乙個漏洞,攻擊者傳送大量的tcp syn報文段,而不完成第三次握手的步驟。隨著這種syn報文段的不斷到來,伺服器不斷為這些半開連線分配資源,從而導致伺服器連線資源被消耗殆盡。這種攻擊就是syn泛供攻擊。
為了應對這種攻擊,現在有一種有效的防禦系統,稱為syn cookie。syn cookie的工作方式如下:
(1) 當伺服器接收到乙個syn報文段時,它並不知道該報文段是來自乙個合法的使用者,還是這種syn洪氾攻擊的一部分。因為伺服器不會為該報文段生成乙個半開的連線。相反,伺服器生成乙個初始tcp序列號,該序列號是syn報文段的源ip位址和目的ip位址,源埠號和目的埠號以及僅有伺服器知道的秘密數的複雜函式(雜湊函式)。這種精心製作的初始序列號稱為為「cookie」。伺服器則傳送具有這種特殊初始序號的synack報文分組。伺服器並不記憶該cookie或任何對應於syn的其他狀態資訊。
(2) 如果該客戶是合法的,則它將返回乙個ack報文段。當伺服器收到該ack報文段,需要驗證該ack是與前面傳送的某個syn相對應。由於伺服器並不維護有關syn報文段的記憶,所以伺服器通過使用synack報文段中的源和目的ip位址與埠號以及秘密數執行相同的雜湊函式。如果這個函式的結果(cookie值)加1和在客戶的ack報文段中的確認值相同的話,那麼伺服器就會認為該ack對應於較早的syn報文段,因此它是合法的。伺服器則會生成乙個套接字的全開連線。
(3) 另一方面,如果客戶沒有返回乙個ack報文段,說明之前的syn報文段是洪氾攻擊的一部分,但是它並沒有對伺服器產生危害,因為伺服器沒有為它分配任何資源。
syn泛洪 過濾 SYN泛洪攻擊原理及防禦
拒絕服務攻擊時,攻擊者想非法占用被攻擊者的一些資源,比如如 頻寬,cpu,記憶體等等,使得被攻擊者無法響應正常使用者的請求。講泛洪攻擊之前,我們先了解一下dos攻擊和ddos攻擊,這兩個攻擊大體相同,前者的意思是 拒絕服務攻擊 後者的意思是 分布式拒絕服務攻擊。不要看這兩個攻擊前乙個比後乙個多了乙個...
Python實施SYN泛洪攻擊
python的安裝我就不再 懶 贅 得 述 寫 了,為了方便和速度,我們用清華源安裝scapy 這裡用python2和python3都可以,我編寫的指令碼相容了兩個版本 pip install i scapy等待一下,基本上就安裝好了,如果報錯,那你就執行pip install pip upgrad...
使用Scapy製造SYN洪氾攻擊
usr bin python coding utf 8 from scapy.all import import optparse def synflood src,tgt tcp源埠不斷自增一,而目標埠513不變 for sport in range 1024,65535 iplayer ip s...