這是一起典型的 Malvertising(惡意廣告)攻擊案例。攻擊者利用 Google Ads 的廣告機制,將使用者誘導至偽裝成合法軟體(例如 Node.js)的釣魚網站,最終在受害者的電腦中植入名為 CastleStealer 的資訊竊取程式。
對於初入行的工程師來說,這類攻擊最值得關注的不是它如何欺騙使用者,而是它在進入系統後,如何透過多層技術手段來規避防毒軟體與分析人員的偵測。
攻擊路徑與誘導手段
攻擊者採取了精準的關鍵字投放,例如針對搜尋 LTS version of node.js 的開發者。當使用者點擊廣告後,會被導向一個偽造的下載頁面。
為了繞過傳統的網域信譽檢查(Domain Reputation Filter),攻擊者沒有將惡意檔案放在自己的伺服器上,而是利用 Storj 這個去中心化的雲端儲存平台。由於 Storj 是合法服務,許多安全設備不會直接封鎖其流量,這讓惡意腳本能順利下載到受害者端。
使用者執行下載的批次檔後,螢幕會顯示一個假的安裝畫面來掩蓋真相,後台則透過 PowerShell 指令下載真正的載入器 OXLOADER,並利用 -Verb RunAs 觸發 Windows 的使用者帳戶控制(UAC)彈窗,誘導使用者授予管理員權限。
OXLOADER 的核心規避技術
OXLOADER 並非直接執行最終的病毒,而是一個 Loader(載入器),其唯一目的就是確保後續的 payload 能在不被發現的情況下執行。它採取了以下幾種進階的混淆技術:
首先是控制流扁平化(Control-Flow Flattening, CFF)。這是一種程式碼混淆技術,將原本具有邏輯結構的 if-else 或 loop 結構全部打平,變成一個巨大的 switch 案例。這讓分析人員在閱讀反組譯碼時,無法一眼看出程式的邏輯走向,大大增加了逆向工程的難度。
其次是混合布林算術(Mixed Boolean-Arithmetic, MBA)。這是一種將簡單的數學運算(例如加法)轉換成極其複雜且冗長的布林邏輯表達式的方法。對電腦來說結果一樣,但對靜態分析工具或人類工程師來說,這些運算看起來就像亂碼,難以推斷其真實意圖。
此外,它還利用了 Windows 執行檔的 .reloc 區段(重新定位表)來存放 shellcode。這是一種隱蔽的存放方式,能有效避開許多僅掃描程式碼段(.text section)的靜態掃描引擎。
最終執行階段:DLL Side-loading 與 CastleStealer
在通過上述混淆層後,OXLOADER 會利用 DLL Side-loading(DLL 側載)技術。這是一種利用 Windows 載入 DLL 的優先順序漏洞,讓合法程式在啟動時錯誤地載入攻擊者偽造的惡意 DLL 檔案。
一旦惡意 DLL 成功執行,它會解密並啟動最終目標:CastleStealer。這是一個基於 .NET 框架的資訊竊取程式,專門用來盜取瀏覽器儲存的密碼、Cookie 以及其他敏感個資。
工程實務觀點與啟示
這次攻擊顯示出攻擊者在工程上的深思熟慮。他們不追求一次性的簡單攻擊,而是投資大量時間在混淆層與反分析機制(Anti-VM / Anti-Sandbox)上,以確保在被安全廠商標記為惡意之前,能有更長的生存週期。
對於工程師而言,這提醒我們兩件事:第一,不要完全信任合法雲端平台的流量,因為它們常被用作跳板;第二,對於要求管理員權限(UAC)的第三方安裝程式需保持高度警覺,尤其是來源於搜尋廣告的軟體。
來源:thehackernews.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。