知乎、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 之前非得看看数字签名是否有效等麻烦的习惯,不过这似乎也不会给自己带来太多实在的好处……
18903 次点击
所在节点    随想
169 条回复
acess
2017-04-30 12:52:24 +08:00
@TakaLv iOS 有很好用的 AirDrop,但 LZ 推测可能是苹果出于自己的私心,完全没有提供 SMB、FTP 等通用协议,或者类似 AirDroid 的那种基于 Web 的文件分析机制……
acess
2017-04-30 12:56:21 +08:00
@ahhui 我觉得目前的确有不少开发者偷懒,一味地申请管理员权限,不过有些应用可能确实需要管理员权限才能正常工作。
比如 Everything,至少需要管理员权限来安装一个服务(不过 LZ 觉得 Everything 这个例子不好,因为 Everything 把 NTFS 权限全给架空了,所以它只适合个人用户使用)。
总之…… LZ 只是觉得不能简单粗暴地以 UAC 弹窗作为耍流氓的判断标准。
magiclu
2017-04-30 12:59:48 +08:00
有个办法能解决几乎所有的 windows 的漏洞,就是用一般用户登录,然后大部分的软件运行时都要再输一次管理员密码
acess
2017-04-30 13:04:02 +08:00
@ahhui
UEFI 的 Bootkit 其实现在也已经有了,鉴于.efi 文件也存放在硬盘上,LZ 感觉地位可能和 MBR Bootkit 类似……
比如 Kon-Boot,可以用 U 盘启动它,绕过开机密码。
SecureBoot 可以阻挡 UEFI Bootkit,不过感觉只有购买品牌机的用户,或者比较有安全意识的用户能受到 SecureBoot 的保护。
LZ 身为外行,感觉要理解 SecureBoot 的信任体系还是挺困难的,无论是电脑城装机小哥还是稍有经验的用户都是这样。所以,很容易想象出:为了重装系统、启动 WinPE 方便等目的而直接关掉 SecureBoot 可能会成为普遍现象……
MFC
2017-04-30 13:07:47 +08:00
知乎好像是腾讯有投资的,当然得给小白们营造一个系统安全的假像,方便他们的流氓软件更好地运作。。。
kaneg
2017-04-30 13:28:45 +08:00
证书过期而签名不过期这个问题我在 java jar 签名中也遇到过。因为证书的有效期一般不会太长,一般就是 1 年,或几年,而签名后的产品不会因为证书过期就认为是非法的。所以说只要证书在有效期内,其签名是永久有效的。但如何保证有人把电脑日期调到一个已经过期证书之前从而利用该过期证书来签名呢,jar 签名中引入了一个利用权威 CA 在线验证时间戳的机制( TSA ),这样就可以避免回调时间的漏洞了。
acess
2017-04-30 14:02:39 +08:00
@geelaw
看上去开两个账号好像不能阻止已经搞定本地管理员的入侵者顺藤摸瓜搞定域上的资源?

http://www.freebuf.com/articles/102500.html
( 1 )伪造 token
一旦你能以管理员权限访问到一台计算机,你也可以使用其他用户的 token 去访问域管理上的资源。可实现该功能的两个推荐工具是 incognito [1]以及 mimikatz[2]中的“ token::*”命令。
mozutaba
2017-04-30 14:33:50 +08:00
@acess 被删了的文件显然被感染或者被替换了,恢复出来也打不开啊。这锅算谁的。
而且几百 M 体积我记得是不备份的。
mozutaba
2017-04-30 14:36:24 +08:00
@ivvei 你把它当用户协议了,肯定是这个效果。
mozutaba
2017-04-30 14:39:28 +08:00
@acess 后台刷量仅仅是刷流量嘛?
mozutaba
2017-04-30 14:49:15 +08:00
@ahhui 那你还买不买火车票,要是网银这种到还可以理解。

换句话说,为了不清楚存不存在的安全风险禁止掉正常的可访问的业务?
0TSH60F7J2rVkg8t
2017-04-30 15:00:30 +08:00
@mozutaba 这个关系反了,应该是督促正常可访问的业务符合安全标准。他不符合你迁就他他难道哪一天心情好了会符合么?然而在不符合的期间,风险自然转嫁给用户了。12306 的数据黑产手里应该都有。
0TSH60F7J2rVkg8t
2017-04-30 15:03:05 +08:00
@acess 如果攻击者可以用 U 盘启动你的机器了,那已经没有安全可言了啊。房门都打开了,所有防护哪里还能起效呢?
电脑城的装机小哥帮忙装完系统后还会千叮咛万嘱咐,别打补丁,打补丁会卡。这真的无解啊。
acess
2017-04-30 15:05:05 +08:00
@mozutaba
锅是谁的……这个问题果然蛋疼😂
不过感觉这个可以调设置解决吧?

另外,记得在看雪还是哪个论坛里,有人说过 360 离线时基本不杀……

至于 12306 ……可能和 WAPI、国密算法、火星 GPS 坐标一样是中国特色吧。
不过就 12306 来说,用户可能并不是没办法,比如,可以在浏览器里给 12306 加个证书例外,这样访问其他网站也不受影响。
acess
2017-04-30 15:07:59 +08:00
@ahhui 同理,其实如果用户连管理员权限都把守不住,也可以说“已经没有安全可言”了……
但很多个人用户的机器上可能没啥商业秘密,所以,“事后”如何才能迅速发现系统不对劲、如何把恶意软件扫地出门,也是被用户关心的。
0TSH60F7J2rVkg8t
2017-04-30 15:09:09 +08:00
@acess Everything 把 NTFS 架空是什么意思?我没理解过来,请明示,谢谢!确实这个例子不恰当,早期的 Everything 每次启动都要管理员权限,后来有了服务就好多了。其实这说明随着安全性的提高,各种新技术的应用,软件必须跟上技术发展的规律做各种适应,而不能偷懒。有的懒是因为历史遗留问题产生的,更新新版后可以解决;但有的懒是故意而为之的。一个浏览器有什么理由加驱动?一个聊天工具有什么理由要加驱动?一个下载工具又有什么理由要加驱动呢?还有还有不少用户使用的系统,ghost 系统,或者安装版系统,装好就关闭了 UAC,即使没关闭,很多用户还主动关闭呢。其实这也是个技术适应问题,最理想的状态是,厂商和用户都要跟着技术进步走,然而这个状态并不存在。
acess
2017-04-30 15:13:06 +08:00
@ahhui Everything 是无视 NTFS 权限的,感觉原理类似于 DiskGenius 直接解析文件系统,连某些在内核里挂钩的 Rootkit 都可以无视。
确实,有些软件要管理员特权是流氓耍过头的表现,比如 UCGuard.sys ……但 Google Chrome 不也搞了个计划任务来静默自动更新么……所以我才觉得虽然安装 /运行时弹 UAC 有流氓嫌疑,但并不能说弹了 UAC 就一定是流氓……
另外,Everything 不需要加载驱动就可以正常工作。
0TSH60F7J2rVkg8t
2017-04-30 15:15:26 +08:00
@acess 那么问题来了,管理权限到底是用户有权把守,还是系统开发商有权把守呢?总得有个人把守,平衡的点在哪里呢? UAC 肯定不是一个绝对安全的解决方案,甚至他的设计之初就不是用来干这个的。他只是增加了一道可以让用户做出决断的屏障,这个屏障要考虑到易用性、安全性的平衡。其实 HIPS 确实安全,可以把很多功能细化,可以弹出具体的提示,但真的很烦啊。我用卡巴的 HIPS 系统的时候,有时候联网不畅,他会把 Wininit.exe 改变到受限组里,我又使用的是交互模式,这时候几乎每个程序的每个行为都在弹窗,弹多了也就疲劳了,用户看到弹窗只能机械地点确定,这和你提到的“把守不住管理权”的结果是一样的。这其实是个人性问题,并不是个技术问题。
0TSH60F7J2rVkg8t
2017-04-30 15:19:20 +08:00
@acess Everything 没有绕过任何权限,它只是读 NTFS 的文件系统的 USN 日志而已。只是这个日志在操作系统里是隐藏不显示的。你可以用任何磁盘编辑软件,如 WinHex 打开任何磁盘,都能看到一系列$开头的目录,这些目录里存放的就是这些日志。Everything 要提权也是因为系统限制,只有提权了才能读这些日志,但它无法绕过 NTFS 的权限控制,他甚至不知道一个文件的大小,只能通过在窗口显示文件的时候,动态读取大小显示出来。他之所以搜索快,也是因为从日志里分析组织数据之后,比全盘扫描挨个查找文件快。楼主如果对原理感兴趣,可以阅读这篇博文: http://blog.csdn.net/wangjian223344/article/details/13502837
acess
2017-04-30 15:21:24 +08:00
@ahhui
下载工具还真有理由加驱动…… IDM 就搞了一个,把明文 HTTP 的文件下载请求拦下,然后拉起 IDM 主程序。迅雷也这么搞了,知乎杨竞的答案解释过。不过,确实有可能出 bug 影响正常使用,杨竞答案的评论区里说过,这个驱动可能导致 shadowsocks 等软件不正常……

至于关闭 UAC ……我觉得 Windows 生态圈就是这个样子,如果真的把 SecureBoot、DSE 都收紧了,而且不让用户装应用商店之外的东西,那这个系统还能叫 Windows 么……感觉简直变成 iOS 或 Android 翻版了嘛,只是操作方面可能更适合台式机 /笔记本的键鼠而已。

另外,其实我觉得什么时候弹 UAC,应该是软件开发者仔细研究后决定的事情。应该是注册服务 /计划任务来实现需要权限的操作免弹 UAC,但敏感操作仍然需要弹 UAC 请求用户确认。
但现在,开发者的行为本身可能就让用户不爽了,而且不少开发者可能固守着 Win98 时代以来的系统文件随便动的刻板印象(大概就是因为这个,才有人吐槽关闭 UAC 等于回到 Win98 时代?),不愿意适应新系统,现状就是这么蛋疼……

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

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

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

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

© 2021 V2EX