阿裡雲安全近期發現利用STUN(Session Traversal Utilities for NAT,NAT會話穿越應用程式)服務發起的DDoS反射攻擊。阿裡雲DDoS防護系統在秒級識别到攻擊,實時對攻擊流量做了清洗,保護客戶業務不受DDoS攻擊影響。
背景概述
STUN(Session Traversal Utilities for NAT,NAT會話穿越應用程式)是一種網絡協定,目前定義了三種STUN用途:Interactive Connectivity Establishment(ICE)[MMUSIC-ICE],互動式連接配接建立、Client-initiated connections for SIP [SIP-OUTBOUND],用于SIP的用戶端初始化連接配接、NAT Behavior Discovery [BEHAVE-NAT],NAT行為發現。該協定由RFC 5389定義。STUN支援使用UDP協定來發送,STUN請求/響應事務的可靠性是通過用戶端應用程式本身重新傳輸請求消息來實作的。黑客利用UDP無狀态的這種機制,僞造攻擊目标請求STUN伺服器,把開啟該服務的主機作為反射源,進行DDoS反射攻擊,實作僞裝和攻擊。
攻擊方式分析
攻擊包分析
STUN的UDP端口預設使用3478端口,如下圖所示:

利用了STUN服務(其中software取決于伺服器部署的軟體名稱及版本)的反射攻擊載荷的示意圖如下:
STUN協定分析
STUN是一種Client/Server的協定,也是一種Request/Response的協定,預設端口号是3478,支援UDP和TCP。
STUN-UDP協定通信過程,發送一個Request,伺服器處理驗證,傳回一個Response,response常見傳回值MAPPED-ADDRESS(表示用戶端位址),RESPONSE-ORIGIN(表示響應的位址端口),SOFTWARE(軟體名稱及版本),FINGERPRINT(指紋擴充),響應長度依賴于不同版本的STUN。詳情參見RFC5389(
https://www.rfc-editor.org/rfc/rfc5389.html)。
攻擊模拟複現
模拟發送Binding Request請求,響應Binding Response封包:
模拟攻擊傳回的響應載荷與攻擊載荷一緻,複現完成:
模拟發送20位元組的Binding Request/資料幀62位元組,擷取到的響應載荷為124位元組/資料幀166位元組,放大倍數166/62=2.67倍。
STUN伺服器Softwafre的名稱及版本不同,伺服器IP長度不同,均會影響Response的長度,目前觀察到的最大響應載荷為156位元組/資料幀198位元組,放大倍數198/62=3.19倍。
Software版本示例如下:
Software: Coturn-4.5.1.3 'dan Eider'
Software: Amity-systems.com 0.96
Software: restund v.E5.1.140.1273 ( - / win32 )
Software: zt v0.4.13 (x86\_64/linux)
Software: TANDBERG/4137 (X12.5.9)
Software: Citrix-3.2.3.8 'Marshal West'
發送錯誤的Request到伺服器,傳回校驗錯誤的response時,可以放大更大倍數,194/63.0=3.07倍,可以造成更明顯的放大效果。
目前觀察到的攻擊反射源以海外地區為主,在zoomeye中查詢3478開放端口IP數量級23萬+,說明STUN服務可利用的IP量級還是比較大。STUN協定本身協定設計上已經優化過,response雖然會比request要大,但不會放大很多倍請求,利用成本會很高。對比其他常見反射攻擊的反射倍數,STUN的反射倍數并不理想,但是作為新型的反射類型,市面上DDoS防護系統不一定能全部覆寫防禦該攻擊方式,反而可能攻擊效果更佳。
防護建議
對于STUN網際網路應用提供者,可限制可通路的源IP的位址範圍減少利用情況,或者使用tcp發送STUN協定,對于企業使用者,推薦接入DDoS防護産品對抗大流量DDoS攻擊。