“暗黑天使”降臨:DarkAngels勒索病毒全揭秘

深信服千里目發表於2022-09-21

惡意檔案分析

惡意檔案描述

近期,深信服深盾終端實驗室在運營工作中發現了一種 ELF 格式的勒索軟體,該勒索軟體近期開始出現,其釋放的勒索信中的 Onion 連結似乎已關閉,這表明該勒索軟體可能仍在開發中。

經過分析,發現該勒索軟體與今年5月出現的 DarkAngels 勒索信內容非常相似。而 DarkAngels 與 Babuk 勒索軟體也存在相似之處。本文主要分析最新捕獲的針對 Linux 平臺的 ELF 格式的勒索軟體以及針對 Windows 平臺的 DarkAngels 兩種格式的樣本,探究其中的相似與不同之處。

左圖為針對 Linux 系統下的勒索信內容,右圖為針對 Windows 系統下的勒索信內容。



惡意檔案分析

(一)Windows 版本分析


總體功能框架

圖片

使用靜態分析,發現惡意檔案是基於 32 位 GUI (圖形使用者介面)的二進位制檔案。


獲取命令列引數,透過呼叫 SetProcessShutdownParameters(0,0)  ,惡意軟體為指定程式設定它相對於其它程式的關閉順序,引數為 0,意味著較其他程式關閉得最遲。


終止服務

為了確保在系統加密過程中不中斷其加密過程,惡意軟體會列舉和檢索受害者機器上所有可用的服務,在加密系統之前嘗試終止服務。

開啟服務控制管理器資料庫 (0xF003F = SC_MANAGER_ALL_ACCESS)。


呼叫 OpenServiceA,開啟一個目標服務(0x2c = SERVICE_STOP )。


查詢服務狀態,判斷上一步驟引數是否正確傳遞。


檢索每個依賴於指定服務的服務的名稱和狀態;也就是說,在依賴服務能夠執行之前,指定的服務必須執行 (0x1 = SERVICE_ACTIVE)。


終止服務 (0x1 = SERVICE_CONTROL_STOP)。


終止的服務列表


終止程式

函式 CreateToolhelp32Snapshot() 獲得當前執行程式的快照後,我們可以利用 process32First 函式來獲得第一個程式的控制程式碼。


將當前程式與硬編碼中的程式表對比,如果當前程式控制程式碼與表中匹配。則開啟指定程式的控制程式碼,並傳入 0x1 引數(0x1 = PROCESS_TERMINATE),隨後終止程式,最後關閉該程式控制程式碼。


繼續列舉下一個程式。


重複上述操作,直至遍歷完所有程式。

終止程式列表


防止恢復

(1)刪除卷影


(2)清空回收站

使用 SHEmptyRecycleBinA() API,惡意軟體會從回收站中刪除所有專案,以確保加密後不會恢復已刪除的檔案。


最大化執行加密操作

首先建立互斥變數 DarkAngels:


(1)當命令列引數中包含"shares"

使用 NetShareEnum () API 檢索有關伺服器上每個共享資源的資訊。


檢查  $ADMIN  共享並開始加密檔案:


(2)當命令列引數中包含 "path"

勒索軟體會呼叫 GetDriveTypeW() API  來找出連線到受感染機器的網路驅動器。一旦識別出網路驅動器,勒索軟體就會開始加密檔案。


(3)當命令列引數中既不包含 "shares"又不包含 "paths"

勒索軟體會遞迴遍歷所有本地驅動器並加密所有目標檔案。加密後,檔案被賦予 .crypt 副檔名。

遍歷所有本地驅動器

圖片

列舉卷及本地磁碟

獲取驅動器型別,判斷路徑是否有效GetDriveTypeW(0x1),如果路徑有效,則對捲進行列舉。呼叫 GetVolumePathNamesForVolumeName 獲取路徑資訊,檢視該卷是否被安裝,若未被安裝,則呼叫SetVolumeMountPointW 安裝未被安裝的卷。


列舉網路資源


檔案加密

(1)被加密檔案新增擴充套件

呼叫 SetFileAttributesW(0x80 = FILE_ATTRIBUTE_NORMAL ) 設定檔案屬性,取消文件的只讀、隱藏、系統、存檔許可權。呼叫 MoveFileExW 函式,被加密檔案新增擴充套件 .crypt。


呼叫CreateFileW(0xC0000000 = GENERIC_READ | GENERIC_WRITE,0x3 = OPEN_EXISTING),開啟一個已經存在的檔案。

(2)處理金鑰

呼叫 CryptGenRadom 隨機生成 AES 金鑰,之後使用Session Key 中的 RSA 公鑰對 AES 金鑰進行加密。

(3)檔案加密大小

從檔案頭部開始遍歷檔案,先加密 0-64,接著加密 64-5242880,其次加密 5242880-20971520,最後加密20971520 之後的字元。


(3)不進行加密的檔案、目錄及擴充套件

不進行加密的目錄:

AppData

Boot

Windows

Windows.old

不進行加密的檔案:

autorun.inf

boot.ini

bootfont.bin

不進行加密的檔案擴充套件:

.babyk  是著名的  Babuk  勒索軟體副檔名,表明 DarkAngels  與  Babuk  勒索軟體可能存在關聯。

.exe

.dll

.babyk

DarkAngels 在加密檔案的末尾附加了一個簽名 "choung dong looks like hot dog!!",表明該勒索軟體與  Babuk 相關。


(二)Linux版本分析

總體功能框架


1、定製化加密路徑

該勒索軟體二進位制檔案需要一個資料夾作為加密引數。給定資料夾路徑後,DarkAngels 會加密資料夾中的檔案並將 .crypted 副檔名附加到加密檔案中。如果沒有新增需要加密的路徑,則會顯示 Usage:%s [-m (10-20-25-33-50) ] Start Path  。

圖片

該惡意程式使用 pthread_create 函式建立了一個新的執行緒,新的執行緒透過呼叫 start_routine 執行主模組。

圖片

start_routine 函式為該勒索軟體主要功能模組,分析內容如下所示:

(1)被加密檔案新增檔案擴充套件 .crypted

圖片

(2)將新增過 .crypted 擴充套件的檔案設定寫鎖

呼叫 open64 函式開啟目標檔案,並且使用 fcnt 函式將目標檔案設定為 F_WDLCK 寫鎖,隨後 close 關閉目標檔案。

圖片

(3)終止程式

終止 pid>10 且佔用檔案的程式,儘可能多的加密檔案且避免在加密過程中造成檔案的損壞。

圖片

(4)將程式的工作目錄修改為"/"根目錄,建立守護程式。

圖片

(5)勒索信

開啟另一個與目標檔案同名但附加了README_TO_RESTORE 擴充套件的檔案,寫入了勒索信內容並關閉檔案。

圖片

寫入的勒索信內容如下所示:

圖片

(6)避免加密的檔案擴充套件、目錄、檔案

不進行加密的檔案擴充套件:

圖片

不進行加密的目錄:

圖片

不進行加密的檔案:

圖片

(7)加密

開啟被新增 .crypted 擴充套件的檔案,呼叫 lseek 和 write 函式寫入已加密的內容。

圖片

(8)加密記錄

所有被加密檔案儲存在  wrkman.log.0 檔案中。

圖片

IOCs

Windows 版本

Sha256 38e05d599877bf18855ad4d178bcd76718cfad1505328d0444363d1f592b0838

Linux 版本

Sha256 3b56cea72e8140a7044336933cf382d98dd95c732e5937a0a61e0e7296762c7b

處置建議


1. 避免將重要服務在外網開放,若一定要開放,需增加口令複雜度,避免使用弱口令。

2. 避免開啟可疑或來歷不明的郵件,尤其是其中的連結和附件等,如一定要開啟未知檔案,請先使用防毒軟體進行掃描。

3. 安裝信譽良好的防病毒/反間諜軟體,定期進行系統全盤掃描,並刪除檢測到的威脅,按時升級打補丁。

4. 使用官方和經過驗證的下載渠道,使用正版開發人員提供的工具/功能啟用和更新產品,不建議使用非法啟用工具和第三方下載器,因為它們通常用於分發惡意內容。

5.重要的資料最好雙機備份或雲備份。


相關文章