摘要

本報告詳細分析了 Lockbit Linux ESXi 勒索軟體變種,聚焦於其規避技術、控制流程、記錄機制、daemonization 程序、可用空間清除功能、ESXi 互動方式以及檔案加密 routine。分析深入探討了加密實作,包括函式庫識別和使用的特定 AES 演算法。目標是以教育和研究為目的,闡明此惡意軟體的複雜技術面向,並強調底層技術機制。


探索 Lockbit 的 Linux ESXi 勒索軟體:深度探討 Ptrace 規避與 AES 實作 | 資訊安全新聞

簡介

Linux 惡意軟體的態勢已顯著演進,勒索軟體與傳統 DDoS bot 和加密貨幣挖礦程式並列成為主要威脅。Lockbit Linux ESXi 變種是這種演進的複雜範例,專門針對 ESXi 伺服器。本報告旨在剖析此勒索軟體的技術細節,提供對其運作方法和底層程式碼結構的洞察。通過聚焦技術面向,本分析有助於深入理解現代惡意軟體開發和逆向工程挑戰 [1]。

規避技術

Lockbit Linux ESXi 變種採用多種規避技術來阻礙分析。一項顯著技術是使用 ptrace 系統呼叫。惡意軟體嘗試使用 PTRACE_ATTACH 附加到其父程序。此舉作為動態分析規避機制,因為已被除錯器追蹤的程序無法再次被附加。此簡單而有效的方法阻礙了常見的 Linux 追蹤工具,如 gdb strace [1]。

Ptrace Evasion Diagram

另一項規避技術是字串混淆。惡意軟體使用滾動 XOR routine 來解混淆字串。以 Hardcode 值 (39h 或 57) 為基礎,對混淆字串逐位元組進行 XOR 運算,直到遇到空位元組。此 routine 一致應用於二進制檔案中的大多數字串,使靜態分析在未解混淆前變得困難 [1]。

String Deobfuscation Diagram

控制流程

惡意軟體的控制流程主要由其命令列參數解析決定。一個類似 main 函數的中央協調函數評估命令列參數。此函數展示 switch-case 圖結構,不同的命令列參數(例如,加密的最小檔案大小、記錄模式、檔案副檔名排除清單)控制惡意軟體的設定和執行路徑 [1]。

記錄功能

Lockbit 樣本包含廣泛的記錄功能。記錄可被關閉、導向至記錄檔案 ( /tmp/locklog ),或同時輸出至記錄檔案和標準輸出。記錄項目遵循特定格式,包括當前日期、時間、執行緒 ID 以及變數參數,例如正在加密的檔案名稱。這種詳細記錄可能無意中幫助逆向工程工作 [1]。

[%s][%d][+] Start encrypting file %s

惡意軟體程序 Daemonization

惡意軟體利用 LibC 的 daemon 函數從終端機分離,並作為系統 daemon 在背景執行。此外,它創建一個名為 /tmp/locker.pid 的 PID 檔案,標示其存在並防止多個實例同時執行。在此檔案上維持獨佔鎖定,直到惡意軟體完成操作 [1]。

清除可用空間

惡意軟體包含清除可用空間的功能,如其「wipe free space」幫助選單選項所示。這通過使用 popen API 執行 df -h 命令並解析其輸出以識別掛載點來實現。對於每個識別的路徑,會建立一個執行緒。此執行緒創建臨時檔案,使用 fstatvfs 獲取檔案系統資訊(區塊大小和可用區塊),然後將零填充的記憶體區塊寫入臨時檔案,有效覆寫可用磁碟空間。此技術旨在複雜化鑑識分析 [1]。

[user@machine]:~$ df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 	   598M 1.5M 597M  1%   /run
/dev/sda2  25G  13G  11G  54%   /
tmpfs      3.0G 0    3.0G  0%   /dev/shm
tmpfs      5.0M 8.0K 5.0M  1%   /run/lock
tmpfs      598M 120K 598M  1%   /run/user/1000

ESXi 互動

Lockbit ESXi 勒索軟體專門針對虛擬機器。其與虛擬機器的互動主要通過 popen system libc 函數執行的標準 bash 命令來管理。惡意軟體利用工具如 vm-support vmdumper vmware vim-cmd awk grep xargs 。在加密前,它會驗證系統上是否可用 vm-support vmdumper vim-cmd [1]。

一個重要操作是通過執行 vim-cmd hostsvc/enable_ssh 啟用 ESXi 伺服器上的 SSH。惡意軟體還能在加密前暫停運行中的虛擬機器。它通過解析 vmdumper -l 的輸出獲取虛擬機器的 World ID (WID) 來識別運行中的虛擬機器。然後使用以下命令暫停虛擬機器:

esxcli vm process kill --type=force --world-id=$wid

惡意軟體會多次嘗試暫停每個虛擬機,以避免加密正在執行的機器。如果設定了 nostop 選項,則虛擬機器不會被暫停或加密。

檔案加密

Lockbit ESXi 勒索軟體的核心功能涉及加密虛擬機器。惡意軟體使用 Lill使用 vm-support –listvms 列出虛擬機器,提取其資料夾路徑,然後加密這些資料夾的內容。它支援虛擬機器排除清單和檔案副檔名排除清單。對於每個未匹配排除過濾器的檔案,會啟動一個新執行緒來處理加密程序 [1]。

加密機制因二進制檔案動態鏈接 libc 但靜態編譯 libsodium 和其他未識別程式碼而變得複雜。二進制檔案被剝離,意味著應用程式和靜態編譯的函式庫函數名稱不可用,使逆向工程更具挑戰性 [1]。

函式庫程式碼識別

識別靜態鏈接的 libsodium 函式庫至關重要。雖然應用程式字串被混淆,但 libsodium 字串(例如 LibsodiumDRGsodium/core.c sodium/utils.c )以純文字形式存在。自動化的程式庫程式碼偵測工具,例如 IDAPro 的 FLIRT (Fast Library Identification and Recognition Technology) 被發現效果有限,原因在於識別過於特定的簽章,或因編譯器造成的差異所致。

採用手動函式庫程式碼識別,專注於圖相似性匹配(Graph similarity matching)。這涉及比較惡意軟體二進制檔案與已知 libsodium.so 二進制檔案之間的交叉引用,特別是字串引用。通過識別常見字串引用(例如「sysrandom」)並追蹤其通過全域位移表 (Global Offset Table, GOT) 和函數子圖的交叉引用,識別並命名了惡意軟體中的特定 libsodium 函數 [1]。

例如,使用此方法識別了 randombytes_stir randombytes_buf 。此過程涉及分析函數控制流程、全域變數交叉引用和其他函數。即使編譯器引起的指令組成或控制流程的微小差異也可能阻礙自動檢測,因此手動分析引用模式至關重要 [1]。

另一個識別的函數是 crypto_box_seal 。通過追蹤已識別的 randombytes_buf 的引用並分析子圖找到此函數。inline 函數的存在進一步複雜化了此過程,因為它們改變了函數大小、指令佈局、控制流程和交叉引用模式 [1]。

實際加密技術

惡意軟體的檔案加密 routine 首先呼叫 randombytes_buf 生成 32 位元組 (128 位元) 的隨機加密 key。此 key 隨後傳遞給 crypto_box_seal ,使用Hardcode的 public key 加密 32 位元組的隨機資料。這種技術在現代勒索軟體中很常見,允許對稱加密,同時通過使用 public key 加密 key 資料並附加到加密檔案中,以保護 key 資料免受鑑識分析 [1]。

File Encryption Cryptography Diagram

加密 routine 中的第三個未識別函數,接受加密 key 和檔案指標作為參數,被確定為實際加密演算法。此演算法依賴兩個函數並引用五個表格:一個 256 位元組表格和四個 1024 位元組表格。256 位元組表格被識別為 Rijndael S-box,AES 的組成部分 [1]。

在外部專業知識的幫助下進一步分析顯示,四個 1024 位元組表格實際上是四個包含 256 個 4 位元組整數的表格,與使用查找表 (T-tables) 的優化 AES 實作幾乎相同 [1]。這確認惡意軟體使用優化的 AES 版本進行檔案加密。

檔案加密後,每個加密資料夾中會放置一個名為 !!!-Restore-My-Files-!!! 的勒索筆記。惡意軟體還會在加密後生成摘要記錄,詳述總檔案和虛擬機器數量、加密檔案和虛擬機器數量、總加密大小以及加密所花費的時間 [1]。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%s%s
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Total files..................%llu
Total VMs....................%llu
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Encrypted files..............%llu
Encrypted VMs................%llu
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Total encrypted size.........%llu Mb
Time spent for encryption....%llu sec
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

結論

Lockbit Linux ESXi 勒索軟體是一款複雜的惡意軟體,展示了規避、控制流程管理和加密方面的先進技術。其針對 ESXi 虛擬環境的能力,結合強大的檔案加密和反分析措施,突顯了 Linux 系統中不斷演進的威脅態勢。本報告中呈現的詳細技術分析強調了深入逆向工程對於理解和緩解此類威脅的重要性。使用標準系統呼叫、函式庫函數和優化加密演算法展示了惡意軟體開發的務實方法,專注於有效性和效率。