我想知道为什么运行这个命令会起作用(计算机或用户都不存在):
> 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
为了验证,你可以使用 进程探索器。