当前位置: 首页 > news >正文

Bitlocker密钥提取之SYSTEM劫持

该漏洞编号CVE-2024-20666,本文实现复现过程,Windows系统版本如下

简介

从Windows10(th1)开始,微软在winload模块中,增加了systemdatadevice字段值的获取,该字段值存储在BCD引导配置文件中。当winload加载SYSTEM注册表文件时,会先尝试从BCD文件中获取systemdatadevice配置项的值,如果存在该项,则从systemdatadevice配置的设备分区中加载SYSTEM注册表文件。使用IDA分析winload.efi模块的相关函数如下

如上图所示,在函数OslpLoadSystemHive中,通过BlGetBootOptionDevice函数获取0x21000150类型值,即systemdatadevice的值,如果获取成功,则从该设备中访问SYSTEM注册表文件,不再从系统所在位置获取SYSTEM注册表文件。

可以通过该网站查询0x21000150类型对应的BCD中字段名信息。 

相同的功能适用于WinRE环境中,由此,可以在WinPE下修改系统的引导配置文件BCD,在Recovery项目中增加systemdatadevice字段选项。这样在重启进入Recovery环境时,通过启动一个cmd窗口,即可提取到BitLocker加密磁盘的恢复密钥。

实现步骤

提取SYSTEM注册表文件

首先启动目标电脑到WinPE中,通过Winhex或者其它工具提取目标磁盘中的Recovery分区中的Winre.wim文件。

接下来通过7z工具打开winre.wim文件,提取\Windows\System32\config\SYSTEM注册表文件到U盘。通过regedit系统自带的注册表工具从U盘加载提取到的SYSTEM文件,加载在HKEY_LOCAL_MACHINE项下,然后修改HKEY_LOCAL_MACHINE\【加载SYSTEM自定义名】\SYSTEM\SetupCmdLine的值,将其修改为cmd.exe,实现启动Recovery时,直接弹出cmd命令行窗口。

 修改完成后,卸载该SYSTEM注册表,将其保存在U盘备用。

修改BCD配置

按住Shift键,同时点击目标系统登录窗口右下角重启按钮,随后系统重启到恢复模式,如下图所示

选择“疑难解答”、“高级选项”、“命令行提示符”,提示输入BitLocker恢复密钥时,选择“跳过”,随后将弹出一个cmd命令行窗口。

在命令行窗口中,修改目标系统的BCD配置。

首先挂载EFI分区

mountvol s: /s

 枚举BCD中所有的项的配置信息

bcdedit /enum all /raw

在输出结果中找到description的值为Windows Recovery Environment 一项,如下所示

在该项中增加systemdatadevice子项,设置其指向EFI分析所在的分区,即刚才挂载到S:\盘的分区。

bcdedit /set {current} systemdatadevice hd_partition=s: 

修改后的内容如下

bcdedit /enum all /raw 

 接下来,在S:\盘中创建目录S:\Windows\System32\config,拷贝U盘中SYSTEM注册表文件到该目录下,完整路径:S:\Windows\System32\config\SYSTEM

重启目标系统到登录窗口,再次按Shift + 重启按钮,系统重启后进入恢复模式,但这次将直接弹出一个cmd窗口,在该cmd命令行窗口中输入

manage-bde -protectors -get c:

 直接提取目标系统BitLocker加密磁盘恢复密钥,如下图所示

 完!

http://www.dtcms.com/a/223291.html

相关文章:

  • C++17原生测试编程实践:现代特性与分支覆盖指南
  • 如何做好一份技术文档:从信息孤岛到知识图谱的进阶之路
  • 深入理解 Git 底层机制:指针(Refs)、提交(Commit)与分支的关系
  • 【Python-Day 20】揭秘Python变量作用域:LEGB规则与global/nonlocal关键字详解
  • 晨控CK-UR12与西门子PLC配置Modbus TCP通讯连接操作手册
  • TC/BC/OC P2P/E2E有啥区别?-PTP协议基础概念介绍
  • DAY 15 复习日
  • 长尾关键词优化驱动SEO增长
  • 二叉树实验
  • 自动过滤:用 AutoFilterer 实现高性能动态查询
  • 4.0/Q2,GBD数据库最新文章解读
  • PostIn V1.1.2版本发布,新增接口评审功能,提升接口质量与合理性
  • Android 代码阅读环境搭建:VSCODE + SSH + CLANGD(详细版)
  • QPushButton设置菜单
  • [原创](Windows使用技巧): Windwos11如何设置局域网共享访问? (多图详解)
  • MFA多因素认证与TOTP算法核心解析(含Java案例)
  • [正点原子]ESP32S3 RGB屏幕移植LVGL
  • windows下安装docker、dify、ollama
  • C语言面试题【01】
  • 进程间通信及管道(理论)
  • OpenLayers 图形绘制
  • 【创意Python代码】
  • 集成LR1121+ESP32-S3芯片方案的EoRa-HUB系列开发板简介
  • 支持功能安全ASIL-B的矩阵管理芯片IS32LT3365,助力ADB大灯系统轻松实现功能安全等级
  • cocosCreator 1.8 升级到 2.4
  • 【PyTroch学习-001】从一个简单示例开始:手写数字识别
  • 写作-- 复合句练习
  • Python训练营打卡Day40(2025.5.30)
  • Java System类核心用法详解
  • Nginx Lua模块(OpenResty)实战:动态化、智能化你的Nginx,实现复杂Web逻辑 (2025)