這是一起針對歐洲與亞洲飯店業的精密釣魚攻擊。攻擊者並非採取隨機的暴力破解,而是深入研究飯店前台的運作邏輯,利用「客戶投訴」或「衛生檢查」等讓飯店員工感到焦慮的壓力點作為誘餌。對於工程師來說,這次攻擊最值得關注的不是釣魚郵件本身,而是其繞過安全檢查的路徑以及利用合法開發環境來執行惡意圖不明的惡意程式。
信任鏈的洗白與繞過
傳統的釣魚郵件常被 SPF、DKIM 或 DMARC 等郵件驗證機制攔截,這些機制是用來確認發信者身分是否合法。然而,這次攻擊採取了一種稱為 Authentication Laundering(驗證洗白)的技巧。攻擊者利用 Calendly(一個知名的預約管理工具)的通知系統發信,由於郵件確實是從 Calendly 的合法伺服器發出,因此能輕易通過所有身分驗證。
接著,攻擊者建立了一條複雜的跳轉鏈路:從 Calendly 連結跳轉到 Google 的 URL 重新導向服務,最後才抵達一個由 Cloudflare 保護的惡意域名。在最終下載頁面,攻擊者還加入了 Turnstile 驗證碼挑戰。這看似是為了防止機器人,但實際上是為了阻擋安全研究人員的自動化分析工具,確保只有真正的受害者能下載到惡意檔案。
偽裝成圖片的 LNK 啟動器
受害者下載到的是一個 ZIP 壓縮檔,裡面包含一個名為 IMG-xxx.png.lnk 的檔案。這裡的 .lnk 是 Windows 的捷徑檔案,但攻擊者將其命名為 .png,讓非技術人員誤以為是圖片。
一旦使用者點擊該捷徑,系統會立即觸發 PowerShell 腳本。這個腳本使用了 BigInt 算術運算來解碼隱藏的下載網址,目的是避開靜態掃描工具對 URL 字串的偵測。隨後,腳本會從官方網站 nodejs.org 下載正版的 Node.js 執行環境(v24.13.0)並安裝在使用者目錄下。
這裡是一個關鍵的技術細節:攻擊者不需要系統管理員權限來安裝 Node.js,因為他們將其部署在 User Space(使用者空間)。這意味著即使公司電腦禁用了全域安裝,攻擊者依然能建立一個獨立的 JavaScript 執行環境,用來執行後續的惡意植入程式 TonRAT。
利用區塊鏈與非標準埠的 C2 通訊
植入程式 TonRAT 的 C2(Command and Control,指令控制伺服器)通訊方式非常特殊。它不使用固定的 IP 或域名,而是透過 TON 區塊鏈的 API 來動態解析控制伺服器的地址。
這種做法讓傳統的靜態黑名單(Blocklist)幾乎失效,因為 C2 的地址可以隨時變動且記錄在去中心化的區塊鏈上。一旦建立連線,它會開啟加密的 WebSocket 通道,並使用非標準的網路埠(如 8443、5555 等)進行通訊,試圖避開僅監控 80 或 443 埠的基礎防火牆監控。
實務上的影響與清理難點
這類攻擊最危險的地方在於其持久化(Persistence)機制。攻擊者在系統中建立了兩條生存路徑:一是在 ProgramData 的 RunOnce 登錄檔,二是在 AppData 內的 Node.js 啟動項。
如果系統管理員僅刪除 Node.js 執行檔而沒清理登錄檔,或者僅刪除啟動項而沒移除檔案,惡意程式可能會在下次重啟時透過另一條路徑重新激活。因此,完整的修復必須同時清除登錄檔、執行環境以及位於 AppData\Local\Nodejs 下的所有 JavaScript 檔案。
總結來說,這次攻擊展示了現代威脅趨勢:利用合法 SaaS 工具洗白身分、利用官方開發工具作為載體、利用區塊鏈隱藏控制端。對於維運人員而言,單純依賴郵件過濾或已知惡意域名清單已不足夠,更應關注異常的 PowerShell 行為以及非標準埠的對外連線。
來源:thehackernews.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。