BlackLotus绕过安全启动并使用MOK-2022-21894漏洞
创始人
2025-11-03 09:05:42
0

怎样解除windows阻止无法验证软件发行者_验证解除限制以继续使用该功能_阻止证书错误

验证解除限制以继续使用该功能_怎样解除windows阻止无法验证软件发行者_阻止证书错误

绕过安全启动并构建持久性

在本节中,我们将仔细研究 BlackLotus 如何在支持 UEFISecureBoot 的系统上实现持久性。 由于我们要描述的执行链很复杂,因此我们将首先解释基本原理,然后深入探讨技术细节。

简而言之,该过程包括两个关键步骤:

绕过安全启动功能并在 CVE-2022-21894 的帮助下安装 bootkit。 这允许在初始启动阶段执行任意代码,同时平台仍由固件拥有,并且 UEFI 启动服务功能仍然可用。 这使得攻击者能够在没有数学访问的情况下在支持 UEFI SecureBoot 的设备上执行许多他们不应该执行的操作,例如更改仅用于启动服务的 NVRAM 变量。 这就是攻击者下一步所依赖的来设置 bootkit 的持久性。 持久性是通过将自己的 MOK 写入 MokList 来设置的,Boot 仅提供 NVRAM 变量。 这样,它就可以使用合法的 Microsoft 签名垫片加载其自签名(由写入 MokList 的密钥的公钥签名)UEFI bootkit,而不是在每次启动时都利用该漏洞。 有关这方面的更多信息,请参阅 Bootkit 持久性部分。

为了使接下来两部分的分析更加容易,研究人员将按照执行图(右)所示的步骤进行操作。

验证解除限制以继续使用该功能_怎样解除windows阻止无法验证软件发行者_阻止证书错误

使用 MOK 绕过安全启动并设置持久性

验证解除限制以继续使用该功能_怎样解除windows阻止无法验证软件发行者_阻止证书错误

具有 CVE-2022-21894

为了绕过安全启动,BlackLotus 使用了 batondrop 漏洞 (CVE-2022-21894):安全启动安全功能绕过漏洞。 尽管该漏洞对系统安全影响较大,但并未得到应有的重视。 尽管谷歌在2022年1月的更新中修复了该漏洞,但攻击者仍然可能利用该漏洞,因为受影响的二补码文件尚未添加到UEFI取消列表中。 为此,攻击者可以将自己的易受攻击的二进制补码文件副本带到受害者的设备上,以利用此漏洞并绕过最新 UEFI 系统上的安全启动。

据报道,针对该漏洞的概念验证(PoC)漏洞自 2022 年 8 月以来已公开。考虑到 BlackLotusVirusTotal 首次提交的日期,恶意软件开发人员有可能只是简单地根据自己的需求调整了可用的 PoC,而没有深入了解漏洞的工作原理。

我们先简单介绍一下该漏洞,主要来自GitHub上发布的文章和PoC的要点:

受影响的 Windows 启动应用程序(例如 bootmgr.efi、hvloader.efi、winload.efi...)允许在应用程序加载策略之前使用 truncatememoryBCD 启动选项从视频内存中删除序列化的安全启动策略。

这使得攻击者可以使用其他危险的 BCD 选项(例如 bootdebug、testsigning 或 nointegridchecks)来破坏安全启动。

有多种方法可以利用此漏洞 - 其中三种已在 PoC 存储库中发布。

例如,其中一个 PoC 展示了如何使用它来使合法的 hvloader.efi 加载任意自签名的 mcupdate_

现在,我们继续介绍BlackLotus如何利用该漏洞:

1.安装程序重新启动机器后,UEFI固件将继续加载第一启动选项。 对于 Windows 系统,默认情况下,第一个启动选项是 bootmgfw.efi,位于 ESP 上的 ESP:/efi/Microsoft/boot 文件夹中。 这次,固件没有执行原始受害者的 bootmgfw.efi(安装程序已将其重命名为 winload.efi),而是执行安装程序部署的易受攻击的启动。

2.执行bootmgfw.efi后,会加载BCD启动选项,该选项最初是由安装程序更改的。 右图是合法的BCD和改变后的BCD的对比。

3、如右图所示(红色下划线的路径),合法的WindowsBootManager一般会加载WindowsOS加载程序(\Windows\system32\winload.efi)作为默认启动应用程序。 但这一次,使用更改后的BCD,它继续加载有漏洞的ESP:\ system32 \ bootmgr.efi,防止显存BCD元素被设置为值0x10000000,但custom:22000023BCD指向ESP中存储的另一个漏洞:\system32\BCD 中的 BCD。

怎样解除windows阻止无法验证软件发行者_阻止证书错误_验证解除限制以继续使用该功能

合法 BCD 存储(之前)与 BlackLotus 安装程序使用的存储(之后)的比较

4. 在下一步中,执行的 ESP:\system32\bootmgr.efi 会加载位于 ESP:\system32\BCD 中的附加 BCD。 这个附加BCD的分析内容如右图所示。

验证解除限制以继续使用该功能_怎样解除windows阻止无法验证软件发行者_阻止证书错误

BlackLotus 安装程序删除的第二个 BCD - 用于利用 CVE-2022-21894

5. 由于选项是从上面所示的 BCD 文件加载的,因此 bootmgr.efi 将继续加载安装程序部署的另一个存在漏洞的 Windows 启动应用程序 ESP:\system32\hvloader.efi,即 Windows HypervisorLoader。 此外怎样解除windows阻止无法验证软件发行者,在同一个 BCD 文件中还指定了其他 BCD 选项:

截断内存,值设置为 0x10000000;

nointegridchecks 设置为“是”;

testsigning 也设置为 Yes;

这是当发生意外情况时,因为序列化的安全启动策略应该加载到 0x10000000 以上的数学地址处(由于在上述步骤中使用了voidlowmemory),并且指定 truncatmemory 元素将有效地删除它。 为此,请破坏安全启动并允许危险的 BCD 选项,例如 nointegritychecks 或 testsigning。 通过使用这些选项,攻击者可以导致 hvloader.efi 执行他们自己的自签名代码。

6. 因此,使用本PoC中描述的方法,即在执行过程中,从以下位置加载合法的hvloader.efi

怎样解除windows阻止无法验证软件发行者_验证解除限制以继续使用该功能_阻止证书错误

从合法的hvloader.efi反编译BtLoadUpdateDll函数,负责加载mcupdate_*.dll

7. 现在,当攻击者自己的自签名 mcupdate*.dll 被加载并执行时,它会继续执行链中的最后一个组件 - 嵌入式 MokInstaller(UEFI 应用程序) - 请参阅图 10 以了解它是如何完成的。

阻止证书错误_验证解除限制以继续使用该功能_怎样解除windows阻止无法验证软件发行者

Hex-Rays反编译恶意自签名mcupdate*.dll二进制补码代码

验证解除限制以继续使用该功能_怎样解除windows阻止无法验证软件发行者_阻止证书错误

Bootkit持久化

MokInstaller 现在可以通过将攻击者的 MOK 注册到 NVRAM 变量中并将合法的 Microsoft 签名的补码文件设置为默认引导加载程序来继续设置持久性。

shim 是由 Linux 开发人员开发的第一阶段 UEFI 引导加载程序,使各种 Linux 发行版能够与 UEFISecureBoot 配合使用。 它是一个简单的应用程序怎样解除windows阻止无法验证软件发行者,其目的是加载、验证和执行另一个应用程序,在Linux系统中它通常是GRUB引导加载程序。 它的工作方式是,Google 只需签署一个垫片,垫片就会处理其余的事情,它可以通过使用 dbUEFI 变量中的密钥来验证第二阶段引导加载程序的完整性,并且还可以嵌入自己的“允许”或“取消”密钥或哈希列表,以确保平台和 shim 开发人员(例如 Canonical、RedHat 等)信任的组件被允许执行。 除了这个列表之外,shim还允许使用用户管理的外部密钥数据库,即MOK列表。 该 MOK 数据库存储在名为 MokList 的仅引导 NVRAM 变量中。 在启用 UEFI SecureBoot 的系统上需要进行化学访问才能更改它,而无需诉诸上述漏洞(仅在引导期间可用,在系统加载程序调用 UEFI 引导服务函数 ExitBootServices 之前)。 然而,通过利用此漏洞,攻击者可以绕过 UEFISecureBoot 并在调用 ExitBootServices 之前执行自己的自签名代码,这样他们就可以轻松注册自己的密钥(通过更改 MokListNVRAM 变量),从而允许 shim 执行任何应用程序(签名的应用程序)通过注册密钥)不会导致安全违规。

怎样解除windows阻止无法验证软件发行者_验证解除限制以继续使用该功能_阻止证书错误

MOK启动流程

8. MokInstallerUEFI 应用程序继续为 BlackLotus UEFI bootkit 设置持久性并通过以下方式覆盖跟踪:

8.1 从安装程序创建的备份中恢复受害者的原始 BCD 存储,并将 efi 替换为安装程序最初放置在 ESP:\system32\bootload.efi 中的合法 Microsoft 签名填充程序。

8.2 创建包含攻击者自签名私钥证书的 MokListNVRAM 变量。 请注意,此变量的格式与任何其他 UEFI 签名数据库变量(例如 db 或 dbx)的格式相同,后者可以由零个或多个 EFI_signature_LIST 类型的签名列表组成,如 UEFI 规范中所定义。

8.3 从攻击者的ESP:\system32\文件夹中删除所有参与攻击的文件。

最后,它会重新启动计算机,以便部署的 shim 执行安装程序,从 \EFI\Microsoft\Boot\grub64.EFI 中删除自签名的 bootkit。 grub64.EFI 通常是在 x86-64 系统上执行的默认第二个 shim。 阶段引导加载程序。

验证解除限制以继续使用该功能_阻止证书错误_怎样解除windows阻止无法验证软件发行者

HexRays 反编译代码 - MokInstallerUEFI 应用程序为 BlackLotusbootkit 设置持久性

验证解除限制以继续使用该功能_怎样解除windows阻止无法验证软件发行者_阻止证书错误

BlackLotusUEFI启动套件

配置持久性后,每次系统启动时都会执行 BlackLotusbootkit。 bootkit 的目标是部署内核驱动程序和最终的用户模式组件 - HTTP 下载器。 在执行过程中,它会尝试禁用其他 Windows 安全功能 - 基于虚拟化的安全性 (VBS) 和 Windows Defender - 以增加成功部署和秘密操作的机会。 在详细介绍如何实现之前,我们首先了解一下内核驱动程序和HTTP下载器的基础知识:

内核驱动程序负责:

相关内容

热门资讯

微... 【温馨提醒】:由于近期微信公众号改版,其内容推送严重打乱了时间线。 如果不star+pin的话,基本...
贝... “音乐中的情感表达必须是‘歌唱’,在勾画强弱标记对比时,淡出应该像‘低语’。” 钢琴家贝佐德·阿卜杜...
游... 大家好,我是小蚂蚁蚂蚁金服一直专注于在线转移资金本次分享的项目,认知阅读,学会你也可以割韭菜揭示背景...
信... 软件供应链安全治理日益成为安全行业的焦点话题。 一方面是近年来国家和行业法律法规和标准要求带来的合规...
既... 您的手机上安装了很多看电影的应用程序吗? 电视也有很多直播电视软件吗? 你真的希望有一款不仅可以看电...
巨... 亲爱的Instagram探索者,你还在为每天发帖的繁琐工作而烦恼吗? 现在,就让我们来了解一下一款领...
新... 新中大财务软件SE✚17.0新增四类最新会计系统新中大软件于1993年开始财务软件的研发,经过20多...
新... 【问题】如下图所示,创建项目并进入项目后,审计软件主界面左侧的草稿向导为空。【原因】出现这种情况主要...
今... 今日资源:“更多电视”今天要给大家推荐的这款软件绝对是良心之作。 该软件主要是一款电视直播软件。 难...
中... 2014年,CCF推出CSP认证(Certified Software Professional,软...
如... 前言本文主要介绍如何卸载和删除用友软件,包括如何卸载数据库、彻底删除用友系统、删除安装目录。 本教程...
o... 介绍在 LAMBDASCOPE,我们开发了一款可插拔 OTDR XFP 模块,专为这些新的面向实时监...
社... 随着计算机的普及,计算机已经融入到我们的工作和学习中。 学习离不开电脑,工作也离不开电脑。 为了更好...
程... 每当您决定使用哪个软件或平台来完成日常任务时,都有很多选择。 所以,我决定写一个我们开发部门常用的软...
深... 系统深度更新,欢迎大家升级体验!新版本号规则说明从本次版本发布开始,版本号将采用公司统一命名标准,采...
相... · 禁用设置中的登录和 iCloud 登录。 只需从App Store登录并在下载后立即退出即可。·...
打... 小楚(《天方岩谈》作者)即使你没有玩过《王者荣耀》,你也一定听说过它,或者受到过它的影响。 据腾讯官...
(... 大家好,我叫依查。智能硬件是继智能手机之后的一个技术概念。 通过软件和硬件的结合,对传统设备进行改造...
P... 为了提高办公效率,很多人选择同时使用两台电脑。 功能强大的台式电脑可以处理复杂的工作,笔记本电脑可以...
世... Felo Translator(Felo实时翻译)是全球首款采用大语言模型AI技术的同声传译APP。...