Windows 什么';s";替换进程级令牌;不管怎么说?

Windows 什么';s";替换进程级令牌;不管怎么说?,windows,group-policy,windows-process,Windows,Group Policy,Windows Process,让我先说我对Windows几乎一无所知。我的理解是,Windows中的进程从进程级令牌获得其权限,该令牌通常会标识启动进程的用户,但可能与系统任务的常见令牌不同,对吗?这在某种程度上类似于具有真实有效的用户和组ID的Linux进程(可能不适合与Linux进行类比,但我只知道这一点)。另外,据我所知,用户可以使用runas.exe(类似于Linux中的sudo)作为另一个用户运行进程。当然,系统会提示他们输入要作为其运行进程的用户的凭据,并且只要他们知道这些凭据,就不需要特殊权限,对吗 现在,有一

让我先说我对Windows几乎一无所知。我的理解是,Windows中的进程从进程级令牌获得其权限,该令牌通常会标识启动进程的用户,但可能与系统任务的常见令牌不同,对吗?这在某种程度上类似于具有真实有效的用户和组ID的Linux进程(可能不适合与Linux进行类比,但我只知道这一点)。另外,据我所知,用户可以使用
runas.exe
(类似于Linux中的
sudo
)作为另一个用户运行进程。当然,系统会提示他们输入要作为其运行进程的用户的凭据,并且只要他们知道这些凭据,就不需要特殊权限,对吗

现在,有一个名为“替换进程级令牌”的用户权限,它根据:

具有Replace a process level token用户权限的用户可以作为另一个用户启动进程,前提是他们知道该用户的凭据


上面的重点是我的。因此,我的问题是:如果有人知道给定用户的凭据,他们可以始终以他们的身份运行进程(使用
runas.exe
或以他们的身份登录)。“替换流程级令牌”用户权限的目的是什么?它对安全性有什么影响?

您完全正确。Windows
CreateProcessAsUser()
类似于Linux。正如上面所说:“CreateProcessAsUser必须能够使用token\u DUPLICATE和token\u IMPERSONATE访问权限打开调用进程的主token。”您可能希望了解Linux上的
wheel
组和
sudoers
,这肯定不是真的“只要他们知道凭据,就不需要特殊权限“@BenVoigt啊,是的,在Linux上,默认情况下,他们需要在
wheel
组中才能使用
su
,并且需要有
sudoers
规则才能使用
sudo
。然而,我说的是windows
runas
runas
是否需要额外的权限?我的测试显示“否”任何用户都有权执行runas.exe,因为
CreateProcessWithLogonW
不需要特殊权限。但它正在对特权服务进行RPC调用,即代表用户的辅助登录服务。我不知道二级登录服务中针对不良参与者实施了何种级别的保护,但至少是系统控制的代码点决定了什么是允许的,什么是不允许的。至于SeAssignPrimaryTokenPrivilege的“替换进程级令牌”这一措辞,这在当今(NT 6+)是误导性的。在进程运行时,不允许程序替换进程的令牌。这个特权严格地说是关于最初分配令牌的权利。很久以前,
CreateProcessAsUserW
通过
CreateProcessW
创建了一个挂起的进程,并在恢复它之前替换了它的访问令牌并重置了它的配额限制,但是现在有一个常见的
NtCreateUserProcess
系统调用在内核的进程管理器中处理所有这些。