windows 7 中的用户帐户控制(uac)真的有必要吗? 财富值78

2016-10-05 07:28发布

Windows 7 中的用户帐户控制(UAC)真的有必要吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
肖红勇
1楼-- · 2016-10-05 08:07
Update: 这个回答其实偏题了,只是想补充一点关于 UAC 的背景和资料,有些回答完全没有理解 UAC 的目的。
至于 UAC 该不该关,反正不关绝对比关了安全
UAC 设计的好不好,见仁见智,微软是主动选择了这条对抗用户习惯的道路,走不走得通还得拭目以待,反正现在很多软件都适应了 UAC,不管是正常软件还是恶意软件。

============================分割线==========================================
讨论 UAC 的技术人员能不能先把 UAC 的相关文档看一看?比如这个
Security: Inside Windows Vista User Account Control

User Account Control: Inside Windows 7 User Account Control

Because elevations aren’t security boundaries, there’s no guarantee that malware running on a system with standard user rights can’t compromise an elevated process to gain administrative rights. For example, elevation dialogs only identify the executable that will be elevated; they say nothing about what it will do when it executes. The executable will process command-line arguments, load DLLs, open data files, and communicate with other processes. Any of those operations could conceivably allow malware to compromise the elevated process and thus gain administrative rights.
UAC 不是 security boundary,因为低权限恶意程序完全可以通过和高权限程序合谋来进行破坏,而对于用户来说,这是没法识别的,所以 UAC 不能代替反病毒软件;低权限恶意程序也可以完全地访问用户数据,所以 UAC 也不能保护用户隐私。

To summarize, UAC is a set of technologies that has one overall goal: to make it possible for users to run as standard users. The combination of changes to Windows that enable standard users to perform more operations that previously required administrative rights, file and registry virtualization, and prompts all work together to realize this goal. The bottom line is that the default Windows 7 UAC mode makes a PA user’s experience smoother by reducing prompts, allows them to control what legitimate software can modify their system, and still accomplishes UAC’s goals of enabling more software to run without administrative rights and continuing to shift the software ecosystem to write software that works with standard user rights.
翻译:总结一下,UAC 这一系列技术的目的:让用户以 standard user 运行 Windows 成为可能。它通过1. 允许 standard user 执行更多之前需要 admin 权限的操作 2. 文件和注册表虚拟化,以及3 .显示的提醒用户来达到这个目的。它的底线是默认情况下,Windows 7 UAC 可以让 Protected Admin 的体验更流畅,允许 Admin 控制哪些程序可以合法修改系统,并仍然符合 UAC 的最终目标:让更多的应用程序不再需要 admin 权限,并以此持续地改变 Windows 的软件生态。

Vista’s UAC security prompt was designed to annoy you
UACs real purpose is quite simple: its meant to trip whenever a routine attempts to elevate security privileges, and get in your face. As we have reported before, this has two goals: a) it give users a chance to approve of the elevation in the off chance that something wrong is happening, and b) it encourages developers to design their software such that privilege elevations arent needed in the first place. The latter is really the point of UAC, since users have absolutely zero control over the privilege requests their applications make (other than to chose not to install said apps).

发明 UAC 的目的就是为了未来不再需要 UAC,所以 UAC 不是用来烦用户的,UAC 是用来烦开发人员的,是为了提醒开发人员,你们的程序真的需要 admin 权限吗?

对于本来就有恶意的程序,比如大量国产软件,完全可以在安装时安装各种服务各种驱动来达到邪恶的目的,根本无需弹 UAC。

所以,时至今日还碰到老是需要弹 UAC 的程序,只有一个解释,开发人员水平太次了,干坏事都干不好。

PS,Win8 你还真关不掉 UAC,关了 metro app 都不能正常运行了。
Mathea米菲
2楼-- · 2016-10-05 08:13
我觉得很有必要。蓝色的一般放行就可以了,黄色,红色需要重视一下。
繁华只有寂寞
3楼-- · 2016-10-05 08:16
你宁可各种安全卫士, 杀毒软件不断的弹窗, 也不愿意看到Windows的UAC安全提示?
操作系统算是比较底层的啊?

ps. 操作系统弹UAC就是烦, 全家桶随便装就是好?
Simple
4楼-- · 2016-10-05 08:03
我来说一个吧,win7上uac一直关闭,嫌烦。最近刚升了win10,uac默认打开就没管它,然后升级搜狗输入法的时候,出现了个提醒我领勋章的弹窗,我心想勋章呗,领了有没啥坏处,一时脑抽忘了搜狗的尿性,点了确认后才发现有两个勋章是暗藏下载安装捆绑软件的(浏览器什么的),心里不由得咯噔一下,想我这一世清白就要毁在搜狗上。然而搜狗这流氓静默安装的时候uac弹出来了,提醒我说搜狗想要安装xx应用,是否允许,我心里不由得一阵暖流,从此uac就决定开着了
☆iAsk三号★
5楼-- · 2016-10-05 08:01
首先,如果你的常用软件老开 uac,你真的该换常用软件了。。。uac 只有调用重要系统权限的时候才会开。。。成天都要调用重要权限的日常软件是不正常的。。。

然后如果你在 linux 和 mac 下天天 sudo su 的跑,写一个 script 分分钟把你个人信息全弄走然后把你电脑搞崩溃。。。

都是一样的。。。
荥阳亿卓电脑科技
6楼-- · 2016-10-05 08:20
本回答禁止转载到除知乎日报以外的任意平台上。
------------------
现在Win10都发布了,我就顺便说两句我对Windows安全体系的演变和看法吧。
先回答题主的问题:UAC不仅必要,而且非常必要。(如果想看为什么非常必要,请跳转到“再来回答下题主的问题”部分)
(先让我讲讲理论先,我说的未必专业,随便写的,看看就行)

一、Windows 9x 时期
98时期的电脑在现在来看,根本没有任何安全性可言,当时,用户拥有最大的权限,可以对系统进行任意形式的修改随意操作各种系统目录的文件和注册表,而且,不设防的Autoexec.bat和Winstart.bat更是让一些病毒可以随意领先于系统启动
这也就是为什么 @CIH Hacker 写的CIH能遍及全球的原因了,因为98根本没有权限这个意识。
在意识到98的Autoexec.bat和Winstart.bat以及其他文件对Windows的安全产生巨大威胁之后,Windows ME取消了实模式DOS来提升系统的安全性,然而当时很多软件都不兼容ME的不带有实模式DOS的设定,再加上ME本身的不完善,所以,ME失败了。

二、Windows 2000时期
1999年发布的Windows 2000直接把Windows NT带到了桌面上,可是Windows NT的安全性措施,为什么没有让2000成为最安全的系统,反倒在2003年出现了冲击波呢?
这就要从2000的权限设定和默认设置上说起了:
在Windows 2000上,常见的用户组有四个,分别是Administrators(计算机管理员)组,Power Users(高级用户)组,Users(受限用户)组,Guests(来宾)组。
微软当时的设想很美好,默认创建的用户是属于Administrators组的,鼓励用户使用Power Users组的账户,将一般人员归类到Users和Guests组就行了。
可是,当时的软件开发商还在疯狂搞着往Windows目录写文件的事,根本不管你微软的权限设置……
所以,大家都用Administrators组的账户登录了。
然而你用Administrators组的账户登录,跟使用Windows 98有明显的区别吗?
Administrators组的账户是可以随意更改文件,操作硬件,安装驱动,甚至获取登录到SYSTEM账户的权限的!
Power Users组,则是扶不起的阿斗,它能安装程序,它不能访问其他用户的文件夹,它也无法安装驱动,无法修改任意的ACL(Access Control List,访问控制列表),所以它相比受限用户权限太大,无法阻止病毒入侵,相比管理员又只差一点,无法完成必要的管理任务,所以XP时微软直接干掉了Power Users组(至于为什么还显示存在,那是兼容性所需)
(其实微软的本意是想让大家使用Users组,然后需要的时候Shift+右键选择运行方式的,然而控制面板项和MMC控制台文件(*.msc)却不能这么启动,而且系统也不会自动检测提权,所以微软想让用户使用Users组用户的计划已经跑汤了。)
而且2000还存在一个严重的安全性问题,就是默认允许远程用户以空密码登录,这是一个很严重的安全问题,在管理共享开启且Administrator密码为空的状态下,它允许你对对方的电脑进行任意修改……


三、Windows XP时期
Windows XP开始,Windows系统开始注重安全性,比如说新增了Windows 防火墙(但那时的Windows 防火墙功能还很弱,而且不能阻止出站连接),新增了自动更新(也就是说用户不再需要到Windows Update手动检查更新了),在受限账户下可以自动检测部分提升请求(该功能被叫做LUA: Least-privilege User Account,最低权限用户账户,也就是UAC的前身)和取消了默认允许远程用户以空密码登录的设置
然而,那时的XP的安全性相比2000没有实质性的提升。
直到SP2发布,新增了安全中心(提示杀毒是否安装),同时增加了一个重量级的功能:DEP(Data Excution Protection,数据执行保护,可以直接让冲击波等病毒丧失能力)
DEP需要硬件支持,AMD是x86架构CPU硬件防毒的发明者(No eXecute,NX,禁止执行),Intel则称该技术为XD(eXecution Disable)
它的原理很简单。就是不让内存中的代码直接执行(缓冲区攻击),默认仅为系统程序和显式声明自己支持DEP的程序启用。很快黑客就弄出了绕过DEP的方法(内存位置预测+注入),至于微软是怎么解决的,调到Vista/Win7时期吧……(顺着黑字阅读就OK)

四、Windows Vista/7时期
Vista是个好系统!Vista是个好系统!Vista是个好系统!重要的话必须说3遍。
你可能会疑惑我为什么这么说,那是因为Vista是所有NT6的祖宗(也包括Win10的NT10.0),自这以后,Windows的内核架构就没有太大的变化了。
至于Vista失败的原因,主要是:
1、当时的电脑吃不消,2、RTM太不完善,bug太多。
(PS:SP1开始UAC比之前少多了)
你可能不知道Vista对安全的许多改进(很多都被杀毒软件们的主动防御吸取了):
1、引入了完整性级别(Integrity Level),完整性级别分为四级,System(系统),High(高),Medium(中),Low(低)。
System IL对应什么权限自然不用说了,High和Medium对应什么权限呢?
答案是High对应Administrators组拥有的权限,Medium对应Users组所对应的权限(PS:Users/Medium的权限已在NT6中进行了“不危及系统安全性的”提升,目的是让用户在降权的管理员账户下做更多的事。)。
这样做有一个明显的好处,就是受限用户拥有High令牌之后,也可以进行管理操作,方便计算机管理员进行管理,而管理员用户登录后,explorer.exe只拥有Medium令牌,从而防止由用户启动的程序在用户不知道的情况下做出危险的操作。
2、UAC虚拟化
有很多软件,他们运行时候可能只需要写HKLM或Windows目录,而不需要加载驱动,Windows在检测到这种应用后,便会启用UAC虚拟化,把HKLM里的修改存储在HKCR里的一个项里,把Windows等Medium令牌不能写的目录虚拟化到Appdata中,这样做既减少了UAC弹窗的次数,也提升了系统的安全性(避免其他程序通过DLL注入等方法获得High令牌甚至System令牌)。
3、Low Integrity Level令牌和IE的保护模式
你可能会疑惑,为什么刚才我没有提到Low Integrity Level令牌?答案就是Low令牌就是为了部分需要特殊保护的应用程序准备的。
在Low令牌下运行的iexplore.exe,本身拥有的权限极低,从而最大程度上减少了基于浏览器漏洞的攻击。
(别问我为什么你用IE中毒了,这锅应该让Adobe背,PS:ActiveX和BHO在IE7-9时拥有的令牌不能低于Medium)
4、ASLR(Address Space Layout Randomization,地址分布随机化)的引入
Vista开始,系统开始引入ASLR,这玩意就是为了防止绕过DEP的。
之前的Windows版本上,DLL加载的位置都是固定的,而这就容易给黑客带来可乘之机,而在Vista中,系统重要的DLL文件和显式声明自己支持ASLR的DLL文件加载到的内存位置都是随机的
5、Windows 防火墙的增强。
不仅支持了出站限制,而且设置项也比以前丰富多了,这里就不详细写了,直接打开控制面板-系统和安全-管理工具-高级安全Windows防火墙你就能感受到它的强大了。


五、Windows 8.x/10时期
虽然说10里面有部分安全性的改进,但我决定还是不分开了,直接写到一块。
1、AppContainer的引入。
简单理解,AppContainer就是个免费提供的沙盒。
AppContainer能够隔离应用对系统的修改,在Windows系统中,除了“(电脑)设置”等非常需要权限的Metro App,其余的Metro App都必须在AppContainer里面跑。
而且AppContainer不仅支持Metro App,传统的Win32应用照样支持,比如说IE的增强保护模式(在这个模式下的IE不仅iexplore进程是处于Low令牌下运行的,连加载项都是处于Low令牌下运行的,更重要的如果是在Win8.x下运行的IE10-11的话,所有东西都是在AppContainer下运行的。),还有Chrome等程序。
AppContainer像Sandboxie一样照样可以阻止应用随意访问“于己无关”的文件。
(PS:远景上已经有人着手开发可以创建AppContainer的程序了,毕竟AppContainer需要用函数调用,一般用户根本不能用)
2、系统程序完全使用ASLR。
3、(Win10)字体渲染不再跑在内核模式,而跑在用户模式。
升级Win10的用户可能会发现任务管理器里多了这么一个进程。
这么做的好处是很明显的,阻止恶意程序通过字体渲染驱动的bug获得系统的完全控制权,比如说前一阵HT那几个漏洞,首先构造一个有问题的flash文件加载到浏览器里,然后通过Windows字体渲染的漏洞继续提权,恶意程序可以直接提到System令牌上而无视各种安全性保护措施。而在Win10中,即便字体渲染驱动有问题,但只要不是在Administrator账户下,借助字体渲染驱动疯狂提权到System令牌的问题便不复存在了。

编后:
写这篇回答完全是看现在大家对UAC和Metro App的态度写的(毕竟我没有专栏),我是某硬件论坛的版主,我们论坛有些权限狗和高等级玩家很看不上UAC和Windows,理由是UAC太麻烦,还有兼容性问题,至于Windows就说Windows容易中毒……这是什么逻辑啊!
还有最近两天泄漏的Windows 10 LTS,居然很火,理由是没有Metro App,在Administrator用户下“跑的爽”,哎……你们自己作死我没法救了……因为你们自愿把系统的安全性级别降到了Windows 98水平啊……
------------------
再来回答下题主的问题:
为什么某些看似不需要管理员权限的软件需要管理员权限:
1、加载驱动,再利用Windows的Bug和未公开函数篡改Windows内核,获得最高权限(典型例子:TenProtect)
2、常驻服务(题主的例子是XLServicePlatform服务被迅雷检查出停用后的自动修复,不得不说这真的很流氓)

PS:全家桶们是怎么绕过UAC的?
简单来说,就是“开后门”,因为无法无缘无故绕过UAC:
1、通过输入法,输入法会被logonui.exe等进程加载,进而全家桶们可以直接绕过UAC弹窗,自己可以“叫同伙”获得System令牌。
2、通过注册服务开后门。
3、通过安装驱动开后门。
4、通过任务计划开后门。
5、通过Flash漏洞。

8月5日 下午更新:@婷芳琪 对我说这些安全防护措施没有X用,我找了下来源,其实就是CVE-2014-6332漏洞在Windows+IE全系列里的利用,没什么特别的。
首先我用UTF-8编码保存了这个利用文件(Win95+IE3 – Win10+IE11全版本执行漏洞(含POC))。
接着,Windows Defender立即报警,提醒发现了恶意软件(此处的红色是因为我关掉了WD的实时防护,正常情况下应该为受保护):
再看一下记事本,恶意代码被WD自动清除了。(图片略过)
你可能会说,这漏洞IE万年都有,根上的漏洞根本堵不死!
我便自己开了IIS,架设个服务器,把127.0.0.1扔到受信任的站点,安全级别调到最低,不启用保护模式,IE整体也未开启增强保护模式,然而实际的结果却是:
很不幸,恶意代码被IE自动干掉了。
Edge呢?




恶意代码仍旧在,但是在Edge里根本没有用,因为Edge不支持VBScript。
Chrome/Firefox略,原因同Edge。

信息&结论:
1、用漏洞来说Windows的安全防护措施没有X用就是在转移话题。没有任何疑问。
2、这个漏洞早已修补,只要启用Windows Update就可以预防,而且只要安装上杀毒软件,都会被拦截的。
3、VBScript解释器年久失修,早应该被淘汰。(所以Edge不再支持VBScript)
4、IE的增强保护模式下VBScript解释器会呆在AppContainer里无法做恶,一般的IE保护模式也不会有大影响(毕竟权限不够)。
5、在电脑世界中,没有绝对安全的环境。

8月5日 18:20 再更新,Win7下IE8的保护模式已经成功阻止攻击:
如果我不允许,IE便不会继续询问我。
如果我允许(注意,如果选择允许,Windows还会继续询问),恶意代码也没能达到它预期的行为(创建管理员账户),这是为什么呢?
刚才运行恶意代码的过程中,IE做了几件事:
  1. 在保护模式下的IE(页面进程)运行于Low令牌下,权限极低。
  2. 恶意代码调用外部程序,但Low令牌的权限不足以让IE(页面进程)启动外部程序。
  3. IE(页面进程)呼叫IE(UI进程),提示用户有外部程序准备启动。
  4. 如果用户选择允许,IE(UI进程)便会启动外部程序,外部程序的令牌继承IE(UI进程)的令牌:Medium。(PS:EXE声明自己要获得High令牌和EXE启动后主动获取High令牌的除外,但这种情况肯定有UAC提示的。)
  5. Medium令牌不足以发动破坏。系统被保护。

所以,UAC非常重要。

一周热门 更多>