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下载器的基础知识:

内核驱动程序负责:

相关内容

热门资讯

低... 对于低预算的入门级玩家来说,1080P分辨率下的流畅游戏是他们的目标。虽然我们常说的中高端显卡在性能...
S... 选自《纽约时报》、《计算机世界》机器之心合集参加者:杜查德Salesforce于美国当地时间上周日推...
中... “抬头看明月,低头看手机。”随着移动互联网的快速发展,手机已经成为现代人身体的一部分。毕竟,中国网民...
2... 近日,国内知名安全机构精英网络安全实验室发布了《2017年主流防病毒软件年度测试报告》。报告使用近期...
手... 单反相机的长曝光镜头让流水看起来像牛奶丝。摄影师还利用光轨营造出模糊动态的效果。画面非常美丽。我不禁...
摩... 作者|董学良银旅屋(yinlvwu.com)出品01数字产品的摩尔定律摩尔定律是英特尔创始人之一戈登...
i... 今天我将继续与大家分享一些使用iPhone相机拍摄照片和视频的好用软件。1.ProCam这个软件是我...
外... 作为一名外贸人,不应该盲目地与客户洽谈业务。当然,这就是目的。私人的问候、关心、沟通也是必不可少的。...
N... NVIDIA采用图灵架构的全新“图灵”显卡正式发布,RTX 2080和RTX 2080Ti首次上市。...
柠... #详细介绍-Ningle Music v1.3.2该软件采用独特的音乐推荐算法,可以根据用户的听歌习...
知... 这就是智科技。如果您觉得这篇文章有用,请【关注】我。更多【软件/网站/数码推荐】+【实用游戏技巧】,...
电... 9月7日,我校电子音乐系改编自传统音乐呈现形式的一系列充满新时代潮流的电子音乐与新媒体技术改编的红色...
新... 亲爱的朋友们,距离上一篇文章已经过去快一周了。在这个疯狂的AI时代,我以为蓝柳可能会更新得更快,但事...
中... 中国工商银行2023年软件开发中心技术与数据人才专项社会招聘公告软件开发中心成立于1996年6月b工...
密... 据不完全统计,平均每个用户拥有90个以上的网上账户,其中高达51%的密码被重复使用,1/3的网民因忘...
过... 随着智能电视的普及,越来越多的人选择在过年期间通过Android TV软件观看电影、电视剧、综艺节目...
中... 为有效激发劳模、工匠人才荣誉感和工作热情,推动研发创新工作,经中国工商银行软件开发中心基层工会推荐,...
a... 张林宇 撰稿编辑/黄大陆设计/赵浩然2024年4月26日下午一点,在北京望京大众汽车集团旗下软件公司...
聚... 随着制作节奏越来越快,数字项目的制作周期越来越短,也许我们所有数字后期制作的同仁都在思考,我们怎样才...
中... 中国工商银行软件开发中心于1996年6月在珠海成立。主要承担全行境内外软件研发、技术管理、技术培训、...