摘要

報告針對 Notepad++ 基礎架構遭入侵事件提供全面的技術分析,詳細說明攻擊媒介、惡意程式特徵,以及 Threat actor 使用的規避技術。此次入侵利用了 Notepad++ 更新程式 WinGUp 的漏洞,導致 Chrysalis 後門程式和 Cobalt Strike 等複雜惡意程式被部署。報告中檢視了關鍵的技術層面,包括 DLL sideloading、多階段感染鏈,以及命令與控制(C2)基礎架構。報告也納入了關於 DLL sideloading 的相關研究見解,以更深入理解其底層機制,並提出緩解策略。

還原 Notepad++ 入侵現場:WinGUp 更新程式如何遭挾持, DLL 側載如何餵養 Chrysalis | 資訊安全新聞

1. 簡介

供應鏈攻擊在網路安全領域中構成重大的攻擊向量(Threat vector),此類攻擊利用了軟體供應商與其使用者之間的信任關係。Notepad++(一個廣泛使用的開源程式碼編輯器)基礎架構遭入侵事件,即是說明此類攻擊複雜性與影響力的關鍵案例研究。此事件利用了舊版 Notepad++ 更新程式 WinGUp 中驗證控管不足的弱點,使得 Threat actor 能將更新流量重新導向至惡意伺服器 [1] 。本報告深入探討此入侵事件的技術細節,分析其感染鏈、惡意程式功能,以及對軟體供應鏈安全的廣泛影響。

2. Notepad++ 入侵事件技術分析

2.1. 初始感染媒介:WinGUp 漏洞攻擊

此攻擊源於利用了舊版 Notepad++ 更新程式 WinGUp 中的一個漏洞。此缺陷讓 Threat actor 能將更新請求重新導向至攻擊者控制的伺服器。因此,嘗試更新 Notepad++ 軟體的使用者,會在不知情的情況下下載到一個惡意的 NSIS 安裝程式,該檔案通常命名為 update.exe [1]

2.2. 多階段感染鏈

該惡意 NSIS 安裝程式啟動了複雜的多階段感染鏈。觀察到兩種主要的變種:

2.2.1. 利用 Chrysalis 後門程式進行 DLL sideloading

其中一條感染鏈使用了 DLL sideloading 技術。此手法涉及濫用合法的 Bitdefender 元件 BluetoothService.exe ,來載入一個惡意程式庫 log.dll 。此 log.dll 負責解密並執行一個名為 Chrysalis 的客製化後門程式 [1] 。DLL sideloading 是一種技術,透過將惡意 DLL 置於應用程式在其合法路徑之前會搜尋相依性的目錄中,誘使合法應用程式載入該惡意 DLL,而非合法的 DLL [2]

Chrysalis 後門程式採用了進階的規避技術,包括使用 Microsoft Warbird 程式碼保護框架以及客製化 API 雜湊,以降低防毒軟體的偵測率。該後門程式在受感染的系統上建立了持久的遠端控制 [1]

2.2.2. 注入 Lua 指令稿並植入 Cobalt Strike Beacon

另一條感染鏈涉及 NSIS 安裝程式執行命令來運行一個惡意的 Lua 指令稿。此指令稿其目的為載入 Cobalt Strike Beacon Malicious payload,這是一個常被 Threat actor 濫用於入侵後活動的強大滲透測試工具 [1] 。在某些觀察到的實例中,一個 Lua 指令稿注入變種部署了惡意 Lua 指令稿來注入 shellcode,利用 EnumWindowStationsW API 來傳遞 Cobalt Strike beacon 惡意程式 [1]

2.3. 命令與控制(C2)基礎架構

Unit 42 觀察到與數個 C2 IP 位址的通訊。例如,初始的 C2 beacon 流量被導向 45.76.155.202 ,之後轉移到 45.77.31.210 。下載惡意 update.exe 的嘗試來自這些以及其他的惡意伺服器,例如 45.32.144.255 [1]

3. DLL sideloading 機制深度探討

在 Notepad++ 入侵事件中觀察到的 DLL sideloading 技術,是惡意程式用於持久化和執行的常見方法。一份關於 PureHVNC 惡意程式的相關分析,說明了一個利用 DLL sideloading 的類似多階段感染鏈 [2]

在 PureHVNC 的案例中,初始階段利用了 Windows 搜尋動態連結程式庫(DLL)的可預測順序。一個合法的 Windows 可執行檔,例如 javaw.exe (被重新命名為一個具欺騙性的名稱)被使用。一個惡意版本的 JLI.dll 被放置在與重新命名的可執行檔相同的目錄中,導致作業系統優先載入該惡意 DLL。這個惡意的 JLI.dll 接著使用 LoadLibraryW() API 呼叫載入下一階段的Malicious payload MSTH7EN.dll [2]

惡意 JLI.dll 進入點的虛擬碼如下:

  1. // Malicious JLI.dll Entry Point Pseudocode
  2. function DllMain(hinstDLL, fdwReason, lpvReserved) {
  3. if (fdwReason == DLL_PROCESS_ATTACH) {
  4. // Load the second-stage payload
  5. hModule = LoadLibraryW("MSTH7EN.dll"); // [2]
  6. if (hModule != NULL) {
  7. // Proceed to execution of the loaded module
  8. // ...
  9. }
  10. }
  11. return TRUE;
  12. }

此機制凸顯了攻擊者如何利用合法程序來執行惡意程式碼,使得偵測極具挑戰性。此類攻擊的後續階段通常涉及進一步的解密、解壓縮和 shellcode 注入,最終導致最終Malicious payload(如遠端存取木馬(RAT))的執行 [2]

3.1. 攻擊鏈視覺化

下圖說明了概括的多階段感染鏈,從 Notepad++ 入侵事件和 PureHVNC 分析中繪製出相似之處:

攻擊階段 WinGUp 漏洞利用 Notepad++ 入侵 PureHVNC 惡意程式 DLL sideloading 變種
1️⃣ 初始入侵
(Initial Access)
WinGUp 更新程式漏洞:
攻擊者利用舊版 Notepad++ 更新元件 WinGUp 的弱點,將更新請求重新導向至攻擊者控制的伺服器。
社交工程 / 欺騙式執行檔:
使用者被誘騙執行重新命名的合法 Windows 執行檔,例如 javaw.exe (改名為看起來無害的名稱)。
2️⃣ 觸發檔案
(Trigger File)
惡意 NSIS 安裝程式
下載回來的 update.exe (惡意 NSIS 安裝程式),偽裝成 Notepad++ 更新檔。
合法程式重新命名
合法的 javaw.exe (Java 可執行檔) 被重新命名,放置於惡意 DLL 同目錄下。
3️⃣
DLL sideloading
(核心機制)
濫用 Bitdefender 元件
合法 Bitdefender 檔案 BluetoothService.exe 被用來載入惡意的 log.dll (放在同目錄下)。
濫用 Java 元件
重新命名的 javaw.exe 執行時,會在同目錄下尋找 JLI.dll ,攻擊者放置惡意版本的 JLI.dll 達成 sideloading。
4️⃣ 第二階段載入
(Stage 2 Payload)
Chrysalis 後門
惡意 log.dll 負責解密並執行 Chrysalis backdoor (使用 Warbird 保護、自訂 API 雜湊)。
MSTH7EN.dll
惡意 JLI.dll 透過 LoadLibraryW API 呼叫載入下一階段 MSTH7EN.dll
5️⃣ 規避技術
(Evasion)
• Microsoft Warbird 程式碼保護
• 自訂 API hashing
• 降低防毒軟體偵測
• 動態解析必要程式庫與 API
• 檢查工作目錄 (是否在預期路徑)
• 對系統程序名稱進行 hash 比對以進行反分析
6️⃣ C2 通訊
(C2 Infrastructure)
Cobalt Strike 或自訂後門
連線至惡意 IP: 45.76.155.202 45.77.31.210 等。
PureHVNC RAT
建立遠端控制通道,使用 socket 連線至 C2 伺服器,竊取資料或接收指令。
7️⃣ 最終 Payload
(Final Payload)
Cobalt Strike Beacon Chrysalis 後門
提供完整的入侵後活動能力,包括横向移動、權限維持。
PureHVNC RAT
專門用於竊取憑證、遠端桌面控制、檔案竊取。

4. 規避技術

Chrysalis 後門程式和 PureHVNC 惡意程式都展現了複雜的規避技術。Chrysalis 利用了 Microsoft Warbird 程式碼保護框架和客製化 API 雜湊來避免偵測 [1] 。類似地,PureHVNC 採用了必要程式庫和 API 的動態解析、對工作目錄的關鍵檢查,以及透過對系統程序名稱進行雜湊來進行反分析檢查 [2] 。這些技術對於維持持久化及避開安全解決方案至關重要。

5. 緩解策略

為了緩解此類供應鏈攻擊,建議採取以下幾項策略:

  • 軟體更新: 確保所有軟體,尤其是像 Notepad++ 這樣的關鍵工具,都更新到包含安全性增強功能的最新版本。對於 Notepad++,8.9.1 及更高版本已解決被利用的漏洞 [1]
  • 手動安裝程式驗證: 手動驗證下載的安裝程式的完整性和真實性。Notepad++ 建議手動執行安裝程式來進行更新 [1]
  • XML 簽章與憑證驗證: 對更新伺服器強制執行 XML 簽章和憑證驗證。WinGUp 更新程式在 v8.8.9 及後續版本中增強了此驗證機制 [1]
  • 端點偵測與回應(EDR): 利用像 Cortex XDR 這樣的 EDR 解決方案來偵測並防止惡意操作和配置。這些工具可以識別可疑活動,例如 DLL sideloading 和異常的程序行為 [1]
  • 威脅追捕: 實施主動式威脅追捕查詢,以識別與已知攻擊模式相關的危害指標(IOC)。例如使用 XQL(Cortex Query Language) 查詢來偵測透過 BYO(Bring Your Own) 應用程式進行的 DLL sideloading、Chrysalis mutex,以及更新程式寫入可疑檔案等情況 [1]

用於偵測透過 BYO(Bring Your Own) 應用程式進行 DLL sideloading 的 XQL 查詢範例 [1]

  1. // Name: DLL sideloading via BYO application
  2. // Description: Identifies renamed Bitdefender utility loading a log.dll file
  3. // MITRE TTP ID: T1574.001
  4. config case_sensitive = false
  5. dataset = xdr_data
  6. fields _time, agent_hostname, actor_process_signature_product, action_module_path,
  7. actor_process_image_path, actor_process_image_name, agent_os_type, event_type, event_id, agent_hostname,
  8. _time, actor_syscall_string_params
  9. filter event_type = ENUM.LOAD_IMAGE and agent_os_type = ENUM.AGENT_OS_WINDOWS
  10. filter actor_process_signature_vendor contains "Bitdefender SRL" and action_module_path contains "log.dll"
  11. filter actor_process_image_path not contains "Program Files\\Bitdefender"
  12. filter not actor_process_image_name in ("eps.rmm64.exe", "downloader.exe", "installer.exe",
  13. "epconsole.exe", "EPHost.exe", "epintegrationService.exe", "EPPowerConsole.exe", "epprotectedservice.exe",
  14. "DiscoverySrv.exe", "epsecurityservice.exe", "EPSecurityService.exe", "epupdateservice.exe",
  15. "testinitsigs.exe", "EPHost.Integrity.exe", "WatchDog.exe", "ProductAgentService.exe",
  16. "EPLowPrivilegeWorker.exe", "_Product_Configuration.exe", "eps.rmm.exe")

6. 結論

Notepad++ 基礎架構遭入侵事件凸顯了強大的供應鏈安全以及對複雜 Threat actor 保持持續警覺的極端重要性。此次攻擊以其多階段感染鏈、進階規避技術以及對 DLL sideloading 的依賴為特徵,突顯了採取全面安全措施的必要性,包括及時的軟體更新、嚴格的驗證流程,以及先進的威脅偵測能力。理解這些攻擊手法對於發展有效防禦並保護數位生態系統免受未來類似威脅至關重要。