劉永鵬
摘 要:拒絕服務(wù)是用分布式的客戶端,向服務(wù)者發(fā)起大量看似合法的請求,消耗或長期占用大量資源,從而達(dá)到拒絕向受眾提供服務(wù)的目的。針對基于JavaScript的DDOS攻擊,防御這一攻擊的唯一方式是全面啟用HTTPS。
關(guān)鍵詞:拒絕服務(wù);DDOS攻擊;防御
1 概述
DDOS是英文Distributed Denial of Service的縮寫,即“分布式拒絕服務(wù)”,那么什么又是拒絕服務(wù)(Denial of Service)呢?可以這么理解,用分布式的客戶端,向服務(wù)者發(fā)起大量看似合法的請求,消耗或長期占用大量資源,從而達(dá)到拒絕向受眾提供服務(wù)的目的。也就是說拒絕服務(wù)攻擊的目的非常明確,就是要阻止合法用戶對正常網(wǎng)絡(luò)資源的訪問,從而達(dá)成攻擊者不可告人的目的。DOS的攻擊策略側(cè)重于通過很多“僵尸主機(jī)”(被攻擊者入侵過或可間接利用的主機(jī))向受害主機(jī)發(fā)送大量看似合法的網(wǎng)絡(luò)包,從而造成網(wǎng)絡(luò)阻塞或服務(wù)器資源耗盡而導(dǎo)致拒絕服務(wù),分布式拒絕服務(wù)攻擊一旦被實施,攻擊網(wǎng)絡(luò)包就會猶如洪水般涌向受害主機(jī),從而把合法用戶的網(wǎng)絡(luò)包淹沒,導(dǎo)致合法用戶無法正常訪問服務(wù)器的網(wǎng)絡(luò)資源,因此,拒絕服務(wù)攻擊又被稱為“洪水式攻擊”,常見的DDOS攻擊手段有SYN Flood、ACK Flood、UDP Flood、ICMP Flood、TCP Flood、Connections Flood、Script Flood、Proxy Flood等。
2 發(fā)展
曾經(jīng)有安全專家把DDoS攻擊比作互聯(lián)網(wǎng)“核武器”:一旦調(diào)動足夠數(shù)量遍布互聯(lián)網(wǎng)的“肉雞”和存在各種協(xié)議漏洞的開放服務(wù)器,就可以癱瘓掉任何互聯(lián)網(wǎng)業(yè)務(wù)。盡可能地對被攻擊目標(biāo)造成最大程度的資源破壞是DDoS攻擊的初衷。站在這個角度上來看DDoS攻擊的發(fā)展,可以梳理出清晰的脈絡(luò),DDoS攻擊的發(fā)展趨勢呈明顯的三個階段性。
第一階段,由個人計算機(jī)組建僵尸網(wǎng)絡(luò),發(fā)動DDoS攻擊;
第二階段,利用互聯(lián)網(wǎng)開放服務(wù)器(如DNS、NTP)發(fā)起反射攻擊;
第三階段,利用智能/IoT設(shè)備協(xié)議(如SSDP)的脆弱性發(fā)起反射攻擊。
拒絕服務(wù)攻擊存在的根源是Internet架構(gòu)自身缺陷,由于最初Internet架構(gòu)未考慮拒絕服務(wù)攻擊,從而導(dǎo)致幾乎所有Internet服務(wù)均易遭受拒絕服務(wù)攻擊。縱觀近五年DDoS攻防雙方的對抗交鋒,攻擊方技術(shù)不斷演進(jìn),將“以大欺小”(流量型攻擊)與“以小搏大”(資源耗盡型)兩種攻擊方式組合起來,利用逐漸提高的網(wǎng)絡(luò)帶寬增強(qiáng)攻擊力等;而防守方則通過流量清洗設(shè)備等多種手段予以應(yīng)對。
最為傳統(tǒng)的DDoS攻擊多利用僵尸主機(jī)(Zombies,又叫“肉雞”)組成僵尸網(wǎng)絡(luò)來發(fā)起。“肉雞”是指中了木馬,或者被一些人留了后門的計算機(jī),成為“肉雞”的計算機(jī)可以被黑客遠(yuǎn)程操控?!叭怆u”的存在多由于用戶系統(tǒng)存在各種脆弱性導(dǎo)致,系統(tǒng)一旦被入侵,黑客可獲得控制權(quán)。黑客在這些“肉雞”所有者不知情的情況下,發(fā)起對既定攻擊目標(biāo)的攻擊?!叭怆u”對于互聯(lián)網(wǎng),特別是網(wǎng)站系統(tǒng)的威脅是很大的。即便單個“肉雞”的攻擊能力有限,但如果“肉雞”數(shù)量很多,匯總后的攻擊流量也將是驚人的。
雖然肉雞的效果顯著,但是無論組建還是僵尸網(wǎng)絡(luò)的維護(hù)都需要較高的成本,伴隨黑客不斷對更低成本獲得更大效果的追求,利用互聯(lián)網(wǎng)開放服務(wù)器發(fā)起反射拒絕服務(wù)攻擊逐漸流行。反射拒絕服務(wù)攻擊又稱DRDoS攻擊,或分布式反射拒絕服務(wù)攻擊。其原理是黑客偽造成被攻擊者的IP地址,向互聯(lián)網(wǎng)上大量開放特定服務(wù)的服務(wù)器發(fā)起請求,接收到請求的那些主機(jī)根據(jù)源IP地址將響應(yīng)數(shù)據(jù)包返回給受害者。整個過程中,返回響應(yīng)的服務(wù)器并不知道請求源的惡意動機(jī)。黑客往往會選擇那些響應(yīng)包遠(yuǎn)大于請求包的服務(wù)來利用,這樣才可以以較小的流量換取更大的流量,獲得幾倍甚至幾十倍的放大效果。一般來說,可以被利用來做放大反射攻擊的服務(wù)包括DNS服務(wù)、NTP服務(wù)、SNMP服務(wù)、Chargen服務(wù)等。利用NTP協(xié)議的反射放大效果最好,超過500倍。也就是說攻擊者只需要發(fā)起100Mbps的請求流量,經(jīng)過NTP服務(wù)器的反射放大,可
以換來5Gbps的攻擊流量。2014年2月,在國外某云計算服務(wù)提供商遭受的400Gbps DDoS攻擊中,黑客就采用了NTP 反射放大攻擊。
隨著互聯(lián)網(wǎng)上存在DNS、NTP、SNMP等協(xié)議脆弱性的開放服務(wù)漏洞不斷被修復(fù),可以用來發(fā)起反射攻擊的服務(wù)器數(shù)量越來越少。互聯(lián)網(wǎng)上家用路由器、網(wǎng)絡(luò)攝像頭、打印機(jī)、智能家電等設(shè)備數(shù)量的激增,讓黑客看到了另一個可以不斷挖掘的金山。這些智能設(shè)備普遍采用UPnP(即插即用)協(xié)議作為網(wǎng)絡(luò)通訊協(xié)議,而UPnP設(shè)備的發(fā)現(xiàn)是通過源端口為1900的SSDP(簡單服務(wù)發(fā)現(xiàn)協(xié)議)進(jìn)行相互感知。利用SSDP協(xié)議進(jìn)行反射攻擊的原理與利用DNS服務(wù)、NTP服務(wù)類似,都是偽造成被攻擊者的IP地址向互聯(lián)網(wǎng)上大量的智能設(shè)備發(fā)起SSDP請求,接收到請求的智能設(shè)備根據(jù)源IP地址將響應(yīng)數(shù)據(jù)包返回給受害者(見下圖)。
根據(jù)USCERT的數(shù)據(jù),SSDP的放大倍數(shù)是30倍,雖然較NTP和Chargen等協(xié)議的放大倍數(shù)小很多,但是由于互聯(lián)網(wǎng)上智能設(shè)備的數(shù)量非常龐大,隨著IoT的發(fā)展,這個數(shù)字更將呈現(xiàn)幾何級數(shù)的增加。這無疑為黑客提供了豐富的攻擊來源。SSDP嚴(yán)峻的形勢在阿里云上同樣得到了體現(xiàn)。根據(jù)阿里云云盾安全運(yùn)營團(tuán)隊在2015年6月的統(tǒng)計,在對阿里云用戶的UDP DDoS攻擊中,80%的攻擊方式為SSDP反射放大攻擊。
3 新型DDos攻擊
3.1 “胡亂域名”攻擊
一種針對域名服務(wù)器的新型分布式拒絕服務(wù)攻擊(DDoS),可稱之為“胡亂域名”攻擊。它能給遞歸域名服務(wù)器和權(quán)威域名服務(wù)器造成嚴(yán)重破壞。
這種“無意義域名”DDoS攻擊通常是這樣進(jìn)行的:攻擊者選定一個域作為目標(biāo),如abc.example。在目標(biāo)域內(nèi),攻擊者操縱僵尸網(wǎng)絡(luò)產(chǎn)生大量隨機(jī)域名。然后向遞歸域名服務(wù)器發(fā)起大量針對這些無意義域名的查詢請求。遞歸域名服務(wù)器轉(zhuǎn)而將請求發(fā)送到abc.example的權(quán)威服務(wù)器以查詢這些域名。權(quán)威域名服務(wù)器返回“請求的域名不存在”的響應(yīng)(NXDOMAIN)。遞歸服務(wù)器中繼轉(zhuǎn)發(fā)這一響應(yīng)給原始請求者,并緩存下域名不存在的記錄。請求,響應(yīng),緩存,再來一遍。如果攻擊者發(fā)起這種胡亂域名解析請求的速度足夠快,聚合查詢的速度將令abc.example權(quán)威域名服務(wù)器應(yīng)接不暇瀕臨崩潰。真正的傷害就發(fā)生了:僵尸主機(jī)繼續(xù)向遞歸域名服務(wù)器發(fā)送無意義域名的查詢請求。權(quán)威域名服務(wù)器終于崩潰,不再響應(yīng)請求,遞歸域名服務(wù)器也就需要花費(fèi)長得多的時間來處理單個域名解析請求。
這將占用遞歸域名服務(wù)器上的遞歸查詢時間片,最終導(dǎo)致資源耗盡,拒絕接受其他遞歸查詢,盡管其中包含了合法的查詢請求。至此,域名服務(wù)器拒絕任何新入遞歸請求,停止向客戶提供服務(wù)。
3.2 基于JavaScript的DDOS攻擊
最近幾年DDoS攻擊技術(shù)不斷推陳出新:攻擊者用一種新型且很有趣的方式欺騙用戶參與到攻擊活動中。去年CloudFlare就見證了一次使用NTP映射的攻擊,可能是DDoS攻擊史上最大的一次攻擊(大于400Gbps)。今年的DDoS攻擊又出現(xiàn)了一個新的攻擊趨勢:使用惡意的JavaScript欺騙用戶參與DDoS攻擊。NTP或者DNS映射攻擊造成的后果受到傀儡服務(wù)器數(shù)量的限制,同時攻擊流量也受傀儡服務(wù)器容量的限制。隨著時間的推移,服務(wù)器會不斷的更新補(bǔ)丁,能被攻擊者利用的服務(wù)器數(shù)量也在不斷的減少。而基于JavaScript的DDOS攻擊有一個非比尋常的特點(diǎn):任何有瀏覽器的設(shè)備都可能參與攻擊,其潛在攻擊規(guī)模接近無限?,F(xiàn)代網(wǎng)站的交互作用大多數(shù)都是采用JavaScript。
JavaScript腳本可直接注入HTML中,或者通過