写点什么

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

作者:qife
  • 2025-08-09
    福建
  • 本文字数:697 字

    阅读完需:约 2 分钟

Bootkitting Windows Sandbox

引言与动机

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


  • 快速启动的临时虚拟机

  • 通过.wsb 文件配置沙箱

  • 适用于恶意软件分析与内核研究

驱动开发环境配置

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


CmDiag DevelopmentMode -OnCmDiag 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 沙箱架构的安全边界问题。更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)公众号二维码


办公AI智能小助手


用户头像

qife

关注

还未添加个人签名 2021-05-19 加入

还未添加个人简介

评论

发布
暂无评论
Windows Sandbox 内核研究:实现 Bootkit 绕过 PatchGuard 与 DSE_Windows内核_qife_InfoQ写作社区