执行摘要

2021年 8 月底到 9 月初,我们在多个版本的Microsoft Windows 服务器上检测到利用权限提升漏洞的攻击活动。该漏洞利用中有许多调试字符串,来自一个旧的、公开的漏洞CVE-2016-3309,但仔细分析发现这是一个0day漏洞。我们发现,它使用的是Win32k驱动中一个以前未知的漏洞,并且使用在很大程度上依赖于泄漏内核模块基地址的技术,我们及时向微软报告了这些发现。该漏洞链的信息披露部分被认定为未绕过安全边界,因此未修复。之后,微软将此漏洞分配为CVE-2021-40449,该漏洞为Win32k内核驱动中的 use-after-free漏洞,并在2021年10月12日作为10月星期二补丁的一部分进行了修复。

除了在野发现0 day漏洞之外,我们还分析了与0 day漏洞利用一起使用的恶意软件Payload,并发现在针对 IT 公司、军事/国防承包商和外交实体的广泛间谍活动中检测到了恶意软件的变体。

我们称这个活动为 MysterySnail。我们发现的代码相似性和 C2 基础设施的重用使我们能够将这些攻击与被称为 IronHusky 的行为者和2012 年的APT 活动联系起来。

提权漏洞

CVE-2021-40449漏洞影响了以下Windows版本:

MicrosoftWindows Vista

MicrosoftWindows 7

MicrosoftWindows 8

MicrosoftWindows 8.1

MicrosoftWindows Server 2008

MicrosoftWindows Server 2008 R2

MicrosoftWindows Server 2012

MicrosoftWindows Server 2012 R2

MicrosoftWindows 10 (build 14393)

MicrosoftWindows Server 2016 (build 14393)

MicrosoftWindows 10 (build 17763)

MicrosoftWindows Server 2019 (build 17763)

该漏洞影响的产品列表及其支持的 Windows 10 内部版本号、服务器操作系统的明确声明以及漏洞仅在服务器攻击中发现的事实,都使我们相信该漏洞是作为提升服务器权限而被攻击者开发和宣传的。

CVE-2021-40449是Win32k的NtGdiResetDC函数中的一个use-after-free漏洞。与许多Win32k漏洞一样,该漏洞的根本原因在于能够设置用户模式的回调,并在执行这些回调时执行意外的API函数。当函数ResetDC在执行自己的回调过程中对同一个句柄第二次执行时,CVE-2021-40449被触发。该漏洞的利用过程如下:

1.对ResetDC的用户模式调用会执行系统调用NtGdiResetDC及其内部函数GreResetDCInternal。这个函数获取指向PDC对象的指针,然后调用函数hdcOpenDCW。

2.函数hdcOpenDCW 执行用户模式回调,它可用于第二次执行相同句柄的 ResetDC。

3.如果漏洞利用在回调期间执行 ResetDC,则会针对同一 DC 再次执行 NtGdiResetDC 和 GreResetDCInternal。

4.如果利用者在第二次调用GreResetDCInternal时忽略了所有的回调,则该函数将按预期执行。它将创建一个新的 DC 并摆脱旧的 DC(PDC 对象被销毁)。

5.在回调中,在第二次 ResetDC 调用完成后,漏洞利用可以回收 PDC 对象的释放内存并完成回调的执行。

6.执行回调后,函数 hdcOpenDCW 返回到 GreResetDCInternal,但在步骤 (1) 中检索到的指针现在是一个悬空指针——它指向之前被销毁的 PDC 对象的内存。

7.在 GreResetDCInternal 执行的后期阶段,格式错误的 PDC 对象可用于执行对具有受控参数的任意内核函数的调用。

在发现的漏洞利用中,攻击者能够通过使用GDI调色板对象实现所需的内存状态,并使用对内核函数的单一调用来构建读写内核内存的原语。这一步很容易完成,因为利用程序是以Medium IL运行的,因此有可能使用公开的技术来泄漏当前加载的驱动程序/内核模块的内核地址。在我们看来,如果Medium IL进程对NtQuerySystemInformation或EnumDeviceDrivers等函数的访问是有限的,那就更好了。

MysterySnail RAT

我们对MysterySnail RAT家族的深入研究始于对一个以前未知的远程shell类型木马的分析,该木马旨在通过权限提升漏洞来执行。我们分析的样本也在2021年8月10日被上传到VT。该样本非常大,有8.29MB。文件大小的原因之一是,它是使用OpenSSL库静态编译的,并且包含属于该库的未使用的代码和数据,但其大小的主要原因是存在两个非常大的函数,它们除了浪费处理器的时钟周期外什么都不做。这些函数还使用随机生成的字符串,这些字符串也存在于二进制文件中。

反分析函数使用的随机字符串

我们假设这两个函数被用作反仿真的 AV 规避技术。这一理论得到了其它冗余逻辑的支持,并且存在相对大量的导出函数,而实际的工作只由其中一个函数完成。

导出函数的名称,实际的业务逻辑是由函数 GetInfo 执行的

该样本有两个硬编码的纯文本URL :"www[.]disktest[.]com"和 "www[.]runblerx[.]com",它们被放入类变量以备使用,但仍未使用;真实的C2地址由单字节的xor解码 :"http[.]ddspadus[.]com"。

恶意软件枚举了 "Software\\Microsoft\\Windows\\CurrentVersion\\InternetSettings\\ProxyServer "注册表下的值,并使用它们请求通过代理服务器建立隧道,以防止无法直接连接到 C2。

该恶意软件本身不是很复杂,其功能与许多其它远程shell相似。但它仍然以某种方式脱颖而出,有相对较多的执行命令和其它功能,如监视插入的磁盘驱动器和作为代理的能力。

入站和出站的命令具有下面提供的相同的基于二进制的格式,所有的通信都是用SSL加密的。

Offset

描述

0

附加数据的大小

4

会话 ID

8

命令ID

0xC

附加数据

通讯命令格式

在接收任何命令之前,该恶意软件会收集并发送关于受害者机器的一般信息。这些信息包括:

  • 计算机名称

  • 当前的OEM代码页/默认标识符

  • Windows产品名称

  • 本地IP地址

  • 登录的用户名称

  • 活动名称

一个有趣的事实是,"活动名称"在默认情况下被设置为 "windows"。此名称会被覆盖,这表示可能存在为其它平台编译的相同 RAT 的版本。

总的来说,RAT实现了20个命令,它们的描述和命令ID如下:

命令 ID

描述

1F4h

启动交互式 cmd.exe shell。在启动之前,cmd.exe被复制到具有不同名称的临时文件夹

1F5h

生成新进程

1F6h

生成新进程(控制台)

1F7h

获取现有磁盘驱动器及其类型。此功能也可在后台运行,检查新驱动器

1F8h

创建(上传)新文件。如果文件存在,则向其追加数据

1FAh

获取目录列表

1FBh

杀死任意进程

1FFh

删除文件

202h

读取文件。如果文件太大,可以使用cmd 20Ch 停止异步读取操作

205h

重新连接

208h

设置睡眠时间(以毫秒为单位)

209h

关闭网络并退出

20Ah

退出

20Bh

杀死交互式 shell(使用 cmd 1F4h 创建)

20Ch

终止文件读取操作(以cmd 202h开头)

217h

无操作

21Bh

打开与所提供主机的代理连接。最多支持50个同步连接

21Ch

将数据发送到代理连接

21Eh

关闭所有代理连接

21Fh

关闭请求的代理连接

RAT 支持的命令列表

结论

对MysterySnail RAT的分析帮助我们发现了使用该恶意软件的其它变体的活动,并研究和记录了在六个月内对该工具进行的代码修改,除了利用CVE-2021-40449 Win32k权限提升漏洞外,关于这些变体和活动的更多信息包含在我们的私人报告中。

在卡巴斯基威胁归因引擎 (KTAE) 和 MysterySnail RAT 早期变体的发现的帮助下,我们发现该攻击中使用的恶意软件的直接代码和功能与 IronHusky 攻击者的恶意软件重叠,此外,我们还发现与2012 年的 APT 攻击中使用的 C2 地址重用,这一发现将 IronHusky 与一些较早的已知活动联系起来。

卡巴斯基产品检测到CVE-2021-40449漏洞利用和相关恶意软件的结果如下:

  • PDM:Exploit.Win32.Generic

  • PDM:Trojan.Win32.Generic

  • Trojan.Win64.Agent*

卡巴斯基产品在行为检测引擎和漏洞利用防护组件的帮助下检测到这些攻击。CVE-2021-40449 是在我们的技术的帮助下在野发现的众多0 day漏洞列表中的最新成员。我们将通过增强技术并与第三方供应商合作修复漏洞,为我们的用户提高防御能力,使每个人的网络都更加安全。

通用安全建议

  • 非必要时,不要将远程桌面服务(如RDP)或SSH暴露在公共网络中,并始终对其使用强密码。

  • 实施网络分段,在网段之间应用强大的防火墙和 IPS 保护措施,以控制恶意软件在整个网络中传播。

  • 将防御策略集中在检测横向移动和数据渗出到互联网上,要特别注意传出的流量,以检测网络犯罪的连接。

  • 定期使用3-2-1规则备份重要文件:以两种不同的文件格式创建三个备份副本,其中一个备份位于单独的位置。

  • 确保系统、VPN或应用程序始终是最新的,并对可疑邮件的附件和链接保持警惕,因为它们是攻击者进入系统或执行命令的常见方式之一。

  • 对所有端点部署终端保护。

  • 使用最新的威胁情报信息,以实时了解攻击者所使用的TTP。

  • 为了保护公司网络和系统环境,可以对员工进行安全培训,专门的培训课程可以提供帮助。

IoCs

www[.]disktest[.]com

www[.]runblerx[.]com

http[.]ddspadus[.]com

MD5e2f2d2832da0facbd716d6ad298073ca

SHA1ecdec44d3ce31532d9831b139ea04bf48cde9090

SHA256

b7fb3623e31fb36fc3d3a4d99829e42910cad4da4fa7429a2d99a838e004366e

原文链接:

https://securelist.com/mysterysnail-attacks-with-windows-zero-day/104509/

声明:本文来自维他命安全,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。