基於驗證碼URL負載請求形成DDos

PetterLiu發表於2024-11-17

image

背景

隨著技術的發展,人們對於系統安全性和使用者體驗的要求越來越高。傳統的圖形驗證碼雖然在一定程度上能夠防止惡意攻擊,但使用者體驗相對較差,且存在被破解的風險。因此,大多數網站系統逐漸採用行為驗證碼來代替圖片驗證碼。行為驗證碼是指透過使用者行為來驗證使用者身份的驗證碼,如滑動拼圖、識別圖片中的特定物品等。它的重要性在於可以有效地防止機器人和惡意程式對網站或應用程式進行惡意攻擊、刷流量、撞庫等行為,從而保障了使用者和網站的安全。相較於傳統的圖形驗證碼等方式,行為驗證碼更難被破解,同時也更加方便使用者操作。另外,行為驗證碼還可以提高使用者的使用體驗,減少使用者的操作負擔,提高網站或應用程式的可用性和使用者留存率。


登入流程

登入功能需要行為驗證碼captcha人工識別圖形正確時才可正常登入,流程通常包括以下幾個步驟:

  1. 使用者觸發登入操作:使用者在登入介面輸入使用者名稱或手機號等身份資訊後,觸發登入操作。

  2. 系統生成行為驗證碼:系統根據預設的規則或演算法,生成一個行為驗證碼。這個驗證碼可能是滑動拼圖、點選特定區域等形式。

  3. 顯示行為驗證碼:系統將生成的行為驗證碼顯示在登入介面上,供使用者進行操作。

  4. 使用者完成行為驗證:使用者根據系統提示,完成行為驗證碼的驗證操作。例如,滑動拼圖到正確的位置,或點選指定的區域等。

  5. 系統驗證使用者行為:使用者完成行為驗證後,系統將使用者的操作與預設的規則或演算法進行比對,判斷使用者的行為是否符合要求。

  6. 登入驗證結果

    • 如果使用者的行為符合要求,系統認為使用者是真實的,將允許使用者登入,並生成相應的登入令牌(token)或其他身份資訊,供使用者在後續的業務請求中使用。
    • 如果使用者的行為不符合要求,系統可能認為使用者是惡意的,將拒絕使用者的登入請求,並可能顯示相應的錯誤資訊或提示使用者重新進行驗證。
  7. 後續業務請求:使用者登入成功後,每次進行業務請求時,都需要攜帶登入令牌(token)或其他身份資訊,以便系統進行身份驗證和許可權控制。

模擬攻擊

clipboard

1.實踐某網站負載請求驗證碼captcha URL

我們使用hey輕量級壓測工具,小試牛刀下, 併發1000,請求1000 到某個網站驗證碼服務端URL

clipboard

響應時間平均20秒

2.此時已不可登入,需要等待較長時間才能響應,導致系統登入不可用,形成DDOS攻擊

1)有幾種可能性,驗證碼功能與主工程在一起部署,故產生連帶效應,影響效能

2)驗證碼服務單獨部署,但高負載請求流量影響了入口閘道器的頻寬。



解決方案

針對這種利用驗證碼模組的缺失圖片生成URL形成的DDoS攻擊,解決方案可以從驗證碼請求的最佳化、流量控制、動態防護等多個方面進行。以下是應對策略:

1. 限制驗證碼請求頻率與頻繁請求懲罰機制

  • 速率限制:為驗證碼生成缺失圖片的請求設定每IP的請求頻率限制,例如每分鐘最多3-5次請求。透過Web應用防火牆(WAF)或反向代理實現這一限制。
  • 漸進式懲罰機制:對於頻繁請求驗證碼的IP實施逐步延長的冷卻時間,即每次請求失敗後的等待時間遞增,逐步減緩惡意請求的攻擊頻率。

2. 增強驗證碼生成和驗證的隨機性

  • 動態圖片URL:為每次生成的缺失圖形使用獨立的URL,且加入隨機標識或動態Token,使同一個驗證碼請求無法複用。
  • 短期有效期:生成的URL在短時間後失效(例如30秒內),防止攻擊者反覆請求相同的URL資源。
  • 缺失圖形位置隨機化:每次生成驗證碼時,缺失的圖形位置隨機變化,增加惡意指令碼請求成功率的難度。

3. 使用前端驗證碼驗證最佳化與快取機制

  • 前端快取機制:前端客戶端在短時間內(例如5分鐘)快取生成的驗證碼,減少多次重新整理造成的重複請求壓力。
  • 預生成驗證碼:在後臺非同步預生成一批缺失圖片並快取到CDN,以減輕主伺服器在高併發時的生成壓力。

4. 增強行為分析和識別惡意請求

  • 行為分析模型:利用機器學習模型或行為分析演算法,檢測是否存在批次自動化請求特徵,識別並阻止異常流量。
  • 滑鼠軌跡深度檢測:驗證滑鼠軌跡在驗證碼互動中的真實性,如判斷滑鼠軌跡的流暢性、速度等,進一步判斷是否為自動化指令碼生成的偽軌跡。

5. 使用IP灰名單與驗證碼複雜度調整

  • 灰名單機制:對可疑的IP先進入灰名單狀態,限制其請求頻率或增加額外的複雜驗證碼步驟。對於確認的惡意IP直接封禁。
  • 驗證碼複雜度動態調整:在系統檢測到異常流量時,自動增加驗證碼的難度,如增加缺失圖塊數量或混淆圖形,減少指令碼自動破解的成功率。

6. 引入外部DDoS防護和流量清洗

  • DDoS防護服務:結合CDN和DDoS防護服務(如Cloudflare、Akamai或AWS Shield)對驗證碼URL的訪問請求進行實時監測和過濾,確保惡意請求不會直接到達伺服器。
  • 特定流量清洗:在檢測到大量異常流量時,自動啟動流量清洗,將請求引流到DDoS清洗中心處理。

7. 針對驗證碼模組的動態監控和日誌分析

  • 實時監控:對驗證碼請求量和成功率進行實時監控,一旦發現異常高的請求頻率或失敗率立刻報警。
  • 日誌分析:定期對驗證碼請求日誌進行分析,排查可疑的IP、請求模式,以便提前識別潛在威脅。

8. 降級策略和備選驗證機制

  • 系統降級:在遭遇大規模攻擊時,可以臨時關閉行為驗證碼或切換到其他驗證方式(如簡訊驗證或雙因子驗證)以保證使用者能夠正常登入。
  • 備選驗證:為部分關鍵使用者提供備用驗證通道,確保正常使用者在攻擊期間仍可以訪問。

9. 驗證碼模組隔離部署

  • 模組化隔離:將驗證碼模組與主要應用邏輯隔離,單獨分配伺服器資源,避免驗證碼模組的高負載影響主應用的登入功能。

10. 定期監控和測試

  • 定期檢查驗證碼模組的請求量和訪問模式,及時識別異常流量。
  • 使用模擬攻擊進行壓力測試,確保驗證碼模組能夠有效防禦惡意請求。

實施效果預期

透過這些方法,能夠有效緩解驗證碼模組URL的DDoS攻擊風險,提高系統在高併發和惡意請求下的可用性。

更多參考
Denial of Service Cheat Sheet

https://cheatsheetseries.owasp.org/cheatsheets/Denial_of_Service_Cheat_Sheet.html


今天先到這兒,希望對雲原生,技術領導力, 企業管理,系統架構設計與評估,團隊管理, 專案管理, 產品管理,資訊保安,團隊建設 有參考作用 , 您可能感興趣的文章:
構建創業公司突擊小團隊
國際化環境下系統架構演化
微服務架構設計
影片直播平臺的系統架構演化
微服務與Docker介紹
Docker與CI持續整合/CD
網際網路電商購物車架構演變案例
網際網路業務場景下訊息佇列架構
網際網路高效研發團隊管理演進之一
訊息系統架構設計演進
網際網路電商搜尋架構演化之一
企業資訊化與軟體工程的迷思
企業專案化管理介紹
軟體專案成功之要素
人際溝通風格介紹一
精益IT組織與分享式領導
學習型組織與企業
企業創新文化與等級觀念
組織目標與個人目標
初創公司人才招聘與管理
人才公司環境與企業文化
企業文化、團隊文化與知識共享
高效能的團隊建設
專案管理溝通計劃
構建高效的研發與自動化運維
某大型電商雲平臺實踐
網際網路資料庫架構設計思路
IT基礎架構規劃方案一(網路系統規劃)
餐飲行業解決方案之客戶分析流程
餐飲行業解決方案之採購戰略制定與實施流程
餐飲行業解決方案之業務設計流程
供應鏈需求調研CheckList
企業應用之效能實時度量系統演變

如有想了解更多軟體設計與架構, 系統IT,企業資訊化, 團隊管理 資訊,請關注我的微信訂閱號:

image_thumb2_thumb_thumb_thumb_thumb[1]

作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。 該文章也同時釋出在我的獨立部落格中-Petter Liu Blog。

相關文章