閱讀953 返回首頁    go 阿裏雲 go 技術社區[雲棲]


對抗模擬瀏覽器的DDoS攻擊

 本文講的是 :  對抗模擬瀏覽器的DDoS攻擊  , 收藏該文基於瀏覽器的僵屍網絡就是DDoS世界裏的T-1000s。他們之所以如此危險是因為他們就跟終結者裏的反派一樣,被設計的可以適應各種情況的攻擊。當其他原始的網絡僵屍還在暴力破解你的防禦的時候,基於瀏覽器的僵屍就已經模擬真實的人類從前門進入了。

  當你意識到情況不對時,他們已經突破邊界,搞宕服務器,已經無力回天了。

  那麼應該怎麼防禦T-1000呢,怎麼分辨一次訪問是來自與真實的瀏覽器還是一個基於瀏覽器的僵屍?傳統的過濾僵屍的策略在麵對能夠保存 cookie和執行javascript的僵屍時都失效了。而不分青紅皂白地讓所有用戶都填寫驗證碼無異於自我毀滅,尤其是當這種攻擊可能持續數個星期的 時候。

  為了研究防禦方法,我們來看一個真實的案例:

  這次攻擊是一個未知的僵屍網絡發起的。這些基於瀏覽器的僵屍可以保存cookie,執行javascript。攻擊的早期我們識別出是PhantomJS無界麵瀏覽器。

  PhanomJS是一套開發無界麵瀏覽器的工具。它提供所有瀏覽器的功能但是沒有界麵,沒有按鈕,沒有地址欄。一般被用在自動化測試和網絡監控上。

  這次攻擊持續了150個小時以上。這個過程中,我們記錄了全球超過180000個惡意IP。高峰期每秒6000次攻擊,平均一天有 690000000次以上。攻擊IP的數量和分布範圍讓我們覺得這應該不僅僅是一個僵屍網絡,而是可能整合了多個。下圖是攻擊ip的地理分布。

  對抗模擬瀏覽器的DDoS攻擊

  攻擊過程中我們截獲了861個不同的user-agent。攻擊者修改了頭部的結構試圖繞過我們的防禦。

  下圖是攻擊最多的ip:

對抗模擬瀏覽器的DDoS攻擊

  有趣的是攻擊者除了使用模擬瀏覽器的僵屍,還試圖模擬人類的行為來躲避基於行為檢測的安全規則。這些僵屍會先訪問不同的頁麵,然後像人類那樣訪問一些隨機的頁麵,最後才會聚集在一起消耗資源。

  盡管基於瀏覽器的僵屍能夠突破傳統的過濾。但是由於它使用了一個已知的無界麵瀏覽器,這樣子就可以通過我們的客戶端分類機製檢測到。

  我們的客戶端分類機製基於我們已經收集的大量信息總結出來的簽名。發生這次攻擊的時候,我們的信息庫已經有超過10000000個簽名。每一個簽名都包括:

  User-agent

  IPs and ASN info

  HTTP Headers

  JavaScript footprint

  Cookie/Protocol support variations

  我們不僅僅收集一些明顯的信息,比如user-agent,還收集一些瀏覽器之間複雜的細微差別。安全的對抗是封閉的,所以不說一些技術細節的話很 難把這個機製解釋清楚。稍微說一點,我們會尋找瀏覽器處理編碼方麵細微的差別,比如,我們通過瀏覽器處理HTTP頭裏兩次空格和特殊字符來區別不同的瀏覽 器。

  所以我們的數據庫裏有成千上萬個已知的瀏覽器和僵屍簽名,覆蓋各種場景。在這個案例中,攻擊者的武器PhantomJS webkit當然也是我們簽名庫中的一個。

對抗模擬瀏覽器的DDoS攻擊

  當攻擊者在規劃如何讓他的僵屍看起來更像人類的時候,我們的團隊必須做的就是讓我們的係統發現攻擊者用的無界麵瀏覽器是哪一種。之後我們做的就是簡單的屏蔽了所有的PhantomJS的實例。我們甚至留了一個備選,讓用戶填一個驗證碼,以免屏蔽掉了真正的人類訪問。

  不出意料的,沒有驗證碼被填寫。

對抗模擬瀏覽器的DDoS攻擊

  幾天之後,當我們已經完全依靠機器識別,不需要人工幹預了。攻擊者依然在使用新的user-agent和新的ip試圖繞過防禦。但是所有殘忍的T-1000s都已經被我們冰凍起來了。他們使用的方法,簽名,模式都已經被記錄下來作為將來的參考。


最後更新:2017-10-12 15:03:31

  上一篇:go  Adobe遭黑客襲擊:3800萬用戶受到影響
  下一篇:go  【雲棲大會】持續擁抱開源阿裏雲計算能力三大突破