1. 簡介

Node.js 在現代軟體開發中的普及無意間為網路攻擊開闢了新途徑。本報告檢視基於 Node.js 的後門的復甦,特別是 Trustwave SpiderLabs 於 2025 年初識別的「Yet Another NodeJS Backdoor」(YaNB)。該惡意軟體利用 JavaScript 的靈活性與 Node.js 的跨平台能力,繞過傳統安全控制,使其在不斷演變的網路威脅環境中成為強大威脅。

Node.js 後門攻擊深度剖析:YaNB 威脅與防禦策略 | 資訊安全新聞

2. 攻擊鏈分析

2.1 透過被滲透網站的初始存取

攻擊始於一個被滲透(compromised)的網站,該網站在合法頁面中注入惡意 JavaScript。該注入腳本(injected script)屬於 KongTuke 攻擊(自 2024 年起活躍),使用基於正規表示式(regex-based)的命名慣例(例如 \d[a-z]\d[a-z]\.js )以規避偵測。此腳本檢查是否存在 cookie( isCompleted ),若不存在,則開始從受害者環境中收集資料,包括作業系統、IP、瀏覽器類型及透過 Cloudflare 的 trace 端點獲取的地理位置。

2.2 假 CAPTCHA 社交工程

第二階段涉及假的 CAPTCHA 驗證(ClickFix 技術),誘騙使用者執行 PowerShell 指令。觀察到兩個變體:

  • 版本 1 :使用 UNIX timestamp 及 hardcoded IP( 138.199.161.141:8080 )來獲取 payload。
  • 版本 2 :利用 TryCloudflare URL 託管 PowerShell 腳本,這些腳本會竊取系統資料(例如 $env:COMPUTERNAME )並部署 Node.js RAT。

2.3 Node.js RAT 部署

最終 payload 是一個具有反虛擬機機制的 Node.js 腳本:

  • 若系統製造商為 QEMU 或記憶體低於 4GB,則終止執行。
  • 下載 Node.js runtime( node-v22.11.0-win-x64.zip )至 %APPDATA% 以執行。
  • 透過偽裝成假 Chrome 更新程式修改註冊表( HKCU\Software\Microsoft\Windows\CurrentVersion\Run )實現持久性。

3. YaNB 功能的技術剖析

3.1 反偵測機制

  • 環境檢查 :若主機名稱包含「DESKTOP-」或記憶體未達 Thresholds,腳本將退出,以規避沙箱分析。
  • 程序分離 :作為後台程序執行,以避免隨其父程序終止。

3.2 資料收集與外洩

RAT 執行 PowerShell 指令以收集:

  • 作業系統詳細資訊、執行中的服務、掛載的磁碟機及 ARP 快取。
  • 資料使用 4 位元組的 byteKey 進行 XOR 加密,透過 gzip 壓縮,並附加 zlibKey 校驗和。其結構為:
[gzip(XOR_encrypted_data + byteKey + encKey)] + zlibKey

這種客制化加密方式使網路流量分析變得複雜。

3.3 指令與控制 (C2) 通訊

惡意軟體透過 SOCKS5 代理連接到 C2 伺服器,使用 HTTP Request 接收指令。觀察到的行為包括:

  • 持久性安裝 (註冊表鍵值)。
  • Payload 執行 (例如,投放次級 JS RAT)。
  • 自我終止 (若回應為「ooff」)。

4. 更廣泛的威脅格局:Node.js 在惡意軟體活動中的濫用

4.1 Inline Script執行與惡意廣告

微軟觀察到使用 Node.js 透過 node.exe 直接執行惡意 JavaScript 的攻擊,繞過基於檔案的偵測。例如,加密貨幣主題的惡意廣告誘導使用者下載包含惡意 DLL 的安裝程式,隨後部署 PowerShell Script 以停用 Microsoft Defender 等安全工具。

4.2 供應鏈攻擊

2021 年的 ua-parser-js 攻擊事件顯示攻擊者如何劫持 NPM 套件。UNC3379 注入預安裝腳本以部署 Monero 挖礦程式及 DANABOT 銀行木馬,利用 Dependency chains 滲透下游應用程式。同樣,2018 年的 event-stream 事件透過拼寫錯誤攻擊(Typosquatting)針對 Copay 錢包。

4.3 記憶體內後門

Adam Baldwin 展示如何在不寫入磁碟的情況下對 Express.js 應用程式植入後門。例如,透過 arguments[0].app 注入程式碼,允許攻擊者攔截請求並竊取資料。

5. 防禦建議

  1. 監控 Node.js 程序 :標記未經授權的 node.exe 執行,並檢查命令列參數是否有可疑模式(例如 Inline JS 執行)。
  2. 增強供應鏈安全性 :使用第三方套件掃描工具 審核第三方程式碼,強制執行 NPM 帳戶的雙重認證,並驗證 GitHub-NPM 程式碼一致性。
  3. 實施執行時期保護 :使用 EDR/XDR 解決方案偵測 XOR 加密的 C2 流量及 PowerShell 混淆。
  4. 採用Clean Architecture Principles :將業務邏輯與基礎設施層分離,以限制漏洞發生時的橫向移動。

6. 結論

YaNB 攻擊突顯了基於 Node.js 的威脅的複雜性,融合了社交工程、加密及反分析技術。隨著攻擊者不斷演進其 TTPs,防禦者必須優先考慮供應鏈完整性、執行時期監控及架構彈性。未來研究應探索 Node.js 環境的沙箱化及改進加密流量中的異常偵測。

Copyright © 2025 版權所有 翊天科技有限公司