SYN

SYN

SYN:同步序列編號()。是TCP/IP建立連線時使用的握手信號。在客戶機和伺服器之間建立正常的TCP網路連線時,客戶機首先發出一個SYN訊息,伺服器使用SYN+ACK應答表示接收到了這個訊息,最後客戶機再以ACK訊息回響。這樣在客戶機和伺服器之間才能建立起可靠的TCP連線,數據才可以在客戶機和伺服器之間傳遞。 TCP連線的第一個包,非常小的一種數據包。SYN 攻擊包括大量此類的包,由於這些包看上去來自實際不存在的站點,因此無法有效進行處理。每個機器的欺騙包都要花幾秒鐘進行嘗試方可放棄提供正常回響。

攻擊性質

在黑客攻擊事件中,SYN攻擊是最常見又最容易被利用的一種攻擊手法。

SYN攻擊屬於DDoS攻擊的一種,它利用TCP協定缺陷,通過傳送大量的半連線請求,耗費CPU和記憶體資源。SYN攻擊除了能影響主機外,還可以危害路由器、防火牆等網路系統,事實上SYN攻擊並不管目標是什麼系統,只要這些系統打開TCP服務就可以實施。伺服器接收到連線請求(syn= j),將此信息加入未連線佇列,並傳送請求包給客戶(syn=k,ack=j+1),此時進入SYN_RECV狀態。當伺服器未收到客戶端的確認包時,重發請求包,一直到逾時,才將此條目從未連線佇列刪除。配合IP欺騙,SYN攻擊能達到很好的效果,通常,客戶端在短時間內偽造大量不存在的IP位址,向伺服器不斷地傳送syn包,伺服器回復確認包,並等待客戶的確認,由於源地址是不存在的,伺服器需要不斷的重發直至逾時,這些偽造的SYN包將長時間占用未連線佇列,正常的SYN請求被丟棄,目標系統運行緩慢,嚴重者引起網路堵塞甚至系統癱瘓。

攻擊原理

關於SYN攻擊防範技術,人們研究得比較早。歸納起來,主要有兩大類,一類是通過防火牆、路由器等過濾網關防護,另一類是通過加固TCP/IP協定棧防範

SYN Flood利用TCP協定缺陷,傳送了大量偽造的TCP連線請求,使得被攻擊方資源耗盡,無法及時回應或處理正常的服務請求。一個正常的TCP連線需要三次握手,首先客戶端傳送一個包含SYN標誌的數據包,其後伺服器返回一個SYN/ACK的應答包,表示客戶端的請求被接受,最後客戶端再返回一個確認包ACK,這樣才完成TCP連線。在伺服器端傳送應答包後,如果客戶端不發出確認,伺服器會等待到逾時,期間這些半連線狀態都保存在一個空間有限的快取佇列中;如果大量的SYN包發到伺服器端後沒有應答,就會使伺服器端的TCP資源迅速耗盡,導致正常的連線不能進入,甚至會導致伺服器的系統崩潰。

攻擊器

SYN攻擊實現起來非常的簡單,網際網路上有大量現成的SYN攻擊工具。

windows系統下的SYN工具

以synkill.exe為例,運行工具,選擇隨機的源地址和源連線埠,並填寫目標機器地址和TCP連線埠,激活運行,很快就會發現目標系統運行緩慢。如果攻擊效果不明顯,可能是目標機器並未開啟所填寫的TCP連線埠或者防火牆拒絕訪問該連線埠,此時可選擇允許訪問的TCP連線埠,通常,windows系統開放tcp139連線埠,UNIX系統開放tcp7、21、23等連線埠。

檢測攻擊

檢測SYN攻擊非常的方便,當你在伺服器上看到大量的半連線狀態時,特別是源IP位址是隨機的,基本上可以斷定這是一次SYN攻擊。我們使用系統自帶的netstat 工具來檢測SYN攻擊:

# netstat -n -p TCP

tcp 0  0 10.11.11.11:23 124.173.152.8:25882  SYN_RECV -

tcp 0  0 10.11.11.11:23 236.15.133.204:2577  SYN_RECV -

tcp 0  0 10.11.11.11:23 127.160.6.129:51748  SYN_RECV -

tcp 0  0 10.11.11.11:23 222.220.13.25:47393  SYN_RECV -

tcp 0  0 10.11.11.11:23 212.200.204.182:60427 SYN_RECV -

tcp 0  0 10.11.11.11:23 232.115.18.38:278  SYN_RECV -

tcp 0  0 10.11.11.11:23 239.116.95.96:5122 SYN_RECV -

tcp 0  0 10.11.11.11:23 236.219.139.207:49162 SYN_RECV -

...

上面是在LINUX系統中看到的,很多連線處於SYN_RECV狀態(在WINDOWS系統中是SYN_RECEIVED狀態),源IP位址都是隨機的,表明這是一種帶有IP欺騙的SYN攻擊。

我們也可以通過下面的命令直接查看在LINUX環境下某個端囗的未連線佇列的條目數:

#netstat -n -p TCP | grep SYN_RECV | grep :22 | wc -l

324

顯示TCP端囗22的未連線數有324個,雖然還遠達不到系統極限,但應該引起管理員的注意。

防範技術

關於SYN攻擊防範技術,人們研究得比較早。歸納起來,主要有兩大類,一類是通過防火牆、路由器等過濾網關防護,另一類是通過加固TCP/IP協定棧防範

註冊表設定

在“開始->運行->鍵入regedit”

啟用 SYN 攻擊保護的命名值位於註冊表項 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters之下。值名稱:SynAttackProtect。推薦值:2。

以下部分中的所有項和值均位於註冊表項 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters 之下。

指定必須在觸發 SYN flood 保護之前超過的 TCP 連線請求閾值。值名稱:TcpMaxPortsExhausted。推薦值:5。

啟用 SynAttackProtect 後,該值指定 SYN_RCVD 狀態中的 TCP 連線閾值,超過 SynAttackProtect 時,觸發 SYN flood 保護。值名稱:TcpMaxHalfOpen。推薦值數據:500。

啟用 SynAttackProtect 後,指定至少傳送了一次重傳的 SYN_RCVD 狀態中的 TCP 連線閾值。超過 SynAttackProtect 時,觸發 SYN flood 保護。值名稱:TcpMaxHalfOpenRetried。推薦值數據:400

豐富頻寬資源

不難看出syn攻擊時消耗大量頻寬資源,所以要想防禦syn洪水攻擊,一個豐富的頻寬資源是非常有必要的,通常的流量攻擊,攻擊者也是利用肉雞的頻寬資源來堵死目標網路的,所以這個也是一個重要的防禦前提。

防火牆

利用防火牆來進行防護攻擊是目前最有效的方法,當然前提是攻擊在防護頻寬範圍之內,也就是為什麼第二條推薦頻寬資源,這是保證在防火牆前面不會造成堵塞,來達到防火牆的防護目的。

相關詞條

相關搜尋

熱門詞條

聯絡我們