注册表设置EnableLinkedConnections在技术级别上有什么作用?


15

注意:我的基本问题是,当我运行提升权限的程序时,能够访问我(Win 7管理员用户)设置的网络共享。通常,提升权限的程序将无法访问我的非提升网络共享。

根据Microsoft的说法,注册表设置EnableLinkedConnections将允许提升的进程访问当前登录(非提升)浏览器进程的网络共享。

这种解释是有道理的:

[...]当您是Administrators组的成员并登录后,UAC会将您的帐户下放给非特权用户。右键单击“命令提示符”并以管理员身份启动时,此运行上下文与您获得的上下文完全不同。您可能已经注意到,在一个上下文中连接的网络驱动器在另一个上下文中不可见。[...]

该论坛主题询问此设置打开的漏洞。给出的答案链接到有关禁用UAC提示的文章(或据我所知)。

现在的问题是,假设我们不在域环境中运行,注册表设置EnableLinkedConnections 在Windows 7系统上会做什么允许什么。


编辑:我特别感兴趣的一件事是此设置仅影响网络驱动器的(可见性)还是具有其他含义。


相关约为ELC不是在某些情况下,这个工作的其他问题:serverfault.com/questions/780639/...
UuDdLrLrSs

Answers:


18

没有Windows的源访问权限,很难说出任何非推测性的内容。除了该免责声明,以下是我通过阅读以下内容收集到的内容:

UAC在登录时创建两个安全令牌:包含用户的完整组成员身份的提升令牌,以及剥离了“管理员”组成员身份的受限令牌。每个令牌都包含一个独特的本地唯一ID(LUID),用于标识登录会话。它们是两个单独且不同的登录会话。

从Windows 2000 Server SP2开始,映射的驱动器(在对象管理器名称空间中表示为符号链接)被标记有创建它们的令牌的L​​UID(您可以在此KBase文章中找到一些对此行为的Microsoft引用,并且可以在此博客文章中了解有关此功能机制的更多信息)。该功能的要旨是,一个登录会话创建的映射驱动器不能被另一登录会话访问。

设置EnableLinkedConnections值会触发LanmanWorkstation服务和LSA安全子系统(LSASS.EXE)中的行为,从而导致LSA将用户令牌之一映射的驱动器复制到另一个令牌的上下文中。这允许映射有提升令牌的驱动器对于受限令牌和相反对象是可见的。相对于域与非域环境,此功能的行为没有任何特殊性。如果您的用户在非域环境中使用“管理员”帐户运行,则默认情况下,其受限令牌和提升令牌将具有独立的驱动器映射。

在漏洞方面,微软似乎缺少官方文档。在2007年的一次有关UAC的对话中,我确实找到了评论一名Microsoft员工的问题,询问潜在的漏洞。鉴于答案来自Jon Schwartz,他当时被称为“ UAC Architect”,倾向于认为他的回答具有可信度。这是他对以下询问的回答的要点:“ ...我没有发现任何信息可以描述技术上实际发生的事情,或者是否存在任何UAC漏洞。您能发表评论吗?”

从技术上讲,这会造成一个小漏洞,因为非提升的恶意软件现在可以“预先植入”驱动器号+映射到提升的上下文中-除非您最终得到针对您的环境的特定内容,否则这应该是低风险的。

就我个人而言,我想不出一种方法来“利用”该漏洞,只要通过驱动器映射“播种”提升的令牌仍然需要用户实际提升和执行来自“种子”驱动器映射的恶意内容。不过,我不是安全研究人员,因此我可能不会以良好的思维方式来探讨潜在的漏洞。

通过继续当客户开始部署Windows NT 4.0时(用户使用受限用户帐户登录)时开始的趋势,我在客户站点中使用了EnableLinkedConnections值。多年来,这对我们来说一直运作良好,并且在Windows 7中继续运作良好。


RE:“我已经使用EnableLinkedConnections值来回避……[通过]使用有限的用户帐户来登录用户。” -受限用户帐户可以管理员身份运行应用程序吗?我以为他们做不到。(如果他们不能,那么我就看不出这是如何回避这个问题的-我的意思是,如果我向机械师抱怨说,当我以80 mph的速度行驶时,我的汽车发动机发出尖叫声,那么我不会接受他的修正。弄平轮胎[虽然它无法以每小时80英里的速度行驶,但无法解决实际问题]。)
BrainSlugs83 2013年

1
@ BrainSlugs83-您正在解决长答案中一小段的评论。答案给出了OP他们想要的(我假设,因为他们接受了):对注册表值的作用的描述。我发表了附带的评论,以告诉OP,有一种避免使用EnableLinkedConnections的方法-只是不给用户管理员帐户,而这种需求得到了缓解。在2013年-有限的用户帐户一直是Microsoft的建议近10年。IMO,您的汽车/机械类比比较紧张。这不是操作系统的“问题”,而是安全功能。
埃文·安德森

哦,我绝对定神。同样以防万一:我不是在说你的答案是错误的。很好,我什至赞成!-但是,我正在解决一个非常现实的问题,因此,我向您提出的问题是确定此替代解决方案是否对我有用:“有限的用户帐户可以管理员身份运行应用程序吗?” ; 我从你的答复中认为我的最初假设是正确的。
BrainSlugs83

另外,我强烈不同意这种类推。取消以管理员身份运行应用程序的能力完全类似于让我的电脑泄气。我有一个Microsoft Visual Studio项目,如果未使用“以管理员身份运行”启动Visual Studio,则在代码签名阶段无法编译。我曾尝试解决此问题,但在Google,博客或堆栈溢出方面都没有找到解决方案(这不是孤立的事件)。对于某些用户(即使仅使用Microsoft软件),必须具有以管理员身份运行应用程序的能力。
BrainSlugs83

3
如果您需要以管理员身份运行应用程序,建议您使用另一个用户帐户,并使用该帐户运行带有“以管理员身份运行”的提升权限的应用程序。那是我唯一的选择。如果应用程序无法在“运行方式”下正常运行,则该应用程序有缺陷。(我还争辩说,任何需要管理员权限且不是网络或计算机管理应用程序的应用程序也都存在缺陷-不论是否是MSFT软件。)我发现缺陷软件是我工作中最令人沮丧的方面之一,所以我也可以理解您的挫败感。我希望有一个好的解决方案。
埃文·安德森

1

简而言之,它将您的超级用户凭据与常规凭据链接在一起。它当然更复杂,但是从根本上讲,即使Windows 7上的“管理员”帐户也不是管理员,但需要执行与Linux上的SUDO等效的操作来执行多种操作。映射网络驱动器时,需要执行此操作,但是网络驱动器仅针对超级用户而不是普通用户进行映射。此注册表设置将超级用户凭据与您的标准凭据链接在一起,以用于映射驱动器。这样,两者都可以访问映射的驱动器,而不仅仅是超级用户。


您能否澄清此设置是否实际上仅影响网络驱动器?还是有其他效果?(请参阅q编辑)
马丁
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.