Existe uma maneira de executar o PsExec especificando um nome de usuário e senha (-u -p) ao executar como Sistema Local?

2

Eu tenho um serviço do Windows em execução como Sistema Local no Windows Server 2003 e estou tentando usar o PsExec para executar um comando como outro usuário (usando os parâmetros -u -p ), mas continuo recebendo Access is denied. PsExec could not start errors.

O seguinte pode ser realizado para replicar o problema:

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:

No exemplo acima, o primeiro comando PsExec ( PsExec.exe -s cmd ) fornecerá uma linha de comando como Sistema Local. Em seguida, o segundo comando PsExec ( PsExec.exe -u DOMAIN\my-user -p mypass cmd ) gera o erro que estou tentando resolver.

Qualquer ajuda seria muito apreciada! Obrigado antecipadamente!

    
por Jesse 12.02.2015 / 21:02

1 resposta

3

Após iniciar sua primeira instância de PSEXEC.EXE como a conta LocalSystem, inclua o endereço IP do computador local no comando para iniciar sua segunda instância PSEXEC, desta forma:

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

Explicação

O comportamento que você está enfrentando se deve a um novo recurso de segurança adicionado pelo Service Pack 1 do Windows Server 2003 chamado Loopback Verifique a funcionalidade . De acordo com o artigo MSKB vinculado:

After you [install Service Pack 1], you experience authentication issues when you try to access a server locally by using its fully qualified domain name (FQDN) or its CNAME alias in the following Universal Naming Convention (UNC) path:

    \servername\sharename

In this scenario, you experience one of the following symptoms:

  • You receive repeated logon windows.
  • You receive an "Access denied" error message.
  • You receive a "No network provider accepted the given network path" error message.
  • Event ID 537 is logged in the Security event log.

O artigo sugere duas soluções (além da solução alternativa fornecida acima), ambas envolvendo a edição do Registro para: 1) Adicionar nomes de host que podem ser referenciados em uma solicitação de autenticação NTLM ou 2) Desabilitar o loopback de autenticação cheque, efetivamente retornando o servidor ao comportamento anterior ao SP1.

De acordo com este artigo do WindowsITPro.com sobre como funciona o PSEXEC :

PsExec starts an executable on a remote system and controls the input and output streams of the executable's process so that you can interact with the executable from the local system. PsExec does so by extracting from its executable image an embedded Windows service named Psexesvc and copying it to the Admin$ share of the remote system.

Portanto, mesmo que você esteja executando o PSEXEC na sua máquina local, ele está usando o compartilhamento ADMIN$ , portanto o motivo pelo qual você está executando a mudança de comportamento da Funcionalidade de verificação de loopback descrita acima.

    
por 13.02.2015 / 20:18