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

内核驱动程序负责:

相关内容

热门资讯

琼海订购贵金属投资骗局,商城订...   网上宣传的琼海订购APP炒贵金属能赚钱是真的?投资者在琼海订购APP上亏钱了该怎么办?琼海订购A...
全新淘金APP为什么一直亏钱,...   全新淘金APP的现货订购是骗局?投资者该怎么追回自己的交易损失?现在网上各种投资软件,宣传的小投...
从... 大一的时候就开始接触C语言的网络编程,socket,bind,listen,accpet,recv,...
宝... 文字 | 秘诀我到闺蜜家做客,发现闺蜜正在拖地教宝宝学说话的软件,一岁的宝宝坐在角落的游戏垫上玩玩具...
黑... 黑鸟自行车专业骑行服务APP天气越来越冷了,大部分骑行爱好者,尤其是北方的骑行爱好者,冬天里苦于户外...
广... 背景:我在广东某三线城市一家小公司上班,公司成立于2012年,虽然各项福利都不错,但办公电脑从201...
如... 1.如何使用遥控器?对准DVR面板,操作遥控器遥控器配置成功后,DVR 前面板状态灯变为绿色,再次按...
中... 北京时间8月17日12时11分,捷龙一号运载火箭在酒泉卫星发射中心成功发射,以“一箭三星”的方式将三...
R... 2020 年年中,Tech Video 体验了几款采用 16 英寸显示屏的游戏笔记本。当时我们判断,...
茅... 茅台微信小程序现已上线咖啡产品微软向美国政府机构开放GPT-4大型模型加州神童 14 岁成为 Spa...
基... 作者单位:湖南城市大学设计研究院有限公司;沈阳建筑大学交通运输工程学院住房和城乡建设部科技项目(20...
R... 1.超频的意义先说一下CPU和内存为什么要超频,这代RYZEN虽然性价比确实高,但是主频不高,导致单...
六... 你知道移动硬盘怎么用吗?相信很多人对这个问题都会嗤之以鼻,但当移动硬盘真的出现故障,重要数据丢失时,...
S... IT之家5月21日报道,过去几个月,在各大论坛和推特等社交平台上经常能看到用户抱怨自己新购买的4TB...
测... 1 简介这几天测试了Seagate和Western Digital的2TB笔记本电脑硬盘。其实我并没...
P... 对于大多数工作来说,Photoshop 是非常常用的工具。很多时候我们需要使用这些工具来满足一些简单...
西... 如今由于我们在工作和生活中经常需要存储大量的数据,对存储介质的需求也随之增加,普通U盘虽然方便携带,...
微... 问题描述:隐藏表白文字的表情包?隐藏表白文字的表情包?答:好像有个叫群暗恋,分享在群里,两个人互相点...
摄... 早上好,我是叶子,今天是我陪大家摄影早自习的第1508天。今天,我们“摄影自修室”有一位叫Kily的...
上... 点击Shadage黑科技关注我并加★Star★不知道我的粉丝里有多少是猫咪呢?你是不是也是上班族,每...