摘要

本報告針對 YiBackdoor 進行技術分析,這是一種新發現的惡意軟體家族,首次在 2025 年 6 月被觀察到。分析重點包括其與 IcedID 和 Latrodectus 的程式碼相似度、反分析技術、初始化 程序、持久機制、後門設定、命令與控制 (C2) 通訊,以及模組化外掛程式架構。目標是剖析該惡意軟體的運作方法,並強調其複雜的規避與功能擴展能力。

隱形後門:YiBackdoor 駐留機制、RC4 加密 C2 通訊 與 svchost.exe 程式碼注入分析 | 資訊安全新聞

1. 簡介

惡意軟體開發持續演進,新的家族頻繁出現,展現出進階的規避技術和模組化設計。YiBackdoor 正是這樣一個發展,由 Zscaler ThreatLabz 在 2025 年 6 月發現 [1]。該惡意軟體尤其值得注意,因為它與已確立的惡意軟體家族 IcedID 和 Latrodectus 存在顯著的程式碼重疊。儘管 IcedID 最初專注於銀行詐欺,但後來已轉變為勒索軟體操作的初始存取途徑。YiBackdoor、IcedID 和 Latrodectus 之間的確切關係仍在調查中,但推測 YiBackdoor 可能在攻擊行動中與這些家族一同部署。YiBackdoor 的核心能力包括系統資訊收集、螢幕截圖、任意指令執行以及動態外掛程式部署,使其成為 Threat actor 的多功能工具。

2. 程式碼相似度與血緣關係

對 YiBackdoor 程式庫的詳細檢查揭示了與 IcedID 和 Latrodectus 令人信服的相似之處,暗示著共同的開發血緣或直接的程式碼重用 [1]。這些重疊存在於惡意軟體關鍵和非關鍵組件中,為其潛在起源和設計演進提供了見解。主要的相似之處包括:

  • Alphabet Charset: YiBackdoor 使用與 IcedID 和 Latrodectus 相同的 Charset (特別是 aeiou abcedfikmnopsutw ) 來產生 bot 特定的隨機字串。這種共同特性指向這些惡意軟體家族之間共享的字串產生工具或方法。
  • Configuration Decryption: YiBackdoor 使用的設定解密金鑰採用 Base64 格式,長度為 64-bytes。這與 Latrodectus 用於加密其網路流量的 RC4 key 精確吻合,表明加密做法的直接繼承。
  • API hook: YiBackdoor 的一個獨特功能是將 Windows API 函式 RtlExitUserProcess 進行 hook,作為其遠端程式碼注入 程序 的一部分。此技術被認為不常見,並與 IcedID 廣泛使用此特定 Windows API 函式的情況非常相似。
  • Hashing Algorithm: 儘管 YiBackdoor 實作了一種用於計算其 bot ID 的獨特方法,但此 程序 的一個組件涉及 Fowler–Noll–Vo (FVN) hashing algorithm。此 algorithm 在 IcedID 和 Latrodectus 的程式庫中也顯著存在,進一步證實了這種聯繫。
  • Windows GUID List: 一個 Windows 全域唯一識別碼 (Globally Unique Identifiers, GUID) 陣列存在於 YiBackdoor 的程式碼中,但在執行期間未使用。關鍵是,這個精確的 GUID 陣列在 IcedID 和 Latrodectus 中都存在和使用。這表明 YiBackdoor 中的 GUID 很可能是從這兩個前身或相關惡意軟體家族繼承的程式碼殘留。
  • Decryption routine: 也許最重要的程式碼相似性在於用於設定 blob 和 plugins 的解密 routine。YiBackdoor 中的 plugin 解密 routine 與 IcedID 先前用於解密其核心 Payload 和設定 資料 的 algorithm 相同。此外,負責解密 YiBackdoor 嵌入式設定 blob 的 algorithm 與此 IcedID 解密 routine 非常相似。

3. 反分析技術

YiBackdoor 整合了一套反分析技術,旨在偵測和規避虛擬化環境和惡意軟體沙箱。這些機制對於惡意軟體的隱匿性和壽命至關重要,使其能夠繞過自動偵測系統並阻礙手動逆向工程的工作。主要的反分析方法包括:

  • 動態 API 載入: 為了避免靜態分析和基於簽章的偵測,YiBackdoor 會動態載入 Windows API 函式。它通過遍歷已載入模組列表、計算每個函式名稱的 Rotate-Right (ROR) base hash,然後將這些 hash 與一組預定義的預期值進行比較,來識別和解析特定的 Windows API 函式。此技術使資安工具在沒有完全執行的情況下更難以識別惡意軟體的意圖。
  • 透過 CPUID 指令偵測 Hypervisor: YiBackdoor 會主動探測其執行環境中是否存在 hypervisor。它使用 CPUID 指令,參數為 0x40000000 ,查詢 hypervisor 資訊。然後將從此指令獲得的結果與各種 hypervisor 的已知簽章進行比較,包括 VMWare、Xen、KVM、Virtual Box、Microsoft Hyper-V 和 Parallels。這使得惡意軟體能夠確定它是否在虛擬化機器內執行,這是惡意軟體分析的常見設置。
  • Runtime 字串解密: 敏感字串,例如 C2 伺服器 URL、API 函式名稱或設定參數,在惡意軟體的二進制檔中被加密。這些字串在 runtime 通過將加密字串推送到 stack 上,然後使用唯一的 4-byte key 執行 XOR 運算來解密。這種動態解密可防止靜態分析工具輕鬆提取關鍵資訊。
  • 執行時間測量 (RDTSC): YiBackdoor 採用的一種複雜的反虛擬化技術是測量特定程式碼區塊的執行時間,以推斷 hypervisor 的存在。此方法利用 rdtsc (Read Time-Stamp Counter) 指令,該指令提供高解析度的時間戳記。該 程序 如下:
    1. 惡意軟體首先呼叫 Windows API 函式 SwitchToThread 以讓出執行。
    2. 然後它使用 rdtsc 記錄時間戳記。
    3. 緊接著,它呼叫 CPUID 指令 (這可能在虛擬化環境中導致 VM exit)。
    4. 使用 rdtsc 記錄另一個時間戳記。
    5. 計算 CPUID 指令之前和之後的時間戳記差異。顯著的延遲表示 VM exit,這是虛擬化環境的特徵。
    6. 此序列重複多次 (在提供的程式碼範例中是 16 次) 以確保準確性並減少雜訊。最終計算的值必須超過 thresholds (例如 20) 才能繞過偵測。

    以下 C++ 程式碼片段,改編自原始分析,說明了這種 hypervisor 偵測邏輯:

    1. [[nodiscard]] bool isHyperVisor()
    2. {
    3.     uint64_t timer1 = 0;
    4.     uint64_t timer2 = 0;
    5.     int loop_counter = 16;
    6.     int cpuInfo[4] = { 0 };
    7.     while (loop_counter)
    8.     {
    9.         SwitchToThread();
    10.         uint64_t first_rdtsc_timer_value = __rdtsc();
    11.         __cpuid(cpuInfo, 1);
    12.         timer1 += __rdtsc() - first_rdtsc_timer_value;
    13.         SwitchToThread();
    14.         uint64_t second_rdtsc = __rdtsc();
    15.         __cpuid(cpuInfo, 1);
    16.         timer2 += ((third_rdtsc // Incomplete snippet from source
    17.     }
    18.     // Simplified logic for demonstration, actual comparison would be here
    19.     return (timer1 - timer2) > 20; // Example threshold
    20. }

    isHyperVisor() 函式分析: 此 C++ 程式碼片段展示了一種常見的反虛擬化技術。該函式嘗試透過測量執行 CPUID 指令所需的時間來偵測它是否在虛擬化環境中執行。 rdtsc (Read Time-Stamp Counter) 指令用於獲取高解析度時間戳記。 CPUID 指令,特別是帶有某些參數 (例如 0x40000000 用於 hypervisor 資訊),可以在虛擬化環境中引起 VM exit,與實體機器相比,這會引入可測量的延遲。透過在 CPUID 之前和之後執行 rdtsc 並比較時間差異,惡意軟體可以推斷出 hypervisor 的存在。迴圈重複此 程序 16 次,以確保準確性並減少雜訊。

4. 運作流程與架構

YiBackdoor 的運作生命週期涉及幾個不同的階段,從初始執行到持久控制和動態功能擴展。整體架構可視化如下:

graph TD A[YiBackdoor Execution] --> B{Initialization}; B --> C{Anti-Analysis}; C --> D{Code Injection}; D --> E{Persistence}; E --> F{C2 Communication}; F --> G{Plugin Execution};
圖 1: YiBackdoor 的高層次運作流程。

4.1. 初始化階段

初始執行時,YiBackdoor 執行關鍵的準備步驟:

  • Mutex 建立: 為了防止多個實例在受感染的主機上同時執行,YiBackdoor 嘗試建立一個帶有基於主機名稱的系統級 mutex。如果此 mutex 的實例已經存在,則表示另一個惡意軟體實例正在活動中,從而提示新啟動的 程序 終止其執行。此機制確保了運作穩定性並避免衝突。
  • 程式碼注入先決條件: 在啟用其核心功能之前,YiBackdoor 會驗證它是否在已注入的 程序 中運作。它通過檢查其目前的記憶體位址是否位於任何已載入的動態連結程式庫 (DLL) 的記憶體範圍內來執行此檢查。如果滿足此條件,YiBackdoor 會繼續建立一個新的 svchost.exe 程序,隨後將其 malicious payload 注入其中。

4.2. 程式碼注入機制

程式碼注入階段對於 YiBackdoor 的隱匿性和運作完整性至關重要。該 程序 經過精心設計以規避偵測:

  • 記憶體分配與複製: YiBackdoor 通過在遠端 svchost.exe 目標 程序 內分配一個新的記憶體區域來啟動注入。然後它將其 malicious payload 複製到此新分配的記憶體空間中。
  • API Patching: 一個關鍵步驟涉及修補 Windows API 函式 RtlExitUserProcess 。此函式通常在 程序 即將終止時被呼叫,會被修改為 assembly code。此 assembly code 將 YiBackdoor 的進入點推送到 stack 上,其後跟著一個 return 指令。因此,當合法的 svchost.exe 程序 呼叫 RtlExitUserProcess 時,執行流程會被重新導向到 YiBackdoor 的進入點。
  • 通過時間規避: 值得注意的是,建立 svchost.exe 目標程序時沒有任何特殊旗標 (例如,處於 suspended state) 可能通常表示 malicious activity。儘管如此,YiBackdoor 仍設法在 程序 建立及其即將終止之間的短暫窗口內有效地注入其程式碼。通過 hook RtlExitUserProcess ,惡意軟體確保其程式碼在目標程序即將退出時精確執行,此技術可能繞過旨在監控 程序 建立和終止事件的某些資安產品。

4.3. 持久機制

為了在受感染的系統上保持立足點,YiBackdoor 使用標準的 Windows 機制建立持久機制,同時結合規避策略:

  • 檔案複製與重新命名: 程式碼注入成功後,YiBackdoor 將其惡意 DLL 檔案 複製到一個新建立的目錄中。此目錄和被複製的 檔案 被賦予隨機名稱,使其更難以通過手動檢查識別。
  • 登錄檔 key 修改: 駐留主要通過在 Windows Run 登錄檔 key 中添加一個 entry 來實現。該 entry 通常遵循 regsvr32.exe malicious_path 的格式,其中 malicious_path 指的是隨機命名和重新定位的 DLL。登錄檔 value name本身也是使用 pseudocode 演算法導出的,進一步隱藏了它的存在。
  • 自我刪除: 為了阻礙鑑識分析並清除其初始部署的痕跡,YiBackdoor 對其原始檔案 執行自我刪除。這使得調查人員更難追蹤初始感染途徑。

4.4. 後門設定

YiBackdoor 的運作參數通過嵌入式的設定 blob 進行管理:

  • 加密儲存: 設定以加密狀態儲存在惡意軟體的二進制檔中。
  • 解密: 在 runtime,此設定使用一個 64-byte key 進行解密。
  • 內容: 設定通常包括重要的運作細節,例如命令與控制 (C2) 伺服器資訊、用於單一實例強制執行的 mutex 名稱,以及其他管理惡意軟體行為的設定。

4.5. 命令與控制 (C2) 通訊

C2 伺服器進行有效通訊對任何後門都至關重要。YiBackdoor 採用了強健的通訊協定:

  • HTTP POST Request: 與 C2 伺服器的通訊是通過 HTTP POST Request 進行的,這是一種常見的方法,可以與合法的網路流量混合在一起。
  • RC4 加密: 所有 C2 通訊都使用帶有 64-byte key 的 RC4 algorithm 進行加密。此加密保護了惡意軟體與其操作員之間交換的 資料 的完整性和機密性,使網路安全設備難以檢查或阻擋流量。
  • C2 能力: C2 伺服器 執行任意命令、擷取螢幕截圖、部署額外的 plugins 以擴展功能,以及 更新 惡意軟體的設定。

4.6. 模組化 Plugin 架構

YiBackdoor 最重要的功能之一是其模組化設計,這得益於 plugin 架構:

  • 功能擴展: YiBackdoor 的核心功能可以通過部署 plugins 進行動態擴展。這些 plugins 會根據需要從 C2 伺服器下載。
  • 共享解密 Algorithm: 用於這些 plugins 的解密 algorithm 與 IcedID 先前用於解密其核心 Payload 的 algorithm 相同。這種共享的加密機制進一步強調了 YiBackdoor 和 IcedID 之間的密切關係。
  • 動態客製化: 這種模組化方法為 Threat actor 提供了相當大的靈活性,允許他們隨時客製化 YiBackdoor 的功能,以適應攻擊行動的特定目標,而無需重新部署整個惡意軟體。

5. 結論

YiBackdoor 是一個複雜且不斷演進的惡意軟體家族,通過顯著的程式碼相似性,顯示出與 IcedID 和 Latrodectus 的明確聯繫 [1]。它至少從 2025 年 6 月開始活動,採用了一系列反分析技術,包括動態 API 載入、hypervisor 偵測和 runtime 字串解密,以保持隱匿。其運作流程涉及基於 mutex 的單一實例強制執行、對 svchost.exe 的進階程式碼注入,以及通過登錄檔修改和自刪除的強健持久機制。該惡意軟體的加密設定和 RC4-encrypted C2 通訊確保了安全的控制,而其模組化 plugin 架構允許動態擴展功能。鑑於其到目前為止的部署有限,YiBackdoor 很可能仍處於積極開發或測試階段,在不斷變化的網路戰 環境 中構成了重大且適應性強的威脅。