谁为Vista筑起安全新壁垒——深入剖析Vista的UAC安全系统
技术与开发
在如今鱼龙混杂的网络环境中,Windows系统很容易被恶意软件和病毒破坏,罪魁祸首就是Windows用户管理系统不完善。不过,这一系统缺陷在Vista中被弥补。Vista系统采用了安全性更高的用户管理系统,可以有效地提高Windows的“抗击打”能力和桌面部署的灵活性,减少系统重装的次数和节省维护成本。这一切都归功于Vista全新引入的UAC安全系统,那么什么是UAC,它又有什么特点呢?下面具体为大家介绍。
小资料:UAC的由来
Vista以前的Windows系统,面对恶意软件、病毒和木马程序时显得非常无力,其主要原因就是它们在用户账户权限管理方面有设计缺陷,对管理员账户开放了系统目录的所有权限。不良软件也能借助管理员权限轻易地进入系统和破坏系统,所以保证所有用户账户都以标准用户账户的权限运行是解决不良软件对系统进行破坏的最有效的方法。Vista的UAC(User Account Control用户账户控制)系统的设计理念正是如此。Vista系统目录文件的保护采用了WRP(Windows Resource Protection系统资源保护)技术,所有用户只能读取系统文件而无法进行写入。
提高账户控制的安全性
在开发UAC安全系统的时候,为了让用户能够更容易地使用标准账户运行系统,Windows Vista开发小组主要采用了两种技术。一种是消除过多管理层面系统资源访问的非必需请求,另一种是通过激活访问控制安全策略,根本改变标准用户运行应用程序时和操作系统交互的方式。而在Vista的系统内核上主要采用以下的技术。
1.精简的用户模式
Vista有两种用户账户类型:标准用户账户和管理员账户。和以前的Windows类似,标准用户有限制的管理权限和用户权力——如:无法安装和卸载系统目录的软件、改变系统设置和完成其他的管理任务。然而,Vista标准用户并不需要注销,只要提供相应的管理员认证就可以提升到更高的用户权限。在UAC激活状态下,管理员和标准用户运行在同一安全级别。只有管理员用户获得许可认证才能获得完全的系统权限。这就是管理员批准模式的基本原则。
2.虚拟化技术
Windows Vista使用了文件和注册表虚拟化技术,许多无法以标准用户账户运行的应用程序,不用经过修改即可在 Windows Vista 上运行。Windows Vista 通过将写入操作(以及随后的文件或注册表读取)重定向到该用户配置文件中的一个特殊位置来改善兼容性。
例如,如果某用户运行一个应用程序试图向 C:\testfile\MICROSOFT\tests.ini进行写入操作,但该用户没有写入该目录的权限,那么写入操作将会被重定向到C:\Users\该用户名\AppData\Local\VirtualStore\testfile\MICROSOFT\tests.ini。如果某用户运行一个应用程序试图写入数据到注册表HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\,该操作将会被自动重定向到HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\Software\MICROSOFT。
注意:虚拟化技术不支持64位程序,这些程序需要被UAC感知,然后在合适的系统位置写入数据。
3.请求可执行水平
在Vista中,作为应用程序载入清单的XML文件包含了提高UAC应用程序兼容性的条目。大多数非兼容Vista的程序即使在应用程序载入清单没有该条目也可以通过应用程序兼容性修复来运行。那么,这个应用程序兼容性修复怎么来执行的呢?一般可以右键单击程序图标,选择“属性”命令,接着在弹出的窗口选择“兼容性”标签,这时就可以让程序以非Vista系统的兼容模式运行了(图1)。

所有UAC兼容程序有一个请求可执行水平的应用程序载入清单条目。如果程序请求系统访问管理权限,那么将程序的请求可执行水平标注为“请求管理员”后就可以让系统识别该程序为管理程序,然后就可以执行必要的提升权限的步骤。请求可执行水平允许系统了解某个程序的特定的权利。
4.安装检测技术
安装软件一般都要在系统目录和注册表键写入数据,而这些被保护的系统位置在Vista中通常只能被管理员修改,不过这并不意味着标准用户无法安装软件。在安装程序的时候,Vista会试探性地检测安装程序和请求管理员的认证和许可从而正常安装。在升级和卸载程序时也是如此。这样也可防止在用户不知情和没有获得许可的情况下修改系统保护区域。
UAC的用户体验
1.两种UAC权限提升方式
开启了UAC功能的Vista系统采用管理员批准模式来提高安全性。一般情况下,使用标准用户可以获得最大的安全性能。标准用户和管理员都可以通过权限的提升来使程序正常运行。
一般需要提升权限才能运行的程序或者设置都显示为盾牌图标。标准用户的权限提升需要输入管理员密码,一般称为凭证提升提示(如图2)。管理员的权限提升只须确认,一般称为同意提升提示(如图3)。这个权限的提升过程是相当安全的,这个安全桌面只有系统进程能够访问,因此无法运行任何程序(当然也无法感知各种程序的热键)。当用户经过操作关闭了提升权限提示窗口后,才能从安全桌面回到原来的桌面。值得注意的是,恶意软件有可能通过模拟的安全桌面上的同意提升来骗取权限,也可能通过模拟的安全桌面上的凭证提升来获得用户密码以提升权限,不过这些欺骗手段在UAC系统中都不能得逞。


2.应用程序感知提升权限的各种提示
应用程序在感知UAC提升权限时将出现不同颜色的提示信息,通过颜色可以立即识别应用程序的潜在危险。当应用程序尝试运行一个具有管理员完全访问权限特征的操作时,系统首先分析这个可执行程序以决定其发布者。应用程序将按基于可执行程序的发布者分成三类:Windows Vista、publisher verified(signed,被验证的)和publisher not verified(unsigned,未被验证的)。图4显示了Windows Vista出现各种颜色的提示窗口的逻辑过程。

兼容UAC系统的程序开发
目前,不少WindowsXP下的程序无法在Vista中正常运行,比如需要请求系统权限的杀毒软件,因为它们受到UAC系统的严格限制。光是通过Vista的兼容性修复技术当然不是长远之计了。那么,针对Vista系统,该如何改进软件开发呢?
如今,以最小的权限和用户权力运行程序的观念已经被软件开发商广泛接受,许多应用程序开发商将不得不改进程序来适应UAC系统。过多的请求系统权限的应用程序可能被重新设计成UAC兼容的程序。这些重新设计可以让标准权限的用户运行很多现在不能在Vista中正常运行的程序。为了简化应用程序的重新设计过程,微软已经对开发者提供了指导和工具,相关的资料可以查看MSDN相关页面(http://go.microsoft.com/fwlink/?LinkId=49973)并下载运行Microsoft Application Compatibility Toolkit 5.0来检测程序的兼容性。