作者:百度安全實驗室
原文鏈接:https://mp.weixin.qq.com/s/rhqa2RDaEYxiIjmDp99uVw

0x00 背景

TCP反射攻擊是在現網的DDoS攻防對抗中,逐漸興起的一種新型攻擊方式。攻擊者偽造源IP地址為被攻擊目標的IP地址向公網上大量的TCP服務器(通常是CDN、WEB站點等)發送連接請求(SYN報文),這些被利用的TCP反射服務器在收到大量的連接報文后,會向被攻擊目標響應大量的數據包,這些反射數據包的類型通常包括SYN-ACK、ACK和RST-ACK,由于這些攻擊流量通常混雜著正常業務流量,并且存在協議棧行為,導致傳統的DDoS防御系統很難防御,因而使得這種攻擊方式近年來呈現出不斷上升的趨勢。

百度智云盾系統針對TCP反射攻擊進行跟蹤,分析發現攻擊頻率近幾年呈現出明顯上升的趨勢,反射攻擊手法也在不斷變化,攻擊流量從最常見的單一SYN-ACK,發展成由SYN-ACK、ACK和RST-ACK報文混合組成。根據智云盾系統監測的數據顯示,混合型TCP反射已經成為了繼SSDP、NTP反射之后最為流行的攻擊方式。百度智云盾系統在與TCP反射攻擊的長期攻防對抗中,制定出一套TCP反射防御算法,能夠2s內識別攻擊,實時對流量進行隔離和清洗,保障用戶與公司免遭此類攻擊的傷害。

0x01 反射原理

1)標準反射流

眾所周知,TCP的三次握手,服務端在接受到客戶端的SYN報文后,會響應SYN-ACK報文,并開啟一個半連接放入隊列。如果此時服務端短時間內收到多個相同五元組的SYN報文,就會在服務端造成會話沖突,此時不同服務器的處理方式不同。

標準的TCP協議棧在遇到會話沖突的情況時,會響應出SYN-ACK、ACK和RST-ACK報文,服務端在第一次收到SYN報文后,會回復一個SYN-ACK報文,后續針對同一五元組過來的SYN報文,則會與當前數據包的seq號SEQ2、第一次收到的seq號SEQ1以及服務端的window size有關。通常包含以下幾種情況:

兩次seq號相同:SEQ1=SEQ2 。

此時服務器判定這個SYN包是客戶端重傳,會再次響應seq號不同的SYN-ACK,也就是通常所說的重傳SYN-ACK,這也是前些年網絡上最為流行的SYN-ACK反射攻擊。下圖展示了我們使用linux系統多次發送seq號相同的SYN報文,測試反射出SYN-ACK的場景:

圖1 反射SYN-ACK報文(測試)

SEQ2在window size之內:即SEQ2大于SEQ1,且小于等于SEQ1+ windows size。

此時服務器響應報文比較特殊,呈現出首次SYN報文響應RST-ACK報文,這也是現網流量里存在較多的一類攻擊流量,下圖展示了我們使用linux系統發送seq號處于windows size之內,服務器響應RST-ACK的場景:

圖2 反射RST-ACK報文(測試)

SEQ2在windows size之外:即SEQ2小于SEQ1,或者SEQ2大于SEQ1+ windows size。

此時服務器會響應ACK報文,這也是當前遇到的最常見的攻擊流量,下圖展示了我們我們使用linux系統發送seq號按照5遞減的SYN請求報文,測試反射ACK報文的場景:

圖3 反射ACK報文(測試)

標準的TCP反射流量呈現,如下圖所示:

圖4 標準的TCP反射流

在攻防對抗過程中,我們發現攻擊流量呈現出以ACK流量為主,SYN-ACK流量次之,以及少量的RST-ACK報文,這也符合黑客的攻擊思路:攻擊以隨機seq的SYN報文短時間發送到TCP反射服務器,隨機seq號的方式非常容易命中不在windows size的區域,導致反射服務器響應大量的ACK報文。下列三圖展示了我們在現網中捕獲的真實反射流量。

圖5 真實的TCP反射攻擊流量(現網)

以上均展示了端口開放時,標準的TCP協議棧處理連接請求時的響應的報文特征,那么端口關閉時,會響應什么呢?不同的系統處理不同,linux內核的TCP協議棧會響應RST-ACK報文。下圖展示了我們在關閉TCP1000端口后服務器的響應報文。

圖6 關閉端口后的反射(RST-ACK)報文(測試)

2)其他反射流

SYNCookie

在深入研究TCP反射攻擊時,我們發現SYN Cookie機制會影響反射報文的特征。SYN Cookie機制是防護SYN Flood攻擊一種技術手段,我們都知道SYN Flood攻擊能夠成立的前提關鍵在于服務器資源是有限的,由于服務器在收到SYN請求后會分配資源保存此次請求的關鍵信息,其中包括(五元組、TCP選項信息),這會占據服務器有限的系統資源,SYN Cookie機制可以讓服務器在收到客戶端的SYN報文時,將客戶端信息保存在SYN-ACK的初始序號和時間戳中,不消耗系統資源保存客戶端信息,從而?SYN Flood。

簡單來說,開啟SYN Cookie的服務器在收到SYN報文后,會根據當前五元組信息和TCP選項信息(時間戳、最大報文長度MSS)來計算出響應的SYN-ACK報文的seq號。正常的客戶端收到SYN-ACK報文后會回復ACK報文,服務器根據ack確認號解析出之前計算的seq號,從而驗證ACK報文的合法性。所以開啟SYN Cookie的服務器均會響應seq號不同的SYN-ACK報文。

攻擊者在利用開啟SYN Cookie的TCP反射服務器時,服務器所發出的反射報文均為SYN-ACK報文,但是seq號與標準TCP反射流呈現出的特征不同,這與具體服務器的SYN Cookie實現機制有關系,這里不做過多介紹。

我們選取一臺機器開啟SYNCookie配置:

圖7 開啟SYNCookie

下圖展示了我們我們使用linux系統測試的開啟SYN Cookie的服務器響應的SYN-ACK報文:

圖8 開啟SYN Cookie的反射報文(測試)

3)其他類型服務器

Windows服務器在處理SYN報文時與linux有許多不同,我們使用Windows server2016,TCP開放端口為3389,進行反射測試分析,下面是三種情況收到的數據包類型。

SEQ2=SEQ1,windows服務器與linux服務器一樣,響應seq號不同的SYN-ACK報文:

圖9 windows server響應SYN-ACK(測試)

SEQ2小于SEQ1,或者大于SEQ1與windwos size之和,會直接響應SYN-ACK報文:

圖10 window server響應SYN-ACK(測試)

SEQ2>SEQ1,并且小于SEQ1與windows size之和,服務器會在響應SYN-ACK后,不再響應任何報文:

圖11 服務器只響應一次SYN-ACK報文(測試)

端口關閉時,windwos server與linux一樣響應RST-ACK報文:

圖12 關閉端口后windows server響應SYN-ACK報文(測試)

其他服務器:SUSE、Debian、Ubuntu等,如有興趣,可以自行進行測試分析,這里不深入展開。

4)智云盾蜜罐

值得一提的是,智云盾系統部署了多個蜜罐節點,我們在針對TCP反射攻擊時,會根根據攻擊特征動態調整響應報文,如果檢測出攻擊者惡意利用發動TCP反射,我們會針對任意SYN報文,均響應隨機seq號的SYN-ACK報文,在攻擊達到一定量級后,則不再響應任何數據包。

目前智云盾蜜罐系統已經長期被黑客利用進行TCP反射攻擊,我們采樣得到了大量的攻擊蹤影。

0x02 反射資源分析

1)智云盾捕獲

從近幾年來跟蹤分析的反射資源來看,攻擊者傾向于使用的反射源端口最常見于21、22、23、80、443、1900、8080等常用的TCP端口,目的端口通常為被攻擊目標的業務端口,比如:80、443、8080等。

我們對采集到的反射源端口進行分類,下圖展示了反射源端口占比圖:

圖13 反射源端口占比

從反射源IP的屬地信息來看,攻擊來源幾乎全部來自于國內,國內源IP占比超過98%,反射源IP國家分布如下:

圖14 反射源歸屬地分布

智云盾系統多次捕獲的攻擊時發現,攻擊者使用的反射源端口呈現出特殊的組合方式,比如1900端口通常與53、7547、1737組合攻擊。

2)全網數據

由于常見的TCP端口數據量非常之多,我們僅抽取了最常見的80端口在zoomeye查詢,數據量之大引人深思。

圖15 zoomeye全網數據(80端口)

0x03 防御措施

TCP反射與傳統的UDP反射相比,其反射流量特征較為復雜,攻擊流量來自于真實IP,而且具有協議棧行為,傳統的DDoS防護系統往往容易將現網的TCP反射帶來的ACK流量識別為Flood攻擊。TCP反射攻擊的防護難點:

  • 反射流量來自于真實IP,流量通常混雜著真實的業務流量

  • 反射資源豐富,公網上開放了大量的TCP服務器,主要來自于CDN、WEB站點

  • 流量類型通常包含SYN-ACK、ACK和RST-ACK,難以防護

  • 傳統的DDoS防護系統,無法通過雙向會話檢查進行防護

智云盾系統在對抗TCP反射攻擊中開發出一套防護算法,該算法已經經過長期的防護驗證,算法的核心思路是:建立會話跟蹤機制,分析每一個會話的意圖,區分攻擊流量與正常流量,防止透傳,確保客戶與公司的業務免遭TCP反射的傷害。防護特點:

  • 完整TCP會話狀態跟蹤

  • 阻斷反射包,0透過

0x04 結尾

當前新冠疫情已經蔓延到世界各個角落,病例遍及219個國家和地區。對比疫情形勢,全球地緣政治格局也在發生動蕩,可以猜想網絡空間沖突亦會愈演愈烈。攻擊者在不斷尋找防護方的弱點,防護方也需要不斷研究黑客思維,提升防護能力。中國一直以來都是網絡攻擊最大的受害國,如此流行的TCP反射攻擊將會扮演舉足輕重的角色。


Paper 本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/1571/