黑客「借刀殺人」,阿里 14 年經驗安全大佬教你如何防禦 DDoS 攻擊

csdn 發佈 2020-04-04T19:57:52+00:00

在「CSDN在線峰會 —— 阿里雲核心技術競爭力」上,在系統、應用、網絡安全領域擁有 14 年研究經驗的阿里雲資深安全專家葉敏深入分享了新型應用層 DDoS 攻擊防禦的最佳實踐,希望能夠對所有技術人有所啟發及裨益。

【CSDN 編者按】DDoS 攻擊近幾年來非常常見,許多知名的平台網站都遭遇過。當應用層 DDoS 攻擊當前已經是最常見的攻擊類型之時,對於程式設計師而言,有哪些必須掌握的 DDoS 攻擊的知識點,更為關鍵的是,如何進行有效的防禦實踐?在「CSDN 在線峰會 —— 阿里雲核心技術競爭力」上,在系統、應用、網絡安全領域擁有 14 年研究經驗的阿里雲資深安全專家葉敏深入分享了新型應用層 DDoS 攻擊防禦的最佳實踐,希望能夠對所有技術人有所啟發及裨益。

複製連結或點擊「閱讀原文」可免費觀看葉敏老師分享視頻:

https://edu.csdn.net/course/play/28249/388361

作者 | 葉敏,阿里雲資深安全專家

責編 | 唐小引

頭圖 | CSDN 下載自東方 IC

出品 | CSDN(ID:CSDNnews)

一、應用層 DDoS 攻擊介紹

DDoS 攻擊長久以來困擾著網際網路企業,從我們雲盾監測到的 DDoS 攻擊流量峰值來看,最近幾年攻擊流量在大幅上漲,從 2014 年我們對外宣布防禦了全球最大的 DDoS 攻擊,453.8Gbps,到現在 T 級別的 DDoS 也變得很常見。

大流量 DDoS 攻擊存在了很多年,雖然攻擊流量一直在增長,但是攻擊類型變化不大,一直以 SYN Flood、UDP Flood、UDP 反射攻擊為主。針對大流量攻擊已經有了非常有效的防禦手段,以前這種大流量攻擊遇到安全設備時,就像進了黑洞一樣被吞噬,防禦成功率很高,但是黑客們不服輸,他們向這個黑洞發起了新的挑戰。

如果把攻擊流量偽裝成正常業務的流量,那麼安全防禦設備就很難區分出攻擊流量,這樣就能穿過防禦設備攻擊到後端的應用,這就是應用層 DDoS 攻擊,也叫 CC( Challenge Collapsar )攻擊,就是挑戰黑洞的意思。

二、應用層 DDoS 的攻擊方式

應用層 DDoS 最近幾年越來越受到黑客的青睞,從監測到的數據來看,應用層 DDoS 攻擊在 2019 年就有翻倍增長。

除了容易繞過防禦設備,還有一個重要的原因是應用層 DDoS 攻擊更加高效,因為應用層的攻擊都要觸發上層應用的處理邏輯,其中可能有資料庫查詢、遠程 API 調用、文件讀寫,甚至有複雜的計算邏輯,所以這些流量會對服務端帶來更大的壓力。攻擊者精心挑選的帶有複雜邏輯的 URL 進行攻擊,可以用很小的流量對應用或資料庫產生巨大壓力。攻擊者不需要用到很大的帶寬,甚至對服務端只有小幅度的 QPS 上漲,讓檢測和防禦都變得更有挑戰。

DDoS 攻擊最典型的方式是殭屍網絡,黑客控制了大量的傀儡主機(肉雞或 bot)向目標發起攻擊。這些傀儡主機可能是伺服器、PC、手機或 IoT 設備。

在應用層 DDoS 攻擊中,我們發現另一種借刀殺人的攻擊方式也很常見,黑客在一些熱門的網頁中嵌入了帶有攻擊行為的 JavaScript 代碼,當訪問者打開這些網頁時,瀏覽器就循環對目標發起攻擊,在一些停留時間比較長的網頁,比如長篇小說或小電影網站,再加上不停的有新用戶訪問,攻擊就會持續很長時間。雖然黑客沒有控制這些設備的權限,但是他藉助這些正常用戶的瀏覽器實現了大規模的應用層 DDoS 攻擊。

網際網路上 HTTP/HTTPS 服務占比最大,所以針對 HTTP/HTTPS 協議的應用層 DDoS 攻擊也是最常見的,我們把它叫 HTTP Flood。雖然都是發起 HTTP 請求,但是也有不同的方式,防禦的難度也不一樣。我們分析過很多 DDoS 木馬,有些直接拼接 HTTP 報文內容發送給服務端,這種通常攻擊手法比較單一,而且也沒有考慮 Cookie 和 HTTP 跳轉,更不能執行 JavaScript。

進一步我們發現有些木馬使用現成的 HTTP 庫,它對 HTTP 協議的支持更完善,部分可以支持 Cookie 和 HTTP 跳轉,但沒有瀏覽器引擎所以不能執行 JavaScript。

再進一步我們發現帶有瀏覽器引擎的攻擊方式,它其實就是個無窗口的瀏覽器,可以完整的支持 Cookie、HTTP 跳轉和 JavaScript。我們也發現直接使用瀏覽器進行攻擊的,有 Windows 平台的惡意軟體中嵌入 IE 控制項,移動 App 中嵌入 WebView 控制項,前面講到的熱門網頁嵌入 JavaScript 也是瀏覽器攻擊的例子。因為攻擊流量本身就是瀏覽器發起的請求,所以這種識別難度更大。

另外一種應用層 DDoS 攻擊是針對 SSL,據統計全球超過 85%的網頁已經啟用 HTTPS 協議了,所以攻擊目標範圍很大。我們知道建立一個 SSL 連接的開銷是比較大的,有人分析過,建立一個 SSL 連接服務端消耗的計算資源是客戶端的 15 倍,所以如果攻擊者向目標伺服器發起大量 SSL 連接握手,就會對目標伺服器產生巨大的性能壓力。這裡還有一個挑戰在於,只有在 SSL 握手完成以後,才會傳輸應用層的數據內容,所以通過數據包內容來檢測攻擊,在這裡就不適用。

前面講的很多攻擊方式跟 HTTP/HTTPS 業務有關係,但是私有協議也是存在應用層 DDoS 攻擊的,這個在很多遊戲業務中比較常見。一些粗暴的攻擊方式是建立 TCP 連接後,發送隨機的垃圾數據,一般情況下服務端遇到非法數據會直接斷開這個連接。

但是也有一些耐心的攻擊者,對正常的業務流量進行抓包,然後用重放的方式對目標發起攻擊,一方面是這種正常的流量會讓服務端執行更多的業務邏輯計算,比如登錄操作需求查詢資料庫,從而產生更大的攻擊效果,另一個方面是很難把重放流量跟正常用戶流量區分開來,對檢測和防禦有更大挑戰。

從這些攻擊方式中可以看到,應用層 DDoS 攻擊不再是簡單粗暴的大流量衝擊,而是攻擊者精心構造的數據包,偽裝成正常流量繞過防禦設備,攻擊後端的應用和服務。

三、傳統的應用層 DDoS 防禦方案

傳統的防禦策略是頻率限制,在源 IP、URL 精度進行限速,攔截高頻的訪問者。目前大多數 CC 防禦產品都向用戶提供限速功能。但是頻率限速有很多缺陷,因為不同的業務 QPS 差異很大,默認的限速策略並不能適用於所有場景,比如如下所示,第一個流量圖,峰值流量達到 20 萬 QPS,而第二個圖峰值才 2 萬 QPS,我們直覺上判斷第二個是攻擊行為,但是顯然這兩個業務不能用相同的限速策略的。

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

所以應用層 DDoS 防禦有個關鍵點是要做更精細化的策略,很多 CC 防禦產品支持用戶自定義策略,將指定的數據包丟掉。對於非 HTTP 協議,部分產品提供讓用戶配置報文過濾特徵,對 HTTP 協議,多數安全產品都提供用戶配置 HTTP 各個維度的組合攔截條件。但是 DDoS 防禦都是爭分奪秒的,這種人工分析和配置策略存在嚴重的滯後性。另外這種策略非常依賴安全專家經驗,以及對業務的了解。

一些自動化的方案也在廣泛使用,大家可能遇到過訪問一個網站時出現一個白屏頁面,上邊提示在做安全檢測,幾秒鐘後跳轉到目標頁面,這個叫 JavaScript 挑戰。服務端向客戶端返回一個校驗頁面,裡邊包含了校驗瀏覽器的 JavaScript 代碼,如果用真實瀏覽器訪問並且有正常用戶行為,就可以校驗通過。它也有一些缺點,就是只適用於網頁,如果是 API 接口,這種挑戰會讓正常業務中斷,另外也不適用於非 HTTP 協議。

人機校驗方式也被用於應用層 DDoS 防禦,包括圖形驗證碼或者需要用戶點擊、滑動的校驗方式,這種做法雖然很多場景在使用,但非常影響用戶體驗,而且它同樣存在缺陷,只能適用於網頁,不能用於 API 接口和非 HTTP 協議。

四、智能化的防禦方案

1. 縱深防禦的架構

這些方案都存在一定的缺陷,沒有一個方案是可以解決所有場景下的 DDoS 攻擊,所以我們在最近幾年做了一個縱深防禦方案,考慮到了各種不同的攻擊方式,我們從多個維度進行了流量分析和防禦,包括數據包內容特徵、訪問行為、客戶端挑戰和智能化的限速,其中大量應用了自動化分析建模,精細到每個業務、每個 URL 進行訪問基線分析,自動發現其中的異常,並且基於阿里雲的優勢大規模應用了威脅情報技術。以下圖中大部分新的防禦手段都是為防禦應用層 DDoS 攻擊而設計的。

2. 智能的自適應方案

  • 為什麼需要自適應?

不管是默認的防護模板,還是讓用戶去配置,都不是個好的方案。當有大量不同業務的時候,我們必須要一個自適應的方案,根據業務的歷史流量自動分析出正常情況下的基線,基於這個基線去發現異常,並阻斷異常請求。

  • 自適應的難點與挑戰

難點一:如何自動刻畫業務基線,並避免歷史攻擊的干擾?

比如以下圖中第一個流量圖,我們能夠自動識別出來它的周期性波動並生成它的頻率基線,雖然峰值 QPS 非常高,但是它符合歷史頻率基線,所以我們判定它是正常行為。第二個圖,雖然峰值 QPS 不高,但是它不符合歷史基線,所以判定存在攻擊行為。

整個過程需要基於數據自動完成,因為在存在大量不同業務的情況下,人工標註是不現實的。同時,倘若網站歷史上存在攻擊,也需要自動剔除攻擊時的數據,避免干擾。

難點二:如何在攻擊第一時間發現異常並作出處置?

發現流量存在異常僅僅是第一步,最重要的是識別出來哪些流量是異常的,並且自動生成策略把它阻斷掉。每個業務的流量都不一樣,攻擊方式也千變萬化,顯然不能用一個固定的特徵去區分出攻擊流量和正常流量。同樣的,找出攻擊流量的關鍵是要知道正常流量長什麼樣,我們從幾十個維度,在業務正常的時候學習出流量的基線畫像,精細到每個域名、每個埠、每個 URL,同樣也是千人千面。當發生攻擊時,流量分析引擎可以根據當前流量和基線的對比,自動生成攔截攻擊流量的策略。

3. 降維打擊的協同防禦

在阿里雲我們每天防禦了海量的攻擊,每一次防禦都是可以輸出有價值的信息用於保護更多的其他客戶。

就像免疫系統一樣,一個客戶遭受過一種類型的攻擊,該攻擊情況就會進入威脅情報系統中,自動分析出攻擊手法和攻擊源 IP 特性,並生成多維度的針對性方案。下次再發生這種攻擊時,所有客戶都可以受到保護。

五、應用層 DDoS 攻防的發展

DDoS 防禦需要爭分奪秒,能快一分鐘,業務中斷就少一分鐘,整個防禦系統要足夠實時。在流量的採集、分析和攔截都要做到實時化,特別是攻擊流量大的時候,實時分析對整個鏈路的性能都有很大挑戰。要做到足夠快,人工分析一定是來不及的,必須要足夠自動化、智能化,通過離線的基線畫像計算,加上實時的智能策略,我們現在做到了 95%以上的應用層 DDoS 攻擊都可以在 3 分鐘內自動防禦成功,將業務恢復,因為整個分析決策鏈路長,其中還是有很大改進空間。

應用層 DDoS 還有很多挑戰等著我們去解決,誤殺問題是其中一個,當業務有促銷、秒殺活動時,短時間內流量激增,部分秒殺場景中大量 IP 集中訪問一個頁面,甚至此時正常業務就已經受到影響,服務端響應過慢了,此時各個維度都跟正常基線相關非常大,攻擊檢測系統很容易將這種行為誤判為 DDoS 攻擊。

另外一個難題是,防禦系統非常依賴業務的基線畫像做防禦策略,如果一個新上線的業務就遭受攻擊,或者業務剛接入防禦系統,此時防禦系統缺少該業務的畫像,並不知道它正常流量是怎樣的,防禦效果就會大打折扣。另外一個問題也發生過多次,在一些業務中客戶端有重連的邏輯,或者出錯後重傳的邏輯,如果客戶端邏輯設置不當,當服務端發生異常時不斷重連或重傳,也容易誤判為攻擊行為,導致整個 IP 被封禁。針對這些防禦缺陷,我們也在設計新的技術方案,包括訪問源、客戶端的信譽評分,儘量減少對正常用戶的誤殺。

從歷史發展來看,DDoS 的攻防技術一直在發展,但是攻擊和防禦從來都沒有哪一方是占據絕對優勢的,雙方的技術總是在螺旋上升。只要有利益存在,黑客就會不斷挑戰我們的防禦方案,雖然今天我們做了大量防禦技術上的創新,但是道高一尺,魔高一丈,黑客一定會研究新的攻擊技術繞過我們的防禦系統,從簡單、粗暴的攻擊方式往精細化、智能化方向發展,進而迫使我們研究新的防禦技術,未來攻擊和防禦技術都會邁上一個新的台階。

作者簡介:葉敏,阿里雲資深安全專家,在系統、應用、網絡安全領域有14年研究經驗,阿里反釣魚、雲盾反入侵、網絡安全產品技術負責人,在網絡安全攻防方面有豐富的經驗,其主導建設的多項安全技術保護了阿里雲百萬級客戶。

作為「百萬人學AI」的重要組成部分,2020 AIProCon 開發者萬人大會將於6月26日通過線上直播形式,讓開發者們一站式學習了解當下 AI 的前沿技術研究、核心技術與應用以及企業案例的實踐經驗,同時還可以在線參加精彩多樣的開發者沙龍與編程項目。參與前瞻系列活動、在線直播互動,不僅可以與上萬名開發者們一起交流,還有機會贏取直播專屬好禮,與技術大咖連麥。

評論區留言入選,可獲得價值299元的「2020 AI開發者萬人大會」在線直播門票一張。 快來動動手指,寫下你想說的話吧!

☞微軟為一人收購一公司?破解索尼程序、寫黑客小說,看他彪悍的程序人生!

☞中國無人機「老炮兒」回憶錄

☞4 年 46 個版本,一文讀懂 Spring Cloud 發展歷史

☞京東商城背後的AI技術能力揭秘 - 基於關鍵詞自動生成摘要

☞網際網路之父確診新冠,一代傳奇:任谷歌副總裁、NASA 訪問科學家

☞從未如此簡單:10分鐘帶你逆襲Kafka!

☞無代碼時代來臨,程式設計師如何保住飯碗?

關鍵字: