我正尝试从以NT AUTHORITY\System
身份运行的进程中以NT AUTHORITY\Network Service
身份启动新进程。
我看过其他问题,例如下面的问题,它没有提供一个工作示例:CreateProcess running as user: "NT AUTHORITY/Network Service" without knowing the credentials?
而且,我遇到过一些帖子,其中讨论了从已经作为NT AUTHORITY\Network Service
运行的进程中复制令牌:是的。
我想知道,有没有一种方法可以启动一个进程,而不必依赖于另一个进程来复制令牌?有没有一种方法可以手工制作一个令牌,以帮助使用CreateProcessAsUserW()
启动一个进程NT AUTHORITY\Network Service
?
3条答案
按热度按时间00jrzges1#
我建议你通过一个预定的任务来完成,然后在它运行后删除它(或者你可以使用一个一次性的设置)。虽然系统有创建令牌的特权,但NtCreateToken函数不是API的一部分,使用它会是一个巨大的痛苦。如果不是一个预定的任务,那么作为一个服务(即使你只运行一次)。
mcdcgff02#
是否有一种方法可以手工创建一个令牌,以帮助启动一个进程作为NTAUTHORITY\Network Service
是。通过调用
NtCreateToken
。但为此需要有SE_CREATE_TOKEN_PRIVILEGE
。但 * services.exe * 和服务,即使以“NT AUTHORITY\System”运行也没有它。因此,您不能只调用NtCreateToken
。首先,您需要找到具有此权限的令牌,且只能在此之后。要获取设置了所需权限令牌,我们可以使用下面的代码:
有了这个,我们可以做下一件事:
(code不使用
/RTCs
)cngwdvgl3#
我遇到了一个函数
LogonUser
,它可以用来为所需的用户创建令牌。The doc显示了一个为NT AUTHORITY\LocalService
创建令牌的示例,如下所示:我将上述内容与CreateProcessAsUser函数结合使用,该函数以
NT AUTHORITY\NetworkService
的形式启动子进程,而父进程以NT AUTHORITY\System
的形式运行