聲明
本文僅整理攻擊原理供防禦研究參考,**不提供攻擊工具、不鼓勵實施攻擊**。若據此開發攻擊軟體與作者無關。
核心創意:TCP 三次握手後插入偽造封包
標準 TCP 三次握手:
Client → SYN → Server
Server → SYN+ACK → Client
Client → ACK → Server (連接建立)
作者實驗:在用戶態 Socket 完成三次握手後,子進程抓包,插入**第四個封包**(ACK + HTTP Request)。Server 回應第五個封包,證明插入成功。但後續連接因序號不同步而混亂。
進化方向:針對「Syn Cookie」防禦設備的放大攻擊
背景:Syn Cookie 機制
- 防火牆/抗 DDoS 設備為應對 SYN Flood,廣泛部署 **Stateless Syn Cookie**。
- 原理:Server 不建立半連接狀態,而是將連接參數編碼進 SYN+ACK 的 **序號** 中。Client 回 ACK 時攜帶該序號,Server 解碼驗證合法性後才建立完整連接。
- 優點:不佔用連接表記憶體,抗大流量 SYN Flood 極佳。
- 缺點:**序號可預測/重放**——若攻擊者曾合法連線過,保存下來的 SYN+ACK 序號可重放 ACK 完成握手,**實現來源 IP 偽裝**。
攻擊鏈:64 字節換 1518 字節,理論 23 倍放大
- 攻擊者重放合法 ACK(含 Syn Cookie 序號) → 設備視為合法握手完成,建立連接並轉發至後端 Server。
- 發送正常 HTTP Request。
- 收到 HTTP Response 後,**瘋狂發送偽造 ACK**(seq = response.ack, ack = response.seq)。
- Server/設備收到重複 ACK → 觸發 **TCP 快速重傳** → 重發 HTTP Response(~1.5 KB)。
- 攻擊封包僅 64 字節,**單向放大比最高達 23 倍**(1518/64)。
- 若前方有「狀態檢測防火牆」,反射封包可能被丟棄,但目標 Server 下行頻寬已被佔滿。
更恐怖的「長肥管道」放大:1:1024
在高頻寬長延遲鏈路(Long Fat Network,LFN,如衛星、跨洋光纖),TCP 視窗擴展允許單封包達 **64 KB(IP 總長度 65535)**。若對此類連線發動重傳攻擊,**放大倍數可達 1024 倍**(65535/64)。作者直指:1M 攻擊頻寬可打 1G,1G 打 1T,這才是真正威脅。
防禦對策與緩解建議
- 應用層速率限制:對同一來源 IP/Session 的重複 ACK/Request 進行頻率限制,識別「重傳風暴」。
- Syn Cookie 增強:引入時間戳、連接上下文綁定,防止舊 Cookie 重放。
- TCP 狀態機強化:限制快速重傳觸發條件(如要求最小間隔、最大重傳次數)。
- 異常流量行為分析:NetFlow/sFlow + 機器學習偵測「小封包高頻 ACK + 大封包重傳」模式。
- 部署 Anycast 清洗中心:將攻擊流量引流至清洗集群,保護源站。
結語
此攻擊思路揭示了 **TCP 協議可靠性機制(快速重傳)與無狀態防禦(Syn Cookie)結合時產生的副作用**。雖實際武器化難度較高(需合法連線歷史、繞過防火牆狀態檢測、處理序號同步),但為防禦研究提供了寶貴視角:**協議層面的「功能」在特定條件下會轉化為「武器」**。安全架構設計必須考慮協議邏輯被濫用的可能性,而非單純信任標準實作。