深入了解Windows7的用户帐户控制(UAC)
然而,长期以来,Windows用户有管理权限运行。因此,软件开发通常运行托管账户(通常是无意)依赖于管理权限。为了使更多的软件运行在标准用户权限和帮助开发者编写应用程序,可以以标准用户权限通常操作,Windows Vista中引入了用户帐户控制(UAC)。UAC集成了一系列技术,包括文件系统和注册表虚拟化,保护的系统管理员(PA)账户,UAC提升权限的提示,和Windows完整性级别支持这些目标。我讨论这些内容详细的会议报告和我在实习UAC的TechNet杂志信息。
Windows 7是UAC的目标,和基本技术是相对不变的。然而,它引入了两个新的模式,可以运行UAC的PA帐户,以及一些内置的Windows组件的自动升降机构。在这篇文章中,我将讨论推动UAC技术发展的因素,重新探讨UAC和安全之间的关系,描述了两个新的模型,并介绍了自动升级的具体途径。本文中的信息反映了发布Windows 7版前的行为,这是在许多方面不同于测试版。
水声通信技术
最基本的、最直接的UAC技术的好处是它让用户使用Windows更容易。示范的例子显示在许可要求的差异在时区设置在Windows XP和Windows Vista,Windows XP中,行政权力是需要更改时区。事实上,即使使用时间/日期控制面板小程序查看时区,也需要管理权限。
这是因为Windows XP不区分时间的变化(安全敏感的系统操作)改变时区(只有时间显示的方式),In Windows Vista(和Windows 7),更改时区不是管理操作,和时间/日期控制面板小程序也将管理操作标准用户操作。只是这种变化让很多企业来配置企业用户标准用户帐户,因为用户将能够调整时区来反映他们的当前位置。Windows 7有了进一步的改进,例如刷新系统的IP地址,安装可选更新和Windows更新驱动程序,改变显示分辨率,并检查了e标准用户可以访问的当前防火墙设置。
文件系统和注册表虚拟化的背景,这可以帮助使用管理权限运行正常,没有管理权限许多无意的应用,使用不必要的行政权限,最常见的应用是存储应用程序设置和用户数据在注册表或文件系统区域。例如,一些应用程序的设置老版本存储在系统注册表内部分(hkey_local_machine 软件),但不是每个用户部分(hkey_current_user 软件),和注册表虚拟化会尝试写操作系统的hkey_current_user(HKCU)的位置,同时保持应用程序的兼容性。
设计PA帐户的目的是鼓励开发人员编写应用程序作为唯一标准用户权限,同时使尽可能多的应用程序共享管理组件和标准用户组件之间的状态。默认情况下,在Windows Vista或者Windows7系统的第一个帐户(全权限的管理员帐户在Windows的早期版本)是PA帐户。任何程序,PA的用户实行的是使用标准用户权限运行,除非用户明确提出申请,即应用管理权限授予用户的活动,如安装应用程序和更改系统设置触发权限提示这些增强功能的提升。最著名的UAC技术。该窗体将用允许取消对话框切换到屏幕,背景是灰色桌面快照。
安装后创建的帐户是标准用户帐户。默认情况下,这些账户可以通过即时访问来提升。及时提供增强功能,提示凭据将用于资助行政许可。使用这个方便的功能,只要家庭共享计算机的家庭成员或更注重用户的帐户使用的用户安全管理标准知道该帐户的密码,他们将能够运行具有管理权限的应用程序,无需手动切换到其他用户登录会话。此类应用的常见例子包括安装程序和家长控制配置。
UAC启用后,所有用户帐户,包括管理帐户,将使用标准用户权限,这意味着应用程序开发人员必须考虑的事实,他们的软件将没有管理权限默认情况下,这应该提醒他们,他们的应用程序设计为标准用户权限的工作。如果应用程序或其部分功能需要管理权限,它可以使用升降机构允许用户解锁功能。一般来说,应用开发者只需要一些变化,让他们的应用程序使用标准用户权限的工作。在E7博客文章描述UAC,UAC已经成功地改变了开发人员编写软件的方式。
提升权限提示的另一个优点是,他们可以在软件想改变系统;通知的用户,并让用户有机会阻止这种情况。例如,如果用户不信任或不想让软件修改系统需要管理权限,他们能否及时。
提升和恶意软件安全
UAC的主要目标是让更多的用户使用标准用户权限运行。然而,其中的UAC技术似乎是一个安全功能:许可的提示。很多人认为,因为软件必须要求用户授予管理权限,可以防止恶意软件获得管理权,是一种视觉线索,只有管理权限的操作,另外,用户还可以切换到不同的桌面显示增强的对话框,和Windows完整性机制,包括用户界面特权隔离(UIPI),使人们更加坚信这个想法。
在Windows Vista推出我们谈论扬升的主要目的是不安全的,但是它的便利性:如果用户必须登录到帐户或通过管理;快速用户切换;切换到管理账户,从而切换帐户来执行管理操作,大多数用户只会切换到相反,切换回来。将给应用程序开发人员设计改变环境没有进步。所以,安全的桌面和Windows完整性机制的目的是什么
立即切换到最主要的原因是,不同的桌面软件的标准用户不能欺骗提高例如权威提示,他们不能在对话框中发布图纸欺骗用户的名称,让用户认为是微软或其他软件提供商(不是软件)来生成的技巧以提高权威,作弊技巧。这种替代桌面称为安全桌面;因为它是由系统拥有的,而不是用户,如系统显示Windows登录对话框的桌面。
另一个重要目的是实现其他桌面应用程序兼容性的使用:当应用程序与其他用户的桌面上运行,如果内置的辅助功能的软件(如屏幕键盘)的正常工作,然后有一个第三方软件工作不正常,软件将不能正常工作时,促进对话箱由本地系统帐户拥有的显示在桌面上,用户拥有。
Windows完整性机制,这就是所谓的设计目的是创造在升级应用保护屏障。它的一个最初的目标是防止软件开发商投机取巧,使用升级后的应用来完成管理任务。以标准用户权限运行的应用程序不能发送合成鼠标或键盘输入要升级的程序,所以应用程序执行的指令,而不能代码升级应用程序执行管理操作。
在Windows Vista中的Windows完整性机制,这就是所谓的用于保护模式Internet Explorer,这使得感染IE运行实例修改用户帐户设置用户的困难,例如配置本身在用户登录时启动。虽然Windows Vista是一个早期的设计目标是使用桌面安全这就是所谓的推广,Windows完整性机制,建立实体之间使用标准用户权限管理软件运行的障碍(称为安全边界),但由于以下原因,导致目标未能实现,它被遗弃了:可用性和应用程序兼容性。
图1显示了可执行文件的名称。
首先,考虑取消对话框本身。它显示了主要的可执行文件,将被授予管理权限的名称和出版者。不幸的是,尽管越来越多的软件出版商已经添加数字签名的代码,还有一些软件出版商谁不这样做,有许多旧的应用程序,不添加签名。对于未签名的软件,升级对话框只会显示可执行文件的名字,因此,对于某些恶意软件(例如,用户帐户没有运行setup.exe程序,监控安装签名升级),将能够取代可执行文件为恶意的Setup.exe,而用户是一无所知(见图1)。
第二,对话框不告诉用户哪个DLL时将加载可执行文件的开始。如果可执行文件所在的目录,用户可以控制,恶意软件运行用户标准权限可以取代任何相关的DLL,软件将使用的位置。此外,恶意软件可以使用并行功能使可执行文件加载应用程序或系统DLL的恶意版本,除非提醒用户点击详细信息按钮,并仔细检查提升路径的文件执行文件列表,或恶意软件可以复制到可执行文件名类似的位置,例如, ProgramFiles 供应商若干(程序files注意;日;在空间上缺乏内容),在这个位置。恶意软件将控制应用程序加载的DLL,在图2中,我复制了微软网络监控组件创建C用户: ProgramFiles目录(用户可控制目录)和启动组件。
图2已启动的微软网络监视器组件的副本。
最后,为了实现应用程序的兼容性,升级应用程序与标准用户环境共享。恶意应用程序可以使用这个状态影响升级的应用程序的行为。就此而言,最直观的例子是用户的注册表配置文件hkey_current_user(HKCU)。配置文件是共享的,用户希望他们的工作为标准用户注册和扩展,可用于升级应用软件可以加载到升级的应用程序,使用任何壳浏览对话框,如打开文件和保存文件,等等,使用注册外壳扩展在HKCU。其他国家也有,尤其是基础的命名对象的命名空间,在应用程序将创建同步和共享内存对象为E。例,恶意软件可以利用共享劫持的共享内存对象的升级应用程序,从而危及系统的应用。
As for the Windows integrity mechanism, because of the lifting problem mentioned above, its effectiveness as a barrier is limited, and it still has limitations due to application compatibility.For example, UIPI will not prevent standard user applications from drawing on the desktop, which may be used to deceive users, and interact with the upgraded application by way of awarding administrative privileges for malicious software.At the same time, the Windows integrity mechanism can not be used across the network.The standard user application running with the PA account will be able to access system resources on a remote system with the administrative privileges of the PA account.If these restrictions are resolved, the compatibility of the ap然而,我们一直在探索提高系统安全性的方法(例如,改进保护模式IE),解决应用程序兼容性问题,并与软件开发人员密切合作。
然后,当你运行UAC的Windows Vista PA帐户,什么级别的恶意软件保护呢首先,记住,要做到这一点,恶意软件必须先进入系统并开始执行。窗户有多深的防御功能,包括数据执行保护(DEP),地址空间随机化(ASLR)加载,IE 8浏览器的保护模式,SmartScreen筛选器,可以帮助防止恶意软件进入系统并运行Windows后卫。
作为以某种方式访问到系统的恶意软件,因为软件的作者(如合法开发商)假设用户具有管理权限,大多数恶意软件将无法正常工作,这可以被视为一个安全的优势。但是,已进入系统,旨在利用这些机会的恶意软件将能够获得用户的管理权限--提升第一时间;但即使恶意软件不需要等待实际的提高,因为它有助于推广,这个推广可能愚弄用户的安全重点。我已经公开展示了如何的恶意软件劫持的提升过程在我的UAC内部信息和风OWS的安全边界表示。示威是在安全边界的讨论1分钟03秒。但是,请记住,如果一个恶意软件运行,它只需要用最标准的用户权限可以实现恶意软件的实现,包括本身会被配置为运行、窃取或删除每个用户登录数据的所有用户,甚至成为僵尸网络的一部分。
Windows 7的差异
正如我之前提到的,在Windows 7的一些操作,现在可以通过标准的用户进行的,但在UAC的E7博客文章的描述,我们也意识到我们可以使Windows体验不影响UAC的目标更流利。许多用户抱怨说,当他们执行常见的系统管理操作,Windows Vista本身经常请求管理权限。最好是Windows运行在一个标准的用户环境,因为这将有利于我们的客户。然而,提高权限提示没有警告或鼓励我们这样做,但会迫使用户点击了大部分的对话,大多数用户不理解。因此,Windows 7开始减少这些提示从默认的Windows体验,和ENA作为管理员运行的用户可以控制他们的快速体验。
出于这个原因,我们进一步重构系统,以便使用标准用户权限的用户可以执行更多的任务。我们减少一些提示提示数字,如:Windows 7安装ActiveX控件还引入了两个新的UAC的操作模式,可以在新的UAC配置对话框中选择(见图3)。进入控制面板,单击用户帐户,单击用户帐户,然后单击更改用户账户控制设置;你可以打开对话框。(你也可以点击提升权限的提示,改变时,显示这些通知,链接或访问通过访问操作中心的对话框。)
图3可在新的UAC配置对话框中的两个新的UAC操作模式选择。
默认设置如图3所示的是一个新的水平。位于滑块的顶部相当于Windows Vista中的默认模式;注意;不同,只有当非Windows文件要求提高Windows 7的实施,默认会提示用户的Windows;提升行为和相同的Windows Vista。
接下来,下一个滑块位置是第二个新设置。它具有相同的标签,但附在后面;(不降低桌面亮度)这种模式,默认的模式是,提示将出现在用户的桌面上唯一的区别(而不是安全桌面),优点是用户可以同时促使活跃状态与桌面交互的,但正如我之前提到的,会有一个风险,第三方辅助软件可能无法正常工作的提示对话框。
最后,如果你选择滑块的底部位置,将完全禁用UAC技术,使所有的PA帐户来运行软件将使用完全管理权限的操作,文件系统和注册表虚拟化将被禁用,和IE保护模式将被禁用。虽然这个设定的使用不会提示,保护模式下的IE的损失是该模式的主要缺点。
自动升降
当使用两个中间设置,大多数的Windows可执行文件将不会被提示,由于系统的自动升级,和Windows可执行文件。首先,在这种情况下,Windows可以定义文件是什么答案取决于多种因素,但也必须满足两个条件:的可执行文件必须经过数字签名的Windows的出版商,出版商是用于Windows的证书签名的所有代码(只有签名的微软是不够的,因此不包括与微软的Windows软件不包括在内);和可执行文件必须位于一个目录安全性;。安全目录标准用户不能修改目录,其中包括%systemroot%system32(如 Windows System32)和它的子目录,%SystemRoot% EHOME,% % ProgramFiles目录下(包括Windows Defender和Windows日记)。
同时,决定了它的可执行文件是常见的。exe,exe,或COM对象,并有自动升降的一些额外的规则。如果在Windows可执行文件exe类,如前面所定义,指定其列表中的autoelevate属性,这些可执行文件将自动升级。这个应用程序也将UAC在此列表中表明他们需要管理权限,并sigcheck效用来存储列表的任务管理器(任务管理器.exe)命令sigcheck ndash;M %systemroot%system32 taskmgr.exe任务管理器已被添加到自动升级清单显示,如图4所示。
图4 autoelevate属性
一个简单的方法来找到自动提升可执行文件目录树中是使用Sysinternals字符串效用如下:
字符串ndash;* exe中/我autoelevate |
还有一个硬编码列表Windows可执行文件,自动升降的处理。这些Windows可执行文件不是Windows 7内部的文件,所以他们必须能够运行在autoexecute属性旧制度。包括migwiz.exe(迁移向导),该pkgmgr.exe(包管理器)和spinstall.exe(服务包安装)。
微软管理控制台,Mmc.exe,会经过特别处理,因为它的多系统管理单位在dll.mmc.exe形式实现是通过命令行启动,并命令行指定a.msc文件,其中列出了管理单元MMC是loaded.mmc.exe将请求行政许可启动时通过PA帐户。当Windows发现它,它会验证Mmc.exe是否是Windows可执行文件,然后check.msc.in为了获得自动升级资格,the.msc文件必须满足Windows可执行文件的条件(在安全位置)的窗口签字,必须在自动upgrading.msc.the列表内部清单实际上包括被连接到Windows的所有the.msc文件。
最后,一个COM对象可以通过创建子项指定命名的高程(他的名字是启用的值设置为1),用它的注册表值的注册表项中指定需要管理权限,如图5所示的壳;复制;移动 / / ;/删除重命名;和链接;注册对象,当用户没有访问的执行文件系统操作的帐户上的位置,资源管理器将使用对象。
图5 shell注册表项
为了使COM对象会自动提升,它也必须是一个Windows可执行文件,必须由Windows可执行文件实例化。(然而,没有实例可执行文件需要被标记为自动升降。例如),当你使用浏览器创建一个目录在% %的ProgramFiles目录PA帐户,会自动增加,因为COM对象请求推广,对象DLL是Windows可执行文件,和资源管理器是Windows可执行文件。
自动升降和UAC的目标
然后,所有特殊的自动提升规则背后的原理是选择什么程序不提高自动升降自动由以下问题确定:无论是应用程序开发人员可以使用自动升降无意或不取决于管理当局;因为你可以使用cmd.exe从命令行参数执行一个批处理脚本,和普通用户不需要提高运行命令提示符方式(大多数用户甚至不知道命令提示符是什么),因此不列入cmd.exe自动升降名单。同样,承载控制面板插件可执行文件rundll32.exe在Windows的最终版本7没有自动的增加,因为对于任何常见的管理任务,不需要改进,并且,如果自动升级rundll32.exe,它是通过命令行承载任何DLL会导致开发商要求管理员权限的能力,他们不知道。
由于Windows Vista Beta的发布,用户一直要求Windows添加任意应用程序自动提升列表提供了一条途径。他们之所以经常提到的是他们的一个第三方应用,迫使他们点击提示促销不断,这已成为他们日常工作的一部分一样。Windows Vista,这个函数不使用Windows 7提供的。我们明白这个操作非常繁琐,而且可能会有一些合理的原因,这些应用程序不能运行没有管理权限,但开发商会避免修改他们的代码使用标准用户权限,这太危险了。即使任何应用程序列表会自动提升,它只能访问通过管理员,但开发者可以通过更改他们的应用程序安装程序来增加他们的应用程序,这需要一次性升级。相反,我们选择投资于培训,并与应用程序开发人员紧密合作,确保他们的程序可以作为标准用户身份。
许多人发现,贯穿于PA帐户的标准用户权限的第三方软件可以使用自动升降获得管理权限。例如,软件可以通过WriteProcessMemory API注入资源管理器,和CreateRemoteThread API来执行代码,这是所谓的DLL注入,因为在资源管理器代码(Windows可执行文件)执行,因此它可以使用COM对象的自动升降(如和移动/复制;和删除重命名; / 环节;对象)修改系统注册表或目录,以及软件的管理权限。如果是这样的话,这些步骤将需要审慎规划不重要。因此,我们不相信合法的开发人员会选择这些步骤,如果我们将它们与标准用户权限进行比较,事实上,我们建议任何应用程序开发人员不应依赖系统中的升级行为,并建议应用程序开发人员可以在标准用户模式下测试他们的软件。
接下来的发现是,恶意软件可以使用相同的技术来获得管理权限,以同样的方式,这是真的,但是正如我刚才指出,恶意软件也可以通过促使危害系统。从恶意软件的角度来看,Windows 7的默认模式不再是总是告诉模式(Vista模式)是更安全,并使用管理权限的恶意软件仍然会坠毁在Windows 7的默认模式下运行时。
结论
总之,UAC是一组具有一个整体目标的技术:用户可以运行在一个标准的用户的身份。因为窗口的变化,标准用户可以执行需要管理之前更多的操作,结合虚拟化、文件和注册表的提示,以共同实现这一目标。最终的标准是:默认的Windows 7的UAC模式通过减少数量提示使PA用户更流畅的用户体验让用户控制,可以修改其合法的软件系统,还实现UAC的目标,这使得越来越多的软件可以运行没有管理权限,并继续使软件生态系统写工作软件使用标准用户权限重新.