DBatLoader惡意加載器的全面分析——典型加載器家族系列分析二
時間 : 2025年03月19日
1.引言
隨著網絡攻擊技術的不斷演變,惡意代碼加載器逐漸成為惡意代碼執行的關鍵組成部分。此類加載器是一種用于將各種惡意代碼加載到受感染的系統中的惡意工具,通常負責繞過系統安全防護,將惡意代碼注入內存中并執行,為后續的特洛伊木馬類型惡意代碼的部署奠定基礎。加載器的核心功能包括持久性機制、無文件內存執行以及多層次規避技術。
安天CERT將近幾年歷史跟蹤儲備的典型惡意加載器家族有關信息匯總成專題報告,在未來幾個月依次發布,并持續追蹤新的流行加載器家族。本項目專題將聚焦加載器技術細節,深入挖掘其在攻擊鏈中的核心功能,包括其混淆技術、加密機制以及注入策略等。此外,我們也會不斷完善自身安全產品能力,采取有效技術方案進一步提升針對加載器的識別率和準確率,幫助用戶組織提前發現并阻止潛在威脅。
2.概述
DBatLoader加載器最初于2020年被發現,主要被用于投放包括Snake Keylogger、Formbook和Agent Tesla在內的多種惡意代碼家族。DBatLoader加載器的加載過程分為兩個階段,其中第一階段主要用于規避反病毒引擎的檢測,并在內存中解密運行第二階段載荷。在第二階段過程中,DBatLoader加載器采用“DDR”(Dead Drop Resolvers)技術,從公共代碼托管網站上下載并解密待投遞的惡意代碼家族,而后通過多種手法將其注入到其他程序內以實現隱蔽運行。
DBatLoader加載器通過不斷更新其生存技巧來規避反病毒引擎的檢測。它大量運用了混淆技術,從加密和隱藏特征兩個維度對程序進行隱蔽處理。DBatLoader加載器使用異或加密和移位加密對字符串和不同階段的載荷加密處理。為了提高隱蔽性,該加載器還采用了圖片隱寫術和在代碼中穿插無用字符串的方法以隱藏惡意代碼特征。除此之外,DBatLoader加載器還會將指定擴展名的文件加入Windows Defender白名單來規避查殺,以便實施后續攻擊行為。
該加載器詳細信息參見安天病毒百科[1]。
圖2-1 長按識別二維碼查看DBatLoader加載器詳細信息
3.DBatLoader加載器生存技術舉例分析
DBatLoader加載器為了逃避和繞過安全檢測,使用了多種生存技術,其中包括:混淆技術、注入技術、提權技術、持久化技術和反調試技術。
3.1 混淆技術分析
為了減少文件特征,阻礙分析人員逆向分析,DBatLoader加載器采用了多種文件混淆技術,其中包括技術如下:穿插無用指令、圖片隱寫、腳本字符串拼接、載荷多層加密、去除文件魔術頭、字符串加密、動態加載函數。
3.1.1 穿插無用指令
在DBatLoader加載器的每個階段載荷中,均有大量重復的嘗試hook AMSI(即Antimalware Scan Interface,Windows 反惡意軟件掃描接口)的代碼,這些代碼使原本的程序執行流程變得分散,即增加了逆向分析的難度,又減少了程序執行流程本身帶來的二進制特征。
圖3-1 DBatLoader加載器使用大量重復的指令填充程序
3.1.2 使用圖片隱寫術
DBatLoader加載器通過圖片隱寫術,可以將惡意載荷信息寫入到圖片中,使其從計算機視角來看和普通圖片別無二致,進而達到隱藏目標載荷的目的。當需要獲取目標載荷時,該加載器通過特定的算法讀取圖片,從而將信息還原出來。
圖3-2 DBatLoader隱寫載荷后的圖片
3.1.3 腳本字符串拼接
DBatLoader加載器通過將bat腳本指令進行分割,并在其中穿插無用變量,在運行時使用拼接變量的方式進行還原,以降低文件特征并實現干擾逆向人員分析的目的。
圖3-3 DBatLoader加載器混淆過后的bat腳本
3.1.4 多層加密載荷
DBatLoader加載器通過多層加密載荷,以去除載荷特征并增加逆向難度。
圖3-4 DBatLoader加載器加密函數
3.1.5 破壞文件特征
DBatLoader加載器通過故意在加密的載荷中去除一個字節以破壞載荷解密后的文件特征,去除的字節由加載器運行時還原,以避免載荷被解密后檢測。
圖3-5 DBatLoader加載器第一階段解密后的載荷
3.1.6 加密字符串
DBatLoader加載器通過將部分字符串(如注入的程序名,自啟動注冊表路徑等)進行加密以防止字符串被作為特征進行識別檢測。
圖3-6 DBatLoader字符串加密算法
3.1.7 函數動態加載
DBatLoader加載器通過調用GetProcAddress來動態加載函數以防止導入函數所帶來的文件特征。
圖3-7 DBatLoader加載器動態加載函數
3.2 注入技術分析
DBatLoader加載器提供了三種注入方式,分別為線程注入、APC注入和進程鏤空,并且最終會根據載荷的配置文件選擇注入方式。
其中調用的API如表3-1所示,DBatLoader加載器在注入過程中都盡量使用了ntdll.dll的導出函數,而不是直接使用kernel32.dll的導出函數,以減少調用鏈的長度,降低被hook的可能性。
表3-1 DBatLoader加載器注入過程使用的API
創建進程 |
CreateProcessAsUserW |
WinExec |
|
修改內存 |
NtOpenProcess |
NtUnmapViewOfSection |
ZwAllocateVirtualMemory |
NtReadVirtualMemory |
WriteVirtualMemory |
RtlMoveMemory |
|
執行載荷 |
NtCreateThreadEx |
NtQueueApcThread |
GetThreadContext |
SetThreadContext |
ResumeThread |
|
3.3 提權技術分析
DBatLoader加載器為了繞過UAC實現提權,需要讓程序在受信任的目錄中執行,并且程序還需要帶有有效的數字簽名。
其中DBatLoader加載器為了在受信任的目錄中執行,使用了模擬受信任目錄技術。該技術將會創建一個新的目錄,該目錄和受信任的目錄之間有一個空格的區別,但是卻能欺騙UAC讓其以為程序在受信任的目錄中運行。
圖3-8 DBatLoader加載器模擬的受信任目錄
之后DBatLoader加載器使用了易受DLL劫持的可執行文件,該程序具有合法的數字簽名并且能夠自動提權,但是會優先加載同目錄下的DLL。DBatLoader加載器通過這種白加黑的方式,繞過UAC的限制實現提權。
圖3-9 DBatLoader加載器用于白加黑的白文件
3.4 持久化技術分析
DBatLoader加載器通過向HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run寫入注冊表項實現持久化。
圖3-10 DBatLoader加載器寫入注冊表
3.5 反調試技術分析
DBatLoader加載器在第二階段會通過IsDebuggerPresent和CheckRemoteDebuggerPresent檢測是否有調試器的存在。
圖3-11 DBatLoader加載器通過IsDebuggerPresent檢測是否存在調試器
4.攻擊流程
DBatLoader加載器主要通過釣魚郵件進行傳播。攻擊者通過投遞釣魚郵件,誘導受害者運行郵件附件中的惡意程序加載器。當加載器運行時,該加載器會先從自身資源文件中讀取包含第二階段載荷的圖片,通過圖片隱寫術進行解密并運行DBatLoader加載器第二階段。在第二階段中,加載器會從公共的文件托管網站下載加密的配置文件。之后DBatLoader加載器會根據該配置文進行持久化并篡改Windows Defender白名單。最后DBatLoader加載器會從配置文件中解密待投遞的惡意代碼家族并通過注入的方式運行。
圖4-1 DBatLoader攻擊流程
5.樣本分析
5.1 樣本標簽
表5-1 二進制可執行文件
病毒名稱 |
Trojan/Win32.DBatLoader |
原始文件名 |
Crane
Motor Specification,Docx.exe |
MD5 |
23434BF113A4651076ECD2898A6C1069 |
處理器架構 |
Intel
386 or later processors and compatible processors |
文件大小 |
1.15 MB (1,209,856字節) |
文件格式 |
BinExecute/Microsoft.EXE[:X86] |
時間戳 |
1992-06-19 22:22:17(Delphi程序默認時間戳) |
數字簽名 |
無 |
加殼類型 |
無 |
編譯語言 |
Borland
Delphi(2006) |
VT首次上傳時間 |
2024-10-14 04:26:54 |
VT檢測結果 |
52/73 |
5.2 DBatLoader加載器第一階段
DBatLoader加載器第一階段中存在大量劫持AMSI API的函數的代碼以規避反病毒引擎的掃描,但是此部分代碼存在缺陷,該功能并未實現。
圖5-1 DBatLoader加載器有缺陷的hook API實現
DBatLoader加載器第一階段對下一階段載荷采取了多層加密。該加載器首先從資源文件中加載包含下一階段載荷的圖片,并通過圖片隱寫術把加密的載荷讀取出來。
圖5-2 DBatLoader加載器讀取資源文件
其中DBatLoader加載器會從圖片中逐行以藍綠紅的順序讀取字節以獲取隱寫信息,其中圖片隱寫所占用的bit數記錄在了讀取的前3個字節上。隨后該加載器通過隱寫術的方式讀取了32bit信息,用來獲取加密載荷的總字節數。之后該加載器將繼續從圖片中讀取信息直到獲得全部的加密載荷。
圖5-3 DBatLoader加載器讀取隱寫圖片
隨后DBatLoader加載器逐字節對第二階段載荷加0x80并在載荷頭部添加一個字符“M”成對第二階段載荷的解密。
圖5-4 DBatLoader加載器解密第二階段載荷
最后DBatLoader加載器將二階段載荷映射進內存并調用入口點進入第二階段。
圖5-5 DBatLoader加載器加載二階段載荷
5.3 DBatLoader加載器第二階段
DBatLoader加載器第二階段通過在主函數邏輯中設置一個計時器來觸發第二階段惡意邏輯。
圖5-6 DBatLoader加載器設置計時器
在DBatLoader加載器第二階段中,有著和第一階段一樣的規避反病毒引擎邏輯,但是因為設計缺陷導致功能未能實現。
圖5-7 第二階段規避反病毒引擎邏輯
在DBatLoader加載器第二階段,部分字符串被一種異或算法加密。當需要解密字符串時,加載器會先逐字符拼接形成一個異或密鑰,隨后加載器會逐字節地將加密字符串的低8位與密鑰的低8位異或解密,以獲得明文字符串。
圖5-8 DBatLoader加載器解密字符串算法
在DBatLoader加載器第二階段,程序會將要投遞的載荷下載地址存放在第一階段載荷當中。在第二階段,DBatLoader加載器會在第一階段載荷文件中搜索特定的字符串,以定位加密配置的位置。
圖5-9 DBatLoader加載器獲取加密配置
當獲取到加密配置后,DBatLoader加載器會用配置中的一個整數用作解密密鑰,解密加密的字符串,以獲取投遞目標載荷的下載地址。
圖5-10 DBatLoader加載器解密載荷下載地址算法
之后DBatLoader加載器將通過WinHttpRequest對象下載投遞的載荷。
圖5-11 DBatLoader加載器下載載荷
當DBatLoader加載器下載載荷后,程序會base64解碼后多次添加偏移量來解密載荷。
圖5-12 DBatLoader加載器解密下載的載荷
隨后DBatLoader加載器通過一個特定的字符串分割載荷,得到載荷的配置文件。當加載器解密配置文件后,會根據配置文件選擇是否進行篡改反病毒引擎策略、持久化、線程注入、APC注入、進程鏤空等操作。
圖5-13 DBatLoader加載器讀取配置文件
5.3.1 DBatLoader加載器篡改Windows Defender白名單
當配置文件中啟動篡改Windows Defender白名單功能時,加載器會通過自身代碼和釋放的bat腳本來將特定文件擴展名加入白名單中。
圖5-14 去混淆后的用于修改Windows Defender策略的腳本
DBatLoader加載器會創建一個路徑中帶有一個額外空格的C:\Windows \SysWOW64目錄來模擬可信目錄,隨后會釋放一個具有自動提權能力且易被DLL劫持的合法的easinvoker.exe用來提權。最后加載器會釋放一個會被easinvoker.exe加載的惡意netutils.dll,該DLL會將exe、bat、pif程序加入Windows Defender白名單。
圖5-15 netutils.dll中用于添加文件擴展名白名單的核心載荷
5.3.2 DBatLoader加載器通過設置自啟動項實現持久化
當啟用持久化功能時,DBatLoader加載器以配置文件中malware_filename作為文件名將自身復制到C:\Users\Public\Libraries\malware_filename.PIF,并在C:\Users\Public\下創建文件malware_filename.url,并將其加入到注冊表HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run下以實現自啟動的功能。
圖5-16 DBatLoader加載器創建的用于持久化的.url文件
如果啟用了保存配置文件功能,DBatLoader加載器還會將下載的還未被解密的配置文件以malware_filename作為文件名保存到C:\Users\Public\Libraries\下,以供后續使用。
圖5-17 DBatLoader加載器保存下載的配置文件
5.3.3 DBatLoader加載器執行目標載荷
DBatLoader加載器會嘗試尋找系統中是否存在SndVol.exe,如果不存在則會注入程序到iexpress.exe。
圖5-18 DBatLoader加載器選擇注入的程序
隨后DBatLoader加載器會將配置文件中的目標載荷多層解密,獲得真實惡意載荷。
圖5-19 DBatLoader加載器對惡意載荷的加密算法
之后DBatLoader加載器會根據配置文件,選擇程序的注入方式。如果啟用了APC注入功能,則DBatLoader加載器會通過APC注入方式注入到目標進程。
圖5-20 DBatLoader加載器通過APC注入執行惡意代碼
如果啟用了線程注入功能,則DBatLoader加載器通過線程注入方式將載荷注入到目標進程。
圖5-21 DBatLoader加載器通過線程注入執行惡意代碼
如果APC注入和線程注入都未啟用,則DBatLoader加載器通過進程鏤空的方式將載荷注入到目標進程。
圖5-22 DBatLoader加載器通過進程鏤空執行惡意代碼
通過解密分析,最終確定投遞的目標載荷為Snake Keylogger,該鍵盤記錄器家族曾在此前發布的分析報告中進行過詳細分析[1],此處不宜贅述,感興趣的讀者可前往閱讀。
圖5-23 DBatLoader加載器投遞的最終載荷
6.IoCs
IoCs |
23434BF113A4651076ECD2898A6C1069 |
5D707EF2DB982821B0246CE6AA1300C1 |
6D23FE871B2064C6D13580A5745F23CB |
CE875D76D02C456326D6381881281667 |
7.樣本對應的ATT&CK映射圖譜
圖7-1 技術特點對應ATT&CK的映射
具體ATT&CK技術行為描述表:
表7-1 ATT&CK技術行為描述表
ATT&CK階段/類別 |
具體行為 |
注釋 |
持久化 |
利用自動啟動執行引導或登錄 |
通過添加注冊表自啟動項實現持久化 |
提權 |
濫用提升控制權限機制 |
通過模擬可信目錄的方式進行提權 |
執行流程劫持 |
在提權的過程中通過劫持了easinvoker.exe執行流程 |
|
防御規避 |
規避調試器 |
第二階段通過IsDebuggerPresent和CheckRemoteDebuggerPresent檢測調試器 |
削弱防御機制 |
將部分文件擴展名加入Windows Defender白名單 |
|
刪除信標 |
在提權結束后會清理提權使用的文件 |
|
混淆文件或信息 |
通過圖片隱寫術加密第二階段載荷 |
|
使用多種古典加密算法加密載荷 |
||
部分字符串使用算法加密 |
||
動態解析API |
||
提權腳本中使用大量無用字符進行混淆 |
||
進程注入 |
通過DLL注入、APC注入或進程鏤空的方式投遞目標載荷 |
8.防御建議
針對此類威脅,安天建議企業增強業務人員的安全意識,降低組織被攻擊的可能性。企業員工日常應注意郵件使用,避免運行未知來源郵件附件或者訪問郵件中可疑網絡鏈接。
另外,終端作為安全防護的基石,建議企業在辦公機、服務器等節點上部署企業級終端安全防護系統。面向終端設備,安天可為企業用戶提供安天智甲終端防御系統,為終端提供病毒查殺、主動防御、勒索防護、主機管控、網絡防護等多種能力,實現有效防御各類威脅。
8.1 智甲助力用戶防御加載器威脅
經過測試,安天智甲終端安全系列產品(以下簡稱“智甲”)依托安天自研威脅檢測引擎和內核級主動防御能力,可以有效查殺和防御本次發現病毒樣本。
智甲可對本地磁盤進行實時監測,對新增文件自動化進行病毒檢測,針對此次威脅,當用戶通過接收郵件附件、微信傳輸、網絡下載等方式將DBatLoader加載器存儲至本地時,智甲會立即對該病毒進行告警并清除惡意文件,防止用戶啟動文件導致終端遭受攻擊。
圖8-1 發現病毒時,智甲第一時間捕獲并發送告警
智甲還為用戶提供統一管理平臺,管理員可通過平臺集中查看網內威脅事件詳情,并批量進行處置,提高終端安全運維效率。
圖8-2 智甲管理中心助力管理員實現高效的終端安全管理
9.安天瀾砥威脅檢測分析垂直大模型
安天瀾砥威脅檢測分析垂直大模型能對樣本進行自動化分析,解析內容如下:
判定結果: 根據提供的日志,分析工具判定該文件為 Trojan.Win32.Bandan[Backdoor],即一個用于后門的特洛伊木馬。 評估日志中的結果準確度: 準確度:95% 詳細解釋:
結論: 基于上述特征匹配和行為分析,分析工具判定該文件為 Trojan.Win32.Bandan[Backdoor],其行為特征與已知的后門木馬行為高度一致。日志中的檢測結果準確度較高,建議對該文件進行進一步的隔離和分析。 準確度解釋:
|
按照國標草案給出威脅分類為Trojan.Win32.Bandan,自動提取特征生成的YARA規則如下:
rule Trojan.Win32.Bandan:Trojan
{
meta:
description = "這是一段由 VILLM V2 模型生成的 YARA 規則。用于檢測Trojan.Win32.Bandan"
strings:
$a = {FF FF FF FF 01 00 00 00 ?? 00}
condition:
#a > 100
}
安天瀾砥威脅檢測分析垂直大模型是國內首個通過國家網信辦備案的威脅檢測生成式算法。模型基于安天賽博超腦20余年積累的海量樣本特征工程數據訓練而成,訓練數據包括文件識別信息、判定信息、屬性信息、結構信息、行為信息、主機環境信息、數據信息等,支持對不同場景下向量特征進行威脅判定和輸出詳實的知識理解,形成應用不同需求和場景的多形態的檢測方式,提升后臺隱蔽威脅判定能力,進一步為安全運營賦能。
圖9-1 安天瀾砥威脅檢測分析垂直大模型樣本分析結果