惡意檔案分析
惡意檔案描述
近期,深信服深盾終端實驗室在運營工作中發現了一種 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 勒索軟體可能存在關聯。
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.重要的資料最好雙機備份或雲備份。