admin 管理员组

文章数量: 887018

UAC ,全称User  Account Control (用户帐户控制),相信使用 NT6.X 系统的各位对它都不会陌生。尽管距其在 Vista 中首次出现已经有了两年多的时间,但舆论仍然没有接受它。在这种环境下, UAC 在操作者群体的意识中成了操作繁琐、蔑视操作者智商的多余功能,不少朋友纷纷把关闭 UAC 列入“装好系统后必做的几件事”中。我对这种观点不敢苟同,否则我也就没必要来写这篇文章了。

杀毒软件——不足够的防护性;HIPS——安全的必由之路
先说一段个人经历。大概是 05 年这样,因为一时不慎,致使计算机感染威金病毒。亲眼目睹安装金山毒霸的 XP 系统瞬息之间崩溃殆尽的经历,除了让我不再那么信任杀毒软件的防护能力外,更让我萌生了寻找更高层次防护软件的念头:这一软件并不依靠特征码来防护系统,而是拦截一切程序,并由我来决定是否放行。后来在大众软件上看到了 System Safe Monitor ,一款俄罗斯软件,急忙如获至宝般的把它安装上。软件界面虽然简陋,但确实能符合我的要求,同时也有白名单功能记录信任程序。总体上看,很不错。
事实上我所需要的,就是一款 HIPS (主机入侵防御系统,尽管那时候这个称谓尚未流行)。杀毒软件的更新永远要追着病毒来,这种滞后性使得病毒有机会利用时间差攻击系统;而对杀毒软件而言,亡羊补牢就意味着重大的失败。这种情况下,要谋求更高的安全性, HIPS 成为了当然之选。
微软想必也看出了这一点,于是在 Vista 中加入了具备基本 HIPS 功能的 UAC 。相较于几乎没有自带防护能力的 XP ,这可以说是系统安全性上的飞跃了。在 HIPS 被越来越多谈论的今天,这一举措也算顺应潮流。


UAC 是如何工作的?
撇开 UAC 虚拟化等有趣功能不谈,我们可以简单的把 UAC 当作权限临时重分配的工具。在默认情况下,所有的非系统核心进程都只拥有标准权限,这一权限不能对系统关键区域进行修改。对于一个程序,如果它当中含有提权申请,则在运行时会弹出 UAC 窗口要求提权。如果用户允许,则程序暂时性的获得了最高权限,可以对系统关键区域进行更改;如果用户拒绝,则程序被拒绝执行。而如果程序中没有提权申请,则系统会让程序运行于标准权限下。(这是一个很有意义的设计,下文再叙)。同时,对于所有程序,都可以用“以管理员身份运行”的方式手动提权。而即便病毒感染了系统,它也处于 UAC 的监视之下,这使得病毒的反清除行为会受到很大阻碍。正是凭借这一机制, UAC 成为了一道重要的系统防火墙。


UAC 对于用户的意义何在?
对于熟练用户,所有HIPS都将是最坚固的护盾,UAC也不例外。在用户能辨别当前要求提权的程序的前提下,即便裸奔运行病毒,UAC也能很好的保护好系统。
而对于新手,UAC是否就如某些言论宣称那般毫无作用呢?
确实,不具备判断能力的新手并不能完全发挥UAC的功能。但是上面所说的“很有意义的设计”这里就发挥作用了——不具备提权申请的病毒将直接被强制运行于标准权限下而不能有效的感染系统,而从我个人有限的接触看,没有提权申请的病毒是多数。考虑到新手大抵不具备裸奔的勇气,配合杀毒软件的UAC已经进一步的提升了用户系统的安全系数,其意义依然显著。


是骡子是马拉出来遛遛——UAC实战病毒攻击
百闻不如一见,我们不妨来做一个实验看看UAC的防护能力。测试都在VMWare Workstation 7虚拟机软件中进行。测试平台基于Windows7 RTM,对比平台基于Windows XP SP3。两者都不安装任何防病毒软件,使用系统默认安全设置。针对普通用户日常较容易碰到的几种病毒攻击方式,我们选取了一款伪装U盘文件夹的Autorun病毒。本来我们还打算挑选若干挂马网站进行攻击测试,却“可悲”的发现这些网站连IE8都无法突破(IE6突破正常,嗯,可见IE8安全性方面的提升),由于Windows7默认的浏览器就是IE8,无法调整此变量至与XP一致(即IE6),故不得不作罢。如果有朋友能提供几个0day漏洞网站的话,我将抽时间完成这项测试。
     (制备好的染毒U盘)

在Autorun病毒环节,我们首先在XP中制备染毒U盘,然后将U盘接入系统,并模拟用户不知情的情况下误击病毒文件的操作,然后接入另一只U盘,观察病毒是否对新U盘进行了感染。
XP 系统在双击打开U盘时即激活了Autorun病毒,任务管理器中可见异常进程出现。在另一只U盘被接入后,当中的文件夹迅速遭到了感染。
 

 

在Windows7中,由于系统取消了对移动设备Autorun.inf的支持,双击进入U盘并没有激活病毒。我们模拟不知情的用户(由于一来病毒伪装的文件的图标与Win7文件夹图标并不一致,二来默认的“详细信息”视图会明确标注目标类型,这种“不知情”发生的概率又低了一些)去点击伪装的文件夹,任务管理器中未出现异常进程。之后接入的U盘也没有受到感染。UAC防御Autorun病毒成功,整个过程中并没有弹出UAC提权窗口。
 

 

有限的测试体现了UAC在安全防护上的作用。在此特别鄙视英国“知名”互联网安全厂商Sophos(传送门: http://news.mydrivers/1/147/147995.htm ),连 UAC 的工作机理都不知道(或者故意回避?毕竟是既得利益者)就大放厥词,建议他们来阅读这篇文章。


兼容性杀手?UAC与兼容性
经常有人抱怨NT6.x系统的兼容性多么多么差,身边也有人因为“不兼容”而将系统换回XP。但从我个人的使用看,几乎所有的软件都能很好的工作于NT6.x上。区别在哪?排除掉确实因为软件开发导致的兼容性问题的话,普通用户只会双击运行程序,而我在一次尝试失败后会根据程序行为对其进行手动提权。刚从XP过来的用户,估计不会有那么一套权限划分的意识,UAC在某种程度上而言也就削弱了系统对普通用户的兼容性。但我们如果能够根据程序行为对需要的程序进行手动提权,所谓“兼容性问题”也就迎刃而解了。对用户水平更高的需求?也许吧。但计算机从来都是与永无休止的学习联系在一起的。而如果程序的开发能进一步的规范化,内置提权申请的程序就不存在被UAC影响兼容性的问题了(当然,请用户注意辨别)。
PS :某些程序说明中的“关闭UAC”要求,也可以、并且应当以临时手动提权替代。


“权力”越大越好?从UAC看权限
时常有朋友传授开启所谓“超级管理员”的方法,人民群众也乐于去接受模仿。这不难理解,一来Vista以前的系统都会大大咧咧的直接把最高权限提供给用户使用,习惯使然;二来权限毕竟有“权”,人人喜欢,可以满足自己的完全掌控欲。然而,我们真的一直需要最高权限吗?
也许有人会说,我的电脑当然要完全掌控。但是首先开启“超级管理员”实质上已经规避了系统的几乎所有安全措施;其次在使用计算机的过程中未必所有的程序都是以你的意志而去运行的;再次普通管理员已经能够很好的在安全环境中完成所有的管理任务,我们需要的只是——临时手动提权。


并非完美——UAC的不足
UAC 虽然强大,但毕竟只是带有HIPS特征的系统防护功能。从实践来看,UAC也存在着不足——白名单功能的缺失。如果微软能在UAC中加入白名单功能,我想将会有更多的人乐于去使用它,但到了Windows7,这项功能依然没有出现。可能微软认为一个固定的白名单将成为受攻击的薄弱区域,但是否可以将这个区域也用UAC保护起来呢?好消息是诺顿曾在Vista时期推出过一款为UAC添加白名单功能的小工具,从个人使用看能在安全与便捷之间达到较好的平衡。在Win7时代,我们或许也可以期待诺顿再次推出类似的软件。

关于UAC的一点使用建议
随意的安装一款还过得去的杀毒软件而将UAC当做系统的第二道防火墙。


结语——UAC,不只是UAC
又一次的,我丝毫没有指望这篇孱弱的文章能让任何人的观点有任何改变,我不过直抒胸臆罢了。UAC作为微软力推的新安全功能,大抵由于其“新”,一如既往的遭到了强烈抵制。我只希望,您在做出决定之前,能先了解下它是什么、能干什么,而不是被外部言论主宰。UAC,不只是UAC,它代表的是HIPS的防护思想,我坚信这是我们的安全意识应当具备的要素。UAC饱受批评,但至少它为宣传这个思想做出了重大的贡献(话说由不了解某个思想的人来批判它是个极其可笑的做法)。
另外对于传道授业者,希望能在宣传之前想一想,你的言论能为接纳者带来什么,好的与坏的,应当毫不隐瞒的详细告诉他们。暑假曾和一个朋友进行了一场论战,最后不欢而散。朋友认为精简版系统很好很强大,应该推而广之;而我认为“精简”应由用户根据自己的情况进行,盲目推广“精简版”是极不负责的做法。我对这场论战毫不后悔,即便它让我失去了一个朋友。“不应该去隐瞒什么”,这就是我当时的信念。
当然,无论如何,最后的决定权在于您。但请牢记,自己的行为,请由自己负责。
完毕。


一点补充:今天某人谈到UAC对于非系统盘的保护存在局限性,撇开此人的人品不谈,这个问题确实存在。然而当我拿出熊猫烧香、小浩、磁碟机、机器狗来做实验时,却发现只有小浩勉强能运行一下,而它所作的,只不过是改改窗体名称、隐藏几个文件、在非系统盘放置一个自己的隐藏副本而已。当重启之后,简单的修改修改文件属性所谓的“毒王”也就不过尔尔了。但是否会出现直接针对非系统盘进行破坏而不植入系统的病毒(虽然已经不符合病毒定义了)呢?这是我们需要警惕的一个方面。

本文标签: 性及 权限 一席谈 UAC