盆盆的博客 : Windows Vista UAC经典误解之一:不过就是靠弹出提示来阻止病毒而已

来源:百度文库 编辑:神马文学网 时间:2024/04/29 21:15:16
Windows Vista UAC经典误解之一:不过就是靠弹出提示来阻止病毒而已
当执行某个任务标明自己需要管理特权时,UAC确实会弹出一个对话框让我们选择。有人看到这里马上就“顿悟”了,于是乎,开始鄙视起UAC的安全机制-什么都得靠用户去判断~
果真是这样吗?
UAC ≠ Consent
UAC对话框是让用户选择是否提供高级特权,如果不弹出对话框,程序就以低特权运行。根据“最小特权”的安全原则,尽可能让程序运行在低特权模式,这样就算这些程序受到攻击或者有漏洞,恶意代码也不可能用作跳板攻击系统。
病毒会不会弹出对话框让你选择?
这就要分析一下病毒的常见行为。
通常,如果病毒编写者智商不低的话,病毒的习惯是“悄悄地进村,打枪的不要”。
病毒一般不会主动跳出来说“我就是病毒,看这里、看这里、看这里。。。你点我呀。。。”
就好像绝大多数“文抄公”一样,在抄袭ITECN的原创文章时,总是千方百计隐藏自己的劣迹,例如删除图片中的版权水印,把作者名改成他们自己。。。
当然不排除,有些病毒采用这种“社会工程学”手段,希望能够骗用户点击“允许”。
这里首先分析一下要弹出提UAC提示,得满足哪些条件?
Windows并没有一种与生俱来的魔力,能够未卜先知哪个程序需要管理员权限。
要想拿到管理员权限,程序必须在它的manifest里添加“requestedExecutionLevel level="highestAvailable”(或者level ="requireAdministrator")这样的语句。
附图所示的是注册表编辑器的内嵌manifest语句:

盆盆评注:Windows可以自动识别绝大多数安装程序,从而提示提升权限。
也就是说,病毒要想能够弹出权限提示框,就必须修改其manifest。
然而对于病毒来说,要用这种方法欺骗用户,非常难,这是因为以下四点:
1. 病毒大多数会设置为开机时运行。但是UAC默认阻止开机时需要提升权限的进程。这条路可以说被堵住了。
2. 病毒的特点是,即使没有手动启动它,它也会想法设法自己启动(否则技术含量也太低了)。但是如果电脑用得好好的,我们没有点击启动任何程序,但是突然冷不丁弹出一个橙色警报的UAC对话框,您会选择“允许”吗?

盆盆评注:注意,在这种情况下,UAC对话框并没有获得鼠标焦点,而是会在任务栏上显示一个黄色闪烁的图标,不会打断用户的工作。这很容易判断。
3. 病毒伪装成合法的模样,或者嵌入到其他正常程序(这些程序标识为需要弹出UAC对话框)中,这时候也会弹出橙色警报的UAC对话框。
4. 在企业环境里,甚至可以设置组策略,不允许提升没有合法数字签名的程序。这样这类病毒就无法运行了。

听到这个概念时,可能有朋友会很悲愤地认为“微软又一轮的垄断开始了”,并且前瞻性地断言“病毒也可以弄一个数字签名”。
盆盆评注:病毒当然可以自己做一个数字签名,但是无法伪造别人的签名。那么合法的程序会不会不能运行?不会,一方面可以在企业环境里通过CA签署没有签名的程序,另外一方面也可以打开一个高特权的Shell,然后运行这些程序。当然肯定会比较麻烦,这需要在安全和方便之间进行权衡。
现在我们已经可以得出以下三个结论:
1. 并非所有病毒都敢冒风险,修改menifest,以便弹出对话框,诱使用户点击。
2. 就算病毒会弹出UAC对话框,也很容易判断,只要看到是橙色报警、或者是莫名其妙自己弹出来的,多留一个心即可。学习成本并不高。
3. 无论如何,肯定会有人选择“允许”。
那么是不是都点击“允许”,还不如禁用UAC?这就带出了另一个经典误解,这是后话,此处且按过不提。
病毒制造者会改变策略,他们会尽量想办法在以标准用户的身份运行时,获取高级特权,办法迟早会有的,针对Windows Vista的革命性病毒迟早会出现。
如果您实在觉得UAC麻烦,为什么不试试这个方法呢?
http://blogs.itecn.net/blogs/ahpeng/archive/2007/03/21/EasyDisableUAC.aspx
饶是如此,还是可以相信,很多人宁可把权限拱手奉送给应用程序,也不愿意控制在自己手上。
叹叹。
已发表2007年3月27日 22:30作者ahpeng归档在:Windows Vista技术文章