研究人员发现了首个专门针对Linux系统UEFI引导程序恶意软件,这标志着以前专注于Windows的隐蔽且难以清除的引导程序威胁发生了转变。
这款名为“Bootkitty”的Linux恶意软件是一个概念验证,仅在某些Ubuntu版本和配置上有效,而不是实际攻击中部署的完全成熟的威胁。引导程序恶意软件旨在感染计算机的启动过程,在操作系统加载之前运行,从而允许其在非常低的级别上控制系统。
这种做法的优势在于,引导程序可以规避在操作系统级别运行的安全工具,并修改系统组件或注入恶意代码而不被检测到。发现Bootkitty的ESET研究人员警告说,尽管目前对现实世界的影响有限,但它的存在是UEFI引导程序威胁领域的一个重要演变。
ESET在2024年11月检查VirusTotal上传的一个可疑文件(bootkit.efi)后发现了Bootkitty。经过分析,ESET确认这是第一个绕过内核签名验证并在系统启动过程中预加载恶意组件的Linux UEFI引导程序案例。
Bootkitty依赖于自签名证书,因此它不会在启用安全启动的系统上执行,只针对某些Ubuntu发行版。此外,硬编码的偏移量和简化的字节模式匹配使其仅适用于特定的GRUB和内核版本,因此不适合广泛部署。
ESET还指出,恶意软件包含许多未使用的功能,并且处理内核版本兼容性不佳,常常导致系统崩溃。
引导程序中包含的ASCII,来源:ESET
恶意软件的缺陷性质以及ESET的遥测数据显示Live系统上没有Bootkitty的迹象,使研究人员得出结论,它处于早期开发阶段。
Bootkitty的能力
在启动过程中,Bootkitty挂钩UEFI安全认证协议(EFI_SECURITY2_ARCH_PROTOCOL和EFI_SECURITY_ARCH_PROTOCOL),以绕过安全启动的完整性验证检查,确保引导程序加载,无论安全策略如何。
接下来,它挂钩各种GRUB函数,如'start_image'和'grub_verifiers_open',以操纵引导加载程序对二进制文件的完整性检查,包括Linux内核,关闭签名验证。
然后,Bootkitty截获Linux内核的解压缩过程,并挂钩'module_sig_check'函数。这迫使它在内核模块检查期间始终返回成功,允许恶意软件加载恶意模块。
此外,它将第一个环境变量替换为'LD_PRELOAD=/opt/injector.so',以便在系统启动时将恶意库注入进程。
Bootkitty执行流程的一部分,来源:ESET
整个过程留下了几个工件,有些是有意的,有些则不是,ESET解释说,这也是Bootkitty缺乏精细化的另一个佐证。研究人员还指出,上传Bootkitty到VT的同一用户还上传了一个名为'BCDropper'的未签名内核模块,但现有证据只能弱弱地将两者联系起来。
BCDropper会释放一个名为'BCObserver'的ELF文件,这是一个具有rootkit功能的内核模块,在受感染的系统上隐藏文件、进程并打开端口。这种类型恶意软件的发现说明了攻击者是如何开发之前仅限于Windows的Linux恶意软件的,因为企业越来越多地采用Linux。
与Bootkitty相关的入侵指标(IoCs)已在此GitHub存储库中共享。
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022