【CSDN 編者按】DDoS 攻擊近幾年來非常常見,許多知名的平臺網(wǎng)站都遭遇過。當應(yīng)用層 DDoS 攻擊當前已經(jīng)是最常見的攻擊類型之時,對于程序員而言,有哪些必須掌握的 DDoS 攻擊的知識點,更為關(guān)鍵的是,如何進行有效的防御實踐?在「CSDN 在線峰會 —— 阿里云核心技術(shù)競爭力」上,在系統(tǒng)、應(yīng)用、網(wǎng)絡(luò)安全領(lǐng)域擁有 14 年研究經(jīng)驗的阿里云資深安全專家葉敏深入分享了新型應(yīng)用層 DDoS 攻擊防御的最佳實踐,希望能夠?qū)λ屑夹g(shù)人有所啟發(fā)及裨益。
一、應(yīng)用層 DDoS 攻擊介紹
DDoS 攻擊長久以來困擾著互聯(lián)網(wǎng)企業(yè),從我們云盾監(jiān)測到的 DDoS 攻擊流量峰值來看,最近幾年攻擊流量在大幅上漲,從 2014 年我們對外宣布防御了全球最大的 DDoS 攻擊,453.8Gbps,到現(xiàn)在 T 級別的 DDoS 也變得很常見。
大流量 DDoS 攻擊存在了很多年,雖然攻擊流量一直在增長,但是攻擊類型變化不大,一直以 SYN Flood、UDP Flood、UDP 反射攻擊為主。針對大流量攻擊已經(jīng)有了非常有效的防御手段,以前這種大流量攻擊遇到安全設(shè)備時,就像進了黑洞一樣被吞噬,防御成功率很高,但是黑客們不服輸,他們向這個黑洞發(fā)起了新的挑戰(zhàn)。
如果把攻擊流量偽裝成正常業(yè)務(wù)的流量,那么安全防御設(shè)備就很難區(qū)分出攻擊流量,這樣就能穿過防御設(shè)備攻擊到后端的應(yīng)用,這就是應(yīng)用層 DDoS 攻擊,也叫 CC( Challenge Collapsar )攻擊,就是挑戰(zhàn)黑洞的意思。
二、應(yīng)用層 DDoS 的攻擊方式
應(yīng)用層 DDoS 最近幾年越來越受到黑客的青睞,從監(jiān)測到的數(shù)據(jù)來看,應(yīng)用層 DDoS 攻擊在 2019 年就有翻倍增長。
除了容易繞過防御設(shè)備,還有一個重要的原因是應(yīng)用層 DDoS 攻擊更加高效,因為應(yīng)用層的攻擊都要觸發(fā)上層應(yīng)用的處理邏輯,其中可能有數(shù)據(jù)庫查詢、遠程 API 調(diào)用、文件讀寫,甚至有復(fù)雜的計算邏輯,所以這些流量會對服務(wù)端帶來更大的壓力。攻擊者精心挑選的帶有復(fù)雜邏輯的 URL 進行攻擊,可以用很小的流量對應(yīng)用或數(shù)據(jù)庫產(chǎn)生巨大壓力。攻擊者不需要用到很大的帶寬,甚至對服務(wù)端只有小幅度的 QPS 上漲,讓檢測和防御都變得更有挑戰(zhàn)。
DDoS 攻擊最典型的方式是僵尸網(wǎng)絡(luò),黑客控制了大量的傀儡主機(肉雞或 bot)向目標發(fā)起攻擊。這些傀儡主機可能是服務(wù)器、PC、手機或 IoT 設(shè)備。
在應(yīng)用層 DDoS 攻擊中,我們發(fā)現(xiàn)另一種借刀殺人的攻擊方式也很常見,黑客在一些熱門的網(wǎng)頁中嵌入了帶有攻擊行為的 JAVAScript 代碼,當訪問者打開這些網(wǎng)頁時,瀏覽器就循環(huán)對目標發(fā)起攻擊,在一些停留時間比較長的網(wǎng)頁,比如長篇小說或小電影網(wǎng)站,再加上不停的有新用戶訪問,攻擊就會持續(xù)很長時間。雖然黑客沒有控制這些設(shè)備的權(quán)限,但是他借助這些正常用戶的瀏覽器實現(xiàn)了大規(guī)模的應(yīng)用層 DDoS 攻擊。
互聯(lián)網(wǎng)上 HTTP/HTTPS 服務(wù)占比最大,所以針對 HTTP/HTTPS 協(xié)議的應(yīng)用層 DDoS 攻擊也是最常見的,我們把它叫 HTTP Flood。雖然都是發(fā)起 HTTP 請求,但是也有不同的方式,防御的難度也不一樣。我們分析過很多 DDoS 木馬,有些直接拼接 HTTP 報文內(nèi)容發(fā)送給服務(wù)端,這種通常攻擊手法比較單一,而且也沒有考慮 Cookie 和 HTTP 跳轉(zhuǎn),更不能執(zhí)行 JavaScript。
進一步我們發(fā)現(xiàn)有些木馬使用現(xiàn)成的 HTTP 庫,它對 HTTP 協(xié)議的支持更完善,部分可以支持 Cookie 和 HTTP 跳轉(zhuǎn),但沒有瀏覽器引擎所以不能執(zhí)行 JavaScript。
再進一步我們發(fā)現(xiàn)帶有瀏覽器引擎的攻擊方式,它其實就是個無窗口的瀏覽器,可以完整的支持 Cookie、HTTP 跳轉(zhuǎn)和 JavaScript。我們也發(fā)現(xiàn)直接使用瀏覽器進行攻擊的,有 windows 平臺的惡意軟件中嵌入 IE 控件,移動 App 中嵌入 WebView 控件,前面講到的熱門網(wǎng)頁嵌入 JavaScript 也是瀏覽器攻擊的例子。因為攻擊流量本身就是瀏覽器發(fā)起的請求,所以這種識別難度更大。
另外一種應(yīng)用層 DDoS 攻擊是針對 SSL,據(jù)統(tǒng)計全球超過 85%的網(wǎng)頁已經(jīng)啟用 HTTPS 協(xié)議了,所以攻擊目標范圍很大。我們知道建立一個 SSL 連接的開銷是比較大的,有人分析過,建立一個 SSL 連接服務(wù)端消耗的計算資源是客戶端的 15 倍,所以如果攻擊者向目標服務(wù)器發(fā)起大量 SSL 連接握手,就會對目標服務(wù)器產(chǎn)生巨大的性能壓力。這里還有一個挑戰(zhàn)在于,只有在 SSL 握手完成以后,才會傳輸應(yīng)用層的數(shù)據(jù)內(nèi)容,所以通過數(shù)據(jù)包內(nèi)容來檢測攻擊,在這里就不適用。
前面講的很多攻擊方式跟 HTTP/HTTPS 業(yè)務(wù)有關(guān)系,但是私有協(xié)議也是存在應(yīng)用層 DDoS 攻擊的,這個在很多游戲業(yè)務(wù)中比較常見。一些粗暴的攻擊方式是建立 TCP 連接后,發(fā)送隨機的垃圾數(shù)據(jù),一般情況下服務(wù)端遇到非法數(shù)據(jù)會直接斷開這個連接。
但是也有一些耐心的攻擊者,對正常的業(yè)務(wù)流量進行抓包,然后用重放的方式對目標發(fā)起攻擊,一方面是這種正常的流量會讓服務(wù)端執(zhí)行更多的業(yè)務(wù)邏輯計算,比如登錄操作需求查詢數(shù)據(jù)庫,從而產(chǎn)生更大的攻擊效果,另一個方面是很難把重放流量跟正常用戶流量區(qū)分開來,對檢測和防御有更大挑戰(zhàn)。
從這些攻擊方式中可以看到,應(yīng)用層 DDoS 攻擊不再是簡單粗暴的大流量沖擊,而是攻擊者精心構(gòu)造的數(shù)據(jù)包,偽裝成正常流量繞過防御設(shè)備,攻擊后端的應(yīng)用和服務(wù)。
三、傳統(tǒng)的應(yīng)用層 DDoS 防御方案
傳統(tǒng)的防御策略是頻率限制,在源 IP、URL 精度進行限速,攔截高頻的訪問者。目前大多數(shù) CC 防御產(chǎn)品都向用戶提供限速功能。但是頻率限速有很多缺陷,因為不同的業(yè)務(wù) QPS 差異很大,默認的限速策略并不能適用于所有場景,比如如下所示,第一個流量圖,峰值流量達到 20 萬 QPS,而第二個圖峰值才 2 萬 QPS,我們直覺上判斷第二個是攻擊行為,但是顯然這兩個業(yè)務(wù)不能用相同的限速策略的。
另一個問題是,當一個網(wǎng)站訪問量很大時,一些脆弱的接口能承受的 QPS 又很低,全局的限速策略就不適用了。粗暴的攔截 IP 還可能引起誤傷,如果一個源 IP 訪問量過大就把 IP 加黑名單,有可能將 NAT 出口 IP 拉黑,在大的公司、學(xué)校里有一個人發(fā)起攻擊就把整個出口 IP 攔截了會影響到正常用戶的訪問。
所以應(yīng)用層 DDoS 防御有個關(guān)鍵點是要做更精細化的策略,很多 CC 防御產(chǎn)品支持用戶自定義策略,將指定的數(shù)據(jù)包丟掉。對于非 HTTP 協(xié)議,部分產(chǎn)品提供讓用戶配置報文過濾特征,對 HTTP 協(xié)議,多數(shù)安全產(chǎn)品都提供用戶配置 HTTP 各個維度的組合攔截條件。但是 DDoS 防御都是爭分奪秒的,這種人工分析和配置策略存在嚴重的滯后性。另外這種策略非常依賴安全專家經(jīng)驗,以及對業(yè)務(wù)的了解。
一些自動化的方案也在廣泛使用,大家可能遇到過訪問一個網(wǎng)站時出現(xiàn)一個白屏頁面,上邊提示在做安全檢測,幾秒鐘后跳轉(zhuǎn)到目標頁面,這個叫 JavaScript 挑戰(zhàn)。服務(wù)端向客戶端返回一個校驗頁面,里邊包含了校驗瀏覽器的 JavaScript 代碼,如果用真實瀏覽器訪問并且有正常用戶行為,就可以校驗通過。它也有一些缺點,就是只適用于網(wǎng)頁,如果是 API 接口,這種挑戰(zhàn)會讓正常業(yè)務(wù)中斷,另外也不適用于非 HTTP 協(xié)議。
人機校驗方式也被用于應(yīng)用層 DDoS 防御,包括圖形驗證碼或者需要用戶點擊、滑動的校驗方式,這種做法雖然很多場景在使用,但非常影響用戶體驗,而且它同樣存在缺陷,只能適用于網(wǎng)頁,不能用于 API 接口和非 HTTP 協(xié)議。
四、智能化的防御方案
1. 縱深防御的架構(gòu)
這些方案都存在一定的缺陷,沒有一個方案是可以解決所有場景下的 DDoS 攻擊,所以我們在最近幾年做了一個縱深防御方案,考慮到了各種不同的攻擊方式,我們從多個維度進行了流量分析和防御,包括數(shù)據(jù)包內(nèi)容特征、訪問行為、客戶端挑戰(zhàn)和智能化的限速,其中大量應(yīng)用了自動化分析建模,精細到每個業(yè)務(wù)、每個 URL 進行訪問基線分析,自動發(fā)現(xiàn)其中的異常,并且基于阿里云的優(yōu)勢大規(guī)模應(yīng)用了威脅情報技術(shù)。以下圖中大部分新的防御手段都是為防御應(yīng)用層 DDoS 攻擊而設(shè)計的。
2. 智能的自適應(yīng)方案
-
為什么需要自適應(yīng)?
不管是默認的防護模板,還是讓用戶去配置,都不是個好的方案。當有大量不同業(yè)務(wù)的時候,我們必須要一個自適應(yīng)的方案,根據(jù)業(yè)務(wù)的歷史流量自動分析出正常情況下的基線,基于這個基線去發(fā)現(xiàn)異常,并阻斷異常請求。
-
自適應(yīng)的難點與挑戰(zhàn)
難點一:如何自動刻畫業(yè)務(wù)基線,并避免歷史攻擊的干擾?
比如以下圖中第一個流量圖,我們能夠自動識別出來它的周期性波動并生成它的頻率基線,雖然峰值 QPS 非常高,但是它符合歷史頻率基線,所以我們判定它是正常行為。第二個圖,雖然峰值 QPS 不高,但是它不符合歷史基線,所以判定存在攻擊行為。
整個過程需要基于數(shù)據(jù)自動完成,因為在存在大量不同業(yè)務(wù)的情況下,人工標注是不現(xiàn)實的。同時,倘若網(wǎng)站歷史上存在攻擊,也需要自動剔除攻擊時的數(shù)據(jù),避免干擾。
難點二:如何在攻擊第一時間發(fā)現(xiàn)異常并作出處置?
發(fā)現(xiàn)流量存在異常僅僅是第一步,最重要的是識別出來哪些流量是異常的,并且自動生成策略把它阻斷掉。每個業(yè)務(wù)的流量都不一樣,攻擊方式也千變?nèi)f化,顯然不能用一個固定的特征去區(qū)分出攻擊流量和正常流量。同樣的,找出攻擊流量的關(guān)鍵是要知道正常流量長什么樣,我們從幾十個維度,在業(yè)務(wù)正常的時候?qū)W習出流量的基線畫像,精細到每個域名、每個端口、每個 URL,同樣也是千人千面。當發(fā)生攻擊時,流量分析引擎可以根據(jù)當前流量和基線的對比,自動生成攔截攻擊流量的策略。
3. 降維打擊的協(xié)同防御
在阿里云我們每天防御了海量的攻擊,每一次防御都是可以輸出有價值的信息用于保護更多的其他客戶。
就像免疫系統(tǒng)一樣,一個客戶遭受過一種類型的攻擊,該攻擊情況就會進入威脅情報系統(tǒng)中,自動分析出攻擊手法和攻擊源 IP 特性,并生成多維度的針對性方案。下次再發(fā)生這種攻擊時,所有客戶都可以受到保護。
五、應(yīng)用層 DDoS 攻防的發(fā)展
DDoS 防御需要爭分奪秒,能快一分鐘,業(yè)務(wù)中斷就少一分鐘,整個防御系統(tǒng)要足夠?qū)崟r。在流量的采集、分析和攔截都要做到實時化,特別是攻擊流量大的時候,實時分析對整個鏈路的性能都有很大挑戰(zhàn)。要做到足夠快,人工分析一定是來不及的,必須要足夠自動化、智能化,通過離線的基線畫像計算,加上實時的智能策略,我們現(xiàn)在做到了 95%以上的應(yīng)用層 DDoS 攻擊都可以在 3 分鐘內(nèi)自動防御成功,將業(yè)務(wù)恢復(fù),因為整個分析決策鏈路長,其中還是有很大改進空間。
應(yīng)用層 DDoS 還有很多挑戰(zhàn)等著我們?nèi)ソ鉀Q,誤殺問題是其中一個,當業(yè)務(wù)有促銷、秒殺活動時,短時間內(nèi)流量激增,部分秒殺場景中大量 IP 集中訪問一個頁面,甚至此時正常業(yè)務(wù)就已經(jīng)受到影響,服務(wù)端響應(yīng)過慢了,此時各個維度都跟正?;€相關(guān)非常大,攻擊檢測系統(tǒng)很容易將這種行為誤判為 DDoS 攻擊。
另外一個難題是,防御系統(tǒng)非常依賴業(yè)務(wù)的基線畫像做防御策略,如果一個新上線的業(yè)務(wù)就遭受攻擊,或者業(yè)務(wù)剛接入防御系統(tǒng),此時防御系統(tǒng)缺少該業(yè)務(wù)的畫像,并不知道它正常流量是怎樣的,防御效果就會大打折扣。另外一個問題也發(fā)生過多次,在一些業(yè)務(wù)中客戶端有重連的邏輯,或者出錯后重傳的邏輯,如果客戶端邏輯設(shè)置不當,當服務(wù)端發(fā)生異常時不斷重連或重傳,也容易誤判為攻擊行為,導(dǎo)致整個 IP 被封禁。針對這些防御缺陷,我們也在設(shè)計新的技術(shù)方案,包括訪問源、客戶端的信譽評分,盡量減少對正常用戶的誤殺。
從歷史發(fā)展來看,DDoS 的攻防技術(shù)一直在發(fā)展,但是攻擊和防御從來都沒有哪一方是占據(jù)絕對優(yōu)勢的,雙方的技術(shù)總是在螺旋上升。只要有利益存在,黑客就會不斷挑戰(zhàn)我們的防御方案,雖然今天我們做了大量防御技術(shù)上的創(chuàng)新,但是道高一尺,魔高一丈,黑客一定會研究新的攻擊技術(shù)繞過我們的防御系統(tǒng),從簡單、粗暴的攻擊方式往精細化、智能化方向發(fā)展,進而迫使我們研究新的防御技術(shù),未來攻擊和防御技術(shù)都會邁上一個新的臺階。
作者簡介:葉敏,阿里云資深安全專家,在系統(tǒng)、應(yīng)用、網(wǎng)絡(luò)安全領(lǐng)域有14年研究經(jīng)驗,阿里反釣魚、云盾反入侵、網(wǎng)絡(luò)安全產(chǎn)品技術(shù)負責人,在網(wǎng)絡(luò)安全攻防方面有豐富的經(jīng)驗,其主導(dǎo)建設(shè)的多項安全技術(shù)保護了阿里云百萬級客戶。
作為“百萬人學(xué)AI”的重要組成部分,2020 AIProCon 開發(fā)者萬人大會將于6月26日通過線上直播形式,讓開發(fā)者們一站式學(xué)習了解當下 AI 的前沿技術(shù)研究、核心技術(shù)與應(yīng)用以及企業(yè)案例的實踐經(jīng)驗,同時還可以在線參加精彩多樣的開發(fā)者沙龍與編程項目。參與前瞻系列活動、在線直播互動,不僅可以與上萬名開發(fā)者們一起交流,還有機會贏取直播專屬好禮,與技術(shù)大咖連麥。