Bootkitting Windows Sandbox
引言与动机
Windows Sandbox 是微软于2019年5月推出的轻量级隔离桌面环境。其特点包括:
- 快速启动的临时虚拟机
- 通过.wsb文件配置沙箱
- 适用于恶意软件分析与内核研究
驱动开发环境配置
通过未公开命令CmDiag启用开发模式:
CmDiag DevelopmentMode -On
CmDiag Debug -On -Net
获取调试连接字符串后,使用WinDbg连接至127.0.0.1:50100。虽然可加载自定义驱动,但存在以下缺陷:
- 需手动复制驱动文件
- 网络调试连接不稳定
- 启动时间显著延长
沙箱内部机制
关键发现:
- 通过
C:\ProgramData\Microsoft\Windows\Containers\BaseImages\<GUID>\BaseLayer可直接访问沙箱文件系统 - 开发模式会生成
DebugLayer目录用于覆盖BCD/注册表配置 - 基础镜像采用VHDx分层和NTFS重解析点技术
Bootkit实现原理
启动流程劫持
分析发现沙箱默认加载路径:
\EFI\Microsoft\Boot\bootmgfw.efi
通过修改该EFI文件实现:
- 嵌入payload至.bootkit区段
- 劫持OpenProtocol服务
- 挂钩winload!BlImgLoadPEImageEx
关键技术突破
- 绕过BmFwVerifySelfIntegrity自校验
- 动态修补ntoskrnl.exe内存镜像
- 通过修改CiInitialize/SepInitializeCodeIntegrity禁用DSE
- 篡改KeInitAmd64SpecificState关闭PatchGuard
调试技巧
创新性日志输出方案:
- 利用vmwp.exe文件访问监控特性
- 通过创建
\EFI\debug_message虚拟路径传递日志 - 强制崩溃测试点定位技术
实战应用
最终实现:
- 无需开启测试签名即可加载TitanHide等驱动
- 支持DTrace/STrace系统调用监控
- 完整UEFI开发框架集成方案
项目代码库提供了完整实现。该技术为内核研究提供了隐蔽且高效的实验环境,同时揭示了Windows沙箱架构的安全边界问题。