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

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
注入程式碼,允許攻擊者攔截請求並竊取資料。
6. 結論
YaNB 攻擊突顯了基於 Node.js 的威脅的複雜性,融合了社交工程、加密及反分析技術。隨著攻擊者不斷演進其 TTPs,防禦者必須優先考慮供應鏈完整性、執行時期監控及架構彈性。未來研究應探索 Node.js 環境的沙箱化及改進加密流量中的異常偵測。
參考資料
- Trustwave SpiderLabs. (2025). Yet Another NodeJS Backdoor (YaNB): A Modern Challenge.
- Snyk. (2020). What is a backdoor? Let's build one with Node.js.
- Trustwave LinkedIn Post. (2025). Yet Another NodeJS Backdoor (YaNB).
- Microsoft Security Blog. (2025). Threat actors misuse Node.js to deliver malware.
- USENIX Security Symposium. (2021). Abusing Hidden Properties to Attack the Node.js Ecosystem.
- Adam Baldwin. (2018). In Memory Backdoor for Node.js Express Apps.
- Mandiant. (2021). Supply Chain Compromises Through Node.js Packages.
- BleepingComputer. (2018). Backdoor in Popular JavaScript Library Set to Steal Cryptocurrency.