【CSDN 編者按】DDoS 攻擊近幾年來非常常見,許多知名的平臺(tái)網(wǎng)站都遭遇過。當(dāng)應(yīng)用層 DDoS 攻擊當(dāng)前已經(jīng)是最常見的攻擊類型之時(shí),對(duì)于程序員而言,有哪些必須掌握的 DDoS 攻擊的知識(shí)點(diǎn),更為關(guān)鍵的是,如何進(jìn)行有效的防御實(shí)踐?在「CSDN 在線峰會(huì) —— 阿里云核心技術(shù)競(jìng)爭(zhēng)力」上,在系統(tǒng)、應(yīng)用、網(wǎng)絡(luò)安全領(lǐng)域擁有 14 年研究經(jīng)驗(yàn)的阿里云資深安全專家葉敏深入分享了新型應(yīng)用層 DDoS 攻擊防御的最佳實(shí)踐,希望能夠?qū)λ屑夹g(shù)人有所啟發(fā)及裨益。

一、應(yīng)用層 DDoS 攻擊介紹
DDoS 攻擊長(zhǎng)久以來困擾著互聯(lián)網(wǎng)企業(yè),從我們?cè)贫鼙O(jiān)測(cè)到的 DDoS 攻擊流量峰值來看,最近幾年攻擊流量在大幅上漲,從 2014 年我們對(duì)外宣布防御了全球最大的 DDoS 攻擊,453.8Gbps,到現(xiàn)在 T 級(jí)別的 DDoS 也變得很常見。

大流量 DDoS 攻擊存在了很多年,雖然攻擊流量一直在增長(zhǎng),但是攻擊類型變化不大,一直以 SYN Flood、UDP Flood、UDP 反射攻擊為主。針對(duì)大流量攻擊已經(jīng)有了非常有效的防御手段,以前這種大流量攻擊遇到安全設(shè)備時(shí),就像進(jìn)了黑洞一樣被吞噬,防御成功率很高,但是黑客們不服輸,他們向這個(gè)黑洞發(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)測(cè)到的數(shù)據(jù)來看,應(yīng)用層 DDoS 攻擊在 2019 年就有翻倍增長(zhǎng)。
除了容易繞過防御設(shè)備,還有一個(gè)重要的原因是應(yīng)用層 DDoS 攻擊更加高效,因?yàn)閼?yīng)用層的攻擊都要觸發(fā)上層應(yīng)用的處理邏輯,其中可能有數(shù)據(jù)庫查詢、遠(yuǎn)程 API 調(diào)用、文件讀寫,甚至有復(fù)雜的計(jì)算邏輯,所以這些流量會(huì)對(duì)服務(wù)端帶來更大的壓力。攻擊者精心挑選的帶有復(fù)雜邏輯的 URL 進(jìn)行攻擊,可以用很小的流量對(duì)應(yīng)用或數(shù)據(jù)庫產(chǎn)生巨大壓力。攻擊者不需要用到很大的帶寬,甚至對(duì)服務(wù)端只有小幅度的 QPS 上漲,讓檢測(cè)和防御都變得更有挑戰(zhàn)。
DDoS 攻擊最典型的方式是僵尸網(wǎng)絡(luò),黑客控制了大量的傀儡主機(jī)(肉雞或 bot)向目標(biāo)發(fā)起攻擊。這些傀儡主機(jī)可能是服務(wù)器、PC、手機(jī)或 IoT 設(shè)備。
在應(yīng)用層 DDoS 攻擊中,我們發(fā)現(xiàn)另一種借刀殺人的攻擊方式也很常見,黑客在一些熱門的網(wǎng)頁中嵌入了帶有攻擊行為的 JAVAScript 代碼,當(dāng)訪問者打開這些網(wǎng)頁時(shí),瀏覽器就循環(huán)對(duì)目標(biāo)發(fā)起攻擊,在一些停留時(shí)間比較長(zhǎng)的網(wǎng)頁,比如長(zhǎng)篇小說或小電影網(wǎng)站,再加上不停的有新用戶訪問,攻擊就會(huì)持續(xù)很長(zhǎng)時(shí)間。雖然黑客沒有控制這些設(shè)備的權(quán)限,但是他借助這些正常用戶的瀏覽器實(shí)現(xiàn)了大規(guī)模的應(yīng)用層 DDoS 攻擊。

互聯(lián)網(wǎng)上 HTTP/HTTPS 服務(wù)占比最大,所以針對(duì) HTTP/HTTPS 協(xié)議的應(yīng)用層 DDoS 攻擊也是最常見的,我們把它叫 HTTP Flood。雖然都是發(fā)起 HTTP 請(qǐng)求,但是也有不同的方式,防御的難度也不一樣。我們分析過很多 DDoS 木馬,有些直接拼接 HTTP 報(bào)文內(nèi)容發(fā)送給服務(wù)端,這種通常攻擊手法比較單一,而且也沒有考慮 Cookie 和 HTTP 跳轉(zhuǎn),更不能執(zhí)行 JavaScript。
進(jìn)一步我們發(fā)現(xiàn)有些木馬使用現(xiàn)成的 HTTP 庫,它對(duì) HTTP 協(xié)議的支持更完善,部分可以支持 Cookie 和 HTTP 跳轉(zhuǎn),但沒有瀏覽器引擎所以不能執(zhí)行 JavaScript。

再進(jìn)一步我們發(fā)現(xiàn)帶有瀏覽器引擎的攻擊方式,它其實(shí)就是個(gè)無窗口的瀏覽器,可以完整的支持 Cookie、HTTP 跳轉(zhuǎn)和 JavaScript。我們也發(fā)現(xiàn)直接使用瀏覽器進(jìn)行攻擊的,有 windows 平臺(tái)的惡意軟件中嵌入 IE 控件,移動(dòng) App 中嵌入 WebView 控件,前面講到的熱門網(wǎng)頁嵌入 JavaScript 也是瀏覽器攻擊的例子。因?yàn)楣袅髁勘旧砭褪菫g覽器發(fā)起的請(qǐng)求,所以這種識(shí)別難度更大。
另外一種應(yīng)用層 DDoS 攻擊是針對(duì) SSL,據(jù)統(tǒng)計(jì)全球超過 85%的網(wǎng)頁已經(jīng)啟用 HTTPS 協(xié)議了,所以攻擊目標(biāo)范圍很大。我們知道建立一個(gè) SSL 連接的開銷是比較大的,有人分析過,建立一個(gè) SSL 連接服務(wù)端消耗的計(jì)算資源是客戶端的 15 倍,所以如果攻擊者向目標(biāo)服務(wù)器發(fā)起大量 SSL 連接握手,就會(huì)對(duì)目標(biāo)服務(wù)器產(chǎn)生巨大的性能壓力。這里還有一個(gè)挑戰(zhàn)在于,只有在 SSL 握手完成以后,才會(huì)傳輸應(yīng)用層的數(shù)據(jù)內(nèi)容,所以通過數(shù)據(jù)包內(nèi)容來檢測(cè)攻擊,在這里就不適用。
前面講的很多攻擊方式跟 HTTP/HTTPS 業(yè)務(wù)有關(guān)系,但是私有協(xié)議也是存在應(yīng)用層 DDoS 攻擊的,這個(gè)在很多游戲業(yè)務(wù)中比較常見。一些粗暴的攻擊方式是建立 TCP 連接后,發(fā)送隨機(jī)的垃圾數(shù)據(jù),一般情況下服務(wù)端遇到非法數(shù)據(jù)會(huì)直接斷開這個(gè)連接。
但是也有一些耐心的攻擊者,對(duì)正常的業(yè)務(wù)流量進(jìn)行抓包,然后用重放的方式對(duì)目標(biāo)發(fā)起攻擊,一方面是這種正常的流量會(huì)讓服務(wù)端執(zhí)行更多的業(yè)務(wù)邏輯計(jì)算,比如登錄操作需求查詢數(shù)據(jù)庫,從而產(chǎn)生更大的攻擊效果,另一個(gè)方面是很難把重放流量跟正常用戶流量區(qū)分開來,對(duì)檢測(cè)和防御有更大挑戰(zhàn)。

從這些攻擊方式中可以看到,應(yīng)用層 DDoS 攻擊不再是簡(jiǎn)單粗暴的大流量沖擊,而是攻擊者精心構(gòu)造的數(shù)據(jù)包,偽裝成正常流量繞過防御設(shè)備,攻擊后端的應(yīng)用和服務(wù)。
三、傳統(tǒng)的應(yīng)用層 DDoS 防御方案
傳統(tǒng)的防御策略是頻率限制,在源 IP、URL 精度進(jìn)行限速,攔截高頻的訪問者。目前大多數(shù) CC 防御產(chǎn)品都向用戶提供限速功能。但是頻率限速有很多缺陷,因?yàn)椴煌臉I(yè)務(wù) QPS 差異很大,默認(rèn)的限速策略并不能適用于所有場(chǎng)景,比如如下所示,第一個(gè)流量圖,峰值流量達(dá)到 20 萬 QPS,而第二個(gè)圖峰值才 2 萬 QPS,我們直覺上判斷第二個(gè)是攻擊行為,但是顯然這兩個(gè)業(yè)務(wù)不能用相同的限速策略的。

另一個(gè)問題是,當(dāng)一個(gè)網(wǎng)站訪問量很大時(shí),一些脆弱的接口能承受的 QPS 又很低,全局的限速策略就不適用了。粗暴的攔截 IP 還可能引起誤傷,如果一個(gè)源 IP 訪問量過大就把 IP 加黑名單,有可能將 NAT 出口 IP 拉黑,在大的公司、學(xué)校里有一個(gè)人發(fā)起攻擊就把整個(gè)出口 IP 攔截了會(huì)影響到正常用戶的訪問。

所以應(yīng)用層 DDoS 防御有個(gè)關(guān)鍵點(diǎn)是要做更精細(xì)化的策略,很多 CC 防御產(chǎn)品支持用戶自定義策略,將指定的數(shù)據(jù)包丟掉。對(duì)于非 HTTP 協(xié)議,部分產(chǎn)品提供讓用戶配置報(bào)文過濾特征,對(duì) HTTP 協(xié)議,多數(shù)安全產(chǎn)品都提供用戶配置 HTTP 各個(gè)維度的組合攔截條件。但是 DDoS 防御都是爭(zhēng)分奪秒的,這種人工分析和配置策略存在嚴(yán)重的滯后性。另外這種策略非常依賴安全專家經(jīng)驗(yàn),以及對(duì)業(yè)務(wù)的了解。
一些自動(dòng)化的方案也在廣泛使用,大家可能遇到過訪問一個(gè)網(wǎng)站時(shí)出現(xiàn)一個(gè)白屏頁面,上邊提示在做安全檢測(cè),幾秒鐘后跳轉(zhuǎn)到目標(biāo)頁面,這個(gè)叫 JavaScript 挑戰(zhàn)。服務(wù)端向客戶端返回一個(gè)校驗(yàn)頁面,里邊包含了校驗(yàn)瀏覽器的 JavaScript 代碼,如果用真實(shí)瀏覽器訪問并且有正常用戶行為,就可以校驗(yàn)通過。它也有一些缺點(diǎn),就是只適用于網(wǎng)頁,如果是 API 接口,這種挑戰(zhàn)會(huì)讓正常業(yè)務(wù)中斷,另外也不適用于非 HTTP 協(xié)議。

人機(jī)校驗(yàn)方式也被用于應(yīng)用層 DDoS 防御,包括圖形驗(yàn)證碼或者需要用戶點(diǎn)擊、滑動(dòng)的校驗(yàn)方式,這種做法雖然很多場(chǎng)景在使用,但非常影響用戶體驗(yàn),而且它同樣存在缺陷,只能適用于網(wǎng)頁,不能用于 API 接口和非 HTTP 協(xié)議。

四、智能化的防御方案
1. 縱深防御的架構(gòu)
這些方案都存在一定的缺陷,沒有一個(gè)方案是可以解決所有場(chǎng)景下的 DDoS 攻擊,所以我們?cè)谧罱鼛啄曜隽艘粋€(gè)縱深防御方案,考慮到了各種不同的攻擊方式,我們從多個(gè)維度進(jìn)行了流量分析和防御,包括數(shù)據(jù)包內(nèi)容特征、訪問行為、客戶端挑戰(zhàn)和智能化的限速,其中大量應(yīng)用了自動(dòng)化分析建模,精細(xì)到每個(gè)業(yè)務(wù)、每個(gè) URL 進(jìn)行訪問基線分析,自動(dòng)發(fā)現(xiàn)其中的異常,并且基于阿里云的優(yōu)勢(shì)大規(guī)模應(yīng)用了威脅情報(bào)技術(shù)。以下圖中大部分新的防御手段都是為防御應(yīng)用層 DDoS 攻擊而設(shè)計(jì)的。

2. 智能的自適應(yīng)方案
-
為什么需要自適應(yīng)?
不管是默認(rèn)的防護(hù)模板,還是讓用戶去配置,都不是個(gè)好的方案。當(dāng)有大量不同業(yè)務(wù)的時(shí)候,我們必須要一個(gè)自適應(yīng)的方案,根據(jù)業(yè)務(wù)的歷史流量自動(dòng)分析出正常情況下的基線,基于這個(gè)基線去發(fā)現(xiàn)異常,并阻斷異常請(qǐng)求。
-
自適應(yīng)的難點(diǎn)與挑戰(zhàn)
難點(diǎn)一:如何自動(dòng)刻畫業(yè)務(wù)基線,并避免歷史攻擊的干擾?
比如以下圖中第一個(gè)流量圖,我們能夠自動(dòng)識(shí)別出來它的周期性波動(dòng)并生成它的頻率基線,雖然峰值 QPS 非常高,但是它符合歷史頻率基線,所以我們判定它是正常行為。第二個(gè)圖,雖然峰值 QPS 不高,但是它不符合歷史基線,所以判定存在攻擊行為。

整個(gè)過程需要基于數(shù)據(jù)自動(dòng)完成,因?yàn)樵诖嬖诖罅坎煌瑯I(yè)務(wù)的情況下,人工標(biāo)注是不現(xiàn)實(shí)的。同時(shí),倘若網(wǎng)站歷史上存在攻擊,也需要自動(dòng)剔除攻擊時(shí)的數(shù)據(jù),避免干擾。
難點(diǎn)二:如何在攻擊第一時(shí)間發(fā)現(xiàn)異常并作出處置?
發(fā)現(xiàn)流量存在異常僅僅是第一步,最重要的是識(shí)別出來哪些流量是異常的,并且自動(dòng)生成策略把它阻斷掉。每個(gè)業(yè)務(wù)的流量都不一樣,攻擊方式也千變?nèi)f化,顯然不能用一個(gè)固定的特征去區(qū)分出攻擊流量和正常流量。同樣的,找出攻擊流量的關(guān)鍵是要知道正常流量長(zhǎng)什么樣,我們從幾十個(gè)維度,在業(yè)務(wù)正常的時(shí)候?qū)W習(xí)出流量的基線畫像,精細(xì)到每個(gè)域名、每個(gè)端口、每個(gè) URL,同樣也是千人千面。當(dāng)發(fā)生攻擊時(shí),流量分析引擎可以根據(jù)當(dāng)前流量和基線的對(duì)比,自動(dòng)生成攔截攻擊流量的策略。
3. 降維打擊的協(xié)同防御
在阿里云我們每天防御了海量的攻擊,每一次防御都是可以輸出有價(jià)值的信息用于保護(hù)更多的其他客戶。
就像免疫系統(tǒng)一樣,一個(gè)客戶遭受過一種類型的攻擊,該攻擊情況就會(huì)進(jìn)入威脅情報(bào)系統(tǒng)中,自動(dòng)分析出攻擊手法和攻擊源 IP 特性,并生成多維度的針對(duì)性方案。下次再發(fā)生這種攻擊時(shí),所有客戶都可以受到保護(hù)。
五、應(yīng)用層 DDoS 攻防的發(fā)展
DDoS 防御需要爭(zhēng)分奪秒,能快一分鐘,業(yè)務(wù)中斷就少一分鐘,整個(gè)防御系統(tǒng)要足夠?qū)崟r(shí)。在流量的采集、分析和攔截都要做到實(shí)時(shí)化,特別是攻擊流量大的時(shí)候,實(shí)時(shí)分析對(duì)整個(gè)鏈路的性能都有很大挑戰(zhàn)。要做到足夠快,人工分析一定是來不及的,必須要足夠自動(dòng)化、智能化,通過離線的基線畫像計(jì)算,加上實(shí)時(shí)的智能策略,我們現(xiàn)在做到了 95%以上的應(yīng)用層 DDoS 攻擊都可以在 3 分鐘內(nèi)自動(dòng)防御成功,將業(yè)務(wù)恢復(fù),因?yàn)檎麄€(gè)分析決策鏈路長(zhǎng),其中還是有很大改進(jìn)空間。
應(yīng)用層 DDoS 還有很多挑戰(zhàn)等著我們?nèi)ソ鉀Q,誤殺問題是其中一個(gè),當(dāng)業(yè)務(wù)有促銷、秒殺活動(dòng)時(shí),短時(shí)間內(nèi)流量激增,部分秒殺場(chǎng)景中大量 IP 集中訪問一個(gè)頁面,甚至此時(shí)正常業(yè)務(wù)就已經(jīng)受到影響,服務(wù)端響應(yīng)過慢了,此時(shí)各個(gè)維度都跟正常基線相關(guān)非常大,攻擊檢測(cè)系統(tǒng)很容易將這種行為誤判為 DDoS 攻擊。
另外一個(gè)難題是,防御系統(tǒng)非常依賴業(yè)務(wù)的基線畫像做防御策略,如果一個(gè)新上線的業(yè)務(wù)就遭受攻擊,或者業(yè)務(wù)剛接入防御系統(tǒng),此時(shí)防御系統(tǒng)缺少該業(yè)務(wù)的畫像,并不知道它正常流量是怎樣的,防御效果就會(huì)大打折扣。另外一個(gè)問題也發(fā)生過多次,在一些業(yè)務(wù)中客戶端有重連的邏輯,或者出錯(cuò)后重傳的邏輯,如果客戶端邏輯設(shè)置不當(dāng),當(dāng)服務(wù)端發(fā)生異常時(shí)不斷重連或重傳,也容易誤判為攻擊行為,導(dǎo)致整個(gè) IP 被封禁。針對(duì)這些防御缺陷,我們也在設(shè)計(jì)新的技術(shù)方案,包括訪問源、客戶端的信譽(yù)評(píng)分,盡量減少對(duì)正常用戶的誤殺。
從歷史發(fā)展來看,DDoS 的攻防技術(shù)一直在發(fā)展,但是攻擊和防御從來都沒有哪一方是占據(jù)絕對(duì)優(yōu)勢(shì)的,雙方的技術(shù)總是在螺旋上升。只要有利益存在,黑客就會(huì)不斷挑戰(zhàn)我們的防御方案,雖然今天我們做了大量防御技術(shù)上的創(chuàng)新,但是道高一尺,魔高一丈,黑客一定會(huì)研究新的攻擊技術(shù)繞過我們的防御系統(tǒng),從簡(jiǎn)單、粗暴的攻擊方式往精細(xì)化、智能化方向發(fā)展,進(jìn)而迫使我們研究新的防御技術(shù),未來攻擊和防御技術(shù)都會(huì)邁上一個(gè)新的臺(tái)階。
作者簡(jiǎn)介:葉敏,阿里云資深安全專家,在系統(tǒng)、應(yīng)用、網(wǎng)絡(luò)安全領(lǐng)域有14年研究經(jīng)驗(yàn),阿里反釣魚、云盾反入侵、網(wǎng)絡(luò)安全產(chǎn)品技術(shù)負(fù)責(zé)人,在網(wǎng)絡(luò)安全攻防方面有豐富的經(jīng)驗(yàn),其主導(dǎo)建設(shè)的多項(xiàng)安全技術(shù)保護(hù)了阿里云百萬級(jí)客戶。
作為“百萬人學(xué)AI”的重要組成部分,2020 AIProCon 開發(fā)者萬人大會(huì)將于6月26日通過線上直播形式,讓開發(fā)者們一站式學(xué)習(xí)了解當(dāng)下 AI 的前沿技術(shù)研究、核心技術(shù)與應(yīng)用以及企業(yè)案例的實(shí)踐經(jīng)驗(yàn),同時(shí)還可以在線參加精彩多樣的開發(fā)者沙龍與編程項(xiàng)目。參與前瞻系列活動(dòng)、在線直播互動(dòng),不僅可以與上萬名開發(fā)者們一起交流,還有機(jī)會(huì)贏取直播專屬好禮,與技術(shù)大咖連麥。