
摘要:
本技術報告探討TCP SYN封包分析在現代網路安全中的關鍵作用,借鑑ASERT的研究洞見。我們深入剖析SYN封包的技術組成,探討其在OS fingerprinting和攻擊檢測中的應用,並分析當前的緩解策略。SYN封包不僅僅是連線啟動器,更是security telemetry和threat intelligence的豐富資料來源。

1. 技術深入探討:TCP SYN封包的結構
TCP SYN封包,定義於RFC 793,啟動TCP三向交握。其結構編碼了對於連線建立和安全分析至關重要的資訊:
- Sequence Number (32 bits): Initial Sequence Number (ISN)。其生成演算法因作業系統而異,使其成為主要的fingerprinting目標。可預測的ISN(早期作業系統實作中的缺陷)是一個嚴重的安全漏洞,會導致Session劫持 [1]。
- Acknowledgment Number (32 bits): 在純SYN封包中設為0(無ACK旗標設定)。
- Data Offset (4 bits): 指定TCP標頭長度,以32 bit word為單位,表示payload資料的起點。對於無選項的SYN,通常為5(20位元組)。
- Control Flags (8 bits): SYN旗標 = 1,ACK旗標 = 0,其他通常為0。特定的組合(僅SYN)定義此封包類型。
- Window Size (16 bits): 廣告接收窗口。值和縮放因子(透過Window Scale選項)因作業系統和堆疊實作而有顯著差異 [1, 2]。
- Urgent Pointer (16 bits): 與SYN無關,設為0。
-
TCP Options (變動長度):
對fingerprinting和安全分析最關鍵的部分:
- Maximum Segment Size (MSS - Kind 2): 指定發送方接受的最大分段大小。常見值為1460(乙太網路)、1440(PPPoE)、1380(常見VPN MTU),但存在作業系統特定的預設值 [1]。
- Window Scale (WS - Kind 3): 用於縮放廣告窗口大小的位移計數(RFC 1323)。其存在與特定的位移值(例如7、8、14)是作業系統的強烈指標 [1, 2]。
- Selective Acknowledgment Permitted (SACK - Kind 4): 表示支援SACK(RFC 2018)。其存在與否可被fingerprint。
- Timestamp (TS - Kind 8): 用於RTT測量和Protection Against Wrapped Sequence numbers (PAWS - RFC 1323)。其存在和特定格式因作業系統不同而不同 [1, 2]。
- No-Operation (NOP - Kind 1): 用於填充和選項對齊。其順序和頻率可被fingerprint。
- End of Option List (EOL - Kind 0): 終止選項列表。
- Order and Padding: 選項出現的順序和使用NOP進行32位元對齊的方式,對特定TCP/IP堆疊實作具有高度特徵性 [1, 2]。
2. SYN封包作為安全遙測:Fingerprinting與異常檢測
分析SYN封包欄位提供了被動OS fingerprinting和威脅檢測能力:
被動OS Fingerprinting: 透過分析Window Size、支援的TCP Options(類型、順序、WS位移因子、TS值等)、TTL(Time-To-Live - IP標頭欄位)和DF(Don't Fragment - IP標頭旗標)的組合,安全設備可推斷來源主機的作業系統,有時甚至是具體版本 [1]。這對於資產清查、漏洞映射和檢測未授權設備非常有價值。例如:
- 一個Window Size為65535,WS選項位移=6,TS選項存在,MSS=1460,TTL=64,DF=1的SYN封包高度指示現代Linux kernel。
- 一個Window Size為8192,無WS選項,無TS選項,MSS=1360,TTL=128的SYN封包是較舊Windows版本的特徵。
異常檢測與攻擊特徵: SYN行為偏離預期表明潛在攻擊:
- SYN Floods: SYN封包突然大量湧入,特別是來自spoofed來源IP或針對單一目的IP/埠,是TCP SYN flood攻擊的標誌 [1, 3]。關鍵檢測指標包括SYN封包速率、SYN/ACK到ACK完成比率(低比率表示許多半開連線)和來源IP分佈熵(Source IP distribution entropy)。
- 掃描/偵察: SYN封包發送到眾多目的埠(水平掃描)或同一埠的多個IP(垂直掃描)表明偵察活動 [1]。檢測涉及分析SYN封包目的熵和連線嘗試失敗率。
- Spoofed Source IPs: 具有不合理來源IP的SYN封包(例如,來自網際網路的RFC 1918位址、非可路由位址)或未通過反向路徑轉發(Reverse Path Forwarding,RPF)檢查的IP表明spoofing,這在flood和掃描中很常見 [1, 3]。
- Malformed SYN Packets: 具有無效組合(例如,無先前交握的SYN+ACK)、錯誤標頭長度或無效選項值的SYN封包,可能表明probe流量、fuzzing嘗試或針對TCP堆疊漏洞的攻擊 [1]。
3. SYN Flood緩解機制的技術分析
防禦SYN flood需要以線路速率(Line Rate)操作的複雜技術:
SYN Cookies (Cryptographic Defense): 這是當前主要防禦(RFC 4987)。伺服器不儲存收到SYN時的狀態,而是將關鍵連線參數(來源/目的IP/埠、ISN、MSS、Timestamp)編碼成一個cryptographic hash("cookie"),作為SYN-ACK中的Initial Sequence Number (ISN)發回 [1, 3, 4]。
演算法概述(簡化):
- 接收SYN (Src_IP, Src_Port, Dst_IP, Dst_Port, Client_ISN)。
- 生成一個秘密值s(定期輪換)。
- 編碼協商的MSS(通常為8個可能值的頂部3位元)。
-
計算Cookie:
Cookie = Hash(s, Src_IP, Src_Port, Dst_IP, Dst_Port, Client_ISN, Timestamp, Encoded_MSS) mod 2^32
(通常使用SHA1或MD5截斷至32位元)。 - 發送SYN-ACK,ISN = Cookie(特定位元也編碼Timestamp和MSS)。
- 收到ACK後,提取Client_ISN和Acknowledgment Number(應為Cookie+1)。
- 使用相同輸入(s, Src_IP等)和接收到的Client_ISN重新計算預期Cookie。
- 若重新計算的Cookie == (ACK Number - 1),則使用編碼的MSS/Timestamp重建連線狀態。否則,丟棄ACK。
技術優勢: 在flood期間無狀態(不消耗伺服器記憶體),透過密碼學驗證客戶端回傳位址,保留協商的MSS/Timestamp。"核心創新是用無狀態、可驗證的token取代易受攻擊的伺服器狀態。" [1, 4]。
限制: SYN-ACK/ACK處理的輕微開銷,交握階段無法保留MSS/Timestamp以外的TCP選項,需要kernel支援。
速率限制與閾值設定: 網路設備(防火牆、路由器、負載平衡器)實作thresholds:
- 每秒每個來源IP或每個目的IP/埠的最大新連線(SYN)數。
- 每個目的地的最大半開連線(SYN_RECEIVED狀態)數。
超過thresholds觸發速率限制(丟棄多餘SYN)或啟動SYN cookie。token bucket或leaky bucket演算法有效執行這些速率。"thresholds必須調整以避免影響合法流量高峰,同時有效遏制flood。" [1]。
TCP Intercept / Stateful SYN Proxy: 中間設備(防火牆、負載平衡器)作為proxy:
- 攔截SYN。
- 代表伺服器與客戶端完成三向交握。
- 僅在成功完成(收到客戶端ACK)後,才向後端伺服器啟動新的三向交握。
這完全保護伺服器免受未完成SYN的影響。雖然非常有效,但會引入延遲和proxy設備的顯著狀態/處理開銷 [1, 3]。
流量清洗(DDoS緩解服務): 大型供應商利用網路全域可視性和專用硬體/軟體檢測flood模式,並將流量轉向"清洗中心"。在此,SYN flood透過SYN cookies、進階速率限制、行為分析和IP信譽的組合進行過濾,僅允許乾淨流量到達目標 [1]。
4. 進階分析:現代威脅環境中的SYN封包
除了基本的flood和掃描外,SYN分析有助於檢測複雜威脅:
低速攻擊: Threat actors故意以低於典型thresholds的速率發送SYN,以規避檢測,同時緩慢耗盡資源。檢測需要分析更長時間窗口內的連線建立成功率,並識別SYN->ACK->ACK完成比率異常低的來源 [1]。
反射/放大濫用: 雖然不如UDP常見,threat actors可spoof SYN封包,將受害者的來源IP指向反射器(會發送大型SYN-ACK的伺服器)。監控未經請求的SYN-ACK或相對於外發SYN的SYN-ACK流量激增可表明此類攻擊 [1]。
TCP堆疊漏洞探測: Malformed SYN packets(例如,具有無效checksums、衝突旗標、極端選項長度或精心製作的選項值)用於探測目標TCP/IP實作中的漏洞(例如,CVE-2004-0230 "TCP Reset"、CVE-2018-5391 "SegmentSmack")。Deep packet inspection (DPI)引擎分析SYN封包結構以檢測此類異常 [1]。
5. 結論
TCP SYN封包是網路通訊的基礎元素,承載了可供安全用途的豐富資訊。其結構的技術分析,特別是IP標頭欄位(TTL、DF)、TCP標頭欄位(Window Size、Flags),以及TCP Options的組成、順序和值的關鍵分析,實現了穩健的被動OS fingerprinting和設備識別。此外,監控SYN封包速率、分佈、完成比率和結構有效性提供了檢測廣泛威脅的關鍵信號,從體積性SYN flood和偵察掃描到低速資源耗盡攻擊和漏洞探測。現代防禦技術如無狀態SYN cookies,利用密碼學取代易受攻擊的伺服器狀態,代表了緩解最古老但仍普遍存在的 DDoS 攻擊向量的重要技術進展。不斷精進SYN分析技術和緩解演算法對於在不斷演變的威脅環境中保持網路安全韌性至關重要。