研究傳播 Dridex 新變種的 Excel 文檔
Dridex也稱為 Bugat 或 Cridex,可以從失陷主機上竊取敏感信息并執行惡意模塊(DLL)的木馬。
FortiGuard Labs 最近捕獲了新的網絡釣魚郵件活動,其中包括特制的 Excel 文檔附件。分析研究后,發現一旦在受害者的機器上打開了惡意 Excel 文檔就會下載 Dridex 的新變種。
Dridex 釣魚郵件
帶有 Excel 附件的 Dridex 釣魚郵件如下所示:

釣魚郵件偽裝成向客戶發送的進口關稅數據,要求用戶打開 Excel 附件(HF7.TRANS 2021.08.09.xlsb)查看詳細信息。
宏代碼解析
收件人打開 Excel 文檔后會在頂部以紅色粗體顯示要求用戶啟用宏代碼。Excel 則會顯示黃色警告欄,通知用戶當前已經禁用了宏,意味著啟用內容可能存在風險。

Excel 文件內部不僅使用了自動運行的 VBA 代碼(Workbook_Open),還使用了 Excel 4.0 宏代碼。
Sub Workbook_Open()ActiveWorkbook.Sheets("Macro1").Range("A1").Value=Environ("allusersprofile")& "\KgmsgJbgP.sct"End Sub
值 Environ("allusersprofile")& "\KgmsgJbgP.sct"設置成名為 Macro1的工作表的 $A$1單元格。
Macro1是一個隱藏的工作表,包含并執行 Excel 4.0 宏代碼,在文件 xl\workbook.xml中定義。

Excel 4.0 宏代碼使用各種單元格中的公式執行代碼,給定起始單元格后會從上到下、從左到右執行代碼。本例代碼從 Macro1!$A$4單元格開始執行。
宏代碼提取的數據是帶有一段 VBScript 代碼的 HTML 應用程序(.hta 文件)。最后調用 mshta命令執行 KgmsgJbgP.sct文件,即 =EXEC(CONCATENATE("mshta ", CHAR(34), A1, CHAR(34)))。
下載 Dridex 的 HTML 程序
VBScript 代碼包含十個 URL 組成的數組,這些 URL 與 Dridex 有關。循環從十個 URL 下載 Dridex 到本地文件 %ALLUSERSPROFILE%\\icXBOuZukiASGnpfVowZ.dll。該文件也硬編碼在 VBScript 代碼中,當 Dridex 下載成功后會執行 wmic.exe來創建一個新的 rundll32.exe進程。

簡化后的代碼如下所示:
CreateObject("Wscript.Shell").Exec("wmic process call create \"Rundll32.exe %ALLUSERSPROFILE%\\icXBOuZukiASGnpfVowZ.dll ReportDeviceAdd\"")
最后,Rundll32.exe 加載 Dridex 的 icXBOuZukiASGnpfVowZ.dll并調用其名為 ReportDeviceAdd的導出函數來執行其惡意功能。
深入理解 Dridex
Dridex 包含兩個導出函數:
DllEntryPoint 是 DLL 的入口函數
FWroeeWqoinnmw 是惡意函數

Dridex 最終的導出函數列表如下所示:

加載 Dridex 的步驟如下所示:
Rundll32.exe 調用 LoadLibrary() 將 DLL 加載到內存中
調用 DLL 的入口點函數 DllEntryPoint 來初始化模塊,包含脫殼
調用函數名 ReportDeviceAdd 中的 GetProcAddress,從初始化的模塊中獲取函數地址
Rundll32.exe 調用函數地址
反分析
Dridex 使用了多種反分析技術:
所有 API 都被隱藏,通過 API 哈希調用
所有常量字符串都是加密的,在使用前解密
某些 API 通過觸發異常(0x80000003)在異常處理函數中捕獲異常進行調用
加密數據包
Dridex 將從失陷主機竊取的敏感數據加密發送到 C&C 服務器。

紅色將數據包分割成多個字段,每個字段的含義如下所示:

C&C 通信
和 Dridex 保持一致,C&C 服務器的 IP 地址和端口都硬編碼在數據中。

循環選擇一個 IP 地址和端口,與 C&C 服務器成功建立連接就會使用使用它進行通信。
0x18F8C844是第一個數據包的數據包 ID。收集的數據包括安裝的軟件(軟件名稱和版本)和失陷主機中定義的所有環境變量。
通過 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall查看安裝軟件。通過 GetEnvironmentStringsW()獲取環境變量。
Dridex 將加密數據包通過 HTTP POST 方法發送到 C&C 服務器,并使用 InternetConnectW()、HttpOpenRequestW()、HttpSendRequestW()、HttpQueryInfoW() 和 InternetReadFile() 來發送和接收數據。
整個過程如下所示:

持久化
得到 C&C 服務器的響應后,將會發送第二個數據包(0x11041F01)。Dridex 通過數據包的前四個字節作為哈希碼驗證響應數據包。成功接收后發送(0xD3EF7577)通知 C&C 服務器成功接收。

Dridex 會從 %windir%\system32中隨機選擇一對 Windows EXE 程序和 DLL 文件,通過惡意軟件覆蓋 DLL
文件。程序啟動就會拉取惡意 DLL 執行。

Dridex 創建計劃任務實現持久化,每半個小時觸發執行。計劃任務名為 vzwbtojdsmg:

在 Dridex 退出前,會發送 ID 為 0x69BE7CEE的數據包,告知 C&C 服務器已經成功安裝。

IOC
103.75.201.2:443
158.223.1.108:6225
165.22.28.242:4664
59C8D87A450F0647BEA930EBA1AA692B75D82DEF1358F1601C4FE9A561B4707E
C8065BD2A1443FF988E9BA95022554F6EE302E9BCB4082C3D9B2B8D74C5A4BE5
6556E4029CF50C9538F4E02D0BCCA5356F28E6870E62838E164020A31B3DF096
參考來源
Fortinet