注意:对我来说,基本问题是当我运行提升权限的程序时,能否访问我(Win 7 管理员用户)设置的网络共享。通常,提升权限的程序无法访问我的非提升权限网络共享。
根据微软注册表设置 EnableLinkedConnections 将允许提升的进程访问当前登录(非提升的)资源管理器进程的网络共享。
此解释有一定道理:
[...] 当您是管理员组的成员并登录时,您的帐户会被 UAC 降级为非特权用户。此运行上下文与您右键单击命令提示符并以管理员身份启动时获得的上下文完全不同。您可能已经注意到,在一个上下文中连接的网络驱动器在另一个上下文中不可见。[...]
此论坛主题询问此设置导致的漏洞。给出的答案链接到文章关于禁用 UAC 提示(或者我理解是这样)。
现在的问题是,注册表设置 EnableLinkedConnections做或者允许在 Windows 7 系统上,假设我们不在域环境中运行。
编辑:我特别感兴趣的一件事是这个设置是否仅影响网络驱动器(的可见性)或者是否有任何其他影响。
答案1
由于无法访问 Windows 源代码,因此很难说出任何不属于猜测的内容。除了免责声明之外,以下是我通过阅读以下内容所了解到的信息:
UAC 在登录时创建两个安全令牌:提升令牌包含用户的完整组成员身份,以及受限令牌删除了“管理员”组的成员身份。每个令牌都包含一个独特的本地唯一 ID (LUID),用于标识登录会话。它们是两个独立且不同的登录会话。
从 Windows 2000 Server SP2 开始,映射驱动器(在对象管理器命名空间中表示为符号链接)将使用创建它们的令牌的 LUID 进行标记(您可以找到一些对此行为的 Microsoft 引用在这篇 KBase 文章中,您可以详细了解该功能的机制在这篇博文中)。该功能的要点是,一个登录会话创建的映射驱动器不能被另一个登录会话访问。
设置启用链接连接值触发 LanmanWorkstation 服务和 LSA 安全子系统 (LSASS.EXE) 中的行为,使 LSA 将由任一用户令牌映射的驱动器复制到另一个令牌的上下文中。这允许使用提升令牌映射的驱动器对受限令牌可见,反之亦然。此功能的行为在域环境和非域环境中没有任何特殊之处。如果您的用户在非域环境中使用“管理员”帐户运行,则默认情况下,他们的受限令牌和提升令牌将具有独立的驱动器映射。
在漏洞方面,微软的官方文档似乎缺乏。我确实发现一条评论和微软员工的回应在 2007 年关于 UAC 的一次对话中,我询问了潜在的漏洞。鉴于答案来自当时的头衔为“UAC 架构师”的 Jon Schwartz,我倾向于认为他的答案具有可信度。以下是他对以下询问的回答要点:“...我没有找到任何信息来描述技术上实际发生的事情,或者这是否会打开任何类型的 UAC 漏洞。你能评论一下吗?”
从技术上讲,它打开了一个小漏洞,因为非提升的恶意软件现在可以“预先播种”驱动器号+映射到提升的上下文中 - 这应该是低风险的,除非你最终得到一些专门针对你的环境的东西。
就我个人而言,我想不出“利用”此漏洞的方法,因为使用驱动器映射“播种”提升的令牌仍然需要用户实际提升并从该“播种”驱动器映射执行恶意操作。不过,我并不是一名安全研究人员,我可能没有以良好的心态来处理这个问题,无法想出潜在的漏洞。
我躲过了启用链接连接通过延续我们在客户开始部署 Windows NT 4.0 时开始的趋势(让用户使用受限用户帐户登录),我客户站点的价值得以提升。多年来,这种方法一直行之有效,在 Windows 7 中也依然有效。
答案2
简而言之,它将您的超级用户凭据与您的普通凭据链接起来。当然,它更复杂,但基本上,即使您在 Windows 7 上的“管理员”帐户也不是管理员,但需要执行相当于 Linux 上的 SUDO 的操作才能执行大量操作。当您映射网络驱动器时,您需要执行此操作,但网络驱动器只会为超级用户而不是普通用户映射。此注册表设置将超级用户凭据与您的标准凭据链接起来,以用于映射驱动器。这样,两者都可以访问映射驱动器,而不仅仅是超级用户。
答案3
这个答案添加了详细信息埃文·安德森的回答。
就我个人而言,我想不出“利用”这个漏洞的方法,因为使用驱动器映射“播种”提升的令牌仍然需要用户实际提升并从该“播种”的驱动器映射中执行一些恶意操作。
例如,网络驱动器上的程序要以管理员身份运行,为了实现这一点,您必须安排两件事:在管理员会话中将网络目录安装为驱动器,假设它是 Z:;从网络驱动器运行该程序,假设它是 Z:\daemon.exe。
通过启用启用链接连接一个专门制作的恶意软件可以卸载 Z:\,并将其替换为另一个带有危险 daemon.exe 文件的网络驱动器,并且 Windows 将继续执行它,因为它存储在本地区域内,并且不受互联网安全区域设置的强制执行(军事行动)。如果它保持禁用状态,则替换的 Z:驱动器将不会影响管理会话,从而确保安全。
这是目前并不常见的一种针对性极强的安全风险,因为:
- 您使用网络驱动器执行优先任务,即极为罕见,优先任务通常使用 UNC 路径来避免跨会话出现问题,这意味着该程序不是很好地设计用于利用 UNC 路径(通常出现在非常古老的软件和微软非常古老的 CMD 上)。
- 攻击者必须知道您在具有 UAC 优先级的网络驱动器上运行了哪些程序,这意味着攻击者已经掌握了您的计算机系统的工作方式,但是谁有机会知道这一点呢?陌生人不会那么无聊地 24 * 7 监视您的计算机,也许是可以物理访问您计算机的人。
- 攻击者必须创建一个不会触发安全软件的假证书。尽管绕过了军事行动标记,现代 Windows 通常运行安全软件,大多数人并不关心它,因此默认使用 Windows Defender。
- 最后,如果设备处于托管环境中,除非攻击者利用漏洞运行该挂载程序,否则这也意味着安全策略可能制定不当,因为用户不应该在托管设备上运行不受信任的代码。
相同的攻击面也适用于符号链接,这就是为什么在 Windows 10 Creators Update 之前,创建符号链接默认需要 UAC 优先级。取消 UAC 优先级要求表明,它不再是每个人都应该避免的危险安全漏洞,尽管系统管理员仍可以在组策略中配置这一点(如果需要)。