导语:根据相关发现,研究人员继续调查了更新的 PurpleFox 武器库,其中包括一个增加的漏洞(CVE-2021-1732)和优化的rootkit功能,攻击者就是利用它们进行攻击。
2021 年 9 月,趋势科技 Managed XDR (MDR) 团队调查了与 PurpleFox 运营商相关的可疑攻击活动。根据相关发现,研究人员继续调查了更新的 PurpleFox 武器库,其中包括一个增加的漏洞(CVE-2021-1732)和优化的rootkit功能,攻击者就是利用它们进行攻击。
研究人员还发现在攻击过程中植入了一个用 .NET 编写的新后门,研究人员认为这与 PurpleFox 高度相关。这个后门,研究人员称之为 FoxSocket,利用 WebSockets 与其命令和控制 (C&C) 服务器进行通信,与常规 HTTP 流量相比,产生了一种更强大和更安全的通信方式。
研究人员认为,这种特殊威胁目前针对的是中东用户。研究人员首先通过该地区的客户遇到了这种威胁。
在这篇文章中,研究人员描述了对初始 PurpleFox 有效载荷的一些观察到的修改,以及新植入的 .NET 后门和为其功能提供服务的 C2 基础设施。
PurpleFox技术分析
PowerShell
该活动从执行以下任一 PowerShell 命令开始:
这些命令从托管在多个受感染服务器上的指定 URL 下载恶意载荷。这些服务器是 PurpleFox 僵尸网络的一部分,其中大部分位于中国:
PurpleFox 服务器的位置
获取的有效载荷是一个由三个组件组成的长脚本:
Tater (Hot Potato – 权限升级);
PowerSploit;
嵌入式漏洞利用包二进制文件(权限升级);
该脚本针对 64 位架构系统。它首先检查 Windows 版本并针对它所针对的漏洞应用修补程序。
Windows 7/Windows Server 2008CVE-2020-1054 (KB4556836, KB4556843)CVE-2019-0808 (KB4489878, KB4489885, KB2882822)Windows 8/Windows Server 2012CVE-2019-1458 (KB4530702, KB4530730)Windows 10/Windows Server 2019CVE-2021-1732 (KB4601354, KB4601345, KB4601315, KB4601319)
选择适当的漏洞后,它使用 PowerSploit 模块以反射的方式加载嵌入的漏洞利用包二进制文件,其中包含目标漏洞和 MSI 命令作为参数。开始攻击时,它使用 Tater 模块来启动 MSI 命令。
目标是在没有任何用户交互的情况下以管理员身份安装 MSI 包。
MSI包
MSI 软件包首先删除以下注册表项,这些注册表项是旧的 Purple Fox 安装(如果存在):
HKLM\SYSTEM\CurrentControlSet\Services\{ac00-ac10}
然后将 Purple Fox 后门的组件(dbcode21mk.log 和 setupact64.log)安装到 Windows 目录。然后,它在“HKLM\SYSTEM\CurrentControlSet\Control\Session Manager”项下设置两个注册表值:
allowprotectedrename为0x1
将PendingFileRenameOperations设置为以下操作:
这些命令将 sens.dll 移动到 C:\Windows\AppPatch\Acpsens.dll 并将其替换为已安装的文件 setupact64.log。
MSI 程序包然后运行一个 .vbs 脚本,该脚本创建 Windows 防火墙规则以阻止端口 135、139 和 445 上的传入连接。作为最后一步,系统重新启动以允许 PendingFileRenameOperations 发生,替换 sens.dll后,后者将使恶意软件作为系统事件通知服务 (SENS) 运行。
PurpleFox 后门
安装的恶意软件是一个受 VMProtect 保护的 .dll 文件,使用 MSI 包安装的其他数据文件,它解包并手动加载不同的 DLL 以实现其功能。它还有一个 Rootkit 驱动程序,它也从数据文件中解压出来,用于隐藏其文件、注册表项和进程。该示例首先将自身复制到另一个文件并安装新服务,然后恢复原始 sens.dll 文件。之后,它加载驱动程序以隐藏其文件和注册表,然后生成并注入一系列 32 位进程以将其代码模块注入其中,因为它们是 32 位 DLL。
PurpleFox 安装过程
WebSocket 后门
首次传播
检索此后门的初始活动是在之前 PurpleFox 对同一台受感染服务器的攻击尝试三天后捕获的。 Trend Micro Vision One™ 平台标记了以下可疑的 PowerShell 命令:
针对 PowerShell 命令的 Trend Micro Vision One 警报
研究人员分析了托管在 URL 上的载荷,这些载荷是 185[.]112.144.245/a/[1-9] 的变体,发现它们都提供了另一个 PowerShell 脚本的两个变体,该脚本充当了.NET 后门。
有效载荷的内容
两个观察到的 PowerShell 脚本之间的区别在于 Base64 编码的数据,该数据作为参数传递给从 185[.]112[.]144[.]45/a/data 下载的 .NET 示例,并最终使用此配置调用范围。研究人员发现使用了两个不同的配置参数:研究人员在 8 月 26 日观察到第一个,在 8 月 30 日观察到第二个嵌入了更多域。解码后的 Base64 编码配置参数如下图所示:
8月 26 日配置
8月 30 日配置
.NET 初始化例程将使用这些配置参数来选择 C&C 服务器并为 C&C 通道初始化加密函数。除了配置之外,有效载荷本身是从 185.112.144[.]45/a/data 检索的。研究人员还发现了一些可追溯到 6 月 22 日的旧变体,它们的功能比最近的变体要少。
在部署此后门的最早迭代版本中,与恶意域 advb9fyxlf2v[.]com 的创建数据保持一致,与最近的版本相比,配置参数具有最少数量的子域来联系 C&C 服务器。
后门配置
.NET 后门混淆
让研究人员从 SQL 服务器上的后门开始分析,反编译的时候会输出一些混淆的符号,虽然大部分都无法恢复原样。对于基本的静态分析,仅仅使它们成为人类可读的信息就足够了。有时,可以恢复一些原始名称。
清理过的类和方法名称
研究人员在恶意软件中很少看到的一个利用WebSocket与C&C服务器通信的显着特征,在受感染的客户端和服务器之间建立有效的双向通道。
WebSocket是一种通信技术,它支持数据流在客户机和服务器之间通过一个TCP会话进行交换。这与传统的请求或响应协议(如HTTP)不同。这为攻击者提供了一个比HTTP请求和响应流量更隐蔽的替代方案,这为更隐蔽的渗漏创造了机会,从而降低了被检测到的可能性。
传统(左)和 WebSocket 技术(右)
它初始化与 C&C 服务器的 WebSocket 通信,并通过发送 keepalive 消息来保持 TCP 连接保持打开状态。一旦建立,受感染的设备和选定的C&C服务器之间将交换一系列双向消息,以协商会话加密密钥。
客户端和服务器之间的 TCP/IP 交换
执行首先初始化WebSocket,并注册四个回调函数作为WebSocket事件的处理程序。
函数用于注册回调函数
其中一个相关的回调是 onOpen,它会在第一次触发 WebSocket 对象时初始化 C&C 通道加密参数。如下一节所示,这主要是为了实现与 C&C 服务器的第一个 Diffie-Hellman (DH) 密钥交换消息。另一方面,在建立安全通信通道和更新会话加密密钥后,onReceive 处理程序将处理和发送从服务器接收到的所有命令。
密钥协商
与 C&C 服务器的第一次密钥交换由 onOpen 回调注册函数执行,如图 11 所示。
onOpen 函数
它使用一些参数初始化 EC DH 对象以启动共享密钥协商。然后将 ECDiffieHellmanKeyDerivationFunction 属性设置为 Hash。此属性用于指定 ECDiffieHellmanCng 类将使用的密钥派生函数将秘钥协议转换为密钥材料,因此使用哈希算法生成密钥材料而不是 HMAC 或 TLS。
之后,客户端将尝试发送属性 PublicKey,该属性将在 C&C 端在另一个 ECDiffieHellmanCng 对象上使用以生成共享秘钥协议。最终,这些数据将作为第一个密钥交换消息在 WebSocket 上发送。但是,客户端不会以明文形式发送它,而是为第一次交换通过 WebSocket 的任何通信部署对称 AES 加密,因为尚未建立共享秘钥,并且 AES 加密将为第一次交换生成默认密钥。
AES 加密密钥的函数和代码
这将导致密钥协商消息使用显示的参数和一个虚拟密钥(111….11)[32] 在以下调试会话中使用 AES 加密,该虚拟密钥命名为 byte_0,并使用固定长度为 176 字节的实际 AES 密文。
密钥交换消息的结构
176 个加密字节是将通过 WebSocket 发送的实际数据,它标志着第一个密钥交换消息的结束。
第二次交换(将C&C发送到受害者设备)
第二个密钥交换消息从服务器发送到将由 onReceive 函数处理的客户端。执行由消息处理程序调用。
调用 onReceive 函数
这种 AES 加密的第二次交换具有 304 字节的固定长度。
传入消息内容
然后它检查这个传入消息是否与控制平面密钥建立或只是一个普通的数据命令有关。
如果与前者有关,则第一步是在 C2 通道上解密对称加密,然后通过将执行交给 ECDH 推导函数 method_7 来完成共享秘钥的生成。
切换到 method_7 函数
客户端将通过加载从上一节中显示的配置有效载荷加载的 RSA 公钥来验证签名消息。如果签名被正确验证,密钥材料将从DH交换中派生出来,并将保存为永久对称 AES 加密密钥(Symmetric_AES_key 变量),只要 WebSocket 通道处于活动状态,就会使用该密钥。
method_7 函数
第三次交换(C&C 的受害者)
一旦通过 WebSocket 建立了有效的加密会话,客户端将通过提取特定数据(包括用户名、设备名称、本地 IP、MAC 地址和 Windows 版本)对设备进行指纹识别,并将通过安全通道转发这些数据,以便在服务器端对受害者进行剖析。这是WebSocket通道完全建立之前的最后一次交换。然后它将侦听进一步的命令,这将在下一节中介绍。
由于收集的指纹数据在不同的执行环境中是不同的,因此该消息的长度也会有所不同。根据分析,新生成的共享密钥有 240 个字节。
新生成的密钥
只要用前面显示的keepalive消息维护WebSocket,操作符就可以发出要执行的任何命令的信号,因此接下来发生的事情主要取决于操作符的目标和实际动机。
WebSocket 命令
在本节中,研究人员将介绍一些观察到的来自服务器的命令。在命令编号和支持的功能方面,变体之间存在一些细微差别。
所有命令的处理都在主调度例程中完成(除了用于密钥协商或重新协商的命令 160)。
命令列表
WebSocket C&C 基础设施
在撰写本文时,有几个活动的 C&C 服务器控制 WebSocket 客户端。通过分析受感染目标并通过发送的不同命令进行交互,研究人员列出了在 PowerShell 下载程序中发现的观察到的 IP 地址和注册域以及后门配置参数。
WebSocket C&C serverip地址描述ASN活动
后门从配置数据中随机选择一个子域并尝试通过 WebSockets 进行连接。如果在端口 12345 上连接失败,它将尝试解析另一个子域。
随机 C&C 服务器
这些服务器使用的主域 advb9fyxlf2v[.]com主要用于平衡跨多个活动服务器的载荷,于 2021 年 6 月 17 日注册,就在第一个观察到的变体的几天内 。
总结
PurpleFox 的 Rootkit 功能使其更有能力以更隐蔽的方式攻击其目标。它们允许 PurpleFox 在受影响的系统上持续存在,并向受影响的系统提供更多有效载荷。研究人员仍在监控这些新变种及其传播的有效载荷。研究人员目前正在密切监视新的 .NET WebSocket 后门(称为 FoxSocket,研究人员将其检测为 Backdoor.MSIL.PURPLEFOX.AA)。
本文翻译自:https://www.trendmicro.com/en_us/research/21/j/purplefox-adds-new-backdoor-that-uses-websockets.html如若转载,请注明原文地址