CloudFlare通過對上百萬個網站進行防護,總結出最古老、最普遍的攻擊非DDoS攻擊莫屬。在傳統的DDoS攻擊中,攻擊者會控制大量的傀儡機,然后向目標服務器發送大量請求,阻止合法用戶訪問網站。
然而,最近幾年DDoS攻擊技術不斷推陳出新:攻擊者用一種新型且很有趣的方式欺騙用戶參與到攻擊活動中。去年CloudFlare就見證了一次使用NTP映射的攻擊,可能是DDoS攻擊史上最大的一次攻擊(大于400Gbps)。
今年的DDoS攻擊又出現了一個新的攻擊趨勢:使用惡意的Javascript欺騙用戶參與DDoS攻擊。
NTP或者DNS映射攻擊造成的后果受到傀儡服務器數量的限制,同時攻擊流量也受傀儡服務器容量的限制。隨著時間的推移,服務器會不斷的更新補丁,能被攻擊者利用的服務器數量也在不斷的減少。而基于Javascript的DDOS攻擊有一個非比尋常的特點:任何有瀏覽器的設備都可能參與攻擊,其潛在攻擊規模接近無限。
基于Javascript的DDOS攻擊原理
現代網站的交互作用大多數都是采用Javascript。Javascript腳本可直接注入HTML中,或者通過[ script src=""] HTML從遠程服務器載入。
Web2.0的出現使得網站可以從avascript中加載不同步的內容(content asynchronously)。Web2.0更注重交互性,用戶在發布內容的過程中不僅實現了與網絡服務器之間的交互,也實現了同一網站不同用戶之間的交互,以及不同網站之間信息的交互。然而從Javascript中制造出HTTP(S)請求會使瀏覽器使用起來更加的有趣,甚至還可以將瀏覽器變成一種攻擊武器。
例如,下面的腳本(略有修改)就會向受害網站發送大量的請求:
- function imgflood() {
- var TARGET = 'victim-website.com'
- var URI = '/index.php?'
- var pic = new Image()
- var rand = Math.floor(Math.random() * 1000)
- pic.src = 'http://'+TARGET+URI+rand+'=val'
- }
- setInterval(imgflood, 10)
該腳本會在目標網頁上生成一個圖片按鈕,圖片按鈕會指向“victim-website.com” 網站。只要用戶訪問了含有該腳本的網頁,那么他就會成為 “victim-website.com”DDoS攻擊中的一員。瀏覽器發出的每一個請求都是有效請求,于是該攻擊又變成了Layer 7 攻擊。
百科:應用層攻擊
攻擊者發送大量的數據包或利用服務器應用的漏洞等,飽和服務器的資源,造成DDOS攻擊,該類漏洞往往不需要大量的肉雞。應用層DDOS攻擊的列子包括Slowloris、Apache、Windwos、OpenBSD等的漏洞。如ModSecurity 空指針間接引用遠程拒絕服務漏洞(CVE-2013-2765),攻擊者可以利用該漏洞使Apache Web服務器崩潰。
如果攻擊者在一個網站中嵌入了惡意Javascript腳本,那么該網站的每一個訪客都將成為DDoS攻擊中的一員。網站流量越高就意味著DDoS越嚴重。
入侵共享Javascript的第三方服務器
許多網站使用的都是普通的Javascript庫,為了節約帶寬、提升性能,通常還會將Javascript腳本共享在第三方服務器上。也就是說如果網站上包含有指向第三方服務器的腳本標簽,就意味著所有訪問該網站的用戶都將自動下載Javascript腳本,并執行。不幸的是,如果攻擊者入侵了該第三方服務器并在Javascript腳本中注入了DDoS攻擊代碼,那結果可想而知了,所有的訪客也將變成DDoS攻擊中的一員。
2014年9月份的時候,jQuery就發生過這種形式的入侵。
子資源完整性簡介
通過替換第三方服務器上的Javascript展開攻擊,這是其實也是一種比較老的攻擊方式。目前HTTP還沒有相關的機制來阻止該腳本的運行,但W3C已經提出了名叫子資源完整性(SRI)的新功能,使用加密哈希值驗證腳本,如果哈希值不匹配瀏覽器可以阻止其運行。
例如,如下腳本標簽:
- <script src="https://code.jquery.com/jquery-1.10.2.min.js">
瀏覽器會自動下載該.js文件,并且會不分青紅皂白的運行它。即使該文件中被攻擊者注入了惡意腳本,瀏覽器也不會識別。然而如果網站發現了哈希值驗證腳本不匹配,子資源完整性(SRI)會告訴瀏覽器不要運行該腳本。
- <script src="https://code.jquery.com/jquery-1.10.2.min.js"
- integrity="sha256-C6CB9UYIS9UJeqinPHWTHVqh/E1uhG5Twh+Y5qFQmYg="
- crossorigin="anonymous">
建議網站管理員將添加這一標簽添加到服務器上,用以保護其用戶不被利用。
目前支持子資源完整性的瀏覽器只有Chrome和Firefox。
中間人攻擊
位于瀏覽器和服務器間的中間人可以任意修改數據,包括更改HTML內容或者Javascript腳本。而如果中間人走偏了,做了一些惡意的事情,如向頁面中添加惡意Javascript并執行,那后果一樣很嚴重 (也就是所謂的中間人攻擊)。
修改傳輸過程中的網站是ISPs和WiFi供應商獨有的技術,但如果攻擊者獲得了這一權限,他們會將傳輸過程中的腳本替換成惡意Javascript腳本。更甚的是,如果Javascript腳本中包含了DDoS腳本,那DDoS攻擊成員將會進一步的擴大。
情況還可以更糟糕一點,如果Javascript文件的傳輸路徑正好經過攻擊者的網絡,那么參與DDoS攻擊的瀏覽器和用戶的數量將會大的驚人。
總結:防御
基于Javascript的DDOS攻擊越來越頻發,防御這一攻擊的唯一方式是全面啟用HTTPS。