1. 极安网首页
  2. 网络安全技术

MosaicRegressor:潜伏在UEFI中的漏洞

UEFI 的全称为统一可扩展固件接口 ( Unified Extensible Firmware Interface ) ,已嵌入到现代设备系统的指定芯片中,它可以替代旧版 BIOS,通常用于简化设备的启动顺序并加载操作系统,同时使用功能丰富的环境来完成此操作。同时,它已成为攻击者进行异常持久攻击的目标。

研究人员在其中发现了包含恶意植入的受感染 UEFI 固件映像,这种植入是在受害设备上部署其他恶意软件的一种手段,到目前为止,研究人员还没有遇到过这种恶意软件。据研究人员所知,这是第二个已知的公开案例,其中普遍发现了攻击者正在使用的恶意 UEFI 固件。

在本文中,研究人员将详细说明以下主要发现:

1. 研究人员发现恶意 UEFI 固件映像已从其良性副本进行了修改,以合并几个恶意模块;

2. 这些模块用于将恶意软件传播到受害者设备上。该恶意软件是研究人员称为 MosaicRegressor 的更广泛的恶意框架的一部分;

3. 该框架的组成部分是在针对非洲、亚洲和欧洲的外交官和一个非政府组织成员的一系列针对性攻击中发现的,这些攻击者与朝鲜的活动均显示出联系。

4. 攻击活动中使用的某些框架组件中的代码伪造以及 C&C 基础结构中的重叠部分表明,这些攻击可能与使用 Winnti 后门的组织有联系;

此次攻击是在固件扫描器的帮助下发现的,该扫描器自 2019 年初以来已集成到卡巴斯基的产品中。这项技术是专门用来检测隐藏在 ROM BIOS 中的攻击的,包括 UEFI 固件镜像。

UEFI 是构成低级平台固件的结构和操作的规范,以便允许操作系统在其活动的各个阶段与其进行交互。

这种交互在引导阶段最为明显,在这个阶段 UEFI 固件促进了操作系统本身的加载。也就是说,它也可能发生在操作系统已经启动并运行时,例如为了通过定义明确的软件接口更新固件。

综上所述,UEFI 固件为恶意软件的持久存储提供了一个完善的机制。老练的攻击者可以修改固件,使其部署恶意代码,在操作系统加载后运行。此外,由于通常是将 SPI 闪存存储在焊接到设备主板的 SPI 闪存中,因此植入的恶意软件将无法重新安装系统或更换硬盘驱动器。

在过去的几年中,这种攻击已经发生了好几次。一个突出的例子是研究人员的朋友在 ESET 于 2018 年发现的 LowJax 植入,其中 LoJack 防盗软件(也称为 Computrace)的修补 UEFI 模块被用于在多个 Sofacy Fancy 中部署恶意用户模式代理。另一个示例是一个名为 VectorEDK 的 UEFI 引导工具的源代码,该代码在 2015 年的黑客团队泄漏中被发现。该代码由一组 UEFI 模块组成,可以将这些模块合并到平台固件中,以便将后门部署到系统中它将在操作系统加载时运行,或在被删除后重新部署。尽管 VectorEDK 的代码已公开并可以在如今的 Github 中找到,但在研究人员最新发现之前,研究人员还没有亲眼目睹它的真实证据。

漏洞发现过程

在调查过程中,研究人员遇到了几个可疑的 UEFI 固件映像。更深入的检查显示,它们包含四个组件,这些组件在其分配的 GUID 值中异常接近,分别是两个 DXE 驱动程序和两个 UEFI 应用程序。经过进一步分析,研究人员能够确定它们是基于 HackingTeam 的 VectorEDK 引导程序泄漏的源代码。

MosaicRegressor:潜伏在UEFI中的漏洞-极安网

受攻击的 UEFI 固件中包含恶意组件

这些添加的模块的目的是调用一系列事件,这些事件将导致将名为 "IntelUpdate.exe" 的恶意可执行文件写入受害者的 Startup 文件夹。因此,当 Windows 启动时,编写的恶意软件也会被调用。除此之外,模块将确保如果恶意软件文件被从磁盘上删除,它将被重写。由于该逻辑是从 SPI 闪存执行的,因此除了删除恶意固件之外,没有其他方法可以避免此过程。

以下是研究人员揭示的组件的概述:

SmmInterfaceBase:一个 DXE 驱动程序,基于黑客团队的 "rkloader" 组件,旨在部署 bootkit 的其他组件以供以后执行。这是通过注册一个回调来实现的,该回调将在 EFI_EVENT_GROUP_READY_TO_BOOT 类型的事件上调用。事件发生在可以将控制权传递给操作系统的引导加载程序时,有效地允许回调在它之前生效。回调将依次加载并调用 "SmmAccessSub" 组件。

Ntfs:由黑客团队编写的驱动程序,用于检测和解析 NTFS 文件系统,以便允许在磁盘上执行文件和目录操作。

SmmReset:将固件映像标记为感染的 UEFI 应用程序,这是通过将名为 "fTA" 的变量的值设置为硬编码的 GUID 来实现的。该应用程序基于名为 "ReSetfTA" 的原始 Vector-EDK 代码库中的组件。

使用预定义的 GUID 设置 fTA 变量以标记 bootkit 的执行

SmmAccessSub:主要的一个 bootkit 组件,可作为用户模式恶意软件的永久 dropper。它由在 "SmmInterfaceBase" 执行期间注册的回调执行,并负责将嵌入其中的二进制文件作为名为 "IntelUpdate.exe" 的文件写入磁盘上的启动目录。这允许二进制文件在 Windows 启动并运行时执行。

这是研究人员所检查的组件中唯一的专有组件,该组件主要是从头开始编写的,只使用了 Vector-EDK 应用程序名为 "fsbg" 的代码。它执行以下操作以将所需文件拖放到磁盘:

1. 用于 SystemTable、BootServices 和 RuntimeServices 全局结构的引导指针。

2. 尝试通过使用 EFI_LOADED_IMAGE_PROTOCOL_GUID 参数调用 HandleProtocol 方法来获取当前加载的图像的句柄。

3. 如果获得了当前映像的句柄,则模块将枚举所有驱动器并检查其中是否存在 " Windows System32" 目录,以尝试找到安装 Windows 的根驱动器。此时将创建一个与驱动器相对应的全局 EFI_FILE_PROTOCOL 对象,并将其引用以打开该驱动器中的所有其他目录或文件。

4. 如果在上一阶段找到了根驱动器,则该模块会在 Windows 目录下查找名为 "setupinf.log" 的标记文件,并且仅在不存在时继续运行。在没有此文件的情况下,将创建它。

5. 如果成功创建 "setupinf.log",则该模块将继续检查 " 用户 " 目录是否在同一驱动器下。

6. 如果 " 用户 " 目录存在,它将在根驱动器的 "ProgramDataMicrosoftWindowsStart MenuProgramsStartup" 目录下写入 "IntelUpdate.exe" 文件(嵌入在 UEFI 应用程序的二进制文件中)。

MosaicRegressor:潜伏在UEFI中的漏洞-极安网

本文转载:securelist.com&嘶吼,不代表 极安网 立场,转载请注明出处:https://www.secvery.com/3832.html