原文鏈接:Fake Update Utilizes New IDAT Loader To Execute StealC and Lumma Infostealers
譯者:知道創宇404實驗室翻譯組
最近,我們觀察到了一種名為"Fake Browser Update"的誘騙策略,讓用戶執行惡意二進制文件。在分析這些二進制文件時,我們確定使用了一個新的加載程序,用于在受感染的系統上執行信息竊取程序,其中包括StealC和Lumma。
IDAT 加載程序是我們于2023 年 7 月首次發現的一種新型、復雜的加載程序。在較早版本的加載器中,它被偽裝成一個7-zip安裝程序,傳送SecTop RAT。現在,我們觀察到該加載器被用來傳送Stealc、Lumma和Amadey等信息竊取程序。它采用了幾種逃避技術,包括 Process Doppelgnging、DLL Search Order Hijacking和Heaven's Gate。IDAT加載器得名于威脅行為者將惡意載荷存儲在PNG文件格式的IDAT塊中。
在采用這種技術之前,我們觀察到背后的黑客利用惡意JavaScript文件來與命令和控制(C2)服務器建立聯系,或者傳送Net Support遠程訪問木馬(RAT)。
從SocGholish惡意軟件,到黑客手中的竊取信息,下面的分析涵蓋了整個攻擊流程。
技術分析
黑客經常通過安全工具無法檢測到的方式發起攻擊,而安全研究人員也很難對其進行調查。

第一階段:ClearFake
ClearFake是一種近期才被發現的新型惡意軟件。其攻擊活動始于2023年7月19日,這與我們發現新的IDAT加載器分發時間吻合。最初我們將這個攻擊流程歸因于SocGolish惡意軟件,但ClearFake似乎不太復雜。
在此次攻擊活動中,ClearFake惡意軟件使用base64對惡意JavaScript進行混淆,通過CyberChef輕松解密。正如Randy McEoin所提到的:與SocGholish的一個明顯區別是,沒有對IP或Cookie的訪問進行跟蹤。分析者可以反復從同一IP地址訪問被攻擊的網站,且可以不清除瀏覽器緩存,這也意味著網站所有者更有可能察覺到感染。

這個提示冒充瀏覽器更新,但由于它看上去源自于預期域名,也增加了其可信度。

一旦用戶點擊“更新Chrome”按鈕,瀏覽器將重定向到另一個URL,其中一個二進制文件會自動下載到用戶的默認下載文件夾中。用戶雙擊假更新的二進制文件后,它將繼續下載下一個階段的有效負載。在這項調查中,發現了一個名為ChromeSetup.exe的二進制文件,該文件名在先前的SocGholish攻擊中被廣泛使用。
第二階段:MSI下載器
ChromeSetup.exe從hxxps://ocmtancmi2c5t[.]xyz/82z2fn2afo/b3/update[.]msi 下載并執行Microsoft Software Installer (MSI)包。
在類似的調查中,我們觀察到當用戶訪問受損網頁時,初始的加載程序可執行文件的外觀和文件名可能會根據用戶訪問受感染網頁時的瀏覽器而有所不同。在所有情況下,可執行文件都包含無效簽名,并試圖下載和安裝一個MSI包。
執行MSI包所需的幾個開關,旨在避免被檢測:
- /qn:避免安裝 UI
- /quiet:防止用戶交互
- /norestart:在感染過程中防止系統重新啟動
當執行時,MSI下載器將寫入一個合法的VMwareHostOpen.exe可執行文件、多個合法的依賴文件、以及惡意的動態鏈接庫(DLL)文件vmtools.dll。它還會刪除一個加密的vmo.log文件,該文件具有PNG文件結構,并且稍后會被惡意的DLL解密。
我們發現了攻擊的另一個版本,其中MSI刪除了一個合法的pythonw.exe、合法的依賴文件,以及惡意的DLL文件python311.dll。在這種情況下,加密文件的被命名為pz.log,執行流程保持不變。

第三階段:解密器
執行時,合法的VMWareHostOpen.exe會從執行VMWareHostOpen.exe的同一目錄加載惡意vmtools.dll 。這種技術被稱為DLL搜索順序劫持。
在執行vmtools.dll期間,我們觀察到該DLL使用API哈希從kernel32.dll和ntdll.dll加載API庫,并將它們映射到內存中。在將API函數映射到內存后,DLL讀取十六進制字符串83 59 EB ED 50 60 E8并使用秘鑰F5 34 84 C3 3C 0F 8F進行按位異或運算解密,從而顯示字符串vmo.log。該文件類似于存儲虛擬機日志的Vmo\log目錄。
然后,DLL將vmo.log的內容讀入內存,并搜索字符串…IDAT。DLL獲取…IDAT之后的4個字節,并將其與十六進制值C6 A5 79 EA進行比較。如果…IDAT后面的4個字節等于十六進制值C6 A5 79 EA,DLL將繼續將…IDAT之后的所有內容復制到內存中。

一旦所有數據都被復制到內存中,DLL將嘗試使用關鍵字F4 B4 07 9A進行按位 XOR 運算來解密復制的數據。在對其他樣本進行進一步分析后,我們確定了XOR密鑰始終存儲在十六進制字符串C6 A5 79 EA之后的4個字節中。

DLL在內存中解密數據后,使用RTLDecompressBuffer函數對其進行解壓縮。傳遞給該函數的參數包括:
- 壓縮格式
- 壓縮數據的大小
- 壓縮緩沖區的大小
- 未壓縮數據的大小
- 未壓縮緩沖區的大小

vmtools.dll 利用LZNT1壓縮算法對vmo.log文件中的解密數據進行解壓縮。
數據解壓縮后,DLL將mshtml.dll加載到內存中,并用解壓縮的代碼覆蓋其.text節。在覆蓋完成后,vmtools.dll調用解壓縮的代碼。
第四階段:IDAT注入器
與vmtools.dll類似,IDAT加載器使用動態導入。然后,IDAT注入器通過使用ExpandEnvironmentStringsW API調用來擴展%APPDATA%環境變量。它在%APPDATA%下創建一個新文件夾,并根據QueryPerformanceCounter API調用的輸出命名,并隨機化其值。
MSI刪除的所有文件都被復制到新創建的文件夾中。然后,IDAT使用CreateProcessW從%APPDATA%創建VMWareHostOpen.exe的新實例并退出。
第二個VMWareHostOpen.exe實例的行為與之前相同,直到從mshtml.dll內存空間調用IDAT注入器代碼的階段。IDAT立即開始實現Heaven's Gate逃避技術,該技術用于大多數 API 調用,直到信息竊取程序加載完成。
Heaven's Gate廣泛用于威脅行為者逃避安全工具。它指的是在32位進程中執行64位進程,或者反之亦然,允許32位進程在64位進程中運行。這是通過使用保留選擇器發起調用或跳轉指令來實現的。在我們的案例中,分析這種技術的關鍵點是將進程模式從32位更改為64位,需要指定選擇器“0x0033”,并在執行遠程調用或遠程跳轉之后進行操作,如圖8所示。

接下來,IDAT注入器使用ExpandEnvironmentStringsWAPI調用擴展了%TEMP%環境變量。它根據QueryPerformanceCounter API調用的輸出創建一個字符串,并隨機化其值。
然后,IDAT加載器通過調用GetComputerNameW API獲取計算機名稱,并使用rand和srand API調用對輸出進行隨機化處理。它使用該隨機化值通過SetEnvironmentVariableW設置一個新的環境變量。該變量被設置為之前創建的隨機化字符串與%TEMP%路徑的組合。
現在,加載器執行了新的cmd.exe進程,然后創建并寫入%TEMP%\89680228文件。
接下來,IDAT使用NtCreateSection + NtMapViewOfSection Code Injection技術將代碼注入到cmd.exe進程中。使用此技術,惡意軟件執行以下操作:
-
通過使用NtCreateSection API調用,在遠程進程內部創建一個新的內存段
-
通過使用NtMapViewOfSection API調用,將新創建的部分視圖映射到具有 RW 保護的本地惡意進程上
-
通過使用NtMapViewOfSection API調用,將先前創建的部分的視圖映射到具有 RX 保護的遠程目標進程
-
通過使用NtWriteVirtualMemory API調用,使用 shellcode 填充本地進程中映射的視圖
在我們的案例中,IDAT加載器使用NtSuspendThread API調用掛起了cmd.exe進程上的主線程,然后使用NtResumeThread API調用恢復線程。 完成注入后,第二個VMWareHostOpen.exe實例退出。
第五階段:IDAT加載器
注入的加載器代碼以與IDAT注入器完全相同的方式實現了Heaven's Gate逃逸技術。它檢索了TCBEDOPKVDTUFUSOCPTRQFD環境變量,并將%TEMP%\89680228文件中的數據讀入內存,然后將數據與3D ED C0 D3密鑰進行遞歸異或運算。
解密后的數據包含配置數據,包括應加載信息竊取程序的進程、應該動態檢索哪些API調用、附加代碼等。然后,加載器使用DeleteFileW刪除初始惡意DLL(vmtools.dll)。最后,加載器使用Process Doppelgnging注入技術將infostealer注入到explorer.exe進程中。
Process Doppelgnging方法利用了Windows操作系統中的事務性NTFS功能。該功能旨在確保在出現意外錯誤時的數據完整性。例如,當應用程序需要寫入或修改文件時,如果在寫入過程中發生錯誤,則存在數據損壞的風險。為了防止此類問題,應用程序可以以事務模式打開文件進行修改,然后提交修改,從而防止任何潛在的損壞。
Process Doppelgnging利用這一特性來將合法文件替換為惡意文件,從而進行進程注入。惡意文件在事務中創建,然后提交到合法文件,并隨后執行。在我們的樣本中,Process Doppelg?nging的執行步驟包括:
-
使用NtCreateTransactionAPI調用啟動一個事務
-
使用NtCreateFileAPI調用創建一個新文件
-
使用NtWriteFileAPI調用寫入新文件
-
使用NtCreateSectionAPI調用向本地進程的某個節寫入惡意代碼
-
使用NtRollbackTransactionAPI調用放棄事務
-
使用NtCreateProcessExAPI調用運行explorer.exe進程的新實例
-
使用NtCreateThreadExAPI調用在explorer.exe進程中運行惡意代碼
如果在事務中創建的文件被回滾(而不是提交),但文件的部分已經映射到進程內存中,則仍將執行進程注入。
最終注入到explorer.exe進程中的有效負載被識別為Lumma Stealer。

在整個攻擊流程中,惡意軟件通過使用NtDelayExecution延遲執行,這是一種通常用于逃避沙箱的技術。
正如前面提到的,我們調查了幾個IDAT加載器樣本。主要區別包括:
-
加載惡意DLL的合法軟件
-
在%APPDATA%中創建的分段目錄名稱。
-
IDAT注入器注入加載器代碼的進程。
-
將信息竊取工具/遠程訪問工具(RAT)加載到的進程。
-
我們觀察到IDAT加載器已被用于加載以下信息竊取工具和RAT:Stealc、Lumma和Amadey信息竊取工具以及SecTop RAT。


結論
IDAT加載器是一種新的復雜加載器,利用多種逃避技術來執行各種通用惡意軟件,包括InfoStealers和RAT。虛假更新活動背后的黑客將IDAT加載器打包到由諸如VMWarehost、Python和Windows Defender等合法程序加載的DLL中。
MITRE ATT&CK Techniques
| Initial Access | Drive-by Compromise (T1189) | The SocGholish Uses Drive-by Compromise technique to target user’s web browser |
|---|---|---|
| Defense Evasion | System Binary Proxy Execution: Msiexec (T1218.007) | The ChromeSetup.exe downloader (C9094685AE4851FD5A5B886B73C7B07EFD9B47EA0BDAE3F823D035CF1B3B9E48) downloads and executes .msi file |
| Execution | User Execution: Malicious File (T1204.002) | Update.msi (53C3982F452E570DB6599E004D196A8A3B8399C9D484F78CDB481C2703138D47) drops and executes VMWareHostOpen.exe |
| Defense Evasion | Hijack Execution Flow: DLL Search Order Hijacking (T1574.001) | VMWareHostOpen.exe loads a malicious vmtools.dll (931D78C733C6287CEC991659ED16513862BFC6F5E42B74A8A82E4FA6C8A3FE06) |
| Defense Evasion | Deobfuscate/Decode Files or Information (T1140) | vmtools.dll (931D78C733C6287CEC991659ED16513862BFC6F5E42B74A8A82E4FA6C8A3FE06) decrypts vmo.log(51CEE2DE0EBE01E75AFDEFFE29D48CB4D413D471766420C8B8F9AB08C59977D7) file |
| Defense Evasion | Masquerading (T1036) | vmo.log(51CEE2DE0EBE01E75AFDEFFE29D48CB4D413D471766420C8B8F9AB08C59977D7) file masqueraded to .png file |
| Execution | Native API (T1106) | The IDAT injector and IDAT loader are using Heaven’s Gate technique to evade detection |
| Defense Evasion | Process Injection (T1055) | IDAT injector implements NtCreateSection + NtMapViewOfSection Code Injection technique to inject into cmd.exe process |
| Defense Evasion | Process Injection: Process Doppelg?nging (T1055.013) | IDAT loader implements Process Doppelg?nging technique to load the InfoStealer |
| Defense Evasion | Virtualization/Sandbox Evasion: Time Based Evasion (T1497.003) | Execution delays are performed by several stages throughout the attack flow |
IoCs
| IOC | SHA-256 | Notes |
|---|---|---|
| InstaIIer.exe | A0319E612DE3B7E6FBB4B71AA7398266791E50DA0AE373C5870C3DCAA51ABCCF | MSI downloader |
| ChromeSetup.exe | C9094685AE4851FD5A5B886B73C7B07EFD9B47EA0BDAE3F823D035CF1B3B9E48 | MSI downloader |
| MlcrоsоftЕdgеSеtuр.exe | 3BF4B365D61C1E9807D20E71375627450B8FEA1635CB6DDB85F2956E8F6B3EC3 | MSI downloader |
| update.msi | 53C3982F452E570DB6599E004D196A8A3B8399C9D484F78CDB481C2703138D47 | MSI dropper, dropped pythonw.exe, python311.dll and pz.log files |
| update.msi | D19C166D0846DDAF1A6D5DBD62C93ACB91956627E47E4E3CBD79F3DFB3E0F002 | MSI dropper, dropped VMWareHostOpen.exe, vmtools.dll and vmo.log files |
| DirectX12AdvancedSupport.msi | B287C0BC239B434B90EEF01BCBD00FF48192B7CBEB540E568B8CDCDC26F90959 | MSI dropper, dropped MpCopyAccelerator.exe, MpClient.dll, and virginium.flac file |
| python311.dll | BE8EB5359185BAA8E456A554A091EC54C8828BB2499FE332E9ECD65639C9A75B | Malicious dll loaded by pythonw.exe |
| vmtools.dll | 931D78C733C6287CEC991659ED16513862BFC6F5E42B74A8A82E4FA6C8A3FE06 | Malicious dll loaded by VMWareHostOpen.exe |
| MpClient.dll | 5F57537D18ADCC1142294D7C469F565F359D5FF148E93A15CCBCEB5CA3390DBD | Malicious dll loaded by MpCopyAccelerator.exe |
| vmo.log | 51CEE2DE0EBE01E75AFDEFFE29D48CB4D413D471766420C8B8F9AB08C59977D7 | Encrypted payload decrypted by vmtools.dll |
| pz.log | 8CE0901A5CF2D3014AAA89D5B5B68666DA0D42D2294A2F2B7E3A275025B35B79 | Encrypted payload decrypted by python311.dll |
| virginium.flac | B3D8BC93A96C992099D768BEB42202B48A7FE4C9A1E3B391EFBEEB1549EF5039 | Encrypted payload decrypted by MpClient.dll |
| ocmtancmi2c5t[.]xyz | Host of the MSI package | |
| lazagrc3cnk[.]xyz | Host of the MSI package | |
| omdowqind[.]site | Domain that facilitated download of the MSI downloader | |
| weomfewnfnu[.]site | Domain that facilitated download of the MSI downloader | |
| winextrabonus[.]life | Domain that facilitated download of the MSI downloader | |
| bgobgogimrihehmxerreg[.]site | Domain that facilitated download of the MSI downloader | |
| pshkjg[.]db[.]files[.]1drv[.]com | Domain that facilitated download of the MSI downloader | |
| ooinonqnbdqnjdnqwqkdn[.]space | Domain that facilitated download of the MSI downloader | |
| hello-world-broken-dust-1f1c[.]brewasigfi1978[.]workers[.]dev | Domain that facilitated download of the MSI downloader | |
| doorblu[.]xyz | C&C server | |
| costexcise[.]xyz | C&C server | |
| buyerbrand[.]xyz | C&C server | |
| 94.228.169[.]55 | C&C server | |
| gapi-node[.]io | C&C server | |
| gstatic-node[.]io | C&C server |
References
本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/3027/
暫無評論