您现在的位置: IT专家网 > WinSystem子站 > Windows Vista
Vista用户帐户控制、PsExec和安全边界
这篇文章主要描述:对用户帐户控制、IE保护模式、UIPI和MIC等的安全意义和不足之处进行描述。为了保证原汁原味,翻译文章保留第一人称,文中的“我”就是指Mark Russinovich……
如果在Process Explorer的视图中添加“Integrity Level”列,如下图所示。我们可以看到系统进程,例如Windows服务进程,运行在“系统”完整性级别。登录会话中的绝大多数进程运行在“中级”完整性级别,以提升权限运行的进程在“高级”完整性级别,而IE浏览器则运行在“低级”完整性级别(如果启用IE保护模式)。我们可以启用系统内置的icacls.exe命令行工具查看和修改文件和目录的完整性级别,可以用Sysinternals的AccessChk工具查看文件、目录、注册表键值和进程的完整性级别。资源对象默认具有“中级”完整性级别,我们可以使用“AccessChk -e”命令搜索具有显式完整性级别的对象。

盆盆评注 该图并非原图,图中的“Integrity Level”一列套绿显示。有关AccessChk命令的用法,可以参考盆盆的文章《Windows Vista IE保护模式深度剖析》,有关Icacls命令的用法,可以参考盆盆的文章《Windows Vista IE下紫光拼音的终极解决办法》。
新版本的PsExec命令利用了Windows Vista这个增强的隔离沙盒,当使用“-l”参数时,可以让指定的进程运行在“低级”完整性级别。PsExec所建立的隔离沙盒等效于IE保护模式,想要体验这种安全隔离效果,可以尝试让命令提示符窗口或者Regedit运行在“低级”完整性级别,然后看看可以修改什么。举个例子,用以下命令,让命令提示符窗口运行在“低级”完整性级别:
PsExec -l -d
首先我用“set”命令确定当前用户的临时目录所在路径。如果尝试在该临时目录创建文件,就会收到拒绝访问的错误消息,这是因为该临时目录的完整性级别为默认的“中级”,如果用icacls命令查看该目录的权限设置,并不会看到完整性级别(译者注:表明是默认的“中级”)。如果把当前目录修改为IE浏览器的临时目录(完整性级别为“低级”),就可以成功创建文件。

盆盆评注 从图中我们可以很容易看到,Mark先用“set temp”命令查看“temp”环境变量的值。然后用cd命令进入“temp”目录。再用“icacls .”命令查看当前目录的权限设置(.表示当前目录)。结果发现无法在“temp”目录下写入文件,但是可以在“LocalLow”目录下写入文件,因为用icacls命令查看,发现“LocalLow”目录的完整性级别为“低级”(Low Mandatory Level)。
通过实验可以了解到我们的操作受到了限制,但是这里有一些设计上的考虑需要我们注意。首先,除了进程和线程之外,隔离沙盒并不阻止读取操作。这意味着完整性级别为“低级”的命令提示符、或者IE浏览器(启用IE保护模式)可以读取当前帐户所能访问的对象。这些对象包括当前用户的文档和注册表键值。
有时候完整性级别为“低级”的进程,甚至还可以对更高级别的对象进行操作。因为不同完整性级别的进程共享同一个桌面,所以它们共享同一个“会话”。每个用户登录系统时,会创建一个新的会话,该用户的进程就在这个会话中运行。会话也提供本地的命名空间,这样用户进程就可以通过诸如同步对象或者共享内存这样的共享对象进行通信。这意味着完整性级别为“低级”的进程,可以创建一个共享内存对象(叫做区域或者内存映射文件)以供高级别的进程访问,并在该共享内存里存储数据,这样高级别的进程就会执行其中的恶意代码(如果该进程没有正确地验证数据)。这种攻击手段叫做蹲守攻击(squatting attack),比较复杂,需要用户按照特定顺序执行进程,并且需要了解应用程序是如何通过共享对象进行操作的内部原理。
盆盆评注 会话是天然的安全屏障,跨越会话进行攻击是非常困难,Windows Vista下的服务就实现了会话隔离,让服务存在于会话0中,以避免用户进程跨越会话进行攻击。
- 本文关键词:
- Windows
- Windows Vista
- 操作系统

