<small id="ywpfw"><dl id="ywpfw"><dfn id="ywpfw"></dfn></dl></small>
  • <b id="ywpfw"><small id="ywpfw"><dl id="ywpfw"></dl></small></b>
    1. <input id="ywpfw"><big id="ywpfw"><i id="ywpfw"></i></big></input>

    2. <b id="ywpfw"><address id="ywpfw"></address></b>

      <wbr id="ywpfw"><ins id="ywpfw"></ins></wbr>

      En

      無心插柳還是有意為之:TCP反射DDoS攻擊手法深入分析2.0

      作者:[宙斯盾團隊] 暴雪公布時間:2019-04-29閱讀次數:19159評論:1

      分享

      作者:[宙斯盾團隊] 暴雪 


      我們常聽說UDP反射攻擊,那你聽說過TCP反射攻擊嗎? 


      我們對TCP三次握手諳熟于心,但你確定服務器收到SYN包之后一定返回SYN/ACK嗎? 


      現網的DDoS對抗中,基于TCP協議的反射攻擊手法已經悄然興起,而且出現了多次手法變種,對DDoS防護方帶來嚴峻的挑戰。新場景下的技術對抗如約而至...

      0x00 引言 


      筆者之前曾撰寫過一篇關于利用TCP協議發起的反射攻擊的文章《小隱隱于野:基于TCP反射DDoS攻擊分析》。分享的是一種新型的攻擊手法 —— TCP反射攻擊:黑客偽造目的服務器IP向公網的TCP服務器發起連接請求(SYN),以使得被攻擊服務器收到大量SYN/ACK報文,最終造成拒絕服務的手法。而由于這種反射攻擊存在協議棧行為,傳統的TCP防護算法難以湊效,這也使得這種攻擊手法有愈演愈烈之勢。 



      經過我們團隊研究人員長期的跟蹤分析,發現這種攻擊手法出現了兩個新的特征: 


      1)黑客逐漸趨向利用CDN廠商的服務器資源發起TCP發射攻擊,因為通過掃描CDN廠商網段,可以快速、高效地獲得豐富的TCP服務器資源; 


      2)TCP反射攻擊流量從SYN/ACK轉變成ACK,防護難度進一步增大。 


      0x01 TCP反射的新特征研究 


      特征一:黑客逐漸趨向于利用CDN廠商的服務器資源發起TCP發射攻擊 


      我們在整理分析現網的TCP反射攻擊時,發現會經常出現攻擊源幾乎全部來源海外CDN廠商的情況。如圖2、圖3所示,某次TCP反射攻擊事件中有99.88%的IP來源美國,而且88.39%屬于某個著名CDN廠商。



      顯而易見這是黑客開始傾向于掃描CDN廠商的IP網段,以獲取大批量反射源的思路。由于CDN廠商的IP資源主要用于為用戶提供加速服務,不可避免地會開放TCP端口,黑客便可以通過這種方式快速地獲取到有效的TCP反射源。例如筆者隨機探測一個CDN廠商的C段IP,結果為:整個C段所有IP全部均有開放TCP端口。 




      這種方法為黑客提供大量可用的TCP反射源,能夠讓攻擊者的資源實現最大化,而且TCP反射攻擊由于具備協議棧行為,傳統策略難以防護,所以不難推測后面這種攻擊手法將越來越盛行,為DDoS防護方帶來不小的挑戰。 


      特征二:反射流量從SYN/ACK報文轉變為ACK報文,防護難度進一步增大 


      這里給人的第一反應可能就是顛覆了我們TCP三次握手的印象,一個服務器(反射源)收到一個SYN請求,不應該是返回SYN/ACK嗎?怎么會返回ACK包?為了解答這個問題,容筆者從黑客偽造SYN請求的過程說起... 


      首先如上文描述TCP反射的原理,黑客會控制肉雞偽造成被攻擊服務器的IP對公網的TCP服務器發起SYN請求,而公網TCP服務器的端口都是固定的,所以為了實現反射,SYN請求中的目的端口也同樣固定。與此同時,為了達到更好的攻擊效果,黑客需要使反射出來的報文的目的端口為被攻擊服務器的業務端口(繞過安全設備將非業務端口的流量直接攔截的策略),也就是說SYN請求報文中的源端口也是固定的。就是基于這些原因,攻擊者偽造SYN請求報文的五元組通常都會出現集聚,這個結論其實很重要,因為它就是引發服務器反彈ACK的前提條件。 


      舉例如圖5所示:黑客需要攻擊的服務器IP為183.*.*.45,其業務端口為80,而黑客掌握的TCP反射服務器的IP是104.*.*.35,開放的端口是8080,那么攻擊時構造SYN包的五元組就會集聚在Protocol: TCP、DST_IP: 104.*.*.35、SRC_IP: 183.*.*.45、DST_PORT: 8080、SRC_PORT: 80。 


      而我們都知道五元組決定了一個會話,所以當黑客短時時間構造大量相同五元組的SYN包發送到同一臺TCP服務器時,就會造成大量的“會話沖突”。也就是說從TCP服務器的角度來看,接收到第一個SYN包后,服務器返回SYN/ACK等待ACK以建立TCP連接,而此時又再接收到同一個會話的SYN。那TCP服務器會怎么處理呢?再次返回SYN/ACK?RST?還是其他? 


      其實在這個情況下,TCP服務器具體怎么處理決定因素在于SYN包的seq號和服務器的window size!假設第一個SYN包的seq號為SEQ1,TCP服務器的windows size為WND,而第二個SYN的seq號為SEQ2,那么: 


      一、如果SEQ2==SEQ1,此時TCP服務器會認為這個是SYN包重傳,則再次返回SYN/ACK(其實是在重傳SYN/ACK),如圖6所示。這個攻擊場景從被攻擊服務器的視角來看,就是在短時間內接收到大量的SYN/ACK報文,造成拒絕服務,這也是現網最為常見的場景之一。 




      二、如果SEQ2>SEQ1+WND或者SEQ2

      圖7 RFC: 793 page69 


      所以當黑客偽造SYN報文的SEQ隨機變化時,就很容易命中上述情況,TCP服務器就會返回ACK報文,如圖8、圖9所示。


      圖8 TCP反射,反彈ACK場景(SEQ2>SEQ1+WND)


      圖9 TCP反射,反彈ACK場景(SEQ2


      這個場景中,被攻擊服務器會接收到少量SYN/ACK以及大量的ACK報文,這是現網最越來越常見的場景。如圖10為現網中一次真實TCP反射攻擊的抓包采樣,表面上看跟普通的ACKFLOOD攻擊沒有太大區別,而實際上這些流量是具有協議棧行為,所以傳統策略難以有效防護。


      圖10 現網TCP反射攻擊采樣

      三、如果SEQ1

      圖11 TCP反射,反彈RST場景 


      綜上所述,黑客為了實現TCP反射攻擊,而且盡可能繞過防護策略,所以偽造的SYN報文的五元組會出現集聚,造成嚴重的會話沖突。而不同的SEQ號會觸發TCP服務器不同的應答場景(情況匯總見圖12),所以現網中的TCP反射除了會出現大量的SYN/ACK流量以外,還有可能出現少量SYN/ACK+大量ACK的混合流量,而且后者的流量成份更為復雜,防護難度更大。




      0x02 新型的TCP反射防護算法 


      筆者整理總結了TCP反射防護的主要難點:

       
      1、TCP反射流量具有協議棧行為,傳統的防護算法難以識別和防護; 


      2、專業的抗D設備通常旁路部署,所以無法獲得服務器出流量,這也意味著無法通過雙向會話檢查的方式進行防護; 


      3、TCP反射通常為SYN/ACK和ACK的混合流量,而且在成份占比和行為上跟正常業務流量幾乎沒有太大區別,所以傳統的成份分析、限速等方式也難以湊效。
      那既然TCP反射攻擊防護難度這么大,當前有成熟有效的方案了嗎?這個問題問得好!答案是有的,我們自研的騰訊宙斯盾DDoS防護平臺已經具備防護能力,防護算法的核心思路是:對被攻擊IP的入方向流量做會話跟蹤,并分析每個會話的行為動作,以準確地區分出TCP反射攻擊的會話和正常流量會話,最終對反射攻擊源做攔截,實現有效防護。 


      防護算法具有以下特點: 


      1、秒級檢測和精準防護:對TCP反射流量包括SYN/ACK、RST、ACK均能有效識別和清洗,保證業務穩定; 


      2、對正常業務流量無影響:防護算法對用戶透明,用戶完全不會有感知,確保用戶的最佳體驗; 


      3、可以自動適配:防護算法可以默認適配絕大部分業務場景,用戶不需要額外配置定制策略,大大減輕防護門檻以及運維人力投入。 


      當前新算法已經完成研發和驗證,當你看到本文的時候就已經上線,為騰訊自營及部分投后業務提供防護,另外還會依托大禹DDoS防護系統為騰訊云用戶提供服務。 


      0x03 團隊介紹 


      騰訊TEG安全平臺部宙斯盾項目基于十余年的防護技術積累,持續為QQ、微信、王者榮耀、英雄聯盟等自研業務提供專業、可靠的DDoS攻擊防護解決方案。與騰訊云安全團隊合作,推出“大禹”高防產品,并提供高防包、高防 IP、棋牌盾等多種 DDoS 防護方案,為騰訊云用戶一站式解決DDoS攻擊問題。 


      宙斯盾團隊一直招聘各路英才,如果你對DDoS防護有濃厚興趣,而且愿意在海量流量防護場景下一展身手,歡迎加入我們!當前熱招崗位有: 


      《高級安全運營工程師》 


      崗位職責 :
      A、負責網絡安全產品的運營指標監控及分析,為產品規劃提供決策依據,通過運營數據驅動產品優化,并推動閉環
      B、大數據分析挖掘,對網絡攻擊安全風險隱患、現狀、趨勢做深入分析,有效刻畫威脅風險并形成有效結論體現安全價值

      崗位要求 :
      A、本科及以上學歷,計算機相關專業,3年以上安全運營工作經驗
      B、熟悉常用的大數據分析方法,較強的數據敏感性,能夠通過數據分析發現、分析和推進風險問題的解決
      C、對網絡安全場景、黑產、情報、行業有一定了解,理解針對安全事件如何刻畫安全風險和價值
      D、有安全攻防運營相關經驗者優先

      《高級網絡安全工程師》 


      崗位職責 :
      A、負責對網絡攻防安全技術進行跟蹤研究,對現網威脅進行溯源挖掘,優化現有安全算法和安全體系,提升安全產品能力

      崗位要求 :
      A、本科及以上學歷,計算機相關專業,三年以上工作經驗
      B、熟悉TCP/IP協議,路由交換原理,熟悉DDoS攻擊檢測與防護基礎原理
      C、熟悉業界主流DDoS安全防護產品解決方案,掌握僵尸網絡運作模式和技術原理
      D、熟練使用python/perl/shell腳本中的至少1種語言
      E、有安全攻防相關經驗者優先 


      有意向請將簡歷投遞至:security@tencent.com


      最后特別致謝我的同事JS大神,感謝他在撰寫本文時提供的給力幫助。 

      評論留言

      提交評論 您輸入的漏洞名稱有誤,請重新輸入
      放荡的寡妇