應對機器洪流-高級防禦

前言

在傳統安全威脅中,安全防護都以server端為重心,因為server端對數據和服務安全直接負責,一旦server端出現安全風險,對web應用將是致命的。

隨著web應用場景的豐富發展,一些前端的安全風險正在逐漸蔓延開來。比如機器識別領域、反欺詐領域等等,在前面的幾篇機器系列的文章我們分析過,由於這類風險並非直接瞄準伺服器端安全,而是大都通過冒充偽造,混跡於正常用戶之中:

  • 製造虛假/惡意請求,給企業帶來經濟損失,比如最近非常火的羊毛黨。
  • 通過高頻率請求,影響正常用戶使用,比如大家痛恨的黃牛黨。
  • 未經允許獲取企業多年經營數據,比如遍布互聯網的各式各類的爬蟲黨。

對於這些冒充正常請求的風險,光有服務端策略很難做出較好的應對(參看《應對機器洪流-初級防禦》)。戰火蔓延到前端領域。

前端戰場

在上一篇文章(《Google是如何處理機器風險的?》)中,我們分析了google的新型驗證碼防禦手段,包括現在很流行的滑動驗證,以及一些無形驗證碼的解決方案中,在前端攻防的戰場上,都有著大同小異的技術體系。

類似於現實生活中抓獲犯罪分子的方式,前端戰場中,我們也有類似的手段,一步一步排查出惡意用戶。

  • 身份證-設備指紋

設備指紋是指通過每個用戶在瀏覽頁面時,根據當前的各種環境計算出來的唯一標示碼。類似於人的指紋,設備指紋可以標示出設備,對於web應用來說,server端可以根據設備指紋判斷出另一端的設備是否曾經記錄過,是否可信等等。

不同於ip等傳統標記手段,設備指紋會從多個維度來共同分析你當前的指紋,比如你的操作系統、瀏覽器版本、屏幕解析度、你的插件列表、你使用的字體文件等等,分析的數據越多,你的唯一性越強,有了它,前端的歷史行為可以有跡可循,做到對惡意用戶的精準定位。

設備指紋就像是我們的身份證一樣,有了它,不管你是出行、購物、住宿都有可能被記錄下來,在互聯網的世界裡面也一樣,你的歷史瀏覽軌跡都能夠被聯繫起來。具體的設備指紋採集演算法我們會在後續的文章中單獨介紹。

  • 攝像頭-行為採集

光有設備指紋還不夠,警察通過身份證知道你是誰,但是判定你是否犯罪還需要足夠的『證據』。你的行為才是判定你是否為犯罪的證據。就像是現實生活中的遍布各地攝像頭一樣,我們可以在前端部署行為採集腳本,通過採集你瀏覽網頁時的用戶行為,作為『監控記錄』,分析監控記錄,排查『嫌疑人』。

這些行為根據不同的業務場景會有區別,包括但不限於:

  • 頁面瀏覽器時間
  • 頁面上觸發的滑鼠、鍵盤、觸摸等事件次數、位置、時間
  • 頁面瀏覽行徑
  • 歷史行為

等等

通過分析用戶的歷史行為軌跡和進行規模性的訓練,我們可以把惡意用戶和正常用戶區分出來,結合設備指紋,進行處置。

  • 防偽標示-代碼保護

無論是我們的設備指紋還是用戶行為採集,雖然採集項並沒有秘密可言,但是我們的傳輸肯定會通過特定的演算法進行加密保護,如果js代碼不設防禦,攻擊者便可以通過偽造正常用戶的數據來自己『生產』設備指紋和用戶行為,就像是現實生活中的『偽造身份證』和『偽造視頻』一樣,這樣的數據收集過來,會對我們的判決形成很大的干擾,我們需要保證採集來的設備指紋和用戶行為都儘可能的真實。所以我們需要對js進行混淆。

有web開發經驗的同學都知道,前端代碼都是明文存儲的,在瀏覽器端可以輕易獲取,一般的前端項目會進行基本的代碼壓縮,為了減少文件體積,提升訪問速度,但是在我們的場景中還不夠,對於有經驗的前端來說,即使是壓縮過的代碼也能夠很快的破解。

js混淆並不是一件容易的工作,因為其先天決定的:

  • 明文存儲&傳輸
  • 腳本語言,動態執行
  • 瀏覽器本身提供了豐富的調試開發機制

然而,js也有一些先天的優勢,給了我們保護的機會:

  • 由於兼容性和語言本身的設計缺陷,不同於傳統開發語言,存在大量的hack代碼,對於大部分程序員來說並不友好。有人戲稱其是瀏覽器端的『彙編』。
  • 由於其是動態語言,我們可以利用web的便利性,不斷地更新和迭代混淆演算法。
  • 精通二進位逆向軟體的黑客很多,然而精通js能夠逆向複雜js的黑客很罕見。

於是,我們就有機會通過代碼混淆來保護我們的代碼。這部分,後續我們會進一步探討。

  • 總結

如圖所示,一個簡單的前端防禦體系由 代碼保護(設備指紋+用戶行為)組成,雖然看起來原理很簡單,但是在實現過程中存在著大量的挑戰,包括:

  • 對於用著大眾瀏覽器和大眾操作系統的用戶,設備指紋如何精準的區分用戶。
  • 如何確保在各種瀏覽器中用戶行為都能完整的被採集收回。
  • 如何進行行為分析,保證不誤傷用戶。
  • 如何確保前端代碼沒有被破解。
  • 如何應對各種不同的業務場景。

參考

Google是如何處理機器風險的?

應對機器洪流-初級防禦


推薦閱讀:

TAG:网络安全 | 反欺诈 | 信息安全 |