Windows Vista用户帐户控制深度剖析

 

文章作者 盆盆

技术难度 Level300

内容简介 本文详细介绍了用户帐户控制(UAC)的应用程序标识、安全桌面和虚拟重定向等深层原理。详细描述了用户帐户控制对用户的价值,并且总结为什么不能禁用 UAC的若干理由。更重要的是,本文还就用户广为诟病的UAC问题提出比较巧妙的解决方案,既能尽可能规避UAC所带来的麻烦,又能保留UAC的安全性。

原始链接 http://blogs.itecn.net/blogs/winvista/archive/2006/08/09/UACV3.aspx



我们现在已经知道,在Windows Vista中,使用管理员帐户登录系统,当Winlogon进程收集帐户凭据并交由LSA验证后。LSA会查看该帐户的访问令牌,如果发现里面包含某些高级特权(例如“修改系统时间”)或者高级SID(例如管理员组SID),就会自动创建两个访问令牌,一个是管理员访问令牌(Full Token),另一个是标准用户访问令牌(UAC Token)。

由Winlogon启动的初始化进程userinit链接到标准用户访问令牌,所以由userninit进程启动的Explorer进程也链接到标准用户访问令牌。同样由Explorer启动的用户进程也会自动链接到标准用户访问令牌,由此大大减少受攻击面,极大地提升系统安全性。如附图所示。

如果某个进程需要以更高权限运行,则系统会弹出一个权限提升对话框,确认后即可以更高权限运行该进程,该进程链接到管理员访问令牌

提示

要了解有关UAC进程创建的流程,可以参考MVP Smallfrog的《Windows Vista UAC 模式下的进程创建实战的故事》

五种标识权限提升的方法

Windows Vista并没有一种与生俱来的魔力,可以未卜先知某个应用程序是否应该运行在更高安全级别上。应用程序必须自己想办法通知Windows Vista它需要更高权限。有以下五种方法,让Windows Vista明白该应用程序需要提升权限:

(1) Windows Vista可以智能识别安装程序,例如根据安装程序的文件名(包含install或者setup),还可以智能识别msi发布的安装包等等。可以做一个实验,如果修改其他某个应用程序的名字,例如将QQ.exe重命名为QQInstall.exe,运行它就会自动触发权限提升,原来UAC以为这是一个安装程序。

(2) 在可执行文件的属性对话框、兼容性标签页里勾选“以管理员身份启动该程序”复选框。这等效于在HKCU /Software/Microsoft/Windows NT/CurrentVersion/AppCompatFlags/Layers注册表分支下添加键值,也相当于修改C:/Windows/ AppPatch下的sysmain.sdb兼容性数据库。

(3) 在程序的manifest文件或者内嵌的manifest信息里加入“level=highestAvaible”或者“level requireAdministrator”安全级别。

(4) 鼠标右键单击应用程序,选择“用管理员帐户运行”菜单项。

(5) 利用ACT(应用程序兼容性工具)为特定应用程序创建兼容性数据库,以便IT部门可以方便地在企业里部署兼容性设置。

提示

其中(2)和(3)可以参考笔者的Windows Vista UAC安全功能深入剖析系列之二》

毁誉参半的安全桌面

大概是从5365 Build起,当系统弹出“用户帐户控制”提升权限对话框时(实际上是consent进程),桌面背景会呈暗色显示,这可能导致某些显示器弹出“无信号”的错误消息,正好可能挡住consent对话框,让这些用户感到非常不便。

1.原理简析

其实这个功能的本意是非常好的,可以增加UAC功能的安全度。原来这个暗色的背景实际上是安全桌面,也就是我们按 “Ctrl+Alt+Del”组合键时所看到的蓝色的特殊桌面(上面有类似启动任务管理器等命令)。为什么看到的是暗色的当前桌面呢?原来这是微软为了保持用户体验的一致性,特地对当前桌面做了一个“快照”,将其作为安全桌面的“墙纸”。

由于consent对话框实际运行在安全桌面上(安全桌面运行在session 0上,而用户进程都运行在session 1或者更高的session上),所以安全性非常好。除了少数系统进程外,任何用户进程都无法和consent对话框进行通信,所以恶意程序无法仿冒提升权限对话框以便诱使用户点击。

由于安全桌面的安全性非常好,所以连我们自己都无法直接监控UAC背后发生了什么,同时甚至无法按PrintScreen键进行截图(剪贴板程序无法获得键盘输入)。

2.如何监控UAC底层变化

用常规方法无法对UAC背后的变化进行监控,因为这时候提升权限对话框运行在安全桌面上,用户进程无法与之进行通信,所以我们必须另辟蹊径。

联想到Longhorn Server也具有UAC功能(默认禁用),所以我们可以利用Longhorn Server搭建一个实验环境,用管理员帐户登录进入Session 1,然后借助远程桌面,以另外一个管理员身份登录到这台实验机,进入Session 2。

我们在Session 1里试图运行一个管理任务,这时候系统会提示权限提升。由于安全桌面的原因,这时候无法在Session 1下用Process Explorer访问consent进程的详细信息。

这时候我们可以在远程桌面窗口(Session 2)下打开Process Explorer,可以很方便地查看consent进程的详细信息,如附图所示,我们可以发现consent进程的父进程是svchost(本例的PID 是1008),查看这个PID 1008的svchost进程,发现是“Application Information Service”服务的宿主进程。所以可以推测是“Application Information Service”服务启动了consent进程。同时还可以看到consent进程本身运行在Session 1,而不是Session 0。



3.禁用安全桌面

可以用以下方法禁用安全桌面:

(1) 运行secpol.msc,打开“本地安全策略”管理单元窗口。

(2) 在左侧的控制台树中依次展开本地策略、安全选项,在右侧的详细窗格里双击“用户帐户控制:提示提升时切换到安全桌面”策略项。

(3) 在打开的对话框里选中“已禁用”选项,如附图所示。



UAC停薪留职

不少读者朋友非常讨厌UAC,有时候UAC就像是一位喋喋不休的MM,时不时地打断我们的正常工作。为什么那么多朋友都无法容忍UAC?用户对UAC功能的抱怨大概集中在以下两个方面:

(1) 我已经是管理员了,为什么不直接允许我执行管理任务?如果是第三方应用软件倒也罢了,为什么Windows自带的工具软件都要阻止我?为什么不能让防火墙一样设置规则,让UAC下次不要再提醒?

(2) 为什么转移、删除一个文件都要那么麻烦?

有不少朋友安装好Windows Vista后,第一件事情就是禁用UAC!其实这是一种非常不值得的做法,至少有如下五大理由:

(1) UAC功能是Windows Vista中最大的卖点之一,花费不菲购买了Windows Vista,却把其中最值钱的功能特性给禁用了,这很有点“买椟还珠”的意思。

(2) 如果禁用UAC,则会同时禁用IE保护模式等安全特性,这将大大降低系统的安全性。

(3) 在企业环境里,如果启用UAC,可以减少约40%的桌面相关成本。

(4) 如果禁用了UAC,则当以普通用户登录系统时,无法享受UAC带来的便利(无法方便地安装程序和执行管理任务,也无法享受UAC为遗留应用程序准备的兼容性帮助)。

(5) 强烈推荐正在追MM的GGDD们启用UAC,这可以帮助您提前训练对MM唠叨的抵抗力。

其实从Build 5308、Beta 2,一直到当前最新的5472,UAC功能的进步是有目共睹的,现在UAC的恼人提示已经减少了很多,也增加了很多人性化的改进,UAC功能已经变得越来越平易近人,更多时候,UAC就像一位站在不远处用慈祥目光注视着我们的母亲,而不再是一个在您耳边不停斥责咆哮的上司。

如果您确实讨厌UAC,推荐不要彻底禁用它,而是用以下两种方法将其临时禁用,需要时可以即时恢复。

1.临时摆脱UAC的唠叨疯狂的石头

(1) 打开任务管理器,切换到“进程”标签页,然后结束“Explorer”进程。

(2) 这时候再单击“显示所有用户的进程”按钮,即可让任务管理器运行在管理员的级别上。

(3) 切换到“应用程序”标签页,单击“新任务”按钮,启动“Explorer”进程,现在新启动的“Explorer”进程运行在管理员级别下。

现在虽然在安全中心里显示UAC启用,如附图所示。但是实际上由于Windows系统的Shell进程 Explorer此刻连接的访问令牌是管理员级别的,所以在Windows里启动的任何应用程序都自动继承管理员级别的访问令牌,不受UAC的限制,包括执行管理任务和文件操作。

这时候的UAC功能,光凭“肉眼”很难辨别真伪,说它是假的,安全中心里明明显示启用;说它是真的,但是却不会受到任何限制……

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值