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

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

在这样的背景下, 对于安全从业者来说,了解可见性和收集功能变得越来越重要 UEFI威胁. 这篇文章涵盖了其中的一些领域,并介绍了几个最近可以在这个领域使用的迅猛龙神器. Rapid7也发布了一个 白皮书提供详细信息 关于UEFI恶意软件的工作原理和一些最常见的类型.

Background

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

UEFI持久性的两种主要类型是:

  1. 基于串行外设接口(SPI)
  • 固件有效载荷植入,甚至对硬盘格式也有弹性.
  • 难以实现——如果固件有错误,实现和潜在的阻塞机器有风险.
  • 难以大规模检测-防御者需要提取固件,通常需要签名驱动程序, 然后运行工具进行分析.
  • 通常,分析师会转储固件, 然后提取变量和其他有趣的文件(如pe)进行深入分析.

2. EFI基于系统分区(ESP)

  • 一种特殊的FAT分区,用于存储引导加载程序,并位于EFI引导过程的后期.
  • 更容易实现,只需要root权限和绕过安全引导.
  • 不能保存在机器格式中.

EFI安全变量API可见性

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

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

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

  • 平台键(PK) -顶层键.
  • 密钥交换密钥(KEK) -用于签名数据库和禁止签名数据库更新.
  • 签名数据库(db) -包含允许的EFI二进制文件的密钥和/或哈希值.
  • 禁止签名数据库(dbx) -包含拒绝列出的EFI二进制文件的键和/或哈希值.
  • 其他启动配置设置.

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

使用实例提取EFI安全变量

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

EFI系统分区(ESP)可见性

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

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

在*上查看FAT元数据.EFI文件

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


EFI/文件夹应该是ESP根目录中唯一的文件夹,以便查询任何不以 EFI/ 能探测到我们在上面的线索的是伟大的狩猎吗. 你可以从我下面的截图中看到, BlackLotus阶段将冒泡到顶部,并为此用例添加过滤.

BlackLotus staging:非ESP/文件

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

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

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

BlackLotus PE头,可疑的Authenticode
黑莲花YARA击中ESP

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

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

测量的引导日志可见性

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

窗户。.取证.UEFI.BootApplication 解析窗户。 MeasuredBoot TCGLogs以提取事件的PathName, 它可以帮助检测潜在的基于ESP的持久性(EV_EFI_Boot_服务_Application). 该工件利用伶盗龙工具来部署和执行Matt Graeber出色的powershell模块 TCGLogTools 解析磁盘和内存上的tcglog.

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

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

其他法医文物

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

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


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

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

0 -禁用

1 -启用
窗户。.注册表.HVCI 可用的工件交换可以用来查询这个键值.

结论

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

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

引用:

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