是否可以向 Windows 为管理员用户创建的标准用户令牌添加权限?

mar*_*ark 5 windows security privileges uac

这个问题是为什么在 Windows 8 上忽略 SeCreateSymbolicLinkPrivilege的后续问题

鉴于:

  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>
Run Code Online (Sandbox Code Playgroud)

普通用户:

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>
Run Code Online (Sandbox Code Playgroud)

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

Wil*_*iam 3

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

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

  • 我已经研究过更改进程令牌(可能是“explorer”)以添加 SeCreateSymbolicLinkPrivilege 权限,但似乎无法更改现有令牌的权限集。即使您的补丁进程以 SYSTEM 身份运行和/或具有 SeTcbPrivilege 权限。

  • 我研究了使用 CreateRestrictedToken 创建您的“自己的”非提升进程,但启用了 SeCreateSymbolicLinkPrivilege 权限。但我读过的有关 CreateRestrictedToken 的所有轶事都表明,生成的令牌无法与“真实的”非提升令牌足够相似。完整性级别或与令牌相关的提升标志存在无法克服的问题。

  • 无论您在安全策略管理器中将哪些用户分配给 create-symbolicLink 用户权限,如果您的进程以非提升方式运行(从具有管理员权限的用户),SeCreateSymbolicLinkPrivilege 权限将被删除。即使添加的唯一用户是“所有人”,也会发生这种情况。

微软在这件事上确实让我们犯了大错,似乎没有好的解决方法。不过,有一个可能很黑客的解决方案......

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