Home 技術文章 如何保護您的OTT服務免受撞庫攻擊
Applications

如何保護您的OTT服務免受撞庫攻擊

About The Author

Outline

最近,撞庫攻擊對OTT流服務造成的威脅變得十分明顯。 在廣受歡迎的流媒體服務被大肆炒作推出後的幾個小時內,用戶帳戶被黑客攻擊,並以折扣價出售。 這一漏洞演變成公關挑戰,成千上萬的訂閱者轉向社交媒體,揭露他們對鎖定帳戶訪問和服務可訪問性問題的不滿。

正如此經驗所示,撞庫攻擊是OTT安全團隊面臨的新挑戰。 受免費試用,剪線和獨家內容驅動的流式服務訂閱產生了大量的用戶資訊,使OTT服務成為數據盜竊的更具吸引力的目標。 轉售入侵帳戶的訪問權限並不是黑客的唯一動機。 他們還可以從被破壞的用戶帳戶(如地址,電話和瀏攬歷史記錄以及信用卡數據)中竊取寶貴的私人詳細資訊。 然後,黑客可以通過暗網銷售這些資訊,或者通過社會工程和網路釣魚攻擊造成進一步的損害。

撞庫攻擊的破壞區遠遠超出了對用戶隱私和財務的影響。 撞庫攻擊使用的殭屍網路每小時能夠自動化數百萬個登入請求,對應用程式基礎設施造成破壞。 即使成功率較低,如此大量的請求也會增加流平臺的營運成本。 額外的CPU週期,記憶體和數據入口/出口費用隨著時間的推移而增加。 鑑於管理應用程式後端的成本相對較高(尤其是在雲中),嚴重依賴後端系統的登入請求是最昂貴的攻擊。 最終,高水平的惡意活動會降低合法用戶嘗試驗證,瀏攬和流式傳輸內容的服務。

流媒體服務如何消除這種日益增長的威脅? 這篇技術文章將回顧當今世界管理爬蟲程序所需的條件以及流媒體服務如何將撞庫攻擊的影響降至最低並降低其可能性。

撞庫攻擊的剖析

網路犯罪分子可以通過多種方式獲取被盜憑據來啟動撞庫攻擊,這些方法包括發現配置錯誤的數據庫,網路釣魚攻擊,使用惡意軟體感染用戶設備或在黑網上購買黑客憑據。 接下來,攻擊者通過分布式代理伺服器路由無數登入請求,以掩蓋攻擊的來源並放大請求。 犯罪分子可以通過暗網論壇向爬蟲程序牧民購買代理服務的訪問權限,每小時收費都很合理。 最後,攻擊者使用已洩露的憑據列表創建腳本以自動化身份驗證請求,通常利用重複使用的或簡單的密碼來獲取服務訪問權限。 攻擊者也可能在暗網上購買工具包,例如CAPTCHA解算器,瀏攬器仿真器或指紋欺騙腳本,以幫助抵消現有防禦。

抵禦撞庫攻擊

阻止此類攻擊需要能夠區分爬蟲程序和人類。 不幸的是,爬蟲程序營運商不斷找到繞過爬蟲程序檢測方法的新方法。 最新一代機器人程式與人類幾乎無法區分。

隨著爬蟲程序變得越來越復雜,過去可能行之有效的簡單緩解策略(如阻止爬蟲程序的請求,IP地址或用戶代理(UA))已不再足夠。 如今,攻擊者最有可能使用一種廉價且豐富的輪換IP代理服務,而不是使用靜態IP進行攻擊,這有助於他們規避速率限制和簡單訪問控制列表(ACL)保護。 此外,攔截並不可取,因為它是機器人程式操作員有用的回饋機制,告訴他們演進自動化以擊敗偵測方法。

爬蟲程序檢測技術必須變得更加復雜,才能應對日益復雜的爬蟲程序攻擊。 當今最先進的爬蟲程序檢測技術涉及伺服器端和客戶端三種分析形式。 它們是:

  1. 請求指紋識別
  2. 客戶端指紋識別
  3. 行為指紋識別

您需要將這三者結合起來,才能抵禦複雜的撞庫攻擊。

攻擊檢測方法1:請求指紋識別

通常,只要伺服器從客戶端收到所有請求的資訊,就會在伺服器端執行請求指紋識別。 客戶端請求通常由網路(IP),連接,加密和其他HTTP元數據組成,這些元數據被分析並用於生成請求指紋。 此指紋包括核心詳細資訊,如IP地址,TCP握手,TLS握手(即TLS協議,密碼和擴展),HTTP標頭和標頭順序,以及源自元數據(如ASN和設備類型)的其他資訊。 這些請求特徵結合在一起時,可以為每個客戶機生成唯一的簽名或指紋。

圖1. 請求特徵的一小部分樣本,可協同工作以創建唯一的請求指紋。

從指紋中,我們可以開始查找異常情況。 例如,如果請求聲稱來自Chrome UA,它是否按照用戶代理中所示的Chrome瀏攬器版本中預期的順序包含標題? 它是否使用典型的HTTP和TLS協議? ClientHello消息是否包含具有此Chrome版本典型首選順序的協議和密碼? 除了分析請求元數據外,伺服器還可以執行一些有限的行為分析,例如請求的數量及其頻率,以及是否存在有助於確定請求是否自動執行的瀏攬模式。

請求指紋識別是必要的第一步,但其本身是不夠的。

攻擊檢測方法2:客戶端指紋識別

請求指紋識別的挑戰是,攻擊者現在可以欺騙請求指紋,而指紋通常看起來與真實客戶端完全相同。100 如果攻擊者犯了錯誤,請求指紋識別可以識別這些錯誤,但您不能指望定期發生這些錯誤。

從根本上說,請求指紋只能說明一半的情況。 伺服器需要查看客戶端發生的情況,並生成客戶端指紋以補充請求指紋,從而獲得更多資訊。 這使爬蟲程序檢測系統能夠更完整地了解客戶端,使攻擊者更難避免檢測。

客戶端指紋識別伺服器可以通過重寫HTML來響應請求的頁面來注入一小段JavaScript (JS),以便在客戶端執行。 或者,伺服器可以注入指向客戶端在載入登入頁時可以下載的遠程JS的腳本標記。 JS可以在客戶端執行檢查並收集設備資訊(如是否啟用JS或Cookie),並檢查操作系統,畫布,渲染器,瀏攬器,JS引擎等,以生成完整的客戶端指紋。

普通瀏攬器應支援cookie並啟用JS (以便正確登入並使用流媒體服務);未啟用它可能會引起懷疑。 客戶指紋識別可以識別廣告設備中不常見的其他可疑元素,這些元素可能表示潛在的虛假客戶端,例如帶Blink (瀏攬器引擎)的Safari瀏攬器UA或帶SpiderMonkey JS引擎的Chrome。

這些詳細資訊將被收集並作為API調用發送到遠程伺服器以進行進一步分析,或者加密並設定為cookie或標頭,以便在後續客戶端請求中發送到伺服器進行分析。 上述收集和生成客戶指紋的技術也可用於非瀏攬器流應用程式,例如通過不同SDK的iPhone/Android應用程式,Roku或Samsung TV。

圖2 一小部分特徵樣本,可協同工作以創建獨特的客戶端指紋。

雖然要求和用戶端指紋的結合對於早期的機器人程式來說是有效的,但更進階的機器人程式則是以與人類相同的用戶端為基礎,包括Chrome,Firefox和Safari。 他們還可能使用無外設瀏攬器,如無外設Chrome。 與可能缺乏功能(如JavaScript和Cookie支援)的基本爬蟲程序不同,更高級的爬蟲程序可以利用適當的瀏攬器和JS引擎執行與其設備類型一致的正確格式的TCP和TLS握手和HTTP請求。

通過通過數千個IP地址分發請求,使任何基於速率的檢測方法無效,可以執行低攻擊和慢攻擊。 為了使問題進一步復雜化,來自真實用戶設備的真實瀏攬器可能被劫持並用於撞庫活動,僅使用這些方法幾乎肯定會錯過此類攻擊。

攻擊檢測方法3:行為指紋識別

要真正擊敗撞庫,您必須添加智能行為指紋。 當用戶與流媒體服務交互時,他們不僅僅是請求內容,而是移動,點擊,點擊和瀏攬應用程式。 行為指紋識別通過在客戶端(通常通過JS)收集用戶遙測數據來研究這些操作。 這些可能包括滑鼠移動模式,按鍵,操作計時,甚至是敲擊設備傳感器(如電話加速計或陀螺儀)來測量用戶的移動模式和定位。

根據收集到的數據,生成行為指紋並發送用於實時或脫機分析。 使用者是否呈現隨機或非有機模式? 滑鼠是以線性模式移動,還是滾動速度快於人類所能達到的速度? 手機在整個瀏攬過程中是否始終保持固定角度? 每秒的登入請求數是否可以達到?

這是數據科學家和研究人員的戰場,他們必須運用機器學習技術來持續分析數據,並獲取有關請求是否自動化的情報。 部分原因是所收集的請求,設備和行為屬性組合呈指數級增長。 由於爬蟲程序已通過行為劫持提高了模仿人類行為的能力,因此依賴基本行為特徵(如滑鼠移動)已不再足夠,而且可能會增加誤報率並影響真實用戶的體驗。

這些類型的爬蟲程序是緩解撞庫最困難的挑戰。 阻止最復雜的爬蟲程序需要更多數據(如客戶在整個會話期間的瀏攬行為)來分析客戶的意圖,從而確定請求是否惡意。 例如,用戶直接訪問流媒體服務的登錄頁面而不通過主頁,這是否正常? 使用者登入串流服務後立即瀏覽至帳戶頁面而不執行任何其他動作是否正常? 這些數據點可以準確地識別爬蟲程序的意圖。 用戶在整個會話和其他行為數據中與流服務的交互可以生成更豐富,更完整的指紋,並降低誤報的幾率。

管理爬蟲程序

成功檢測到爬蟲程序嘗試發出登入請求後,正確的響應是什麼? 它是否要阻止爬蟲程序並希望它消失? 在大多數情況下,這是錯誤的操作。 假設您以4xx錯誤回應,例如401未授權回應。 攻擊者知道當前不充分的技術,並更新其自動化工具,通過嘗試和錯誤克服您的檢測機制。 在這種情況下,您無意中幫助了攻擊者,提供了反饋循環來提醒他們改進方法。

雖然復雜的爬蟲程序操作員最終會發現他們正在被緩解並改進其方法是不可避免的,但有一些好的做法可以避免或延遲這些工作。 偵測到時,伺服器不會封鎖機器人程式要求,而是在登入嘗試成功時傳送標準預期的回應碼,例如200 OK,並加上不會暴露機密資料的靜態樣板回應。

爬蟲程序操作員更有可能假定成功的響應表明他們當前的方法成功。 而且,被盜的憑據很有用,即使情況並非如此,也會使攻擊者深藏不露。 另一個選項是不提供任何回應,讓機器人程式要求暫停,直到逾時為止。 如果您使用具有大量伺服器容量的大型全球分布式平臺(如內容交付網路(CDN)),則可以執行此操作。 這些錯誤資訊的方法可能比簡單地阻止爬蟲程序請求更有效。

另一種管理爬蟲程序的策略是,在誤報情況下對用戶體驗的影響較小,這需要可疑爬蟲程序解決CAPTCHA。 只有在完成CAPTCHA後,才能成功登入。 這樣,即使真實用戶被錯誤識別為爬蟲程序,他們也能繼續工作。 它還提供有價值的反饋,以調整檢測方法,減少誤報。

確保串流安全

防止撞庫攻擊是任何OTT流服務的重要優先事項。 隨着這些服務的普及,安全風險也隨之增加。 應用程式安全性和爬蟲程序管理的多層方法可以準確識別甚至是最復雜的爬蟲程序,用於發動撞庫攻擊,防止此類攻擊影響您的客戶體驗或聲譽。

進一步了解我們的雲安全功能如何保護您的線上存在免受撞庫攻擊,DDoS攻擊等影響。