Ave Maria 也稱為 Warzone RAT,是一種遠控木馬。該遠控木馬允許攻擊者訪問失陷主機,并且進行數據盜竊、權限提升、遠程桌面控制、電子郵件憑據收集、瀏覽器憑據解析等惡意行為。

Ave Maria/Warzone RAT 最早在 2018 年被發現,目前仍在活躍并未停息,該遠控木馬也被多個 APT 組織用于控制失陷主機。

下圖展示了 Ave Maria RAT 的惡意網絡釣魚攻擊行動,該行動中使用能夠下載遠控木馬的 RTF 文件。

攻擊基礎設施

初始訪問

Ave Maria (Warzone) RAT 因通過垃圾郵件分發惡意軟件而臭名昭著,這些垃圾郵件帶有惡意附件。惡意附件會利用 Office 公式編輯器中的漏洞 CVE-2017-11882 來感染失陷主機:

垃圾郵件

利用該漏洞,Word 文件或者 RTF 文件會觸發執行 Shellcode,將 Ave Maria RAT 下載到失陷主機上。下圖顯示了使用 UrlDownloadToFileW() 下載 Ave Maria RAT 的 Shellcode:

Shellcode 代碼

成功下載遠控木馬后,就會立即啟動。

修改注冊表

首先安裝的 EventObject 將充當互斥量,以確保失陷主機上只有一個惡意軟件實例。默認情況下,Web 服務器同時下載的數量為 2。Ave Maria (Warzone) RAT 修改了注冊表,將該數值調整到 10。

下圖顯示了部分代碼:

修改注冊表

繞過 UAC

該惡意軟件利用 RtlGetVersion() 來確定失陷主機的操作系統版本。如果滿足版本要求,將會嘗試使用文件路徑創建注冊表項 HKCU\Software\Classes\Folder\shell\open\command\繞過 Windows 的 UAC 再運行 sdclt.exe。

繞過 UAC

削弱防御

該惡意軟件使用 PowerShell 規避 Windows Defender 等安全工具,它通過將惡意軟件文件路徑添加到 Windows Defender ExclusionPath 來實現此目的。下圖顯示了負責初始化與執行 PowerShell 命令的函數,確保將惡意軟件排除在 Windows Defender 的掃描之外。

削弱防御

繞過網絡標記

Ave Maria RAT 還會著意繞過 MOTW 標記,Windows 操作系統會將下載的文件標記為 Zone.Identifier。帶有 MOTW 標記的文件會受到系統保護,無法執行部分操作。惡意軟件會嘗試刪除該標記,以在不受限制或者保護的情況下運行下載的文件。

繞過網絡標記

命令與腳本解釋器

Ave Maria RAT 會在 %appdata% 中釋放自身的副本,以及名為 program.bat 的批處理腳本。該腳本可以通過 WMIC 創建進程,如下所示:

批處理腳本執行

進程注入

如果當前運行的進程位于 64 位操作系統上,將會啟動 cmd.exe 進程并注入代碼。否則,就會搜索 explorer.exe 進程來注入代碼,再使用 CreateRemoteThread() 執行它。

進程注入

持久化

安裝過程中,惡意軟件會創建注冊表項在計算機重新啟動時自動執行代碼。如下所示:

HKCU\Software\Microsoft\Windows\CurrentVersion\Run

該遠控木馬包含一系列后門功能,旨在執行 Payload 從失陷主機中竊取信息。

系統信息發現

后門會收集系統信息,如機器 GUID、操作系統版本、用戶名、計算機名、Token 信息、CPU 架構、內存信息等,這些信息會被加密并回傳給 C&C 服務器。

系統信息發現

注冊表憑據

Ave Maria RAT 會在失陷主機的注冊表中搜索不安全存儲的憑據,如通過與 Microsoft Outlook 配置文件關聯的注冊表查看以下信息:

  • 電子郵件
  • 賬戶名稱
  • POP3 服務器
  • POP3 用戶
  • POP3 密碼
  • SMTP 服務器
  • SMTP 密碼
  • HTTP 密碼
  • IMAP 密碼

Outlook 注冊表

按鍵記錄

惡意軟件通過 Hook 負責處理 Windows 系統中按鍵的 API,來進行用戶按鍵記錄。按鍵日志保存在 %appdata%\Microsoft Vision\文件夾中,文件名格式如下所示:

File name format: dd-mm-yy_hh.mm.ss
             E.g: %appdata%\Microsoft Vision\11.11.23_11.11.11  

按鍵記錄

Web 瀏覽器憑據

該惡意軟件會竊取 Web 瀏覽器的憑據,讀取特定目標瀏覽器中包含加密憑據的文件或者數據庫,再解密提取明文憑據。

獲取瀏覽器憑據

以下是目標瀏覽器列表:

  • Chrome
  • Epic Privacy Browser
  • Microsoft Edge
  • UCBrowser
  • QQBrowser
  • Opera
  • Blisk
  • Chromium
  • Brave-Browser
  • Vivaldi
  • Comodo
  • Torch
  • Slimjet
  • CentBrowser
  • Firefox

檢測結果

通過 pkgmgr 分析 Windows 繞過 UAC 識別可疑進程:

| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime from datamodel=Endpoint.Processes 
  where  Processes.process_name = pkgmgr.exe Processes.process = "*.xml*" NOT(Processes.parent_process_path IN("*:\\windows\\system32\\*", "*:\\windows\\syswow64\\*",
"*:\\Program Files*"))
  by Processes.dest Processes.user Processes.parent_process_name
Processes.parent_process_path Processes.process_name Processes.process
Processes.process_id
Processes.parent_process_id Processes.original_file_name 
 | `drop_dm_object_name(Processes)` 
 | `security_content_ctime(firstTime)` 
 | `security_content_ctime(lastTime)` 
 | `windows_bypass_uac_via_pkgmgr_tool_filter`

檢測情況

識別針對 Windows 注冊表的可疑修改:

| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime FROM datamodel=Endpoint.Registry 
  where (Registry.registry_path=
"*\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet
Settings\\MaxConnectionsPerServer*" OR Registry.registry_path=
"*\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet
Settings\\MaxConnectionsPer1_0Server*")  Registry.registry_value_data = "0x0000000a" by
Registry.registry_key_name Registry.user Registry.registry_path
Registry.registry_value_data Registry.action Registry.dest 
  | `drop_dm_object_name(Registry)` 
  | `security_content_ctime(firstTime)` 
  | `security_content_ctime(lastTime)` 
  | `windows_modify_registry_maxconnectionperserver_filter`

檢測結果

檢測 Windows 未簽名 DLL 側加載:

`sysmon` EventCode=7 Signed=false OriginalFileName = "-" SignatureStatus="unavailable" ImageLoaded IN ("*:\\windows\\system32\\*", "*:\\windows\\syswow64\\*") 
  | stats count min(_time) as firstTime max(_time) as lastTime by Image ImageLoaded Signed SignatureStatus OriginalFileName process_name Computer EventCode ProcessId Hashes IMPHASH 
  | `security_content_ctime(firstTime)` 
  | `security_content_ctime(lastTime)` 
  | `windows_unsigned_dll_side_loading_filter`

檢測結果