知乎、UAC 和 Windows 安全

2017-04-29 20:44:38 +08:00
 acess
首先,LZ 是个外行逗比,下面写得几乎没啥逻辑……如果你的时间宝贵,最好还是别浪费时间接着读了。
很欢迎各位 V 友前来吐槽,不过希望你们遵循 V2EX 的规则,多带来一些信息量。

知乎逛多了,LZ 就慢慢被灌输了这样的观念:
现代 Windows 很安全,有 UAC+SmartScreen+Windows Defender 这种立体防护,有 ASLR、DEP、SafeSEH 等等缓解漏洞利用的安全机制,还有 SecureBoot、Kernel Patch Protection ( PatchGuard )、Driver Signature Enforcement,几乎无懈可击。

“关闭 UAC 等于把 Windows 的安全级别降到 Windows 98 水准”、“国产全家桶使用 Flash 漏洞等邪恶手段绕过 UAC ”

直到有一天,我发现了某人的 Github: https://github.com/hfiref0x
UAC 被完美绕过。
DSE 被不完美绕过。

再稍微搜索一下:
https://github.com/tandasat/PgResarch
http://www.nosuchcon.org/talks/2014/D2_01_Andrea_Allievi_Win8.1_Patch_protections.pdf
原来 Win7、8.1 的 PatchGuard 早在 2014 年就被完全破解了。

至于 SecureBoot,微软也泄露过一个不该泄露的东西:
https://rol.im/securegoldenkeyboot/

看完这几个东西,瞬间被刷新三观…… LZ 感觉系统安全似乎只能仰仗 Windows Defender 和 SmartScreen 了——然而,知乎里不少答案的观点都是 Windows Defender 只提供基础防御,甚至还有 WD 只杀病毒不杀流氓等诡辩说法出现。

而且,杀软真的靠谱么?
http://bobao.360.cn/learning/detail/3407.html
也许可以指望主动防御拦截可疑的网络请求,但至少“扫描”看上去被完全击败了。

其实,稍微反思一下,就会发现 UAC 的意义其实很有限——无论是截屏、按键记录还是窃取、破坏个人文件,UAC 都不会过问。
但逛完知乎,LZ 就形成了一种印象,感觉 UAC 就是系统的保护伞……
DSE、PatchGuard 这些机制具体起了多大作用,LZ 也说不好,但 LZ 现在已经不相信它们能让系统变得更安全了。

《 Windows 内核设计思想》这本书的序里这么写道:
如果你觉得 Windows 的 64 位版驱动要验签名了,内核有 PatchGuard 了,所以更安全了;如果你觉得你用的是“水果”,不越狱所以固若金汤;如果你觉得 Android 不 root 就是 安全的,我只能说你还处于蒙昧无知的状态。如果你感觉到了哪里可能会有漏洞,而你可以一一填补,说明你混沌初开了。如果你像某些大公司的系统设计员一样,忽然冒出一个前无古人的想法,认为这样可以一劳永逸地解决安全问题,说明你开始了独立思考,可以着手安全问题了!如果你终于回到现实,甘愿像被缚的普罗米修斯一样,今夜痊愈,明日又开始新一轮的开膛破肚,永无休止,那你终于走上了正途!
https://book.douban.com/reading/34279756/)
现在 LZ 好像稍微理解一点这段话的意思了。不过,随便挑个问题问 LZ,LZ 也是一问三不知……

写了那么多,不知道写了啥,强行总结一下吧:
逛知乎虽然能让 LZ 注意到系统里有 UAC、DSE、PatchGuard 这些东西,但是——
知道了这些并不能让 LZ 用电脑比以前更舒心。
不管怎样,LZ 养成了双击 exe 之前非得看看数字签名是否有效等麻烦的习惯,不过这似乎也不会给自己带来太多实在的好处……
18393 次点击
所在节点    随想
169 条回复
mikeven
2017-04-29 22:46:04 +08:00
知乎难道不是软粉大本营??~反倒是总被喷封闭的 iOS,目前是民用里面最安全的
wevsty
2017-04-29 22:54:47 +08:00
@acess UAC 始终是安全性和易用性一起妥协的折中方案。UAC 也不仅仅是仅仅一个提示框而已,进程完整性级别是一个完整的内核概念。从低完整级别升级到高完整级别是一个内核权限提升的过程,这种过程在用户看来就是 UAC 点了一下是,所以所谓的绕过只是提升过程中不出现提示而已,目前的 UAC 绕过方案基本都是让高权限进程来加载代码的方式来达到绕过的效果。
每一种技术都是有局限性的,我们再三强调这个问题。不谈条件就谈安全性是永远没有解的,楼主的问题就像是,既然门,墙壁,房屋都是挡不住一切攻击的,那么我们究竟需要什么来保护自家的安全。这种答案我想在我有生之年应该是找不到的。
geelaw
2017-04-29 23:11:31 +08:00
@acess 如果两个用户实际上是 **同一个人** 希望以不同的权限使用系统,那么 UAC 是用来合并两个用户的,否则你仍然需要两个用户;在前一种情况下,因为关闭 UAC 而必须使用两个账户,从而具有不同的 profile 就是没有 UAC 带来的麻烦之一。

如果你的 model 是“管理员和普通用户 **不是** 同一个人”,那么开了 UAC 也不能省掉建两个用户的需要,此外,普通用户仍然可以保护自己的文件不受管理员查看——只要加密就行了,比如用内置的 EFS。



你可以把“人”类比为自然人,“用户账户”类比为法人 /身份,一个“人”要操作电脑,可以使用不同的“用户账户”,UAC 的方便之处在于可以在一些特定的情况下允许一个“人”只用一个“用户账户”达成一些目的。(特定情况、目的:使用两种高低不同的权限使用系统。)

然而 UAC 的模型还是太简单,我们举一个例子表明仍然需要两个账户的情况。比如,当一个人希望以两种不同的身份使用电脑,且两种身份的权限之间没有包含关系,那么你需要两个用户。例如,通常要求域用户在本地的用户不是本机管理员。这就保证了同一时间要么无法破坏本机,要么无法破坏域内的资料。
wevsty
2017-04-29 23:12:32 +08:00
就目前的情况来看。
已经公开的,没有发布补丁的,在最新版 Windows 下从标准账户权限加上中等完整性保护级别,不需要任何特殊条件只执行一段代码就能提权到管理员权限或者更高权限的方法是不存在的。这一条正是微软一直在守护的底线,如果有技术逾越了这条底线,微软是一定要修复这个问题的。
在这样的基础上,其实已经足够保障一定程度的安全性,至少代码不能随意破坏系统,这其实已经足够了。
顺便,既然谈到权限问题,我最近正好写了一些代码对 Windows 权限的管理做出了一些补充方案。
取名 wesuex,代码和生成的二进制文件已经放在了 github 上,使用说明在此 https://www.exvs.org/?p=430
通过 wesuex,可以一定程度的加强权限控制,比如创建的受限制进程,大多数情况下将无法在通过其他方法提权。可以算作是一种补充性的方案。
ahhui
2017-04-29 23:23:00 +08:00
@wevsty 好软件,已收藏
Shura
2017-04-29 23:30:15 +08:00
不装任何安全防护软件
changwei
2017-04-29 23:47:31 +08:00
我到现在就是关闭 wd 和 uac,不说别的,wd 开机后台狂占内存硬盘,我是受不了这种卡顿,uac 每次装个软件,做点小操作都黑屏(事实上一般捆绑了恶意软件,广告木马 360 都能检查出来,再说了,不下载国内 d 版软件,不用破解版软件,怎么可能会有这些事)我现在就是 360 全家桶,用的好好的,没有一天到晚中病毒,电脑全是木马这种情况。基本上所有后台偷装软件,本地对远程发起可疑请求或者端口监听都会按照黑白名单自动提示是否拦截,而不是像 windows 一样用个 QQ 都反反复复弹出防火墙解除阻止的提示。
maplerecall
2017-04-30 00:03:15 +08:00
@mozutaba 我之前学校的复印店就是 360 全家桶,但是 U 盘插上去每次打印东西还得等 360 扫描半天,然而并无软用,提示安全依旧 100%中毒,是 100%,然后回去插自己电脑上一瞬间就被自带的 defender 清理干净了,虽然之前就不用 360,但那之后更讨厌了,类似的还有自己编的小东西直接被杀掉之类之类的,总之我宁愿信那些老牌的杀毒软件也不信 360
hx1997
2017-04-30 00:17:20 +08:00
“ UAC 不是安全边界。” (UAC is not a security boundary.)
—— 微软原话

微软作为目前最流行操作系统的开发者,多年下来在安全方面积累的经验绝对比 Linux 和苹果多得多。(虽然 UAC 绕过几百年了都没修而且还在自己的补丁里利用这个漏洞(。

看到 24L 想起自己两三年前也用 VB (勿黑)写过一个类似的程序,代码在 GitHub 上: https://github.com/hx1997/RightsBox

以前写的代码惨不忍睹。。。可以按四个限制等级运行程序,依次越来越严格,经测试在 Windows 10 上最严格的两个等级甚至不能运行任务管理器。。。。。(以前 Windows 7 上可以的,摊手,项目已弃坑也不想修了)

acess
2017-04-30 00:21:14 +08:00
@hx1997 看到这个有点想起 Sandboxie ……
hx1997
2017-04-30 00:24:40 +08:00
@acess #30 哈哈哈哈因为我就是受它启发一时兴起写的... 而且完全是用户层的东西,所以其实脆弱得很。
sammo
2017-04-30 00:25:01 +08:00
从没指望过杀毒软件。都是手动排查问题

如果是自用电脑,那么防患于未然,不随便乱安软件即可。
如果是他人电脑,没有好的使用习惯,该变成毒蛊的电脑一定会变成毒蛊的。安多少杀毒软件是没救的

如果是自用电脑,乱安软件比啥都危险。尤其是小公司和个人开发者的软件。淹死的都是自以为会游泳的,最安全的距离是离悬崖越远越好
hjc4869
2017-04-30 00:27:25 +08:00
@changwei 好好的一个 win7+被你用成 XP 那个味儿(
acess
2017-04-30 00:37:36 +08:00
@hx1997
我没用过 Sandboxie,不过据说新版 Sandboxie 已经不用驱动了。
按我的理解,用户层解决的问题是兼容性,搞个文件访问重定向 Hook 之类,改善兼容性问题;安全方面用好内核的安全机制就 OK 了,自己搞个驱动各种拦截可能反而不安全……
acess
2017-04-30 00:48:07 +08:00
@wevsty
首先感谢您的分享。

确实,LZ 目前已经知晓一些安全方面的概念,反而变得有些杞人忧天了……
而且作为外行,LZ 的确很可能犯错误,不能系统地分析一个问题。

感谢 @wevsty 和 @geelaw 愿意花时间帮 LZ 理清概念。
至于绕过 UAC 的问题,我想先稍微歪一下话题:IE 的保护模式也不被微软视为安全边界。
LZ 感觉如果保护模式被绕过了,危害是不是比 UAC 被绕过更大?
因为可能有不少用户已经形成了类似“不下载、运行就是安全的”这种印象,一旦浏览器出现漏洞,攻击者可能更容易悄无声息地侵入用户的系统。

话题回到 UAC 绕过上,不知道能否这样理解:虽然微软声称绕过 UAC 不是安全漏洞,但这个声明主要是针对默认档 UAC 已经是筛子这个现状的(而且绕过手段并不涉及内核层面);事实上,想绕过最新版 Win10 下全开的 UAC,难度大概和从标准用户提权到管理员差不太多?

然后……下面说的可能有点跑题了……简单来说,就是 LZ 作为一个外行,隐约感到了 V2EX 和自己周围生活圈的一种“割裂”:

在 LZ 的生活圈子里,大家都随手下载 GHOST 系统、破解软件安装包,完全不当一回事。
既然如此,出现 MBR Bootkit 泛滥之类的情况,那完全是意料之中的……
难道整个“生态圈”形成了一种默契?搞黑灰产的不再作死盗网银,而是闷声发大财,然后用户就当安全问题不存在了?

另一个问题,感觉可能有点像引战,但的确也让 LZ 困扰了很久了:如果国内的“全家桶”都在作恶,那为什么还是有很多大牛、高手加入了 360、腾讯这些公司?

知乎上有答案直接指出 360 黑大多是跟风黑。但 LZ 仍然感到迷茫。

就 LZ 看见的现象来说,360 安全卫士、腾讯电脑管家等包含锁定主页、锁定默认浏览器等功能,的确有流氓的嫌疑,而且国内的软件好像大多都搞了类似的“自我保护”,有可能阻碍系统正常运行(比如上次的 UC 黑屏事件)。
不过,这些问题对不太挑剔的用户来说,好像并不是不能忍受的……

360 和金山网盾撕逼那会,有人爆出 360 会明文存储用户的网址,而且用户名、密码等敏感信息没有打码。还有人爆出过搜狗输入法明文上传用户键盘输入的事情……

是不是可以这样理解:国内厂商在安全、隐私保护等方面可能做得确实很不好,但他们瞄准了国内用户的使用习惯,实际上还是他们占领了市场?

可是,LZ 觉得,如果用个输入法都要开 Wireshark 抓包检查一下,这种事情对小白外行来说太残酷了……

那么,有技术的用户自发监督软件的安全性,可能也是整个安全生态圈里重要的一环?
hx1997
2017-04-30 00:48:25 +08:00
@acess #34 我不是搞安全的,所以也不懂深的东西。但是“自己搞个驱动各种拦截可能反而不安全”绝对是对的,e.g. 前几年的金山.....

你要是感兴趣可以去这里看看: http://www.kernelmode.info/forum/viewforum.php?f=11
你主贴提到的“某人的 Github ”那个人是这里的总版主( EP_X0FF )。
ivvei
2017-04-30 00:54:45 +08:00
UAC 当然没用啊。UAC 就像安卓机上装应用,先给你弹个窗口表示这个应用要哪些权限( Windows 上还不给标明具体是什么权限), 然后问你装不装。可是你要用这个软件,你不得不装啊。就是流氓应用你也得装啊。这弹个通知还有个卵用?
Domains
2017-04-30 00:58:42 +08:00
微软不是没技术不是不行,而是不敢,他要维护他的软件生态链,windows 的优势就是软件,方方面面都有并且丰富,得益于就是各个大大小小的软件厂商甚至个人。微软不知游戏赚钱不会写桌面游戏?没本事没能力另写一个 photoshop、Autocad ? 微软不能像腾讯当年,对手做了个什么工具,我也做一个什么工具,想当年,捆绑一个 IE,一下子就打败了如日中天的网景公司,赢是赢了,但一点好处都没,之后就垄断质疑之声不断,官司打了好几年,也认罚了好多亿,甚至快要到公司要强制拆分的地步,你说怕不怕?自从 IE6 就停更了多少年?你以为微软写不好一个牛逼的浏览器?真的只能 IE8、IE10/11 那么鸡肋?是不敢。 安全软件也一样,在过去,微软一开始说要出杀软就一片质疑,你知道安全软件市场有多大,你知道赛门铁克的市值是多少?还有各个趋势科技之类的软件厂商,微软都要安抚,所以只能出了个鸡肋的 defender,聊胜于无而已。
其实,LZ 根本不了解 UAC 的运作机制,UAC 对应的本身就是另外一种模式的安全软件--HIPS,这方面最顶盛是 XP 时代的 SSM ( System Safety Monitor )那时候是神器一般的存在。但是 HIPS 类的都有个缺点,首先使用者要对系统有所了解,小白是用不了的,二是很烦,因为提示的弹窗非常多。这并不是微软的 UAC 都写不好,没这技术,还能让你绕过,同样也是微软不敢,只能这样取舍,所以也就比较功能单一鸡肋了。事实上之前 windows7 版本的 UAC 就因为不够智能,提示弹窗太多就被骂了很久了。
Domains
2017-04-30 01:00:26 +08:00
@ivvei 又是一个完全不了解 UAC 是干什么的
acess
2017-04-30 01:05:14 +08:00
@hx1997 最近 twitter 上他好像和 aionescu 有过一次摩擦……起因是 PatchGuard 禁用工具。
有时候感觉他说话挺偏激的,比如他曾说过 PatchGuard 就是微软实现的 rootkit、DRM,对付它就应该直接禁止它启动……
但我也不懂安全,不好揣测什么。

@Domains 感觉 HIPS 和 UAC 完全不是一个概念……
从表现上说,我记得点完 UAC 提权,整个进程都重启了,而且重启完就拿到 full token,变身真·管理员。HIPS 就不会这样,可以拦截多步操作。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/358133

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX