【问题标题】:Is it possible to add a privilege to the Standard User Token created for an admin user by Windows?是否可以向 Windows 为管理员用户创建的标准用户令牌添加权限?
【发布时间】:2015-07-09 11:46:45
【问题描述】:

这个问题是对 Why is SeCreateSymbolicLinkPrivilege ignored on Windows 8?

给定:

  1. 用户在管理员组中
  2. 我不能选择关闭 UAC。
  3. 提升运行不是一种选择。

问题:是否可以将SeCreateSymbolicLinkPrivilege 添加到 Windows 为管理员用户创建的标准用户令牌中?


附录

非提升的管理员用户:

C:\dayforce\SharpTop>whoami /priv

PRIVILEGES INFORMATION
----------------------

Privilege Name                Description                          State
============================= ==================================== ========
SeShutdownPrivilege           Shut down the system                 Disabled
SeChangeNotifyPrivilege       Bypass traverse checking             Enabled
SeUndockPrivilege             Remove computer from docking station Disabled
SeIncreaseWorkingSetPrivilege Increase a process working set       Disabled
SeTimeZonePrivilege           Change the time zone                 Disabled

C:\dayforce\SharpTop>

普通用户:

C:\Windows\system32>whoami /priv

PRIVILEGES INFORMATION
----------------------

Privilege Name                Description                          State
============================= ==================================== ========
SeShutdownPrivilege           Shut down the system                 Disabled
SeChangeNotifyPrivilege       Bypass traverse checking             Enabled
SeUndockPrivilege             Remove computer from docking station Disabled
SeIncreaseWorkingSetPrivilege Increase a process working set       Disabled
SeTimeZonePrivilege           Change the time zone                 Disabled
SeCreateSymbolicLinkPrivilege Create symbolic links                Disabled

C:\Windows\system32>

请注意普通用户拥有SeCreateSymbolicLinkPrivilege 权限,因为我已在安全策略中启用它。但是管理员用户被搞砸了,因为这样做不会影响其标准用户令牌!

【问题讨论】:

  • 不,没有(合理的)方法可以做到这一点。 (当然,您可以编写一个代表您创建符号链接的服务。)
  • 我不知道有没有办法自定义提升拆分令牌方案,但是你可以提升然后调用CreateRestrictedToken来制作自定义沙箱。
  • 这样做与要求 3 相矛盾 - 不能选择运行提升。这也意味着即使是很短的时间也可以高位运行。原因 - 提升需要用户交互。
  • 使用服务创建受限令牌怎么样?从服务中,您可以获取控制台用户的链接管理员令牌,然后在她的会话中使用受限令牌创建一个新进程。
  • 这可能是一种解决方案,但这意味着部署一个额外的组件,即使它是一次性部署。这是可行的,但要复杂得多,因为我们现在必须与另一个进程通信,而不是简单的命令行。不过,安排作为答案,我会投票赞成

标签: windows security uac privileges


【解决方案1】:

(这是对实际问题的非回答,但它是对我认为是实际目标的答案的尝试)

我感受到了你的痛苦——我一直在寻找一种方法来允许管理员用户运行非提升来创建符号链接,但没有成功......

  • 我已经调查过更改进程令牌(也许是“explorer”) 添加 SeCreateSymbolicLinkPrivilege 权限,但它似乎 没有办法改变现有令牌的权限集。 即使您的补丁进程以 SYSTEM 身份运行和/或具有 SeTcbPrivilege 特权。

  • 我已调查使用 CreateRestrictedToken 创建您的“自己的” 非提升进程,但使用 SeCreateSymbolicLinkPrivilege 权限左启用。但我读过的所有轶事 CreateRestrictedToken 建议生成的令牌不能 与“真实的”非提升令牌足够相似。那里 完整性级别或升高的标志是无法克服的问题 与令牌相关联。

  • 无论您将什么用户分配给 create-symlink 用户权限 安全策略管理器,如果您的进程运行未提升(从 管理员用户),SeCreateSymbolicLinkPrivilege 权限获取 删除。即使添加的唯一用户是“所有人”,也会发生这种情况。

微软在这个问题上真的把我们搞砸了,似乎没有好的解决方法。虽然有一个可能的黑客解决方案......

现在对于骇人听闻的解决方案 - 在用户登录期间,启动一个后台程序(提升的),它将代表其他进程创建符号链接。这将需要使用某种 IPC(可能是命名管道)来接收来自客户端进程的创建符号链接请求。这很丑,而且可能很慢,但除了运行提升(或禁用 UAC)或从管理员组中删除用户之外,我看不到任何其他方式。

【讨论】:

  • 查看 eryksun 的评论 - 他的建议基本相同 - 创建在常规帐户下运行的服务,该服务将代表非提升的管理员用户创建符号链接。
猜你喜欢
  • 2017-07-21
  • 1970-01-01
  • 2021-05-12
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-12
  • 1970-01-01
  • 2021-05-23
相关资源
最近更新 更多