之前我們曾報道過,BT種子協議家族漏洞可用作反射分布式拒絕服務攻擊(DRDoS attacks)。此種攻擊方式并非主流,以公開的論文看來效果堪比DNS,而NTP攻擊則更勝一籌。
0×00 背景
攻擊者可以利用BT種子協議(微傳輸協議[uTP],分布hash平臺[DHT],消息流加密[MSE],BT種子同步[BTSync])來反射放大結點間傳輸量。
實驗顯示,攻擊者可以利用BT結點將一個包放大50倍,如果是BTsync將達到120倍。另外,我們發現最流行的BT流客戶端正是最脆弱的,比如uTorrent、Mainline、Vuze等。
公開DNS解析和NTP協議MONLIST命令攻擊,兩種攻擊方法依靠其協議的廣泛應用,影響范圍不言而喻。
混合放大,利用通用協議的攻擊方式很穩定,通過標準的結點發現機制很快找到放大點。由于其利用的動態端口范圍和握手加密,攻擊不會被常規防火墻發現,只有進行深度的包檢查才能發現。
0×01 什么是DRDoS攻擊
攻擊者不把通信包直接發給受害者,而是發給放大器(amplifiers)然后反射給受害者。攻擊者利用了網絡協議漏洞進行IP欺騙??梢杂梢粋€或多個攻擊結點開始,下圖簡單勾畫出了DRDoS的攻擊模型:
1、P點在攻擊前確認放大器的位置,這取決于攻擊者利用的協議,強大的掃描工具比如 ZMap可以幫助確認可用放大器。這步是以后步驟的基礎,保證以后的攻擊效率;
2、接著發送小的Ba 給放大器PA,攻擊者偽造包源地址是PV的IP地址,然后PA反饋一個大的包Bv給PV。
BT流是今天世界最常用的P2P協議,協議的新穎之處在于解決了free riding problem 和 last piece problem 。為了克服第一個困難,BT流應用了一個獎賞機制稱為窒息算法導致了tit-for-tat-ish 分享方法。BT流通過稀有片優先算法解決了第二個問題。
0×02 UTP協議攻擊
最初,TCP是握手和節點通信的默認協議。TCP在P2P環境有很多優點,它分布了可用帶寬給每個連接點,通常得到比其他應用更多的帶寬。因此,BT流在后臺運行,會被前段的通信結束(例如web 和郵件),所以BT流發明了新的傳輸協議UTP。
UTP采用了TCP的一些想法,以滑動窗口控制流,按順序校驗信息的完整性,握手建立連接。不同于TCP三次握手,UTP只有兩次握手,下圖表示結點建立連接的過程??梢钥闯鰟摻ǚ桨l出一個ST_SYN包給接受方創建連接,類似于TCP的SYN包。接受方反饋ST_STATE包表示成功接收到,建立方接收到反饋表示雙向建立成功。現今大多數的BT客戶端把UTP作為默認協議。
UTP建立連接的兩次握手,這允許攻擊者用偽造的IP地址和放大器建立連接,因為接受方不檢查創建方是否接收到了應答。
示意圖如下:
一個偽造的帶著受害者IP地址的ST_DATA給接收方,接收方相信包中的源IP地址有效,反饋了第一個ST_DATA給受害者,而受害者的IP沒有意料到這個包,所以也不會回應它。接收方到時間重傳丟失的ST_DATA包,如果連續四次傳輸未響應則斷開連接。
連接建立后BT流需要一次握手作為第一條信息,包括了為擴展保留的字節、hash信息和節點ID。如果客戶端接受了握手發現使用了未認證的hash,客戶端立刻終結連接。攻擊者利用握手包基于UTP兩次握手創建放大攻擊。
ab兩步不贅述了,c步驟 攻擊者發送了一個裝載了BT流握手信息的ST_DATA包。 這個握手需要活躍的放大器種子hash信息(20字節),握手包最少88字節,如果放大器參與這個種子中,就會反饋步驟d ,d的握手包大于攻擊者發送的,因為客戶端在UTP包里放入了更多信息。
BT流提供Libtorrent 的擴展協議(LTEP)添加新的擴展而不妨礙默認協議。如果一個攻擊者標記支持LTEP 尤其在BEP10中 ,攻擊效果會進一步放大而不用增加步驟c握手包的量。對等節點以此擴展信息交換。
0×03 利用數據流加密握手包(MSE)攻擊
MSE的目的是混淆BT傳輸過程,防止受ISP的影響,而不是為了傳輸安全。盡管它有很多嚴重的弱點,但它還是被大多數BT客戶端使用。
這個協議開始于Diffie-Hellman 密鑰的交換 每個節點都產生了768位的公鑰 公鑰包括0-512位的隨機數r 。交換密鑰后,包會被RC4算法加密,UTP傳輸。
這種方法使攻擊者不必明確hash信息,發送一個偽造的MSE包(包括768位的公鑰沒有隨機數),客戶端隨即會反饋隨機數和公鑰。
結果證明MSE攻擊會顯著提升效率。進一步說,加密裝載Ba和MSE生成的包Bv,熵高的屬性,使其難以被ISP或者DPI防火墻發現并封鎖。
0×04 深入DNS放大DDoS攻擊
DNS反射攻擊也能輕易達到千兆的級別。
最初的放大攻擊是著名的SMURF攻擊,發送ICMP請求給路由網絡廣播地址,配置發送ICMP給路由下的設備。攻擊者欺騙ICMP請求源是受害者的IP,因為ICMP不包括握手,所以目標無從確認源IP是否合法。攻擊者放大攻擊的效果取決于路由下有多少設備。 不過SMURF攻擊是過去的事了,網絡管理員已經配置它們的路由器不將ICMP請求發給網絡廣播地址。
好的放大攻擊方法有兩個條件:
1、協議沒有握手,允許IP源地址偽造(例如ICMP,UDP)
2、對查詢的回復要大于查詢本身
DNS是核心,無處不在的網絡平臺就是放大攻擊的資源。
DNS基于UDP傳輸,因此它們的源地址可以偽造并且接收者回應前無從確定真實性。DNS也可以生成更大的反饋,輸入 dig ANY www.baidu.com @x.x.x.x(x.x.x.x是公開DNS解析器),這是一個64字節的查詢會返回3223字節,攻擊效果放大了50倍。諷刺的是,huge DNSSEC 密鑰 ——這個被用來增加DNS系統安全性的協議反而成了放大攻擊的幫兇。
公開DNS解析器是互聯網的悲劇。
如果你用一個DNS解析器確保只返回可信用戶的查詢,例如你公司的IP空間是10.10.10.0/24 DNS解析器就只返回這個范圍IP的查詢,而不會回應6.6.6.6的查詢信息。
問題就在于許多人運行DNS解析器而不在乎哪個IP地址的人查詢。這樣的問題已經存在10年之久,發生的事件表明很多不同的僵尸網絡為了發現DNS解析器開始枚舉互聯網IP空間,一旦發現就可利用于DNS放大攻擊。中國臺灣擁有世界第二多的公開DNS解析器資源。
有這樣一個網址可以查詢你的DNS http://openresolverproject.org/
世界上有2170萬個公開DNS解析器,網站正致力于關閉它們。
解決辦法
把recurison設置為no
允許在特定的地址查詢,options { allow-query{192.168.1.0/24;};};
0×05 NTP 放大DDoS攻擊 400Gbps的技術細節
2014年2月出現一次400Gbps規模的NTP攻擊,這類攻擊越來越走俏,這次事件可以作為一個好的例子來說明一下這種攻擊方法。
首先了解一下基礎的結構,NTP放大攻擊開始于一個被黑客控制的服務器允許IP欺騙,攻擊者生成了很多UDP包欺騙源IP地址使來自特定目標的包出現,這些UDP包發送到支持MONLIST命令的網絡時間協議服務器port123。
順便聊一聊MONLIST命令
它的用處在于返回一個NTP服務器上600個IP地址的列表,所以它可以拿來干壞事。如果一個NTP服務器完全遷移它的表,反饋的信息將被放大206倍。此類攻擊中IP地址偽造,UDP不需要握手,理論上有200倍的放大效果。
然而這不僅僅是理論,此次攻擊事件中,為了400Gbps的攻擊效果攻擊者應用了運行在1298個不同網絡上的4529臺NTP服務器。平均每臺NTP服務器產生87Mbps的通信量。值得注意的是攻擊者很可能只用了一個能IP欺騙的網絡服務器就做成了此次攻擊。
NTP服務器支持MONLIST和公開DNS解析器不一樣,雖然它們都趨向于多網絡連接的服務器。對比而言,NTP 攻擊更加的效率,2013年曾有一次幾乎玩壞互聯網的DDoS攻擊被紐約時報報道,利用30956公開DNS解析器,目標Spamhaus產生300Gbps的通信量。NTP攻擊只用了1/7的服務器,實現的攻擊效果還比Spamhaus事件多1/3。
解決辦法:禁止MONLIST命令
黑客攻擊的前提是IP地址欺騙,如果你在管理網絡,確保遵守BCP38??梢杂眠@個來自MIT的工具檢測一下http://spoofer.cmand.org/summary.php
最后如果你覺得NTP不好,那就等待下一個SNMP,但是SNMP理論上有650倍的放大效果,已經看到有黑客躍躍欲試了,Buckle up。
參考資料
https://blog.cloudflare.com/the-ddos-that-almost-broke-the-internet/
https://blog.cloudflare.com/deep-inside-a-dns-amplification-ddos-attack/
https://www.usenix.org/system/files/conference/woot15/woot15-paper-adamsky.pdf