FortiGuard Labs最近發現了一起複雜的網路攻擊事件,其中涉及一份嵌入 VBA 巨集的 Excel 文件,該文件被設計用來部署 DLL檔案。攻擊者採用多階段的惡意軟體來執行”Cobalt Strike”,並與控制伺服器(C2)建立連線來接收指令。這次攻擊中,駭客利用了多種規避技術,以確保最終惡意程式能夠成功執行。
在過去的幾年中,由於地緣政治情勢,烏克蘭成為了主要的攻擊目標。這些攻擊的歷史顯示出一個趨勢,即隨著緊張局勢的加劇,網路攻擊的複雜性和頻率也在增加。例如,2022 年,FortiGuard Labs報告了一件同樣利用惡意 Excel 檔案的攻擊活動,該文件內包含與烏克蘭軍隊相關的主題,用於加載Cobalt Strike。2023 年,烏克蘭電腦緊急應變小組 (CERT-UA) 則揭露了UAC-0057的攻擊,使用包含巨集和誘餌圖片的惡意 XLS 檔案,在受感染的系統上部署了 PicassoLoader 和 Cobalt Strike。我們將探討這次各階段的攻擊技術細節。
Excel 文件
攻擊者採用的惡意 Excel 文件包含用烏克蘭語所撰寫的內容,旨在引誘用戶啟用其巨集功能。
一旦啟用了 VBA 巨集,文件會切換到與預算相關的工作表,標題包含『分配給軍事單位的預算資金數量』 (翻譯自烏克蘭語 ”обсягу бюджетних коштів, що спрямовуються до військових частин”)。
VBA 巨集的主要功能是解碼並結合多段以 HEX(十六進制)編碼的內容來佈署一份 DLL 檔案至受感染的系統中。此外,VBA 程式碼中大部分的字串也被以HEX編碼,以規避基本的字串偵測機制。
在將名為 “Ac83faafb23919Ae9.DLl” 的 DLL 文件放置到 “%APPDATA%\VIBErpc\bIn\biN”資料夾中後,VBA程式會在 “%APPDATA%\Microsoft” 路徑中建立一個檔案名為 “ACtIVePRObE” 的LNK文件。接著,使用 “Shell” 執行指令 “RunDLL32.EXE shell32.dll,ShellExec_RunDLL ‘%APPDATA%\Microsoft\ACtIVePRObE.lnk’, 0”。而這份 LNK 檔案則是會使用 regsvr32 來執行 DLL 文件 “Ac83faafb23919Ae9.DLl”。
DLL 下載器
此階段負責下載檔案的 “Ac83faafb23919Ae9.DLl” 文件經過 ConfuserEx 混淆處理。
首先,它會檢查當前系統的處理序中是否包含以下特定字串:“processhacker“、“avastui“、“aswtoolssvc“、“wsc_proxy“、'procexp'、“overseer“以及“avastsvc“。如果查找到與分析工具或防毒軟體服務相關的字串,將會直接結束程式。
通過環境檢查後,它會定義一個網路封包,從 “hxxps://goudieelectric[.]shop/cms/svg/6364.2809640e[.]chunk.svg” 下載所需要的資料。此網站也包含地域檢查機制,只有當受感染設備位於烏克蘭時,才能載到正確的文件。接著,藉由提取以 “href=” 開頭的 Base64 編碼資料,並將其與事先定義在程式中的陣列進行 XOR 運算,可以取得下一階段的檔案。最後,它會隨機生成一個文件名稱,將檔案存到 TEMP資料夾中。
接著使用 “rundll32.exe“ 執行解碼後的檔案,然後使用sleep指令來等待執行完成。完成後會刪除檔案以清除痕跡。
解碼後的檔案是一個 .NET DLL 文件,將負責解密下一階段的文件並建立持續自動執行的設定。
它先檢查目標文件是否存在。如果不存在,則建立“C:\ProgramData\Windows\Containers\BaseImages\9cb03978-56d9-4f38-8f05-d1fdf135f0ab\Files\Windows\System32\ResetEngine.dll“。然後,使用在程式中定義的密鑰執行RC4 演算法解密,並將解完的資料寫入剛建立的文件中。
接著,它將指令“C:\Windows\System32\regsvr32.exe /s C:\ProgramData\Windows\Containers\BaseImages\9cb03978-56d9-4f38-8f05-d1fdf135f0ab\Files\Windows\System32\ResetEngine.dll“ 加到“SOFTWARE\Microsoft\Widows\CurrentVersion\Run“ 註冊表中,建立未來自動執行檔案的設定。最後,使用“InvokeMethod“ 執行“Create“ 並帶入剛剛加入註冊表的指令。
DLL 注入器
“ResetEngine.dll“ 是解密和注入最終程式的重要元件。它使用“NtDelayExecution“ 來逃避沙箱中的惡意活動偵測。同時檢查所有處理序,並嘗試終止父處理序,以達到anti-debugging的目的。
接著,使用AES演算法解出最終檔案。
最後,它將解密的資料注入到自身處理序中,使用數個API,包括“GetCurrentProcessId“、“OpenProcess“、“VirtualAllocEx“、“WriteProcessMemory“、“CreateRemoteThread“和“WaitForSingleObject“ 來執行最終的Cobalt Strike。
Cobalt Strike
此版本的Cobalt Strikej中,可以使用0x2E進行XOR運算解析出設定資料,包括此次攻擊使用的伺服器(C2):“hxxps://simonandschuster[.]shop/the-zero-residual-concept/products”和“hxxps://simonandschuster[.]shop/the-zero-residual-concept/sjj-solutions。
結論
在這次複雜的攻擊事件中,駭客採用了多階段惡意軟體策略以防止偵測,同時確保運行的穩定性。通過在資料下載期間實施地理位置的檢查,駭客意圖隱藏可疑資料,以躲避資安人員的分析和檢測。過程中利用將字串進行編碼,VBA藏匿了許多關鍵的字串,促使了DLL文件能夠順利地在感染環境中部署和解密後續資料。此外,刪除自我的功能有助於逃避鑑識,而DLL注入器則採用延遲執行,並終止父處理序以分別逃避沙箱檢查和反除錯分析。
此次精心策劃的攻擊手法特別針對具有重要地緣政治的烏克蘭部署Cobalt Strike。由於Office文件提供了大量的功能,包括眾多的套件和巨集,因此使用者在處理來自不信任來源的文件時必須特別小心。保有警覺心是至關重要,尤其是對於可疑文件的下載或在註冊表中任何陌生程式的設定。
Fortinet 所提供的解決方案:
FortiGuard防病毒服務成功檢測並攔截本篇文章提及的惡意軟體活動:
W32/Stealer.QLD!tr
MSIL/Agent.WML!tr
MSIL/Kryptik.BJF!tr
LNK/Agent.WML!tr
FortiGate、FortiMail、FortiClient 和 FortiEDR 皆支援 FortiGuard 防病毒服務。因此,若您的網路架構中部署上述產品和最新版本防護即擁有FortiGuard 防病毒服務。
這些網址被 FortiGuard 網頁過濾服務評為「惡意網站」。
企業組織亦可透過免費的Fortinet Certified Fundamentals (FCF) in Cybersecurity培訓或是報名全中文的線上快速充電學習營,了解當今的威脅環境和基本的網路安全概念和技術。
FortiGuard IP 信譽和Anti-botnet安全防護服務透過匯整來自Fortinet分佈式威脅感應器、CERT、MITRE、合作競爭對手和其他全球合作夥伴的惡意源IP數據,積極阻止這些攻擊,提供最新威脅情報。
IOCs
網址
goudieelectric[.]shop
simonandschuster[.]shop
SHA256
88c97af92688d03601e4687b290d4d7f9f29492612e29f714f26a9278c6eda5b 815c1571356cf328a18e0b1f3779d52e5ba11e5e4aac2d216b79bb387963c2be 9649d58a220ed2b4474a37d6eac5f055e696769f87baf58b1d3d0b5da69cbce5 af8104e567c6d614547acb36322ad2ed6469537cd1d78ae1be65fbde1d578abc de1bceb00c23e468f4f49a79ec69ec8ad3ed622a3ffc08f84c0481ad0f6f592b 6f4642a203541426d504608eed7927718207f29be2922a4c9aa7e022f22e0deb d90f6e12a917ba42f7604362fafc4e74ed3ce3ffca41ed5d3456de28b2d144bf d9b16f077cd6e00137ba208031d22fd6423d0ef303883ad4b6f78638693f2044