有没有办法在以本地系统运行时运行指定用户名和密码(-u -p)的 PsExec?

有没有办法在以本地系统运行时运行指定用户名和密码(-u -p)的 PsExec?

我有一个在 Windows Server 2003 上作为本地系统运行的 Windows 服务,并且我尝试使用 PsExec 以另一个用户的身份运行命令(使用参数-u -p),但我一直收到Access is denied. PsExec could not start错误。

可以执行以下操作来复制该问题:

C:\Documents and Settings\me>PsExec.exe -s cmd

PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com


Microsoft Windows [Version 5.2.3790]
(C) Copyright 1985-2003 Microsoft Corp.

C:\WINNT\system32>whoami
nt authority\system

C:\WINNT\system32>PsExec.exe -u DOMAIN\my-user -p mypass cmd

PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com

Access is denied.
PsExec could not start cmd:

在上面的例子中,第一个 PsExec 命令 ( PsExec.exe -s cmd) 将为您提供本地系统命令行。然后第二个 PsExec 命令 ( PsExec.exe -u DOMAIN\my-user -p mypass cmd) 抛出了我试图解决的错误。

任何帮助都将不胜感激!提前谢谢您!

答案1

以 LocalSystem 帐户启动第一个实例后PSEXEC.EXE,在命令中包含本地计算机的 IP 地址以启动第二个 PSEXEC 实例,如下所示:

PSEXEC.EXE \\LocalComputerIPAddress -u DOMAIN\my-user -p mypass CMD


解释

您遇到的问题是由于 Windows Server 2003 的 Service Pack 1 添加的一项新安全功能引起的,该功能称为环回检查功能。根据链接的 MSKB 文章:

[安装 Service Pack 1] 后,当您尝试使用以下通用命名约定 (UNC) 路径中的完全限定域名 (FQDN) 或其 CNAME 别名在本地访问服务器时遇到身份验证问题:

    \\servername\sharename

在这种情况下,您会遇到下列症状之一:

  • 您收到重复的登录窗口。
  • 您收到“访问被拒绝”错误消息。
  • 您收到“没有网络提供商接受给定的网络路径”错误消息。
  • 事件 ID 537 记录在安全事件日志中。

本文提出了两种解决方案(除了我上面提供的解决方法之外),两者都涉及编辑注册表以:1)添加可以在 NTLM 身份验证请求中引用的主机名,或 2)禁用身份验证环回检查,有效地将服务器返回到 SP1 之前的行为。

根据 WindowsITPro.com 上的这篇文章PSEXEC 的工作原理

PsExec 在远程系统上启动可执行文件并控制可执行文件进程的输入和输出流,以便您可以从本地系统与可执行文件进行交互。PsExec 通过从其可执行映像中提取名为 Psexesvc 的嵌入式 Windows 服务并将其复制到远程系统的 Admin$ 共享来实现此目的。

因此,即使您在本地机器上运行 PSEXEC,它ADMIN$仍然使用共享,这就是您遇到上面描述的环回检查功能行为改变的原因。

相关内容