启动行政互动的过程,当一个标准用户登录启动行政互动的过程,当一个标准用户登录(Launching a

2019-05-12 06:28发布

我有这将创建一个助手的互动过程,管理员,以便它可以访问一些与桌面相关的资源,其中包括了BlockInput()函数和NVIDIA的NVAPI功能,不能从服务上运行的系统服务。 当登录的用户是Administrators组的成员,下面的工作:

  1. 设置权限级别,包括SE_TCB_NAME
  2. 获取活动会话ID与WTSGetActiveConsoleSessionId()
  3. 获取登录的用户的会话ID与WTSQueryUserToken()
  4. GetTokenInformation()与TokenLinkedToken
  5. DuplicateTokenEx()与SecurityImpersonation
  6. 与CreateProcessAsUser(启动过程)

然而,当我登录会话的当前是一个标准的用户,而不是一个Administrators中的第4步失败,可能是因为标准用户不具有行政级别的令牌与它联系在一起。 这里有什么解决办法? 我想我需要获得管理员的用户之一的道理,但我怎么做呢? 而如果用户没有登录的一个,可它还是访问功能的互动与当前的桌面?

Answer 1:

您可以复制自己的令牌,则改变使用重复的令牌会话SetTokenInformation功能,把它放到交互式会话。

当你注意,运行在SYSTEM中的交互式会话气馁,因为它给交互式用户口来攻击你的过程中,有可能获得更高的权限。 (搜索“粉碎攻击”获取更多信息。)然而,这种担忧同样适用于运行在一个非管理用户的会话管理用户的过程。

理想情况下,你应该在交互式会话中使用非管理过程中,要执行需要一个交互式会话,而使用该服务来执行需要管理员权限的功能功能。 不应该有同时需要的任何功能,但如果NVAPI打破这个规则,有没有什么可以做的。

考虑推出进程进入交互式用户的会话专门创建(和适当的保护)工作站,以尽量减少这种风险。



文章来源: Launching an administrative interactive process when a standard user is logged on