首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获取Windows系统用户令牌

如何获取Windows系统用户令牌
EN

Stack Overflow用户
提问于 2012-11-26 01:40:55
回答 2查看 2.4K关注 0票数 2

操作系统为启用了UAC的Windows 7或更高版本。调用进程具有管理员权限,已由UAC信箱确认。

我想在user SYSTEM下生成一个新的控制台窗口(cmd.exe) (不要问为什么)。我可以通过使用Sysinternals的PsExec工具或类似的工具来交互式地完成这项工作,但我没有源代码,我需要了解它是如何工作的。

我知道我必须调用CreateProcessAsUser(),这在第一个参数( hToken )设置为NULL的情况下可以很好地工作,但现在我需要知道如何获取hToken。我知道我可以通过调用LogonUser()来获得这样的令牌--但不能用于系统。如何获取系统的令牌?

我想使用DuplicateTokenEx(),但这需要一个原始的令牌,而我没有这个令牌。

我是否必须查询进程列表,查找任何系统进程,并尝试复制该令牌或其他什么?我不想对PsExec工具或其他执行此操作的工具进行反向工程。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-26 06:06:13

通常,您将安装并启动一个配置为以SYSTEM身份登录的服务。然后,您可以使用OpenProcessTokenDuplicateTokenEx制作令牌的副本。

您可能需要使用SetTokenInformation来更改令牌的会话ID,以便与交互式用户的会话ID相匹配。要做到这一点,您需要“作为操作系统的一部分”权限,因此您应该在服务本身内部执行此操作。一旦准备好使用重复的令牌,就可以使用DuplicateHandle将句柄复制到管理进程中,或者(使用正确的选项)也可以直接从服务启动命令外壳。

票数 3
EN

Stack Overflow用户

发布于 2014-08-18 04:15:13

或者,使用最大允许访问权限打开winlogon进程,尝试打开进程令牌(也使用最大允许访问权限),然后尝试使用模拟权限复制此winlogon句柄。在win8.1上,这将会成功。在其他情况下,您需要临时更改令牌dacl,使用null或您自己的管理进程令牌

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13553615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档