Super UEFIinSecureBoot Disk 是一个概念验证(未主动维护或增强)的可启动映像,带有 GRUB2 引导加载程序,旨在用作恢复 USB 闪存驱动器的基础。
主要特点:在激活 UEFI 安全启动模式的情况下,磁盘功能齐全。它可以启动任何操作系统或 .efi 文件,即使签名不受信任、无效或丢失。
安全启动是 UEFI 固件的一项功能,旨在通过防止加载未使用可接受的数字签名进行签名的驱动程序或操作系统加载程序来保护启动过程。
大多数现代计算机默认启用安全启动,这是 Windows 10 认证过程的要求。虽然可以在 UEFI 设置菜单中的所有典型主板上禁用它,但有时这并不容易实现,例如,由于用户不知道企业笔记本电脑中的 UEFI 设置密码。
该磁盘在安装到 USB 闪存驱动器并从中启动后,会有效地禁用安全启动保护功能,并暂时允许对 PC 执行几乎所有操作,就像禁用了安全启动一样。这对于数据恢复、操作系统重新安装或仅用于从 USB 启动而无需考虑其他步骤可能很有用。
从发布页面下载映像文件,使用以下程序之一将其写入 USB 闪存:
警告:您的所有 USB 闪存数据都将被删除。
该映像包含单个 FAT32 500MiB 分区。使用 gparted 或类似工具调整其大小以获得完整的 USB 驱动器空间。
首次在具有安全启动功能的 PC 上启动将显示“访问冲突”消息框。按“确定”并选择“从文件注册证书”菜单选项。选择ENROLL_THIS_KEY_IN_MOKMANAGER.cer
并确认证书注册。
没有安全启动的计算机将启动至 GRUB,无需手动干预。
该磁盘可以在安全启动中使用吗?
是的,确实如此。在使用 MokManager 软件首次启动手动密钥注册后,它会加载任何未签名或不受信任的 Linux 内核或 .efi 文件或驱动程序。您无需禁用安全启动即可执行首次启动密钥注册。
此磁盘是否可以在没有安全启动或禁用安全启动的基于 UEFI 的计算机上工作?
是的,它会像普通的 GRUB2 一样工作。
该磁盘可以在带有 BIOS 的旧计算机上使用吗?
是的,它的工作方式与任何其他 GRUB2 引导加载程序一样。
该磁盘可用于绕过 UEFI bootkit/病毒中的安全启动吗?
不,不是真的。该磁盘需要物理用户在首次启动时手动干预,从而消除了 bootkit 的隐秘目的。
我可以用另一个 EFI 引导加载程序(rEFInd、syslinux、systemd-boot)替换 GRUB 吗?
是的,将grubx64_real.efi
/ grubia32_real.efi
替换为您的文件。引导加载程序不需要签名,并且还应该启动任何 .efi 文件,这要归功于grubx64.efi
/ grubia32.efi
(PreLoader)安装的安全策略,就像磁盘中包含的 GRUB2 一样。
该磁盘的 UEFI 启动过程分 3 个阶段执行。
bootx64.efi (shim) → grubx64.efi (preloader) → grubx64_real.efi (grub2) → EFI file/OS
第 1 阶段:主板加载垫片。 Shim 是一个特殊的加载器,它只加载下一个可执行文件,在我们的例子中是 grubx64.efi(预加载器)。 Shim 已使用 Microsoft 密钥进行签名,这使得它可以在所有库存 PC 主板上以安全启动模式启动。
Shim 包含嵌入式 Fedora 证书(因为它是从 Fedora 存储库中提取的)。如果启用安全启动,由于 grubx64.efi 未使用嵌入式 Fedora 证书进行签名,shim 会启动另一个可执行文件 MokManager.efi,这是一个特殊的 shim 密钥管理软件。 MokManager 要求用户继续进行密钥或哈希注册过程。
较新版本的 shim 将 UEFI LoadImage、StartImage、ExitBootServices 和 Exit 函数的挂钩安装为“针对非参与引导加载程序进行强化”,对于此磁盘用例,应绕过该挂钩。 Fedora 的 shim 不安装自定义 UEFI 安全策略,这就是为什么无法从第二阶段引导加载程序加载自签名 efi 文件的原因,即使您使用 MokManager 添加它们的哈希值或证书也是如此。
第2阶段:preloader是一个类似于shim的软件。它还执行可执行文件验证并加载下一个 efi 文件。该磁盘中包含的预加载器是一个精简版本,仅执行一项功能:安装允许所有 UEFI 安全策略。这允许使用 LoadImage/StartImage UEFI 函数加载任意 efi 可执行文件,甚至在 GRUB 之外(例如,在 UEFI Shell 中),并绕过 shim 强化。
第 3 阶段:GRUB2 是众所周知的通用引导加载程序。它已被修补以加载 Linux 内核而无需额外验证(linux/linuxefi 命令),将 .efi 二进制文件加载到内存中并跳转到其入口点(chainloader 命令),并模仿 shim 的“参与引导加载程序”。
阅读我关于此主题的文章:利用签名的引导加载程序来规避 UEFI 安全引导(也有俄语版本)
超级 UEFIinSecureBoot 磁盘 GRUB2 设置suisbd=1
变量。它可用于在多个引导加载程序之间共享的grub.conf
中检测磁盘的已修补 GRUB2。
从版本 3 开始,GRUB 使用库存 UEFI .efi 文件加载器,因为内部加载器实现存在一些问题。要使用内部加载程序,请将set efi_internal_loader=1
添加到 GRUB 配置文件中。这两种方法都可以加载不受信任的 .efi 文件。