執行摘要
近年來,越來越多的可造成UDP反射攻擊的協議進入人們的視線,如CoAP[1]、Ubiquiti[2]、WS-Discovery[3]、OpenVPN[4]、某DVR協議[5]。這些攻擊方式都區別於大家所熟知的DNS、SSDP、NTP、Memcached等反射攻擊型別,給DDoS攻擊防護帶來了一定的挑戰。
今年6月,以色列網路安全公司JSOF曝光了Treck TCP/IP協議棧的若干0-day漏洞,可能導致全球數億臺裝置受到影響。在對已公佈的白皮書進行分析後,我們發現,其中的一家受影響的廠商Digi生產的裝置使用ADDP(Advanced Digi Discovery Protocol)進行裝置發現。ADDP使用的組播地址為224.0.5.128,埠2362,但該協議在實現時,也支援單播,加之UDP協議能夠偽造源IP,故存在被用作反射攻擊的風險。
為了瞭解ADDP反射攻擊的潛在規模,我們透過綠盟威脅情報中心(NTI)對暴露在網際網路上的ADDP服務進行了測繪。
全球有5000多個IP開放了ADDP服務,存在被利用進行DDoS攻擊的風險。這些裝置涉及Digi的多款產品,如Connect WAN 3G、ConnectPort WAN VPN、ConnectPort X4、Connect ME4 9210等。
開放ADDP服務的裝置暴露數量最多的五個國家依次是美國、義大利、波蘭、智利和西班牙,美國的佔比達到了43%。
ADDP探測報文的長度是14位元組,響應報文長度大多是100多個位元組,平均長度為126位元組,由此可得平均頻寬放大因子為9。
ADDP作為一種新的反射攻擊型別,當前暫未引起攻擊者的關注,但其潛在的風險主要有兩個:一是可被用於DDoS攻擊,二是可被用於發現Digi廠商的裝置,後續被用於Ripple20相關的攻擊。
ADDP簡介
Ripple20[7]是JSOF[8]研究實驗室在Treck Inc.開發的廣泛使用的低階TCP / IP軟體庫中發現的一系列零日漏洞,2020年6月,JSOF公佈了Ripple20中CVE-2020-11896和CVE-2020-11898的技術白皮書[9],其中CVE-2020-11896包含針對Digi Connect ME 9210的PoC。JSOF公佈技術白皮書後,我們對涉及的Digi Connect ME 9210進行了分析,發現除技術白皮書中所述的RCE之外,Digi乙太網模組使用的ADDP協議,還存在被用作反射攻擊的風險。
Digi International Inc.[10](後簡稱Digi)是一家成立於1985年的物聯網解決方案提供商,其產品線從射頻調變解調器到閘道器等種類齊全。Digi Connect ME是Digi設計的一系列乙太網模組,預裝了Digi即插即用韌體。為實現即插即用的功能,Digi設計了類似SSDP(Simple Service Discovery Protocol)的ADDP(Advanced Digi Discovery Protocol),該協議基於UDP,用於發現區域網內的Digi ConnectPort X系列產品。該類發現協議通常同時支援組播和單播,加之UDP能夠偽造源IP的緣故,導致暴露在網際網路上的這類服務,極其容易被用作反射攻擊。
ADDP使用的組播地址為224.0.5.128,埠2362,ADDP資料幀[11]的總體可以分為四部分,協議頭,資料包型別、payload總長度以及payload,一個典型的ADDP裝置發現資料包如下所示:
圖 1.1 ADDP探測包示例
協議頭即為該協議的頭部,ADDP採用固定的字元作為協議頭,在zmap的UDP掃描外掛[12]中,共有三種協議頭,分別是DIGI(“0x44 0x49 0x47 0x49”)、DVKT和DGDP。
資料包型別用於區分該資料包的作用,佔兩個位元組:
- 0x0001: 裝置發現請求
- 0x0002: 裝置發現響應
- 0x0003: 靜態網路設計請求
- 0x0004: 靜態網路設定響應
- 0x0005: 重啟請求
- 0x0006: 重啟響應
- 0x0007: DHCP網路設定請求
- 0x0008: DHCP網路設定回應
payload總長度,佔兩個位元組。
payload即為資料幀的有效負載,通常,ADDP的裝置發現資料包,payload長度為6個位元組,內容固定為:“0xFF 0xFF 0xFF 0xFF 0xFF 0xFF”,如圖 1.1 所示。
與裝置發現的資料包不同,裝置發現資料包的回應,其payload採用欄位型別+負載長度+負載內容的格式,其中,可能出現的欄位型別如下:
- 0x01:MAC地址
- 0x02:IP地址
- 0x03:子網掩碼
- 0x04:網路名稱
- 0x05:域名
- 0x06:硬體型別
- 0x07:硬體版本
- 0x08:韌體
- 0x09:結果內容
- 0x0a:結果標誌
- 0x0b:IP閘道器
- 0x0c:設定錯誤的程式碼
- 0x0d:產品型號
- 0x0e:Real Port埠號
- 0x0f:DNS IP地址
- 0x10:未知欄位
- 0x11:錯誤程式碼
- 0x12:串列埠數量
- 0x13:加密的Real Port埠號
- 0x1a:裝置ID
一個ADDP協議響應報文的例子如下所示,參照上面的介紹,很容易理解其各個欄位的含義。對於IP和MAC地址相關欄位,我們進行了匿名化處理。
ADDP暴露情況分析
為了精確刻畫ADDP反射攻擊的潛在規模,我們透過綠盟威脅情報中心(NTI)對暴露在網際網路上的ADDP服務進行了測繪。
如無特殊說明,本章所提到的資料為全球單輪次測繪資料(2020年6月)。
全球有5000多個IP開放了ADDP服務,存在被利用進行DDoS攻擊的風險。
為了避免遺漏,我們分別採用zmap中的三種裝置探測報文進行了測繪,由此得到ADDP服務的全球暴露情況,如表 2.1 所示。當協議頭為“DGDP”時,並未探測到存活的裝置。
表 2.1 ADDP服務全球暴露情況
我們對ADDP服務的banner中的產品型號欄位進行了分析,如圖 2.1 所示。具體產品對應什麼裝置感興趣的讀者可以自行去官網檢索,這裡不再介紹。
圖 2.2 開放ADDP服務的產品型號分佈情況
開放ADDP服務的裝置暴露數量最多的五個國家依次是美國、義大利、波蘭、智利和西班牙,美國的佔比達到了43%,而我國僅有39臺裝置暴露在網際網路上。
圖 2.3 開放ADDP服務的裝置國家分佈情況
我們對響應報文的長度進行了分析,其長度大多是100多個位元組,平均長度為126位元組。由此可得平均頻寬放大因子(bandwidth amplification factor,BAF)[①][6]為9。
小結
本文首先對ADDP進行了介紹,之後對其在網際網路上的暴露情況進行了分析。ADDP作為一種新的反射攻擊型別,當前暫未引起攻擊者的關注,但其潛在的風險主要有兩個:一是可被用於DDoS攻擊,二是可被用於發現Digi廠商的裝置,後續被用於Ripple20相關的攻擊。
防護建議:
作為安全廠商:
(1)可以在掃描類產品中加入ADDP掃描能力,及時發現客戶網路中存在的安全隱患。
(2)可以在防護類產品中加入對於ADDP的流量檢測能力,及時發現客戶網路中存在的安全威脅。也可以關聯開放ADDP服務的IP的威脅情報,阻斷命中的源IP的連線。
作為裝置開發商,在對ADDP服務發現報文進行回應時,檢查該報文的源IP是否是多播地址,如果不是多播地址的話,則不做回應。這樣的話,ADDP服務被利用發起反射攻擊的難度將大大增加。
作為電信運營商,需遵循BCP38網路入口過濾。
作為監管部門:
(1)對於網路中的ADDP威脅進行監控,發現問題進行通報。
(2)推動裝置中ADDP功能的安全評估,如裝置不滿足相關要求,禁止裝置上市等。
作為裝置使用者:
(1)如無需要,關閉裝置的ADDP發現功能。
(2)儘量將開放ADDP服務的裝置部署在區域網中,這樣可以增大裝置被利用的難度。
(3)如果需要將開放ADDP服務的裝置部署在公網上,則在裝置之前部署路由器(利用NAT能力)或防護類安全裝置(如防火牆),控制外部IP對於裝置的訪問。
作為有DDoS防護需求的使用者,購買具備ADDP反射攻擊防護能力的安全廠商的DDoS防護產品。如已購買,並且產品支援應用層特徵的自定義,可以加入相應的特徵規則。
參考文獻
[1] CoAP Attacks In The Wild, https://www.netscout.com/blog/asert/coap-attacks-wild
[2] Over 485,000 Ubiquiti devices vulnerable to new attack, https://www.zdnet.com/article/over-485000-ubiquiti-devices-vulnerable-to-new-attack/
[3] 基於ONVIF協議的物聯網裝置參與DDoS反射攻擊, https://anquan.baidu.com/article/623
[4] OpenVPN服務被利用於UDP反射放大DDoS攻擊, https://www.freebuf.com/vuls/215171.html
[5] 現網發現新型DVR UDP反射攻擊手法記實, https://mp.weixin.qq.com/s/mCF3HiDDK1QdjvgOBGlaDA
[6] Amplification Hell: Revisiting Network Protocols for DDoS Abuse, https://www.ndss-symposium.org/ndss2014/programme/amplification-hell-revisiting-network-protocols-ddos-abuse/
[7] Ripple20, https://www.jsof-tech.com/ripple20/
[8] JSOF, https://www.jsof-tech.com/
[9] JSOF_Ripple20_Technical_Whitepaper_June20, https://www.jsof-tech.com/wp-content/uploads/2020/06/JSOF_Ripple20_Technical_Whitepaper_June20.pdf
[10] Digi International Inc., https://www.digi.com/about-digi
[11] addp, https://github.com/zdavkeos/addp/blob/master/addp.py
[12] digi pkt, https://github.com/zmap/zmap/blob/master/examples/udp-probes/digi1_2362.pkt
[①] 放大因子我們採用NDSS 2014的論文Amplification Hell: Revisiting Network Protocols for DDoS Abuse上對於頻寬放大因子的定義,不包含UDP的報文頭。