前言
「沙箱」是一种安全隔离机制,让程序在受限环境中运行,防止其对宿主系统造成破坏。Windows 平台提供了从进程级到虚拟机级的完整隔离谱系。本文是系列首篇,对各种技术做全景概览。
隔离谱系
Windows 的隔离技术按隔离强度和性能开销从轻到重排列:
轻量 ←─────────────────────────────────────→ 重量
Integrity Restricted Job Object AppContainer WDAG Windows Sandbox Hyper-V VM
Levels Token (Application Guard)
每种技术解决不同层次的问题,可以组合使用。
1. Integrity Levels (MIC) — 完整性级别
机制: Windows Vista 引入的 Mandatory Integrity Control(强制完整性控制),为每个进程和对象分配完整性级别:
| 级别 | 典型进程 | 说明 |
|---|---|---|
| Untrusted | 极少使用 | 最低级别 |
| Low | AppContainer、Edge 内容进程 | 低完整性,不能写中/高完整性对象 |
| Medium | 普通用户进程 | 默认级别 |
| High | 管理员进程 | UAC 提权后 |
| System | 系统服务 | Windows 内核级 |
隔离效果: 低完整性进程不能写入高于自身完整性的对象(文件、注册表、命名对象)。这是 IE Protected Mode 和 Edge 沙箱的基础。
优点: 零开销,内核原生支持 缺点: 只做「写」隔离,不限制「读」;粒度粗
2. Restricted Token — 受限令牌
机制: CreateRestrictedToken 从现有令牌中移除权限和 SID,生成一个能力更弱的令牌。用此令牌创建的进程天然受限。
可做:
- 删除特权(如
SeDebugPrivilege、SeLoadDriverPrivilege) - 将 SID 设为 Deny Only(拒绝特定组访问)
- 限制为仅 USE_FOR_DENY_ONLY
典型组合: 受限令牌 + Job Object + AppContainer = 轻量级自定义沙箱
3. Job Object — 进程组管理
机制: Job Object 是 Win32 可命名、可保护、可共享的内核对象,用于管理一组进程。进程一旦加入,不可脱离。
能力一览:
| 限制类型 | 说明 |
|---|---|
| 内存限制 | 工作集大小上限 |
| CPU 速率 | JOBOBJECT_CPU_RATE_CONTROL_INFORMATION (Win8+) |
| 进程数 | 最大进程数限制 |
| UI 限制 | 不能读剪贴板、不能改系统参数、不能退出 Windows |
| I/O 速率 | I/O 带宽限制 |
| 时间限制 | 超时自动终止 |
| 杀灭策略 | JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE:Job 关闭时杀全部子进程 |
嵌套 Job(Win8+): 支持层级结构,父 Job 的限制会传递到子 Job。
核心 API:
CreateJobObject— 创建AssignProcessToJobObject— 将进程加入 JobSetInformationJobObject— 设置限制TerminateJobObject— 终止整个 JobQueryInformationJobObject— 查询统计
⚠️ Job Object 不做文件/注册表隔离,它是资源限制器,不是完整的沙箱。但常作为沙箱的组件使用。
4. AppContainer — 应用级沙箱
机制: Windows 8 引入的进程级隔离,通过受限令牌 + AppContainer SID + Capability SID 实现细粒度权限控制。UWP 应用和 Edge 浏览器使用此机制。
六大隔离维度
| 维度 | 说明 |
|---|---|
| 凭证隔离 | 应用身份 ≠ 用户身份,不能冒充用户访问其他资源 |
| 设备隔离 | 摄像头/麦克风/GPS 默认拒绝,需 Broker 授权 |
| 文件隔离 | 只能访问被 ACL 授予的文件/注册表位置 |
| 网络隔离 | 细粒度控制 Internet / Intranet / Server 能力 |
| 进程隔离 | 内核对象隔离,崩溃不影响其他进程 |
| 窗口隔离 | 不能操控其他应用窗口 |
实现
CreateProcess + PROC_THREAD_ATTRIBUTE_SECURITY_CAPABILITIES
├─ AppContainer SID(唯一标识容器)
├─ Capability SID 列表(声明能力,如 internetClient)
└─ 受限令牌(自动生成)
常用 Capability
| Capability | 说明 |
|---|---|
internetClient | 出站 Internet 访问 |
internetClientServer | Internet 入站+出站 |
privateNetworkClientServer | 内网访问 |
documentsLibrary | 文档库访问 |
microphone | 麦克风 |
webcam | 摄像头 |
AppContainer 是 Windows 上最实用的编程级沙箱,比 Job Object 更强的隔离(文件/网络/设备),比 VM 更轻量。
5. WDAG — Windows Defender Application Guard
机制: 将 Edge 浏览器或 Office 文档在 Hyper-V 隔离容器中运行。用户看到的窗口通过远程显示协议(RDP)呈现,但实际进程在虚拟机内。
场景:
- 浏览不受信任的网站 → Edge 在容器中运行
- 打开不受信任的 Office 文档 → Office 在容器中打开
特点: 硬件级虚拟化隔离,即使容器内被攻破也无法逃逸到宿主。
6. Windows Sandbox (WSB) — 一次性 VM 沙箱
机制: Windows 10 (build 18305+) 内置的轻量级桌面沙箱,基于 Hyper-V 虚拟化,但比传统 VM 轻量得多。
架构创新
| 技术 | 说明 |
|---|---|
| Dynamic Base Image | 复用宿主 OS 不可变文件 + 小份可变文件副本(安装包仅 30MB) |
| Direct Map 内存共享 | OS 二进制共享物理内存页(如 ntdll.dll),大幅降低内存占用 |
| WDDM GPU 虚拟化 | 直接透传 GPU 加速(需 WDDM 2.5+) |
| 智能内存管理 | 类似进程竞争内存,宿主可回收 |
前提条件
- Windows Pro / Enterprise / Education(不支持 Home)
- BIOS 虚拟化已开启
- 启用 Hyper-V + Windows Sandbox 功能
.wsb 配置文件
<Configuration>
<vGPU>Enable</vGPU>
<Networking>Disable</Networking>
<MappedFolders>
<MappedFolder>
<HostFolder>C:\SandboxDemo</HostFolder>
<SandboxFolder>C:\Demo</SandboxFolder>
<ReadOnly>true</ReadOnly>
</MappedFolder>
</MappedFolders>
<LogonCommand>
<Command>cmd.exe /k "echo Welcome to Sandbox"</Command>
</LogonCommand>
<MemoryInMB>2048</MemoryInMB>
</Configuration>限制
- 同时只能运行一个实例
- 无持久化(关闭即销毁,22H2+ 支持沙箱内重启保持状态)
- 不支持 ARM64 vGPU
7. Hyper-V VM — 完整虚拟机
最重但最强的隔离方式。完整虚拟机,独立内核,完全隔离。适合需要持久化、多实例、多操作系统的场景。不在本系列重点讨论范围。
技术对比矩阵
| 维度 | Integrity Level | Restricted Token | Job Object | AppContainer | WDAG | Windows Sandbox | Hyper-V VM |
|---|---|---|---|---|---|---|---|
| 隔离强度 | ★★ | ★★ | ★ | ★★★★ | ★★★★★ | ★★★★★ | ★★★★★ |
| 性能开销 | 极低 | 极低 | 极低 | 低 | 中 | 中 | 高 |
| 文件隔离 | 写隔离 | ❌ | ❌ | ✅ 细粒度 | ✅ | ✅ | ✅ |
| 网络隔离 | ❌ | ❌ | ❌ | ✅ 细粒度 | ✅ | ✅ 可开关 | ✅ |
| 进程隔离 | 部分 | 部分 | ❌ | ✅ | ✅ | ✅ | ✅ |
| 资源限制 | ❌ | ❌ | ✅ | ❌ | ❌ | 内存 | ✅ |
| 编程接口 | Win32 API | Win32 API | Win32 API | Win32 API | 策略配置 | .wsb XML | WMI/Hyper-V |
| 持久化 | N/A | N/A | N/A | N/A | ❌ | ❌ | ✅ |
| 启动速度 | 即时 | 即时 | 即时 | 即时 | 秒级 | 秒级 | 分钟级 |
组合使用
实际生产中的沙箱方案往往是组合的:
AppContainer (文件/网络/设备隔离)
+ Job Object (CPU/内存限制)
+ Restricted Token (权限裁剪)
+ Integrity Level Low (写隔离)
= 轻量级自定义沙箱
Windows Sandbox (完整 OS 隔离)
+ .wsb 配置 (文件夹映射/网络控制)
= 安全测试环境
系列文章导航
- Windows 沙箱技术全景(本文)
- Windows 沙箱 Demo - WSB 配置实战
- Windows 沙箱 Demo - AppContainer 编程
- Windows 沙箱 Demo - Job Object 进程管控
📅 创建时间:2026-08-12 🏷️ 分类:Windows 安全 / 沙箱技术