超低成本DDoS攻擊來襲,看WAF如何絕地防護
一、DDoS攻擊,不止于網(wǎng)絡(luò)傳輸層
網(wǎng)絡(luò)世界里為人們所熟知的DDoS攻擊,多數(shù)是通過對帶寬或網(wǎng)絡(luò)計算資源的持續(xù)、大量消耗,最終導(dǎo)致目標(biāo)網(wǎng)絡(luò)與業(yè)務(wù)的癱瘓;這類DDOS攻擊,工作在OSI模型的網(wǎng)絡(luò)層與傳輸層,利用協(xié)議特點構(gòu)造惡意的請求載荷來達(dá)成目標(biāo)資源耗盡的。
除了這類在網(wǎng)絡(luò)傳輸層大做文章的DDoS攻擊,還有一類DDoS攻擊把目光聚焦到了應(yīng)用層。隨著互聯(lián)網(wǎng)的飛速發(fā)展,接入流量逐年攀高,承載這些流量的網(wǎng)絡(luò)應(yīng)用也被黑產(chǎn)、黑客們盯上,在DDoS攻擊場景中也不例外。
由于應(yīng)用層流量更貼近業(yè)務(wù)邏輯,在應(yīng)用層發(fā)起DDoS攻擊可以同時對目標(biāo)網(wǎng)絡(luò)與目標(biāo)服務(wù)器的穩(wěn)定性造成威脅。除此之外,攻擊者往往只需較小的帶寬成本,實現(xiàn)更大的破壞效果,這樣的不對稱性自然更受攻擊者們的關(guān)注與青睞。
Cloudflare在 《DDoS Attack Trends for 2022 Q1》報告指出,全球范圍內(nèi)應(yīng)用層DDoS攻擊(主要是HTTP DDoS)呈現(xiàn)著持續(xù)增長的態(tài)勢。在俄烏的網(wǎng)絡(luò)戰(zhàn)爭中,HTTP DDoS攻擊也扮演著重要的角色。
與此同時,應(yīng)用層DDoS攻擊的攻擊方式與手法在也在不斷演進(jìn)升級。從集中式高頻請求逐步演進(jìn)為分布式低頻請求,從請求報文中攜帶顯著惡意特征變化為重放合法請求流量,偽造搜索引擎爬蟲流量等;而在攻擊的頻率與規(guī)模上,應(yīng)用層DDoS攻擊也呈現(xiàn)出不斷增長的趨勢。
針對攻擊手法的升級變化,業(yè)務(wù)防護可以從兩方面著手應(yīng)對:一是在運營對抗上,在攻擊發(fā)生的事前、事中和事后各階段,通過梳理資產(chǎn)信息、分析攻擊報文并進(jìn)行特征提取、配置防護策略、復(fù)盤防護數(shù)據(jù)等手段不斷提升防護對抗效果;二是在防護能力建設(shè)上,可以引入支持多維度特征組合的限速功能、JS Challenge、驗證碼等功能模塊來提升對高級復(fù)雜的應(yīng)用層 DDoS攻擊的識別處置能力。與此同時,在流量接入鏈路中與CDN、LB、AGW等各接入層產(chǎn)品進(jìn)行聯(lián)動合作,通過在不同接入層級落地相關(guān)防護策略,實現(xiàn)攻擊流量的分級收斂,在應(yīng)對大規(guī)模應(yīng)用層DDoS攻擊時更能凸顯防護效果。
二、0門檻,高收益,一鍵發(fā)起攻擊
上面提到的應(yīng)用層DDoS攻擊,是通過向應(yīng)用程序發(fā)送大量惡意請求實現(xiàn)攻擊效果,以每秒請求數(shù) (QPS) 來衡量攻擊量級與規(guī)模;這類攻擊也稱為 7 層 DDoS 攻擊,可針對和破壞特定的網(wǎng)絡(luò)應(yīng)用程序,而非整個網(wǎng)絡(luò)。雖然這類 DDoS 攻擊難以預(yù)防和抵御,但發(fā)動起來卻相對比較容易,具體有多容易呢?
由于7層DDoS通常不需要過高的帶寬成本,也無需構(gòu)造復(fù)雜的協(xié)議利用報文,在黑灰產(chǎn)交易渠道,可以非常便捷地獲取到發(fā)起7層DDoS的工具與服務(wù)。
即便是知名、成熟的互聯(lián)網(wǎng)應(yīng)用,在這類攻擊面前也存在被攻陷的可能與風(fēng)險。
三、HTTP DDoS攻擊的類型與特點
3.1 攻擊類型
7層DDoS攻擊中,癱瘓目標(biāo)應(yīng)用與服務(wù)是首要目標(biāo),根據(jù)HTTP DDoS(CC)攻擊發(fā)起的原理與方式,可以總結(jié)以下攻擊類型:
(1) HTTP floods
這種攻擊主要分為兩種形式。第一種是HTTP GET request floods,攻擊者通過構(gòu)造HTTP GET請求報文,向目標(biāo)服務(wù)器發(fā)送針對特定資源的大量請求。在客戶端執(zhí)行一條HTTP請求的成本很低,但是目標(biāo)服務(wù)器做出對應(yīng)的響應(yīng)成本卻可能很高。比如加載一個網(wǎng)頁,服務(wù)端通常需要加載多個文件、查詢數(shù)據(jù)庫等才能做出響應(yīng);例如在Web業(yè)務(wù)的防護中,對于有SSR(Server-side rendering)功能頁面的HTTP floods攻擊,其量級與頻率更加突出明顯,也更容易對業(yè)務(wù)造成影響與危害。
第二種是HTTP POST request floods,與GET request floods的顯著區(qū)別是,POST請求往往需要攜帶表單參數(shù)或請求體信息,而這通常意味著服務(wù)端需要對請求內(nèi)容進(jìn)行相關(guān)解析處理,并將數(shù)據(jù)進(jìn)行持久化(通常需要進(jìn)行DB操作)。發(fā)送POST請求一般僅需較小的計算與帶寬成本,而服務(wù)端進(jìn)行處理操作的過程往往消耗更高??梢哉f這種攻擊形式下,形成這種請求響應(yīng)間資源消耗差異的空間或可能性更大,更容易實現(xiàn)讓服務(wù)器過載從而拒絕服務(wù)的目標(biāo)。
(2) Large Payload POST requests
這類攻擊一般通過POST方法發(fā)送容量大、結(jié)構(gòu)復(fù)雜的請求體到目標(biāo)服務(wù)器,使得目標(biāo)服務(wù)器在解析這些請求內(nèi)容的過程發(fā)生過載(CPU或內(nèi)存);一般而言,攻擊者通過構(gòu)造特定的序列化請求體,如xml、json等,在服務(wù)端執(zhí)行反序列化操作時引起服務(wù)過載。
(3) Asymmetric requests
這種類型的攻擊顧名思義,利用的就是請求與響應(yīng)的非對稱性,請求的目標(biāo)路徑會執(zhí)行高消耗操作而發(fā)起攻擊請求輕而易舉。通常來說,這類攻擊需要對目標(biāo)服務(wù)有一定的熟悉與了解,明確攻擊目標(biāo)哪些地方存在這種非對稱性利用的可能及利用方式。比如通過從數(shù)據(jù)庫服務(wù)器下載大型文件或大量執(zhí)行數(shù)據(jù)庫的查詢等接口,就容易被這種類型攻擊所利用。
(4) Low&Slow attack(Slowloris/Slow Post/Read attack)
這種類型的攻擊更多是面向連接層面,以基于線程的Web服務(wù)器為目標(biāo),通過慢速請求來捆綁每個服務(wù)器線程,從而消耗服務(wù)器的線程&連接資源,這類攻擊中主要可分為Slowloris、Slow Post/Read 幾種攻擊方式。
3.2 攻擊特點
根據(jù)上述總結(jié)的HTTP DDoS攻擊類型、原理與實現(xiàn)方式,可以總結(jié)出HTTP DDoS攻擊具備以下特點:
(1) 攻擊門檻、成本低
相較于4層DDoS攻擊,發(fā)起HTTP DDoS攻擊往往無需構(gòu)造復(fù)雜的攻擊報文,僅需較少的帶寬就能實現(xiàn)強大的攻擊效果。
(2) 攻擊目標(biāo)更精細(xì)
攻擊的目標(biāo)可以精細(xì)到服務(wù)接口粒度,例如直播頁面等,而不需要癱瘓目標(biāo)的網(wǎng)絡(luò)也能讓業(yè)務(wù)出現(xiàn)拒絕服務(wù)。
(3) 破壞范圍廣,危害程度高
雖然HTTP DDoS攻擊的首要目標(biāo)是癱瘓目標(biāo)服務(wù),但并不意味著對目標(biāo)網(wǎng)絡(luò)的可用性沒有威脅。當(dāng)HTTP floods量級到一定程度時,也存在癱瘓請求接入層網(wǎng)絡(luò)的可能性。
(4) 攻擊源分布廣,隱匿性強
實際的HTTP DDoS攻擊中,攻擊者常常利用規(guī)模龐大的肉雞/代理IP,而HTTP DDoS攻擊報文中往往不具備或具備難以察覺的惡意特征。對這些攻擊源進(jìn)行封禁處置效果有限甚至有誤報風(fēng)險,攻擊者卻可以隨時更換新一批攻擊源。
(5) 請求特征容易偽裝,防護難度大
不同于Web注入攻擊場景,HTTP DDoS的攻擊請求的報文特征常常處在一個難以判定好壞的區(qū)間,有時部分的異常特征不足以支撐執(zhí)行攔截決策。攻擊者可通過模擬、重放正常請求來發(fā)起攻擊,即便在請求報文中某些特征被防護方捕獲并針對性處置,攻擊者也能感知到并作出調(diào)整。
總體而言,一起復(fù)雜的HTTP DDoS攻擊,通常不會使用畸形報文,也無需使用偽裝技巧。對比其他類型的DDoS攻擊需要更少的帶寬成本就能癱瘓目標(biāo)站點或服務(wù),甚至特定的目標(biāo)集群與接口。在影響目標(biāo)業(yè)務(wù)可用性的同時,也可能對接入鏈路網(wǎng)絡(luò)的穩(wěn)定性構(gòu)成威脅。這類攻擊往往通過使用大量的肉雞+IP代理池發(fā)起,所以簡單的封禁策略往往難以起到預(yù)期效果。也正因為如此,在進(jìn)行HTTP DDoS攻擊防護過程,要求對業(yè)務(wù)有更深入的理解,對于攻擊定制針對性策略來實現(xiàn)誤報與漏報的平衡,這也是HTTP DDoS難以檢測防護的原因。
四、兵來將擋,WAF如何實現(xiàn)有效防護
根據(jù)上述HTTP DDoS的類型與特點,對于來勢洶洶的攻擊流量,WAF如何實現(xiàn)有效防護呢?
根據(jù)攻擊的原理與類型,可以大致分為三個主要的防護場景:
4.1 連接型HTTP DDoS
這類型的HTTP DDoS攻擊,對應(yīng)上面提到的Low&Slow attack。由于攻擊是通過建立TCP連接后在傳輸HTTP報文的過程實現(xiàn)攻擊效果,因此對于業(yè)務(wù)前面有7層接入層設(shè)備的業(yè)務(wù)(CDN、LB等),這類攻擊會被前面的7層接入層設(shè)備所承載。所以對于許多業(yè)務(wù)而言,這類型的攻擊感知可能并不明顯,但并不表明這類攻擊的危害程度低。相反如果針對特定7層接入設(shè)備進(jìn)行此類型攻擊,可能造成的業(yè)務(wù)影響面會更加廣泛。
由于這類攻擊的特點是“慢速”,那么WAF可以對HTTP的請求header讀取、請求、響應(yīng)body的傳輸設(shè)置好超時時間。當(dāng)觸發(fā)超時策略時可斷開相應(yīng)的TCP連接,釋放連接資源。同時,可對于異常的header、body做檢查與限制(如限制HTTP請求header的數(shù)量)。還可以通過HTTP層面的精細(xì)化訪問控制來避免誤傷場景(如正常業(yè)務(wù)的大文件傳輸場景)。
當(dāng)然,要實現(xiàn)這些能力需要WAF與7層接入設(shè)備做好聯(lián)動配合才能實現(xiàn)有效防護。
4.2 特征型HTTP DDoS
這類型的HTTP DDoS攻擊,對應(yīng)上面的Large Payload POST requests 和 Asymmetric requests,他們的共同點是需要實現(xiàn)這類HTTP DDoS攻擊,在HTTP請求報文中往往能夠提取出關(guān)鍵異常特征。
例如,對于Large Payload POST requests,WAF可通過限制body長度,檢查body內(nèi)容合法性等手段來實現(xiàn)防護:
{ "title": "Liverpool FC (1 million more whitespace)", "contentFormat": "html", "content": "<h1>Liverpool FC</h1><p>You’ll never walk alone.</p>", "canonicalUrl": "http://jamietalbot.com/posts/liverpool-fc", "tags": ["football", "sport", "Liverpool"], "publishStatus": "public" }
例如針對上述的超大異常body,可通過WAF配置自定義策略限制body長度。
對于Asymmetric requests攻擊,例如HTTP Range頭利用的例子中,WAF可通過限制HTTP Range頭的分片策略實現(xiàn)異常檢測與防護;對于一些漏洞利用,特別是業(yè)務(wù)使用的服務(wù)框架、中間件產(chǎn)生的漏洞造成的DDoS,利用WAF的Web漏洞檢測防護能力便能實現(xiàn)有效防護。
4.3 floods型HTTP DDoS
floods類型的HTTP DDoS在現(xiàn)實網(wǎng)絡(luò)流量中更為主流與常見,影響業(yè)務(wù)穩(wěn)定性的風(fēng)險更大,是需要重點關(guān)注的防護場景;WAF在面對這類型攻擊時,可根據(jù)floods類型HTTP DDoS攻擊的特征、特點,分析拆解防護策略,通過以下手段、步驟來實現(xiàn)有效防護:
(1) 第一步:鏈路梳理,明確業(yè)務(wù)場景
當(dāng)業(yè)務(wù)面臨HTTP floods攻擊防護需求時,首先需要梳理清楚業(yè)務(wù)的流量接入鏈路。因為HTTP floods通常具有持續(xù)、量級規(guī)模大的特點,因此最佳的防護部署是首先通過在最外接入層實現(xiàn)(例如CDN),這樣的優(yōu)點很明顯,能將惡意的攻擊流量在最外層收斂,減少后續(xù)接入層的壓力與成本。但這并不意味著后續(xù)接入層無需部署防護,由于防護的精準(zhǔn)程度與防護成本往往是正相關(guān)關(guān)系,經(jīng)過收斂的流量在貼近業(yè)務(wù)的接入層做更精細(xì)的檢測、處置,往往收益更明顯;
同時,明確業(yè)務(wù)服務(wù)的使用場景在應(yīng)對HTTP floods攻擊時也非常關(guān)鍵且必要,業(yè)務(wù)不同的host、path往往有不同的業(yè)務(wù)特征。比如后端負(fù)載能力、是否有登錄態(tài)、WebApp還是Native App、是否有API調(diào)用場景等,只有在明確業(yè)務(wù)場景后才能更好地制定精準(zhǔn)、貼合業(yè)務(wù)需求的防護策略。
業(yè)務(wù)鏈路梳理&防護部署
(2) 第二步:負(fù)載兜底,構(gòu)建防護基線
在HTTP floods發(fā)生時,最基本的防護需求是要保證業(yè)務(wù)的可用性,不能出現(xiàn)因攻擊而造成業(yè)務(wù)癱瘓的情況;在這個需求背景下,最快速有效的策略便是為業(yè)務(wù)制定負(fù)載兜底策略。與業(yè)務(wù)共同梳理清楚需要防護的目標(biāo)資產(chǎn)(host、server cluster、path等),根據(jù)業(yè)務(wù)場景先配置全局/粗粒度的限速策略,實現(xiàn)對攻擊流量的初步防護收斂;
同時,在明確目標(biāo)防護資產(chǎn)的負(fù)載能力后,進(jìn)行更細(xì)粒度的限流/過載保護策略配置,在流量過載的極端情況下優(yōu)先保證服務(wù)的可用性,構(gòu)建一層基線防護能力。
(3) 第三步:特征分析,過濾惡意流量
采取上述策略手段實現(xiàn)初步防護后,需要對HTTP floods流量進(jìn)一步分析過濾,才能在保障正常業(yè)務(wù)流量的同時將惡意流量拒之門外。這里就需要WAF提供基于HTTP請求、響應(yīng)報文的多維組合、匹配能力,識別出報文中的異常特征并提供針對性的處置手段。例如,在對抗業(yè)務(wù)遭受的HTTP floods惡意流量攻擊過程中,除了提取常見的異常IP,Params,UA,Referer,Cookie等特征進(jìn)行封禁或限速處置外,還會將相關(guān)特征進(jìn)行組合關(guān)聯(lián),為策略統(tǒng)計與響應(yīng)處置提供參考。
通過對攻擊流量特征的分析統(tǒng)計,在WAF上進(jìn)行組合策略配置
除了通過WAF豐富的特征分析能力識別惡意流量,在面臨HTTP floods攻擊時,提供豐富、梯度的處置動作對于在防護過程平衡誤傷風(fēng)險也非常關(guān)鍵。WAF可提供封禁、限速、重定向、驗證碼、JS Challenge、自定義響應(yīng)等多種處置動作與特征識別能力配合,為防護的精準(zhǔn)性提供保障。
(4) 第四步:能力聯(lián)動,提升防護效果
對于專業(yè)的HTTP floods攻擊,攻擊者會盡可能地模擬、重放正常的用戶請求流量。因此從“HTTP報文特征”去識別防護惡意流量,可能還遠(yuǎn)不足以應(yīng)對高級復(fù)雜的HTTP floods攻擊。對于HTTP floods攻擊手法的持續(xù)升級演進(jìn),除了從HTTP報文層面抽絲剝繭識別異常,還需要聯(lián)動其他維度的信息與能力來提升防護效果,具體而言體現(xiàn)在以下方面:
對于高級隱蔽的HTTP floods,攻擊者必定需要充足的IP資源,這些IP往往來源于“肉雞”IP或IP代理池,通過結(jié)合高質(zhì)量的IP情報信息,可以在攻擊發(fā)生時自動實時處置,實現(xiàn)精準(zhǔn)防護;
同時,專業(yè)的HTTP floods攻擊離不開自動化工具的支持,這類工具往往具有BOT特征。通過對端側(cè)信息的采集、校驗,與每個請求進(jìn)行關(guān)聯(lián),可以在攻擊發(fā)生時自動識別惡意BOT流量,進(jìn)一步提升防護效果。
WAF的JS Challenge功能,就是通過能力聯(lián)動來提升防護效果的一個例子:
不同于對請求報文檢測來識別異常這種“被動”的防護方式,JS Challenge功能通過在防護檢測過程“主動”向客戶端植入一段JS邏輯。通過利用前端瀏覽器的JS渲染執(zhí)行能力,實現(xiàn)對異常流量的識別;在具體的實現(xiàn)過程中,為了對抗重放攻擊、減少繞過風(fēng)險,可能會引入動態(tài)令牌機制;為了更全面地覆蓋業(yè)務(wù)場景,減少誤傷情況發(fā)生,可以利用JS API調(diào)用判斷瀏覽器環(huán)境與兼容性;為了對防護情況的實時掌控,還可能引入埋點、監(jiān)控邏輯等。
在這些技術(shù)細(xì)節(jié)的實現(xiàn)過程中,WAF既需要聯(lián)動端側(cè)瀏覽器的能力,也需要聯(lián)動CDN、LB等接入組件的能力,最終實現(xiàn)防護效果的進(jìn)一步提升。
五、復(fù)盤反思,如何快人一步
WAF在對抗HTTP DDoS攻擊的過程中,不斷建設(shè)、強化自身能力的同時,也需要不斷復(fù)盤、反思防護情況,力求更完善、高效的應(yīng)對思路與方案。具體可以總結(jié)成以下三點:
5.1 豐富特征維度
根據(jù)HTTP DDoS攻擊的特點可以得知,防護難點之一在于攻擊流量特征難以捕捉。其中一個原因是依據(jù)現(xiàn)有的特征維度,攻擊流量能實現(xiàn)高度的模擬偽裝。從這個角度出發(fā),從防護視角補充更多維度的特征,就更能識別檢測惡意流量。
就WAF產(chǎn)品而言,可以從兩方面著手推進(jìn):一方面是豐富報文特征,除了7層HTTP報文的特征提取,可以嘗試結(jié)合4層報文的字段因子來實現(xiàn)對惡意流量的識別標(biāo)記;另一方面是豐富行為特征,由于HTTP是無狀態(tài)協(xié)議,單次請求響應(yīng)的交互所攜帶的信息往往是有限的。通過關(guān)聯(lián)、統(tǒng)計具有一定聯(lián)系的請求,提取行為特征,也能為制定防護策略提供參考。
5.2 提升BOT識別&對抗能力
對于BOT流量的識別對抗能力,在HTTP DDoS攻擊防護中,往往發(fā)揮著重要、關(guān)鍵的作用。但現(xiàn)實業(yè)務(wù)流量中往往也會混雜正常的BOT流量,這就要求不僅能識別出BOT流量,還能區(qū)分正常與惡意的BOT流量,具備與惡意BOT流量的對抗處置能力。
在落地相關(guān)方案時,也需要與業(yè)務(wù)場景緊密貼合。對于WebApp而言,正常流量多數(shù)通過瀏覽器發(fā)起,可以通過JS Challenge的方式實現(xiàn)對端側(cè)的校驗與信息采集。通過該方案實現(xiàn)WebApp場景防護的同時,在技術(shù)實現(xiàn)上也需要不斷迭代優(yōu)化來滿足更多元的業(yè)務(wù)場景需求。例如對于JS相關(guān)邏輯用更高效的混淆方式來避免繞過風(fēng)險,對引入的JS資源做好緩存/優(yōu)化策略提升業(yè)務(wù)性能與用戶體驗等。
對于NativeApp而言,則可以通過SDK集成方式來驗證、采集端側(cè)信息。但無論是哪種方式、場景,都需要有更完善的誤傷評估、監(jiān)控體系來保障防護的精準(zhǔn)性。對于無法準(zhǔn)確識別惡意BOT流量的情況,也需要更豐富的柔性處置策略,來實現(xiàn)對流量的進(jìn)一步過濾校驗。
5.3 策略事前布局
預(yù)防為主,防治結(jié)合,這是人類應(yīng)對疾病威脅的重要方針,在網(wǎng)絡(luò)安全世界中也同樣適用。HTTP DDoS攻擊發(fā)生時往往來勢洶洶,事先并沒有任何征兆。這就意味著事中、事后的處置策略對當(dāng)前攻擊通常只能起到應(yīng)急補救的效果。因此,對于存在攻擊風(fēng)險的業(yè)務(wù),提前梳理業(yè)務(wù)資產(chǎn),預(yù)先進(jìn)行策略布局就顯得更為重要。
為了實現(xiàn)這個目標(biāo)可從兩方面著手:
- 一個是與業(yè)務(wù)團隊緊密配合,做好宣傳引導(dǎo),在WAF產(chǎn)品中對關(guān)鍵目標(biāo)資產(chǎn)實現(xiàn)HTTP DDoS防護策略的事前配置;
- 另一個是強化WAF的自動化分析能力,對承載業(yè)務(wù)的目標(biāo)資產(chǎn)、負(fù)載能力、報文特征等數(shù)據(jù)進(jìn)行自動化統(tǒng)計分析,輸出對應(yīng)的防護策略,對生產(chǎn)的策略效果進(jìn)行實時評估、校準(zhǔn),在提升防護效果的同時也能大幅降低策略運營成本。