【问题标题】:Remote impersonation with UAC使用 UAC 进行远程模拟
【发布时间】:2013-06-15 22:23:39
【问题描述】:

我有一个用 C# 编写的工具,它可以模拟用户在远程机器上执行管理任务。

我发现在模拟远程计算机的内置管理员帐户或模拟管理员组中的域用户时,将 LOGON32_LOGON_NEW_CREDENTIALS 与 LOGON32_PROVIDER_DEFAULT 一起使用会破坏 UAC。但是,当模拟非内置本地用户(远程计算机的本地用户)时,将返回非提升令牌。在两台机器上创建具有相同凭据的用户并不能缓解问题。

此表显示成功获取提升的令牌以在远程计算机上使用:

graph showing working scenarios http://img521.imageshack.us/img521/3605/fo69.png

所有用户都在管理员组中。

是否有解决此问题的已知解决方案,不涉及关闭 UAC 或在目标计算机上执行任何剧烈操作? 远程计算机由客户控制,不能进行任何修改。假设 UAC 正在并且应该在两端运行。

作为一个兴趣点,但不影响上述问题,使用远程 WMI 时会发现完全相同的行为。

【问题讨论】:

  • 在远程机器上,设置是什么:'本地计算机策略\Windows 设置\安全设置\本地策略\安全选项\用户帐户控制:内置管理员帐户的管理员批准模式'调成? (gpedit.msc) 'Disabled' 是默认设置,很可能是您看到的行为的解释。
  • 本地和远程机器都在未来客户的控制之下 - 本地或远程都不能修改策略(此工具是安装程序的一部分,而不是从管理员的工作站安装到远程服务器)。

标签: c# uac impersonation


【解决方案1】:

这可能是因为 远程 服务器启用了 UAC。这意味着当您连接到远程计算机时,即使您是管理员,您在远程计算机上操作时也会被剥夺这些权力。

有一个Group Policy option that controls this

LocalAccountTokenFilterPolicy

编辑:修正了正确知识库文章的链接“Windows Vista 中的用户帐户控制和远程限制说明”

为什么它只适用于本地管理员,而不适用于域管理员?因为这就是选项的作用——它只限制“本地管理员组的成员”

具有域用户帐户的用户远程登录到 Windows Vista 计算机...,域用户将在远程计算机上使用完全管理员访问令牌运行,并且 UAC 将无效。

当作为目标远程计算机上本地管理员组成员的用户建立远程管理连接...时,他们不会以完全管理员身份进行连接。

该政策对待 域管理员 帐户不同于 本地管理员 帐户。这就是它与众不同的原因。

尝试禁用组策略,看看它是否修复它。它似乎准确地描述了你的情况。尝试在远程机器上禁用组策略选项

要禁用 UAC 远程限制,请按以下步骤操作:

  1. 单击开始,单击运行,键入regedit,然后按 Enter。
  2. 找到并单击以下注册表子项:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
  3. 如果 LocalAccountTokenFilterPolicy 注册表项不存在,请按照以下步骤操作:

    一个。在编辑菜单上,指向新建,然后点击DWORD值
    湾。键入 LocalAccountTokenFilterPolicy,然后按 Enter。

  4. 右键单击LocalAccountTokenFilterPolicy,然后单击修改

  5. 数值数据框中,输入1,然后点击确定
  6. 退出注册表编辑器。

【讨论】:

  • 域用户或内置管理员不是这样,为什么内置用户会这样?这很古怪。此外,UAC 肯定旨在防止没有密码的应用程序 - 如果您提供具有有效管理员凭据的应用程序,那么 UAC 提升本身的信任级别更高,所以我希望它可以在那时以编程方式提升。
  • “为什么内置用户会出现这种情况?” 这主要是策略的作用。它不影响域管理员,只影响本地管理员。并且可能不会影响本地管理员帐户。
猜你喜欢
  • 2011-04-24
  • 2010-12-17
  • 1970-01-01
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-11
  • 2011-03-18
相关资源
最近更新 更多