2016
Mar
27

網頁好讀版

TCP 3-way handshake

在了解 SYN flood attack 之前我們先要知道 TCP 三次握手協議 (TCP 3-way handshake) , 當一個 Client 端想要連線到 Server 端的某個 Listen Port,client 會先送出一個 "SYN" 封包, 等Server 端收到後,就會回一個 "SYN-ACK" 給 Client 端, Client 端收到 "SYN-ACK" 後,必須再送一個訊息 "ACK" 給 Server 端,Server 端收到 "ACK" 後,TCP 連線就建立完成,兩端可以開始傳送各種訊息。

TCP 3-way handshake 圖示

SYN flood attack

SYN flood attack 的攻擊很簡單, Client 端送出大量的 "SYN" 訊息給 Server 所有的 Port,等到 Server 回傳 "SYN-ACK" 後, Client 端故意不回傳 "ACK" ,這樣 Server 就會一直等待 "ACK" 訊息,直到 Timeout (通常是三秒) ,當 Client 送的量大到卡死 Server 的 Listen Port ,Server 就沒辦法處理其它正常 User 的封包 ,這種連線一半的攻擊行為也被叫 half open attack 。

SYN flood attack 圖示

變種 SYN flood

除了 half open 之外, SYN flood 也有其它的變種,例如 Client 送出 "SYN" 封包時,故意用假的 IP Address ,讓 Server 端回覆 "SYN-ACK" 給錯誤的 IP ,這些不知情的 IP 因為沒有送過 SYN 封包給 Server ,自然也就不會回覆 "ACK" 。

參考資料

網頁好讀版