【安全漏洞】黑客利用IE 0 day漏洞部署VBA恶意软件
遠程模板
研究人員分析settings.xml.rels中嵌入的遠程模板發現其中含有完全特征的VBA 遠程訪問木馬,可以執行以下功能:
?收集受害者信息;
?識別受害者機器上運行的反病毒軟件;
?執行shell-code;
?刪除文件;
?上傳和下載文件;
?讀取硬盤和文件系統信息。
第二個模板嵌入在Document.xml.rels文件中,會加載在文件中。研究人員分析加載的代碼發現其中包含一個IE CVE-2021-26411漏洞利用,該漏洞利用曾被Lazarus APT組織用于攻擊安全研究人員。漏洞利用中執行的shellcode也部署了遠程模板注入加載的VBA RAT。
加載了遠程模板后,惡意文件會加載一個俄語的誘餌文件。
圖 1: 誘餌文件
文檔分析
惡意文件(“Манифест.docx”)中含有settings.xml.rels 和document.xml.rels中的2個模板。位于settings.xml.rels的遠程模板會下載一個宏武器化的模板,并加載到當前的文件中。遠程模板中包含有具備完全RAT功能的宏代碼:
第二個模板嵌入在document.xml.rels中,也會加載在主文檔的對象中。該模板中含有CVE-2021-26411的漏洞利用代碼。
圖 2: Document.xml.rels
遠程模板使用的漏洞利用代碼與ENKI安全公司之前報告的類似。
圖 3: 漏洞利用代碼
該漏洞利用執行的shell-code會部署settings.xml.rels中嵌入的遠程模板加載的VBA RAT。攻擊者還會嘗試使用兩種方法來部署VBA RAT。
Shellcode非常簡單,可以執行以下操作。Shellcode是用AutoHotKey腳本語言編寫的,所有的行為都是用SendInput API調用來執行的。
將VBA RAT添加到TrustedRecords注冊表中作為可信文檔。通過將該RAT加入到注冊表中,就可以在下次打開時啟用宏文件。
可以使用以下命令來獲取VBA RAT:
通過創建定時任務來每分鐘執行以實現VBA RAT駐留:
刪除RunMru注冊表值來清楚追蹤記錄:
VBA Rat(遠程模板)分析
遠程模板中有Document_Open和Document_Close,會在文件打開和關閉時被激活。
Document_Open:
Document_open 函數會檢查激活的文件是否有docx擴展,如果是docx擴展就會顯示隱藏的誘餌文件。如果激活的文件名為_.dotm,表示該機器已經感染了該RAT,就調用ConnectCP 函數。ConnectCP 函數通過調用下面的函數來收集受害者的信息,在收集數據后,會使用JsonConvertor函數將這些數據轉化為json格式。收集的數據之后會使用SCI函數來發送到服務器,并從服務器接收命令。
?getUUID: 執行"SELECT * FROM Win32_ComputerSystemProduct"來獲取UUID
?getOS: 執行"SELECT * FROM Win32_OperatingSystem"來獲取操作系統類型
?arch: 返回操作系統架構
?getCPU: 執行"SELECT * FROM Win32_Processor"來獲取CPU信息
?getGPU: 執行"SELECT * FROM Win32_VideoController"來獲取GPU信息
?getRAM: 執行"SELECT * FROM Win32_PhysicalMemory"來獲取物理內容容量
?getStorage: 執行"Select * from Win32_LogicalDisk Where DriveType = 3"來獲取可用硬盤空間
?getName: 獲取計算機名、用戶名和域名
?getRole: 識別受害者是否管理員
圖 4: GetRole
?getAV: 執行"Select * from AntiVirusProduct"來獲取激活的反病毒產品,然后調用DisplayName來獲取反病毒產品名,然后用產品狀態碼來識別反病毒產品的狀態和信息
圖 5: GetAV
Document_Close
Document_Close函數會調用函數InstallFromMacro來進行RAT的安裝。在調用安裝函數前,會調用相同的沙箱函數來確保沒有在沙箱環境中運行,然后會檢查附件中是否包含http來確保其中有嵌入的遠程模板URL。
InstallFromMacro會執行RAT的初始化,其中包含3個動作:
?以文件形式打開附件遠程模板,提取BuiltInDocumentProperties的comments部分內容,并用|來進行分割。如果操作系統是32位的,就將comments的第一部分放入skd變量,如果操作系統是64位的,就將comments的第二部分放入skd。Skd變量之后會用作AddTask 函數的參數。
?將customDocumentProperties從cve設置為“MACRO”;
?通過將自己加入到啟動目錄來實現駐留:APPDATA\Microsoft\Word\StartUp_.dotm;
?調用AddTask函數;
?通過刪除RunMRU注冊表來清除其追蹤記錄。
圖 7: RAT安裝
AddTask(使用EnumWindows來執行shell code)
該函數會base64解碼skd變量中的內容,并用VirtualProtect和EnumWindows執行。事實上,skd的內容是一個shellcode,會在不寫入硬盤的情況下在內存中執行。EnumWindows的第二個參數是一個應用定義的值,會傳遞給callback函數。將VirtualProtect的shellcode地址作為函數的第二個參數就可以執行shellcode。
圖 8: AddTask
執行的shellcode非常少,可以通過設置定時任務每分鐘執行來實現駐留:
與IE漏洞利用中的shellcode類似,該shellcode也是用AutoHotKey腳本語言寫的,并使用SendmessageA 和SendInput來模擬按鍵和執行其他動作。
圖 9: Shell-code API和函數調用解析
ExecuteTasks
這是VBA的主要函數,會從服務器接收json格式的命令,然后分析json文件和執行命令。每次函數會執行3個任務。
圖 10: 執行任務
為了從服務器接收任務,該函數會接收一個名為SCI的函數的參數。SCI函數會以json格式和HTTP POST請求的形式發送ConnectCP函數收集的數據,或從服務器接收響應,其中包含json格式的要執行的任務。
圖 11: 發送信息到服務器和接收命令
下面是RAT可以執行的命令。在執行任務后,任務執行的結果也會發送給服務器。
ReadDisks
該命令使用Scripting.FileSystemObject.Drives對象來獲取硬盤信息。然后創建一個JSON對象,其中包含如下信息:
圖 12: Read Disks
ReadFileSystem
該函數會使用Scripting.FileSystemObject.GetFolder 對象來獲取與指定路徑文件夾對應的文件夾對象,然后提取名字、大小、最后修改日期,并將這些信息放入一個json對象中。
Download File
該函數會使用Adobe.Recordset來讀取指定文件,并使用HTTP POST請求發送數據到服務器。
圖 13: 下載文件
Upload File
該模塊會從服務器接收一個文件,并將其寫入指定文件中。
圖 14: Upload File
DeleteFile
該函數會使用kill函數來刪除指定文件或目錄。
Terminate
該函數會中止RAT的執行并退出應用。
Execute
該函數會執行從服務器接收到的shellcode。
圖 15:執行Shell-code
我有整理了【網絡安全】相關的資料
有需要的朋友可以call我哦!!1
總結
以上是生活随笔為你收集整理的【安全漏洞】黑客利用IE 0 day漏洞部署VBA恶意软件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 带你了解什么样的信息是陷阱或为勒索病毒在
- 下一篇: 带你刷burpsuite官方网络安全学院