阿里雲安全近期發現利用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攻擊。
參考
https://www.rfc-editor.org/rfc/rfc5389.html
https://www.zoomeye.org/