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`
检测结果