Windows Sandbox 内核研究:实现 Bootkit 绕过 PatchGuard 与 DSE

131 阅读2分钟

Bootkitting Windows Sandbox

引言与动机

Windows Sandbox 是微软于2019年5月推出的轻量级隔离桌面环境。其特点包括:

  • 快速启动的临时虚拟机
  • 通过.wsb文件配置沙箱
  • 适用于恶意软件分析与内核研究

驱动开发环境配置

通过未公开命令CmDiag启用开发模式:

CmDiag DevelopmentMode -On
CmDiag Debug -On -Net

获取调试连接字符串后,使用WinDbg连接至127.0.0.1:50100。虽然可加载自定义驱动,但存在以下缺陷:

  • 需手动复制驱动文件
  • 网络调试连接不稳定
  • 启动时间显著延长

沙箱内部机制

关键发现:

  1. 通过C:\ProgramData\Microsoft\Windows\Containers\BaseImages\<GUID>\BaseLayer可直接访问沙箱文件系统
  2. 开发模式会生成DebugLayer目录用于覆盖BCD/注册表配置
  3. 基础镜像采用VHDx分层和NTFS重解析点技术

Bootkit实现原理

启动流程劫持

分析发现沙箱默认加载路径:

\EFI\Microsoft\Boot\bootmgfw.efi

通过修改该EFI文件实现:

  1. 嵌入payload至.bootkit区段
  2. 劫持OpenProtocol服务
  3. 挂钩winload!BlImgLoadPEImageEx

关键技术突破

  • 绕过BmFwVerifySelfIntegrity自校验
  • 动态修补ntoskrnl.exe内存镜像
  • 通过修改CiInitialize/SepInitializeCodeIntegrity禁用DSE
  • 篡改KeInitAmd64SpecificState关闭PatchGuard

调试技巧

创新性日志输出方案:

  • 利用vmwp.exe文件访问监控特性
  • 通过创建\EFI\debug_message虚拟路径传递日志
  • 强制崩溃测试点定位技术

实战应用

最终实现:

  • 无需开启测试签名即可加载TitanHide等驱动
  • 支持DTrace/STrace系统调用监控
  • 完整UEFI开发框架集成方案

项目代码库提供了完整实现。该技术为内核研究提供了隐蔽且高效的实验环境,同时揭示了Windows沙箱架构的安全边界问题。