最后更新于2024年2月29日星期四17:32:12 GMT

UEFI威胁在历史上数量有限,并且主要由国家行为者隐形持续实施. However, 最近黑莲花在暗网上的扩散, Trickbot enumeration module (late 2022), 和Glupteba(2023年11月)表明这一历史趋势可能正在改变.

With this context, 对于安全从业者来说,了解可见性和收集功能变得越来越重要 UEFI threats. 这篇文章涵盖了其中的一些领域,并介绍了几个最近可以在这个领域使用的迅猛龙神器. Rapid7 has also released a white paper providing detailed information 关于UEFI恶意软件的工作原理和一些最常见的类型.

Background

Unified Extensible Firmware Interface, or UEFI, 是系统硬件和操作系统(OS)之间的接口。. 该技术可以看作是BIOS功能的更新,以改进和增加引导过程的安全性.

The two main types of UEFI persistence are:

  1. Serial Peripheral Interface (SPI) based
  • 固件有效载荷植入,甚至对硬盘格式也有弹性.
  • 难以实现——如果固件有错误,实现和潜在的阻塞机器有风险.
  • 难以大规模检测-防御者需要提取固件,通常需要签名驱动程序, then running tools for analysis.
  • Typically an analyst would dump firmware, 然后提取变量和其他有趣的文件(如pe)进行深入分析.

2. EFI System Partition (ESP) based

  • 一种特殊的FAT分区,用于存储引导加载程序,并位于EFI引导过程的后期.
  • 更容易实现,只需要root权限和绕过安全引导.
  • Does not survive a machine format.

EFI Secure Variables API visibility

EFI安全变量(或称为NVRAM)是系统在引导期间如何从固件分发组件. From an analysis point of view, 而倾销固件是困难的,需要手动工作流程, 所有操作系统都提供来自用户空间的可见性. This blog will discuss the Windows API; however, for reference Linux and macOS provides similar data.

GetFirmwareEnvironmentVariable (Windows) 可以收集EFI安全变量的名称、命名空间指南和值吗. 此集合可用于检查当前状态,包括密钥/签名数据库和撤销.

它可以提取的一些数据点有:

  • Platform Key (PK) — top level key.
  • 密钥交换密钥(KEK) -用于签名数据库和禁止签名数据库更新.
  • 签名数据库(db) -包含允许的EFI二进制文件的密钥和/或哈希值.
  • 禁止签名数据库(dbx) -包含拒绝列出的EFI二进制文件的键和/或哈希值.
  • Other boot configuration settings.

值得注意的是,这种技术依赖于Windows API,可能会被恶意软件破坏, 但是可见性可以为分析人员提供有关引导配置或签名的线索. 也有“仅引导”NVRAM变量,不能在引导外访问, 所以需要手动收集芯片转储.

Example of extracting EFI secure variables

迅猛龙拥有社区贡献的能力: Generic.System.EfiSignatures. 该构件从客户端收集EFI Signature信息,以检查未知的证书和已撤销的散列. 对于跨机器的数据堆叠来说,这是一个很好的工件,它是通过解析来自的数据值构建的 efivariables() plugin.

EFI System Partition (ESP) visibility

ESP是一个FAT分区文件系统,其中包含引导加载程序和引导过程中使用的其他不定期更改的关键文件. 因此,使用取证来发现异常可能是一项相对简单的任务.

For example, 解析文件分配表,我们可以查看围绕路径的元数据, timestamps, 和删除状态,可能为分析提供线索.

Viewing FAT metadata on *.EFI files

在上面的截图中,我们观察到几个EFI引导加载程序文件的时间戳不对齐. 我们通常期望这些文件在操作系统安装前后具有相同的时间戳. 我们还可以在这些条目的时间范围内观察到已删除的文件和System32文件夹的存在.


EFI/文件夹应该是ESP根目录中唯一的文件夹,以便查询任何不以 EFI/ is a great hunt that detects our lead above. You can see in my screenshot below, BlackLotus阶段将冒泡到顶部,并为此用例添加过滤.

BlackLotus staging: Non ESP/ files

Interestingly, 众所周知,BlackLotus使用了Baton Drop漏洞,因此我们可以将其与公开可用的Baton Drop进行比较,并观察ESP上删除文件的相似之处.

在Github上公开可用的Baton Drop iso内容

基于esp可见性的最后一个组成部分是检查文件内容的字节数. 我们可以运行YARA来查找已知的恶意软件特征, 或者获取可以为分析提供线索的其他文件类型元数据. 下面的截图突出了众所周知的黑莲花证书信息和PE头时间戳.

BlackLotus PE头,可疑的Authenticode
BlackLotus YARA hit in ESP

可用于ESP可见性的迅猛龙工件有:

  1. Windows.Forensics.UEFI -该工件支持通过EFI系统分区(ESP)进行磁盘分析. 工件查询指定的物理磁盘, 解析分区表以针对ESP文件分配表(FAT). 工件返回文件信息,PE丰富作为典型的EFI文件是PE格式的.
  2. Windows.Detection.Yara.UEFI 该构件扩展了ESP的基本枚举,并支持在EFI系统分区上运行yara.

Measured Boot log visibility

引导包安全一直是一场“逐底竞赛”.“如果恶意软件可以在安全工具之前加载, 防御者需要假设他们可能会被打败. Since Windows 8, 测量引导是一个功能实现,以帮助保护机器免受早期启动恶意软件. Measured Boot检查每个启动组件——从固件到启动驱动程序——并将此信息存储在可信平台模块(TPM)中。. 然后提供一个二进制日志来验证机器的引导状态. The default Measured Boot log location is C:\Windows\Logs\MeasuredBoot\*.log and a new file is recorded for each boot.

Windows.Forensics.UEFI.BootApplication 解析Windows MeasuredBoot TCGLogs以提取事件的PathName, 它可以帮助检测潜在的基于ESP的持久性(EV_EFI_Boot_Services_Application). 该工件利用Velociraptor工具来部署和执行Matt Graeber出色的powershell模块 TCGLogTools to parse TCGLogs on disk and memory.

我们可以看到,在受感染的机器上运行时,BOOT应用程序路径已经明显从默认路径\EFI\Microsoft\ BOOT \bootmgfw改变了.efi. 因此,Boot Application是一个可以跨网络堆叠的字段.

我们还可以输出扩展值,包括用于验证的摘要哈希值.

Other forensic artifacts

分析人员可以关注许多其他通用的取证工件来帮助检测UEFI威胁. 从恶意软件网络活动到与计算机上的防病毒/安全工具相关的事件日志中的意外错误.

例如:BlackLotus通过更改Windows Defender访问令牌来逃避检测 SE_PRIVILEGE_REMOVED. 这种技术保持了Defender服务的运行,但有效地禁用了它. 而Velociraptor可能没有受保护的进程特权来直接检查令牌, 我们可以检查其他指标,例如与使用相关的错误.


HVCI (Memory integrity)是Windows系统中VBS的一个特性. 它通过隔离和内核内存分配提供了更强大的虚拟化环境.该功能与安全启动相关,对于需要较低完整性环境才能运行的恶意软件,可以禁用该功能. 它需要将配置注册表项值设置为0.

HKLM \ SYSTEM \ CurrentControlSet \ \ HypervisorEnforcedCodeIntegrity \ \ DeviceGuard \场景控制

0 - disabled

1 - enabled
Windows.Registry.HVCI 可用的工件交换可以用来查询这个键值.

Conclusion

尽管UEFI威胁具有恐吓能力, 安全从业者可以使用当前工具部署一些可见性,用于远程调查. 法医解析磁盘,不依赖于Windows API, 或者审查其他可能表明妥协的系统指标, 是否有一种实用的方法来检测这些威胁的组成部分. Knowing collection capabilities, the gaps, 如何减轻这些威胁与了解威胁同样重要.

在这篇文章中,我们已经介绍了一些Velociraptor对UEFI威胁的可见性,对于那些了解其环境并可以有效查询它的人,我们只触及了表面. Rapid7 supports Velociraptor open source, 为社区提供Velociraptor和一些付费工具无法提供的开源特性.

References:

  1. ESET, Martin Smolar - BlackLotus UEFI引导套件:流言被证实
  2. 微软事件响应-使用CVE-2022-21894调查攻击的指南:BlackLotus活动
  3. Trellix Insights: TrickBot提供新的TrickBoot
  4. 第42单元:潜入Glupteba的UEFI引导工具包
  5. Sentinel1:从关于uefi的常识到实际转储uefi固件