跳转至

隔离机制

在沙盘的监管下启动的进程,会以极为受限的用户令牌创建,这样它们几乎没有权利访问任何资源。在这种状态下,这些进程基本上毫无用处,并且会立即崩溃。

这种令牌操作是使用 Windows 内核中的大约六种 undocumented symbols 方式实现的。

接下来,沙盘会通过挂钩大多数 ntdll.dll 的系统调用,并将其重定向到自身的 SbieDrv 驱动,以此尝试修复受限制的权限。驱动程序随后会评估这些调用,并强制执行沙箱规则,例如:禁止对沙箱外部的写入访问,以及禁止对受限资源的读取访问。

当恶意应用试图解除 ntdll.dll 的挂钩,譬如通过直接系统调用访问 Windows 内核时,内核会检测到受限的用户令牌,相关操作将因为权限不足而失败。

并非所有功能都能通过这种方式恢复,因此沙盘还会挂钩标准 Windows DLL 中的大量其他函数,并通过辅助服务 SbieSvc 提供替代方案和重定向,尽管有时会选择直接禁用部分功能。

文件系统和注册表的虚拟化由用户级的 SbieDll 实现,负责将真实系统中的数据与沙箱中的数据进行合并,并正确重定向所有访问尝试。如果该机制被不当绕过,则会返回访问被拒绝的错误。