为什么即使用户不存在,runas 也能正常工作

为什么即使用户不存在,runas 也能正常工作

我想知道为什么运行这个命令会起作用(计算机或用户都不存在):

> runas /user:I_do_not_exist\me_neither /netonly cmd.exe

有一个密码提示,但您可以输入任何您想要的密码。

如果我在新的 cmd 上运行whoami,当前用户是原始用户(存在),但在窗口上我可以看到以 I_do_not_exist\me_neither 身份运行

顺便说一句,这个不起作用:

> runas /user:I_do_not_exist\me_neither cmd.exe
Enter the password for I_do_not_exist\me_neither:
Attempting to start cmd.exe as user "I_do_not_exist\me_neither" ...
RUNAS ERROR: Unable to run - cmd.exe
1326: Incorrect password or username.

我正在使用 Windows 10 21H2,并且不在 Active Directory 网络中。

答案1

好吧,我runas在进一步挖掘时发现了为什么会出现这种行为:

Windows 不会尝试对 Microsoft.com 域进行身份验证来启动该过程。它假定凭据正确,计算哈希值并将其存储在内存中以供将来使用。将来的某个时间点,如果您尝试访问该域上的资源,它将自动使用 Windows 单点登录功能将“哈希值传递”到远程系统并让您登录。但直到您尝试访问远程网络,密码才会存储在内存中。

  • 可以确认的是,我们看一下文档函数CreateProcessWithLogonW(应在 的框架下使用runas)。此函数接受一个参数dwLogonFlag,如果我们指定LOGON_NETCREDENTIALS_ONLY(即/netonly使用runas),文档会显示:

系统未验证指定的凭据。因此,该进程可以启动,但可能无法访问网络资源。

答案2

它“正在工作”,因为未知的用户帐户被忽略,所以命令是使用您自己的帐户启动的。

为什么这不是硬错误这个问题应该问微软。你的第二个例子确实显示了一个硬错误,所以第一个例子可能是在指定runas命令时缺少检查(错误)。netonly

为了验证,你可以使用 进程探索器

相关内容