V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
acess
V2EX  ›  随想

知乎、UAC 和 Windows 安全

  •  
  •   acess · 2017-04-29 20:44:38 +08:00 · 16861 次点击
    这是一个创建于 1982 天前的主题,其中的信息可能已经有所发展或是发生改变。
    首先,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 之前非得看看数字签名是否有效等麻烦的习惯,不过这似乎也不会给自己带来太多实在的好处……
    第 1 条附言  ·  2017-04-30 00:57:08 +08:00
    LZ 承认刚开始刷知乎时确实有点优越感……
    不过,抛开装 B 不谈…… LZ 很好奇有没有真正权威、客观的信息来源(科普),能真正帮助对信息安全不懂的用户理解信息安全方面的常识,并规避当下的各种风险?
    知乎能胜任这个任务吗?如果知乎不行,那谁能胜任呢?
    第 2 条附言  ·  2017-10-07 08:17:27 +08:00
    LZ 火星了……
    UACME 已更新,揭示出 UAC 拉到顶(总是通知)也是没 X 用的:
    https://github.com/hfiref0x/UACME
    标准用户才能防范这些绕过。
    169 条回复    2017-05-03 11:42:25 +08:00
    1  2  
    ahhui
        1
    ahhui  
       2017-04-29 21:30:48 +08:00 via iPhone
    没有绝对的安全存在。知乎这种外行聚集地更无法知晓安全的边界在哪里。
    ahhui
        2
    ahhui  
       2017-04-29 21:34:15 +08:00 via iPhone
    更正一下,上面只是想说知乎既不是计算机安全的专业论坛、更不是黑客的交流场所,所以他给出的技术方面建议不可能很准确。而安全又是一个极其复杂的零和博弈课题,可涉足的点又十分广泛,所以不要相信知乎上说的。
    imn1
        3
    imn1  
       2017-04-29 21:36:07 +08:00
    无知则无畏
    acess
        4
    acess  
    OP
       2017-04-29 21:43:11 +08:00
    @ahhui @imn1
    说实话……我觉得这不完全是“外行”的问题,知乎好像被软粉统治了,那么说微软的东西有安全隐患好像也是政治不正确?
    也许散布这些观点的人只是想帮微软推 UWP 应用、在微软跟 Google 撕逼时帮微软说话,或者——纯粹只是闲着蛋疼说着玩玩而已。
    不过,我觉得知乎仍然是被不少小白(比如 LZ )信任着的平台,有些人随口说的几句话可能会被小白奉为圭臬。
    哎,果然 LZ 还是 too young too simple ……
    wevsty
        5
    wevsty  
       2017-04-29 21:43:55 +08:00   ❤️ 1
    没有任何一种技术是万能的,无论放到哪里都一样,修修补补是常态。
    UAC 其实也不存在所谓完美绕过,都是有一定前提条件的,比如楼主贴的例子,要求必须是 UAC 出于默认等级才可以通过这些方法提权。如果什么都不要能绕过完整的 UAC 保护,那么就是内核上的漏洞了,微软是必须出补丁修复的。
    anyclue
        6
    anyclue  
       2017-04-29 21:44:54 +08:00
    安全本来就是相对的,哪有什么绝对安全可言。
    写出来认知过程了……
    acess
        7
    acess  
    OP
       2017-04-29 21:44:56 +08:00
    @wevsty 其实我大概看过,确实和你说的差不多,只有默认挡是筛子。
    但调到最高档也出现过磁盘清理程序的漏洞,而且微软没放补丁修补。
    Showfom
        8
    Showfom  
       2017-04-29 21:47:12 +08:00 via iPhone
    真要安全就断网吧
    mozutaba
        9
    mozutaba  
       2017-04-29 21:55:13 +08:00
    @ahhui 毕竟是科普,难道告诉 windows 用户干什么都没用?

    我逛的所有论坛都鄙视装 360,但是我妈打印店里就靠 360 撑下去的。
    别说什么 UAC,Windows Defender, 小白用户谁管这个?哪个软件能告诉他们点这个按钮就没问题就用哪个。
    这个场合下,装 360 就是“固若金汤”。

    同理,他们。。。

    不过这个网站,抖机灵被人喷,可是不抖机灵也不专业啊。
    bluecrow
        10
    bluecrow  
       2017-04-29 21:59:32 +08:00 via iPhone
    @ahhui 打发时间用的而已。
    wevsty
        11
    wevsty  
       2017-04-29 22:04:00 +08:00   ❤️ 1
    @acess 微软这方面的处理确实不太积极。不过也没必要悲观,该修的问题始终要修。
    Windows 使用了这么多技术也确实一定程度的保障了用户的安全性,这一点是毋庸置疑的,很多技术也并不是 Windows 独有,Linux 下面同样也在使用 ASLR 之类的技术。安全并不是一件绝对的事情,都只是相对的,至于你相信不相信,那就仁者见仁智者见智了。
    ahhui
        12
    ahhui  
       2017-04-29 22:06:48 +08:00 via iPhone   ❤️ 3
    @acess 楼主的看法我觉得我还是可以理解的,毕竟楼主也不是搞专业的,知乎上能提供一些建议也是有益处的。只不过知乎有点偏向于外行看热闹的角度。其实说 uac,windows defender 有用也并没有错,但问题就在于有茅就有盾,安全攻防又是一个动态和快速变化的领域,微软在安全上下的功夫不少,黑客在攻击方面下的功夫也很多。所以关键问题就是,知乎的这些信息可能很快就过时了,不掌握最新消息的人容易轻信而被误导。
    acess
        13
    acess  
    OP
       2017-04-29 22:10:04 +08:00
    @anyclue @ahhui @wevsty
    我觉得大家肯定也不是强求 100%的安全,只是要求相对的安全。

    但就拿 DSE 和 UAC 来说……信这俩你真的就输了。

    比如 DSE,即使你勤快地打了补丁,把 ntoskrnl 和各种乱七八糟的驱动的漏洞都补了,只要攻击者有机会以管理员身份执行代码,他照样可以找一个有签名的驱动加载进系统,把漏洞重新引入内核。
    微软可以勤快地给内核打上补丁,那些 0day 也可以当作只用来对付“国家的敌人”的武器而忽略掉,但有数字签名≠安全,带数字签名的,无论是.exe 还是.sys 都可能带漏洞,然后被利用…… DSE 绕过那两个项目里,关掉 DSE/绕过 DSE 其实只是小 case,或者说,只是给不懂内核的攻击者提供方便而已;对于懂内核的攻击者来说,关掉 DSE 可能都是无谓地闹出动静、多此一举。
    防守的这一方不是毫无办法,至少可以把已知的有漏洞的驱动屏蔽掉。但这样不能从根本上堵死这种攻击思路。
    如果因为害怕这种利用方法,而使用白名单策略(又触及 LZ 的知识盲点了…… Windows 下可以实现这个么?),对个人日常使用来说,又会明显影响到正常使用,至少也要多花一些精力维护白名单——对于非专业用户来说,光是理解啥是“数字签名”可能就挺费劲了吧?

    UAC 同理,攻击者可以把带数字签名但有漏洞的安装程序解压到临时目录,然后通过劫持它来运行自己的代码。根据 LZ 看到的一些分析文章,这招不仅可以骗过 UAC,甚至还可以绕过很多安全软件的主动防御。

    最近还看到 360 声称发现了藏在 UEFI 固件 CSM 模块里的木马:
    http://www.freebuf.com/articles/system/133243.html
    似乎把是之前已经被发现的“暗云”木马塞进 BIOS 了:
    http://www.freebuf.com/articles/system/109096.html
    对 LZ 这种小白外行来说,完全是刷新三观——连刷个广告 TM 都用上 Bootkit 了……
    乐观一点,可以推测攻击者并不懂这些高级的技术,只是花钱买来了这些攻击工具,或者只是下载了泄露的恶意软件代码,然后稍加修改……
    也许,对付这种脚本小子,只需要守住入口,不给它们执行的机会就 OK 了。
    不过,LZ 仍然感觉脊背发凉。
    ahhui
        14
    ahhui  
       2017-04-29 22:11:36 +08:00 via iPhone
    @mozutaba 科普有用,我同意你的观点。但具体到 360 上,我想说喜忧参半。360 在内核方面的防范能力很强,得益于花钱请的人都很牛逼。但是安全这个维度太广泛了,用固若金汤形容可能有点夸大其词。比如 360 的浏览器对于 ssl 的实现上与标准做法有很大的不同。它甚至可以允许信任已经过期或者无效的证书,可能用户确实没遇到病毒了,但信息泄漏却看不见摸不着很可能发生。
    geelaw
        15
    geelaw  
       2017-04-29 22:13:22 +08:00   ❤️ 3
    “其实,稍微反思一下,就会发现 UAC 的意义其实很有限——无论是截屏、按键记录还是窃取、破坏个人文件,UAC 都不会过问。”

    我觉得你好像不懂 UAC 是干什么的。UAC 是为了让你不用创建两个用户出现的——没有 UAC 的时候你需要创建一个普通用户和一个管理员用户,平时用普通用户,对需要管理员权限的程序使用管理员用户打开。

    截屏、按键记录,你怎么知道程序不是干自己该干的事情呢?“窃取”个人文件,你怎么知道不是帮你做云同步呢?“破坏”个人文件,你怎么知道不是你保存了文件呢?

    如果你想要这种级别的安全,很多事情就是做不了的,你不如用 Windows 通用程序。Windows 通用程序不能截屏,不能记录发送到其他窗口的按键,不能随便打开文件。

    关闭 UAC 并不会降低 Windows 的安全性,降低的是易用性。




    另外现代 Windows 安全和 Windows 有漏洞不矛盾。杀毒软件有局限性难道不是早该知道的么?
    acess
        16
    acess  
    OP
       2017-04-29 22:17:08 +08:00
    @geelaw 作为没有接受过系统教育的外行,LZ 也是最近才发现自己对 UAC 产生了多可笑的误解……
    ahhui
        17
    ahhui  
       2017-04-29 22:25:53 +08:00 via iPhone   ❤️ 1
    @acess 其实微软的包袱很重。

    第一,他不能控制驱动层次的东西,因为他不垄断硬件。所以在驱动上,不能做任何限制,否则用户直接跑了装别的系统,用户会觉得,毕竟硬件花钱买的,凭啥不让我用?这就是个很大的漏洞。虽然很早微软就要求驱动必须打 WHQL 签名,这个是要微软审核驱动最后才能打上。但考虑到兼容性,也许或者还要其它的原因,这个强制规定并没有执行,好像 Win10 有强制了吧?我不确定。

    第二,当年看微软技术问答的时候,还吃惊地发现,微软在给操作系统打的补丁里还包含兼容应用程序的代码。对,你没看错,是微软为了兼容应用程序而给自己的系统改代码。

    这两点可以说明,在一个控制力不大的系统下,安全也会变得不够全面。为什么有的补丁一出要出几个月甚至几年?大多是兼容性和易用性方面的两难抉择很难找到平衡的修补方法。

    试想,如果哪次微软规定第三方软件或者驱动必须如何如何,不如何如何就不让运行了,那到时候招来的骂声会更广泛吧。
    hjc4869
        18
    hjc4869  
       2017-04-29 22:28:17 +08:00   ❤️ 1
    UAC 开最高甚至设置成输密码是常识
    顺便送个当年闲着没事写的默认配置的 UAC 绕过
    https://github.com/hjc4869/UacBypass
    yankebupt
        19
    yankebupt  
       2017-04-29 22:33:50 +08:00 via Android
    我觉得最可怕的都不是这些,而是针对硬件支持的虚拟化隔离的攻击,而且据说好像还有成功了的案例...如果这种处理器硬件底层的设计出来就是为了隔离的技术都挡不住攻击,或者说会存在更新 microcode 都补不上的漏洞,我们是不是要堕落到只有不用处理器才不会被黑的时代了?
    acess
        20
    acess  
    OP
       2017-04-29 22:37:18 +08:00
    @geelaw 对于一部分用户来说,他们早就知道 DSE、PatchGuard 等等机制的局限性。不过对于身为外行的 LZ 来说,这就完全是刷新三观了。

    至于杀软的局限性,我想肯定不少用户都纠结过“哪个杀软好”这种问题吧。杀软对我们外行来说,就像个黑盒,很难判断它到底能帮自己做什么……

    另外,关于您说的“ UAC 是为了让你不用创建两个用户出现的”,还有“关闭 UAC 并不会降低 Windows 的安全性,降低的是易用性”……不好意思,我好像还是不太明白。

    比如,在 Linux 下,root 用户拥有最高权限,可以无视文件权限,以至于使用 sudo 命令时都会提醒“尊重其他用户的隐私”。但 Windows 下,管理员账户并不能直接访问其他用户的主文件夹。
    的确,管理员可以直接修改 ACL 来解除这个限制,甚至只需要点一次带盾标的“继续”就自动搞定了这些,但问题不仅限于此:管理员账户和标准用户终究是两个账户,拥有不同的配置,产生了两个不同的环境。

    可不可以说,有了 UAC,比起开两个账户,提升了易用性,但的确也牺牲了一部分安全性?
    也许我的理解仍然有不少不对的地方……
    不管怎样,还是感谢您关注这个帖子:-)
    mikeven
        21
    mikeven  
       2017-04-29 22:46:04 +08:00
    知乎难道不是软粉大本营??~反倒是总被喷封闭的 iOS,目前是民用里面最安全的
    wevsty
        22
    wevsty  
       2017-04-29 22:54:47 +08:00   ❤️ 1
    @acess UAC 始终是安全性和易用性一起妥协的折中方案。UAC 也不仅仅是仅仅一个提示框而已,进程完整性级别是一个完整的内核概念。从低完整级别升级到高完整级别是一个内核权限提升的过程,这种过程在用户看来就是 UAC 点了一下是,所以所谓的绕过只是提升过程中不出现提示而已,目前的 UAC 绕过方案基本都是让高权限进程来加载代码的方式来达到绕过的效果。
    每一种技术都是有局限性的,我们再三强调这个问题。不谈条件就谈安全性是永远没有解的,楼主的问题就像是,既然门,墙壁,房屋都是挡不住一切攻击的,那么我们究竟需要什么来保护自家的安全。这种答案我想在我有生之年应该是找不到的。
    geelaw
        23
    geelaw  
       2017-04-29 23:11:31 +08:00   ❤️ 1
    @acess 如果两个用户实际上是 **同一个人** 希望以不同的权限使用系统,那么 UAC 是用来合并两个用户的,否则你仍然需要两个用户;在前一种情况下,因为关闭 UAC 而必须使用两个账户,从而具有不同的 profile 就是没有 UAC 带来的麻烦之一。

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



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

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

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

    如果是自用电脑,乱安软件比啥都危险。尤其是小公司和个人开发者的软件。淹死的都是自以为会游泳的,最安全的距离是离悬崖越远越好
    hjc4869
        33
    hjc4869  
       2017-04-30 00:27:25 +08:00
    @changwei 好好的一个 win7+被你用成 XP 那个味儿(
    acess
        34
    acess  
    OP
       2017-04-30 00:37:36 +08:00
    @hx1997
    我没用过 Sandboxie,不过据说新版 Sandboxie 已经不用驱动了。
    按我的理解,用户层解决的问题是兼容性,搞个文件访问重定向 Hook 之类,改善兼容性问题;安全方面用好内核的安全机制就 OK 了,自己搞个驱动各种拦截可能反而不安全……
    acess
        35
    acess  
    OP
       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
        36
    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
        37
    ivvei  
       2017-04-30 00:54:45 +08:00
    UAC 当然没用啊。UAC 就像安卓机上装应用,先给你弹个窗口表示这个应用要哪些权限( Windows 上还不给标明具体是什么权限), 然后问你装不装。可是你要用这个软件,你不得不装啊。就是流氓应用你也得装啊。这弹个通知还有个卵用?
    Domains
        38
    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
        39
    Domains  
       2017-04-30 01:00:26 +08:00
    @ivvei 又是一个完全不了解 UAC 是干什么的
    acess
        40
    acess  
    OP
       2017-04-30 01:05:14 +08:00
    @hx1997 最近 twitter 上他好像和 aionescu 有过一次摩擦……起因是 PatchGuard 禁用工具。
    有时候感觉他说话挺偏激的,比如他曾说过 PatchGuard 就是微软实现的 rootkit、DRM,对付它就应该直接禁止它启动……
    但我也不懂安全,不好揣测什么。

    @Domains 感觉 HIPS 和 UAC 完全不是一个概念……
    从表现上说,我记得点完 UAC 提权,整个进程都重启了,而且重启完就拿到 full token,变身真·管理员。HIPS 就不会这样,可以拦截多步操作。
    billlee
        41
    billlee  
       2017-04-30 01:27:23 +08:00
    @Domains #38 Vista 那个弹窗才叫多啊
    Domains
        42
    Domains  
       2017-04-30 01:29:38 +08:00
    @acess 微软作风,只能四不象,至于原因,上面我也说了。 是 HIPS 模式的,在最开始的 Vista 和 Windows 7 版本的 UAC,就是 HIPS,最典型就是安装新软件会有很多提示,要你同意确定的,当然也因为这个麻烦,被骂了很久(主要其实是不够智能,同样的文件同意过一次了,在没有更新过版本情况下,同样文件名同样路径,下一次仍然再提示,当然烦了),毕竟知道和了解 HIPS 的用户还是少数,后来 8 以后,为了提升安全,windows 改了很多权限的设置,administrator 根本不够用,system 用户才是最高的( 7 以前也是有 system 用户的,但用不上只能在进程里看到),有很多文件操作都要提权,UAC 在权限方面提示才多了起来(其实在提权提示窗口,我并不确定这到底是 UAC 在起作用呢,还是系统本身就存在的),单纯 HIPS 的反而没多少了
    Domains
        43
    Domains  
       2017-04-30 01:31:35 +08:00
    @billlee 嗯,一下子忘了 Vista 这一版本,所以上面补充上了,windows7 也减少提示了
    Felldeadbird
        44
    Felldeadbird  
       2017-04-30 01:36:15 +08:00 via iPhone
    安全带是保命的东西,为什么总有人不上车不戴呢?理解好这个问题,自然知道安全是什么东西。
    wevsty
        45
    wevsty  
       2017-04-30 01:39:42 +08:00   ❤️ 2
    @hx1997 权限控制是依赖于内核的安全性的,只要内核保持在最新(打补丁)的状态这种安全性并不脆弱。如果打破内核的权限控制基本上就是内核的漏洞。在这一点上来看,安全性基本上可以保证,并不脆弱。如果有人能突破,可以致电微软领取奖金。

    @acess
    IE 的保护模式实际上就是对 IE 做了一些限制。在 IE 的保护模式下,IE 进程设置了 Administrators 组为拒绝,并且设置了 Low Mandatory Level (低进程完整性级别)。IE 进程想对系统做出修改就必须提升权限,实际上也就是标准账户提升到管理员账户的过程,并且由于一般用户默认的都是 Medium Mandatory Level (中进程完整性级别)所以实际上 IE 在保护级别下得到的权限比一般标准账户的权限更低一些,当然要提权也会更加困难。
    浏览器存在漏洞是无可避免的,所以才需要经常更新。微软也好 Google 也好,保证的就是公开的能导致安全问题的漏洞都会被修复,所以只要保持更新“不下载、运行就是安全的”这种印象是基本上正确的。退一步,即使浏览器存在漏洞导致了代码被执行,也会有 DEP,ASLR 这样的安全机制来妨碍代码的执行,虽然这些保护是可以绕过的,但是毫无疑问的提升了代码的执行难度,有相当多的漏洞可能因为绕过这些安全机制的必要条件无法实现而导致实际上无法利用。(并不是说有漏洞就一定能被利用,并且成功入侵,这样的理解是不正确的)我们在退一步,即使有漏洞,能绕过 DEP,ASLR 这样的安全机制,成功的运行起来了,代码仍然会运行在低权限下,想对系统进一步进行修改,那么就必须提高权限,想要提高这样的权限,如果没有用户许可又必须使用内核漏洞来实现。虽然这些安全机制单点都是可以破解的,但是复合起来很显然会发挥更强大的功效。
    一种安全机制的出现与其说是为了彻底杜绝某类攻击,不如说是大幅提高攻击成本。就像楼主举得例子,Windows 要求加载的驱动必须有数字签名,那么攻击者去签发一个带数字签名的证书不就得了?说起来很容易,可是数字证书是要花钱的,并且个人不能申请对代码签名用的证书,一般要求是公司进行申请,申请成功之后,如果证书被发现用于恶意软件,那么证书还可以被吊销。
    我不能说要求驱动必须进行数字签名是一个好方法,但是这样的手段确实提高了攻击者的攻击成本或者攻击难度。
    acess
        46
    acess  
    OP
       2017-04-30 01:39:55 +08:00
    @Domains
    按我的理解,HIPS 的作用是让管理员不再是系统的上帝,比如直接 Hook 掉 SSDT 里的函数地址,管你是 SYSTEM 还是 TrustedInstaller,想拒绝的话,返回一个 STATUS_ACCESS_DENIED 就拒绝掉了。

    HIPS 可以灵活配置规则,UAC 可能就死板一些,好像只能改改组策略,静默提权带数字签名的程序。
    至于白名单……如果 LZ 没理解错,默认档 UAC 能被找出绕过漏洞,就是因为系统开了不够安全的白名单……

    @billlee LZ 很好奇 Vista 时代的 UAC 弹窗多是个什么概念……
    好像是 Win7 以后,PPPoE 拨号等不再需要弹 UAC 了(相当于开一个服务来做需要特权的事情,然后只允许没特权的进程对其进行有限的控制),但同时也开了容易被利用的提权后门?
    acess
        47
    acess  
    OP
       2017-04-30 01:48:31 +08:00
    @wevsty
    http://www.m5home.com/bbs/blog-4158-34.html
    按照这篇文章说的,数字证书花钱不是问题,黑产愿意花钱,而且黑产甚至可能使用伪造的身份申请证书、给驱动签名(这一点我不知道是不是普遍现象)。
    而且,微软没有及时封堵有漏洞的驱动(可能是他们受限于兼容性、厂商配合等因素不能这么做),甚至允许过期证书签名的驱动在系统启动时加载进内核——去年年底发生的天翼客户端蓝屏事件算是活生生的例子,签名驱动的是奇怪的 Beijing Kate Zhanhong Technology Co.,Ltd.。
    acess
        48
    acess  
    OP
       2017-04-30 01:49:52 +08:00
    @wevsty 可以看见那个恶意驱动的数字签名没有时间戳,而且数字证书早在 2014 年就过期了。
    acess
        49
    acess  
    OP
       2017-04-30 01:52:01 +08:00
    @wevsty ASLR、DEP 等缓解技术能有效提高攻击的成本,但不能完全避免漏洞被利用,这一点我自认为已经理解了。
    TakaLv
        50
    TakaLv  
       2017-04-30 02:02:10 +08:00 via Android
    UAC 这东西能有什么安全的,只是强制性的提供一个用和不用的选择,不清楚具体危害给了权限自然会直接挂掉。
    hx1997
        51
    hx1997  
       2017-04-30 02:04:59 +08:00 via Android   ❤️ 1
    @wevsty 但是权限并不能管到所有的东西啊,比如窗口就是不在权限约束范围内的,虽然 UIPI 对窗口攻击做了一定限制,但是大部分进程默认都是中完整性级别,根本无法防范诸如键盘记录器的威胁。还有就是文件系统和注册表权限,如果你遇上勒索软件,把全盘能加密的文件都加密了你能咋办,你平常的文档总不会设置权限的吧,要是用低完整性级别有时又会有兼容性问题了。再极端点的,如果不是 NTFS 文件系统那磁盘文件根本就不受权限保护。。。再再比如著名的所谓白加黑,信任程序加载恶意 DLL,程序运行时弹出 UAC,用户一看是个正常程序就放行了,却不知道程序已经黑化。所以我说脆弱的意思倒不是说权限机制本身不安全,而是说还有其他攻击面呀。

    你们都不睡觉的吗?
    TakaLv
        52
    TakaLv  
       2017-04-30 02:06:35 +08:00 via Android
    这就好比谷歌费心费力给安卓搞优化,但没有限制应用耍流氓的途径,所以安卓用起来还是卡。UAC 也同理,只是让用户察觉到危险,但不能让用户完全避免危险。
    wevsty
        53
    wevsty  
       2017-04-30 02:07:09 +08:00
    @acess 对,花钱当然是没问题的,但是至少提高了攻击成本。本来我写一个驱动,抛开人工成本,电费成本,开发出来基本上不用花钱就能做出来攻击一大批人。需要数字签名的话,那么我就得额外多花一个数字签名的费用,并且大规模的攻击就不太容易实现了,因为大规模的攻击更容易被发现,导致数字签名被吊销。
    至于证书的过期时间,我了解的不太多,但是据我了解,证书本身有过期时间,可是签名出来的文件是没有过期时间这一说法的。如果签名用的证书过期了就不允许加载这个驱动,那可能你会发现某一天突然你的电脑无法启动了,因为证书过期了没有更新。
    至于吊销列表微软完全有能力发布更新来解决,但是说到底,封堵第三方应用的漏洞就不是微软该干的工作。不怕神一样的对手就怕 X 一样的队友,放在安全上尤为适用,因为安全问题永远出在最薄弱的地方。
    TakaLv
        54
    TakaLv  
       2017-04-30 02:09:52 +08:00 via Android
    @mikeven 知乎安卓粉更多一点,说句流畅度没法比都会被你没用过原生、XX 版本早不卡了、XX 厂商负优化素质三连,这明明是事实的说。
    acess
        55
    acess  
    OP
       2017-04-30 02:15:35 +08:00
    @hx1997 LZ 正是了解到这些威胁才开始反应过来:杀软实际上扮演了一个非常重要的角色,虽然我们常常吐槽杀软是安慰剂……

    @wevsty 封堵第三方应用的漏洞不是微软的工作,但维护 Windows 的“信任根”(不知道我用没用错术语)应该是微软的职责吧。

    天翼客户端蓝屏事件其实才是刷新 LZ 三观的起点,LZ 本来以为有了 DSE,这种内核驱动木马应该近乎绝迹了,没想到搞定数字签名对那帮人来说还是接近 0 成本……
    然后…… Win10 的 PatchGuard 在恶意驱动 Hook NTFS 驱动的时候整出了大面积蓝屏循环,把这件事搞成了大新闻,也许在这个意义上 PatchGuard 确实立功了(虽然很多用户好像压根没理解到这个层面)……
    acess
        56
    acess  
    OP
       2017-04-30 02:19:46 +08:00   ❤️ 1
    @TakaLv 我觉得逛完知乎很容易形成一种印象:360 等国产免费杀软就是病毒,现在的病毒就是流氓全家桶,开 UAC 就可以防住流氓全家桶……
    还有人推荐过 IObit 的 Advanced SystemCare 等软件,不过 LZ 上网搜了一下,好像这个 IObit 也是个国内的公司,而且好像有刷好评等黑历史……
    wevsty
        57
    wevsty  
       2017-04-30 02:28:20 +08:00   ❤️ 1
    @hx1997
    权限始终是用来保障控制的一种手段,对于无法覆盖到的地方自然是没有办法,但是也不应该用脆弱来形容。
    对于窗口确实没有太多办法,毕竟权限不是主要用于处理窗口方面的问题的。
    至于其他的攻击面,其实是和使用方法有关系。如果能做到更为细化的权限控制,那么这些问题其实并非不能解决,比如勒索软件,如果创建一个用户拒绝访问文档有关的目录,并且使用该权限来运行勒索软件的话,那么很显然勒索软件尝试加密的操作将会直接失败。(当然如果你一定要谈使用不支持 ACL 的其他磁盘格式那也是没办法的)
    注册表的问题也是一样。

    我开发 wesuex 这个产品的目的就是希望能更加细化一些权限方面的管理,通过这个产品我们可以让不同的程序运行在不同的权限或者用户下,这样我们就可以拒绝不必要的权限加以限制。比如创建一个拒绝访问 D 盘的用户,那么用这个用户来运行一个程序,这个程序就不能扫描到 D 盘的隐私内容了。这个是我理想中的用法,当然虽然现在做的不好,但是还是可以努力一下。
    TakaLv
        58
    TakaLv  
       2017-04-30 02:28:51 +08:00 via Android   ❤️ 1
    @acess 除了 iOS 这样系统外,日常防毒是全靠自己的,不过 iOS 要是中毒一般人也对付不了。至于 UAC 这玩意,我记得某某人的公司里禁止应用获取 UAC 权限以及安装应用,但已经获取 UAC 权限的搜狗输入法还是强行安装了搜狐浏览器。
    TakaLv
        59
    TakaLv  
       2017-04-30 02:32:56 +08:00 via Android
    @acess 所以讲我感觉这个逻辑上很蛋疼,防君子不防小人的防毒能力还不如 iOS 那样的呢。
    wevsty
        60
    wevsty  
       2017-04-30 02:36:26 +08:00
    @acess
    微软一直都有做根证书更新这件事情,从未停止过。
    进入了 RING0 层,在驱动级别的对抗是永无止境的,事实上也没办法阻止驱动干点什么事情,最根本的还是阻止加载驱动。
    acess
        61
    acess  
    OP
       2017-04-30 02:40:30 +08:00 via Android
    @wevsty 是的,都在 ring0 里,对抗是没完没了的,只有一开始就阻止它加载。
    但天翼校园客户端蓝屏事件能发生,就表示微软目前没有把这个政策完全落实。也许未来版本微软会完全收紧 DSE,但个人、开源软件可能又会成为问题,说不定还会抛弃老硬件平台的支持。
    acess
        62
    acess  
    OP
       2017-04-30 02:46:09 +08:00 via Android
    @TakaLv 个人觉得安全需要微软这个开发操作系统的和第三方应用开发者一起来解决……
    按理说开发者比用户在专业方面懂得更多,本应由他们负责保证安全。结果现在开发者的某些行为本身就和用户“敌对”了……真是蛋疼。
    @hx1997 微软的 UWP 应用也许可以一举解决权限、隐私问题,不过可以想象,安全性提升后,便利性可能会受影响(比如用户也许不再可以自由操作文件)
    wevsty
        63
    wevsty  
       2017-04-30 02:47:20 +08:00
    @acess 微软为什么要阻止天翼客户端加载驱动?微软不是神,不能包办一切。。。不管一个驱动是好还是坏,如果符合要求就允许加载是没有问题的,这方面不要指望太多。
    hx1997
        64
    hx1997  
       2017-04-30 02:49:31 +08:00 via Android
    @acess 唉,现在没几年前那个兴趣去了解了,AppContainer 我也一直没看,似乎还挺有前途的。
    acess
        65
    acess  
    OP
       2017-04-30 02:49:42 +08:00 via Android
    @wevsty 那个恶意驱动不是天翼客户端的组成部分,它是用过期证书签名的,请看我前面的回复。
    hx1997
        66
    hx1997  
       2017-04-30 02:51:41 +08:00 via Android
    @wevsty 不知道你有没有研究 Job Object 和 AppContainer,加到你的产品里可能会有用 :)
    acess
        67
    acess  
    OP
       2017-04-30 02:52:42 +08:00 via Android
    @wevsty 如果微软能够完全收紧 DSE,及时封禁被广泛滥用的有 bug 的驱动,那可以想象黑产的日子会变得更难过,脚本小子可能直接就出局了……
    可惜微软目前还做不到完全收紧 DSE。
    TakaLv
        68
    TakaLv  
       2017-04-30 02:53:09 +08:00 via Android
    @acess 本来 C 盘底下一群文件夹就不应允许用户访问的,UWP 是可以很方便的读写文件的,对于用户来讲拷贝个文件这点 UWP 还是可以胜任的。
    我认为要么就强制性实现 UAC 权限的分类告诉用户这个应用到底有什么危害,要不就直接管制应用安装入口。
    TakaLv
        69
    TakaLv  
       2017-04-30 03:05:08 +08:00 via Android
    @acess 作为 Windows 这个系统的开发商,如果早早努力限制影响安装的途径,至少大部分的安全问题是能解决了。
    SP00F
        70
    SP00F  
       2017-04-30 05:43:32 +08:00
    文件做好权限,做细致化,很累。。。
    不乱下,不乱装,认准官方,基本上杜绝大部分木马等软件。
    到服务器权限,做得更细致的话。除非 0day,0day 也一定程度可以杜绝,只要把权限控制好。

    只要认真,没有权限做不了的,密码随机复杂化,堡垒机上一个,Web 经常做代码审计,权限控制得非常好的情况下,基本上不是人为的过失基本可以杜绝了。

    没有绝对的安全,经常检查,留个心眼。
    BB9z
        71
    BB9z  
       2017-04-30 07:32:35 +08:00
    对于 UAC 有这么一种说法,微软通过降低用户体验的方式鼓励大家写出少使用系统权限的程序。
    lany
        72
    lany  
       2017-04-30 07:51:08 +08:00
    minami
        73
    minami  
       2017-04-30 09:06:40 +08:00
    放轻松点,看了下 UACME 这个项目,里面的大部分漏洞都已经被修复了,还没有对于 15063 有效的。一旦有漏洞爆出来,微软是有修复的义务的,用户只要勤快更新,还是能避免很多攻击的。
    minami
        74
    minami  
       2017-04-30 09:09:54 +08:00
    @minami 更正:把 15063 记成 RS3 了,15063 还是 RS2,那还是有一些问题没修复,需要等微软
    mozutaba
        75
    mozutaba  
       2017-04-30 10:31:34 +08:00 via Android
    @ahhui 这点我觉得 360 没错,普通用户就是要的在正常使用的情况下防范未知的安全风险。过期证书不让访问就影响正常使用了。chrome 的那种提示对于老年人就是浏览器屏蔽了网站,能点继续访问的就点了,不能的就换 ie 试了。左上角提示一个叉就行了。

    所以固若金汤打了个引号。
    mozutaba
        76
    mozutaba  
       2017-04-30 10:34:02 +08:00 via Android
    @changwei 同意,但是自己还是不用 360 的。
    mozutaba
        77
    mozutaba  
       2017-04-30 10:37:06 +08:00 via Android
    @ivvei 比如你开一个截屏的软件,然后退出了,其实他在后台给其他软件刷量,这时候 uac 就给拦截下来,是这个用处。
    mozutaba
        78
    mozutaba  
       2017-04-30 10:48:31 +08:00 via Android
    @maplerecall 太年轻,店里的电脑可以给 u 盘设为只读,一个月后中毒都是打印店的锅。

    以前用卡巴斯基的时候,把人家的打印图给删了,直接要 2k 重新找人做图。用上 360 就 ok 了,有毒就有毒,不运行不管。
    acess
        79
    acess  
    OP
       2017-04-30 10:53:56 +08:00 via Android
    @mozutaba 卡巴不也有隔离区么……
    倒是 WD 在我印象里有删掉激活工具就不给恢复的黑历史,我当时隔着屏幕都感觉到了微软的怨念……
    changwei
        80
    changwei  
       2017-04-30 10:54:05 +08:00 via Android
    @hjc4869 @mozutaba 我这个人没什么信仰,怎么好用方便就怎么来,只要我这样用,电脑安全无毒就 ok,电脑本来就是一个提升生产力的东西,而不是折腾的玩具,没有必要为了提升百分之 10 的安全,降低百分之 50 的生产效率,还用得那么累。而且我自己曾经也是搞 web 安全,很早以前也用 vb 之类的写过反弹木马,大概怎么才会中毒,中毒之后都有什么行为还是比较了解的,很多中毒和系统防护无关,和用户习惯有关,有些用户为了看小电影甚至故意关掉杀毒软件,那么在强大的防护软件给他也没用的。
    acess
        81
    acess  
    OP
       2017-04-30 10:55:37 +08:00 via Android
    @mozutaba 只是新开一个后台进程刷量应该不触发 UAC 吧……
    acess
        82
    acess  
    OP
       2017-04-30 11:06:58 +08:00 via Android
    @TakaLv 文件问题,我觉得可以参考目前安卓的 SD 卡,还有 iOS 的现状。
    如果没有公共的“ SD 卡”,感觉多少会有点使用不便,传文件往往依赖云同步等机制(可能这反而是好事?防止设备丢失后数据跟着一起丢),SMB 等各种经典局域网共享协议被架空(感觉苹果有私心,AirDrop 只支持他们自己家的设备)。
    如果有一个公共的 SD 卡,那就会产生卸载不干净、文件放置混乱、一个应用中毒数据就可能被破坏 /窃取等风险;要缓解这个问题,需要开发者规范自己的行为,用户也需要培养安全意识,把守好权限,任意读写文件的权限只放给可信的应用——无论怎样,我感觉 UWP 应用如果普及,至少不会比目前的现状更差。
    acess
        83
    acess  
    OP
       2017-04-30 11:15:00 +08:00 via Android
    @changwei
    最近碰到的 MBR Bootkit 让我觉得脊背发凉,因为我用电脑作死次数还是蛮多的……
    这种技术居然已经泛滥到连刷广告的都在用了。
    如果不是他们逗比搞出创建管理员账号、触发 Win10 PatchGuard 之类的大动静,我觉得很难感知系统已经有问题了。
    xuboying
        84
    xuboying  
       2017-04-30 11:22:56 +08:00 via Android
    坚决打击犯罪和犯罪存在不矛盾!
    acess
        85
    acess  
    OP
       2017-04-30 11:30:27 +08:00 via Android
    @wevsty
    忘了说了……证书过期,签名不过期,这个也是我自己观察时就已经发现的现象,您说的那些其实没有超出我的预料……(不过我可能仍然对这块有一些误解)
    我甚至还下载过 1999 年签名的 Win98 安装程序,文件 hash 算法还是 MD5,签名者是微软,系统现在仍然认为签名有效。

    只是如果问我正确的数字签名验证应该怎么实现,实际上 Windows 又是怎么做的,我也不能一五一十地答上来。

    反正天翼蓝屏事件那波,Windows 确实把没有时间戳、签名证书也早就过期了的驱动加载进了内核。这样一来,绕过 DSE 几乎是 0 成本了。
    acess
        86
    acess  
    OP
       2017-04-30 11:34:28 +08:00 via Android
    @xuboying 当然不矛盾……说开了,就好像社会上总有一定的犯罪率,但我们该怎么过还是怎么过一样。
    LZ 大概想吐槽的,楼上的 V 友说过了:知乎提供的信息只是面向外行的“科普”,可能不全面,或者欠缺时效性。
    而 LZ 这种外行又可能太轻信知乎这种平台……
    wevsty
        87
    wevsty  
       2017-04-30 11:47:09 +08:00
    @hx1997 JOB 和 AppContainer 可能后续会加入。有这方面的计划,不过嘛级别可能比较靠后。

    @acess 这种都是互相权衡的,毕竟还是要以正常使用为第一前提。数字证书有有效期,但是数字证书签出来的签名不能说因为数字证书有效期过了就不认。一张数字证书的有效期少则 1 年多则 3 年 5 年,如果因为数字证书过期就拒绝那么也就意味着你系统中的所有驱动必须每隔几个月就更新一次,否则可能会无法启动。至于签名出来的时间戳,纯粹只是用来表示发布时间的,并没有什么特别的意义。
    这个过程和签名一样,一个人签署的合同,不能说因为签署人挂了这份合同就是无效的。
    获取数字证书始终是有成本的,这一点也是毋庸置疑的。
    acess
        88
    acess  
    OP
       2017-04-30 12:01:13 +08:00
    @wevsty 再次感谢您的分享。

    还有一个重要信息我没补充,就是签名那个恶意驱动的过期证书,实际上**已经被吊销了**。
    连吊销证书都无法阻止这个驱动被加载的话,也难怪有人会说现在的 DSE 是鸡肋。

    当然,就算微软在将来收紧了 DSE,也不能远远消除内核这块的安全隐患;
    而且,LZ 觉得收紧 DSE 能带来显而易见的坏处:这会给个人、开源软件开发者带来麻烦,甚至让他们无缘触及 Windows 内核;并且可能会导致厂商支持不到位的硬件直接被未来版本的 Windows 放弃支持……

    关于时间戳,我从表面的现象看,觉得它还是非常重要的。
    根据 LZ 自己的观察,如果没有时间戳,签名的有效期就被限制在证书的有效期内。如果有时间戳,就不再受这个限制(不知道是不是受反签名证书的有效期约束)。
    很显然,这样可以阻止攻击者用泄露私钥的过期证书签名驱动来绕过 DSE。
    ivvei
        89
    ivvei  
       2017-04-30 12:08:26 +08:00
    @mozutaba 不能啊。我要是这截屏软件,我打开的时候就会要求 UAC 提权,你点还是不点?不点我就直接退出不给你用了。
    acess
        90
    acess  
    OP
       2017-04-30 12:10:18 +08:00
    @ivvei 你可以换一个软件试试,比如 Snipaste、GifCam 等……
    hx1997
        91
    hx1997  
       2017-04-30 12:13:20 +08:00 via Android
    @wevsty 已 star,希望看到后续发展😀 毕竟以前也关注过,后来退坑了
    ivvei
        92
    ivvei  
       2017-04-30 12:17:01 +08:00   ❤️ 1
    @acess 那不是又得找一圈了么。而且这只是个例子,实际情况中并不是总能轻易找到替代品的。而且就 UAC 这粗糙的提示,你甚至都不一定能判断出软件这个要求是合理的还是不合理的,是可疑的还是不可疑的。就大部分用户的计算机水平,我一个流氓应用都不用费心去绕过 UAC,就毫不遮掩地公然要求 UAC 权限,依然能在大部分人那里成功获得授权。
    wevsty
        93
    wevsty  
       2017-04-30 12:20:15 +08:00   ❤️ 1
    @acess 吊销的问题是微软实现方面的问题。这一点我了解的不多,不过微软完全有能力随时发布更新来解决这些问题。
    DSE 确实带来了很多问题,也是无可否认的,个人几乎很难在独立开发驱动。不过微软这方面的要求也不是不能理解,因为大多数蓝屏的问题并不是 Windows 自身的问题导致的,几乎都是第三方驱动形成的。在驱动层面开发是很麻烦的事情,普通的 app 如果犯了一个除 0 的错误,也就只是收到一个程序崩溃的提醒,可是驱动层面上那就直接蓝屏了。(其实某种层面上蓝屏是相当好的保护措施)通过 DSE 这样的手段来限制一些开发者这大概才是微软的目的所在。至于未来版本的支持。。内核上很多地方是未公开的,每一个版本都可能会有些许不同,而驱动们为了达到各种各样的目的可能又必须依赖于这些未公开的地方,所以驱动上兼容各种版本是相对比较困难的。微软其实就不想让开发者动内核,什么 hook SSDT 这种事情根本就不是什么正规手段,所以才有了 PatchGuard 这种东西来阻止对内核的修改。
    acess
        94
    acess  
    OP
       2017-04-30 12:23:36 +08:00
    @ivvei 实际上到弹 UAC 那个程度,可能是耍流氓已经耍得太过分了。
    LZ 后来反思过,意识到管束软件的流氓行为,压根就不在 UAC 的职责范围内……
    比如安装软件,我记得只要开发者愿意,其实可以 per user 安装,安装过程可以不弹 UAC 申请提权。
    我记得知乎大 V vczh 说过,只开标准用户的话,某个用户作死中毒,删掉账户,系统还是好的。
    不过 LZ 觉得这对个人用户意义不大,因为重装系统的麻烦有一大部分就来自于各种个性化设置。删了账户,这些还是要从头开始,可能某些软件还需要重新激活……
    ahhui
        95
    ahhui  
       2017-04-30 12:24:12 +08:00
    @mozutaba 不赞同。证书安全体系里过期了就不能允许访问,不允许访问才是正常使用,允许访问才是非正常使用。
    acess
        96
    acess  
    OP
       2017-04-30 12:25:02 +08:00
    @ivvei 在不太懂技术的用户面前,UAC 的另一个尴尬之处就在于正常软件在安装、运行时申请 UAC 提权的,好像也非常多……你不能把弹 UAC 当作耍流氓的标志。
    TakaLv
        97
    TakaLv  
       2017-04-30 12:26:48 +08:00
    @acess 我不太懂你的意思,公共的 SD 卡? UWP 是有文件管理器的,手机上有,也支持外置存储卡。拷贝个东西也不像 iOS 那样只能靠云同步,Android 能做的 UWP 也一样能做到。
    ahhui
        98
    ahhui  
       2017-04-30 12:29:17 +08:00
    @acess MBR 的 rootkit 其实现在有解决方案,就是使用 UEFI 引导。
    ahhui
        99
    ahhui  
       2017-04-30 12:33:30 +08:00
    @acess >>“ UAC 的另一个尴尬之处就在于正常软件在安装、运行时申请 UAC 提权的,好像也非常多”
    除了安装、卸载,正常软件在运行时,没有必要 UAC 提权。通常这类软件是因为没有遵循最小授权原则编写的,所以他要的权限特别多,甚至一开始运行就要完整管理员权限,而这类软件在正常使用过程中 99%的时间是不会用到非得提权才能操作的功能的。所以这其实是微软无控制力的表现。
    acess
        100
    acess  
    OP
       2017-04-30 12:50:18 +08:00
    @TakaLv 我觉得如果 UWP 应用能任意读写用户的大多数个人文件,那和 Android 的 SD 卡这块空间可能也差不了太多了。

    我自己没在用 iOS,印象中 iOS 没有这么一个公共的“缓冲区”,导致了使用上的麻烦。

    Windows 和 Android 中,应用可以自由访问文件。
    如果不允许应用自由访问文件,可能就需要开发“相册”“文档”之类 content provider ( LZ 也不知道怎么形容)应用。别的应用如果要读取内容,必须手动在原先的应用里点一下“分享”“用 XX 打开”之类的按钮;或者,应用要读取文件时,主动调用这些“ content provider ”,让用户从“ content provider ”中选择要使用的文件。
    说实话,这可能并不是坏事,反而是好事:因为文件可以被更有序地组织起来,防止出现用户乱丢文件、找不着在哪的情况。
    但文件类型五花八门,可能系统不能都对应开发类似“相册”“文档”之类的 content provider 应用包办,如果干脆出个“文件管理器”,那权限粒度可能又太粗糙……
    1  2  
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2007 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 68ms · UTC 11:47 · PVG 19:47 · LAX 04:47 · JFK 07:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.