ESET Research 发现了首个专为 Linux 系统设计的 UEFI 引导工具包,其创建者将其命名为 Bootkitty。研究人员认为,这个引导工具包很可能只是一个初步的概念验证,根据 ESET 的遥测技术,它还没有在野外部署过。
Bootkitty 执行概述(来源:ESET)
然而,这是 UEFI bootkit 不再局限于 Windows 系统的第一个证据。该引导工具包的主要目标是禁用内核的签名验证功能,并通过 Linux “init ”进程(Linux 内核在系统启动时执行的第一个进程)预加载两个未知的 ELF 二进制文件。
此前未知的 UEFI 应用程序名为 “bootkit.efi”,已被上传到 VirusTotal。Bootkitty 由自签名证书签名,因此无法在默认启用 UEFI 安全启动的系统上运行。不过,无论是否启用 UEFI 安全启动,Bootkitty 都能无缝启动 Linux 内核,因为它在内存中修补了负责完整性验证的必要功能。
Bootkitty 是一种先进的 rootkit,能够替换引导加载器,并在执行内核前打补丁。Bootkitty 允许攻击者完全控制受影响的计算机,因为它可以控制计算机的启动过程,并在操作系统启动之前执行恶意软件。
在分析过程中,ESET发现了一个可能相关的无签名内核模块,ESET将其命名为BCDropper,有迹象表明它可能是由Bootkitty的同一作者开发的。它部署了一个ELF二进制文件,负责加载另一个在分析时未知的内核模块。
“Bootkitty包含许多人工制品,这表明它更像是一个概念验证,而非威胁行为者的作品。”分析 Bootkitty 的 ESET 研究员 Martin Smolár 说:“尽管 VirusTotal 的当前版本目前还不能对大多数 Linux 系统构成真正的威胁,因为它只能影响几个 Ubuntu 版本,但它强调了为未来潜在威胁做好准备的必要性。”他补充说:“为了保证 Linux 系统免受此类威胁,请确保 UEFI 安全启动已启用,系统固件、安全软件和操作系统都是最新的,UEFI 撤销列表也是最新的。”
在 ESET 测试环境中用 Bootkitty 启动系统后,研究人员注意到内核被标记为污点(可使用命令检查污点值),而没有 Bootkitty 时则没有这种情况。在启用 UEFI 安全启动的系统中,判断引导工具包是否存在的另一种方法是在运行时尝试加载未签名的虚假内核模块。如果存在,模块将被加载;如果不存在,内核将拒绝加载。当 Bootkit 被部署为“/EFI/ubuntu/grubx64.efi ”时,摆脱 Bootkit 的简单方法是将合法的“/EFI/ubuntu/grubx64-real.efi ”文件移回其原始位置,即“/EFI/ubuntu/grubx64.efi”。
在过去的几年里,UEFI 威胁,尤其是 UEFI 引导程序的威胁,已经发生了很大的变化。这一切都始于 Andrea Allievi 在 2012 年描述的首个 UEFI 引导工具包概念验证(PoC),它是在基于 UEFI 的现代 Windows 系统上部署引导工具包的演示,之后又有许多其他 PoC(EfiGuard、Boot Backdoor、UEFI-bootkit)。
几年后,人们才在野外发现了前两个真正的 UEFI 引导工具包(其中一个是 ESET 于 2021 年发现的 ESPecter),又过了两年,臭名昭著的 BlackLotus(第一个能在最新系统上绕过 UEFI 安全引导的 UEFI 引导工具包)才出现(ESET 于 2023 年发现)。这些公开的引导工具包有一个共同点,即它们都专门针对 Windows 系统。