PsExec é uma ferramenta portátil da Microsoft que permite executar processos remotamente usando as credenciais de qualquer usuário. É um pouco como um programa de acesso remoto, mas em vez de controlar o computador com um mouse, os comandos são enviados via Prompt de Comando.
Você pode usar o PsExec não apenas para gerenciar processos no computador remoto, mas também redirecionar a saída do console de um aplicativo para seu computador local, fazendo parecer que o processo está sendo executado localmente.
Nenhum software é necessário no computador remoto para fazer o PsExec funcionar, mas há algumas coisas a serem lembradas se a ferramenta não funcionar corretamente na primeira vez que você tentar.
Como configurar o PsExec
Se o PsExec for portátil e não precisar ser copiado para o computador remoto, que tipo de configuração ele realmente precisa?
A ferramenta funciona apenas sob certas condições. Ou seja, quando o compartilhamento de arquivos e impressoras está habilitado no computador local e remoto, e quando a máquina remota tem o compartilhamento $admin configurado corretamente para fornecer acesso à sua pasta \Windows\.
Você pode verificar novamente se o compartilhamento de arquivos e impressão está habilitado nas configurações do Firewall do Windows:
- Digite firewall.cpl na caixa de diálogo Executar. Uma maneira de abrir o Run é através do atalho de teclado WIN+R.
-
Selecione Permitir um aplicativo ou recurso pelo Firewall do Windows do lado esquerdo da janela.
Isso pode ser lido como Permitir um aplicativo ou recurso através do Firewall do Windows Defender dependendo de como seu computador está configurado, mas é a mesma opção.
-
Certifique-se de que Compartilhamento de arquivos e impressoras tenha uma marca de seleção na caixa Privado à direita. Caso contrário, marque essa caixa e selecione OK.
Se você não puder alterar as configurações do firewall porque elas estão esmaecidas, selecione Alterar configurações na parte superior da janela.
- Agora você pode sair de qualquer configuração aberta do Firewall do Windows.
Com o Firewall do Windows agora configurado corretamente para PsExec, você não deve ter problemas para acessar o compartilhamento $admin na máquina remota, desde que o seguinte seja verdadeiro:
- Ambos os computadores pertencem ao mesmo grupo de trabalho
- Você sabe a senha da conta de um administrador no computador remoto
Veja este tutorial em Wintips.org se precisar de ajuda para fazer essas coisas ou se as tiver feito corretamente, mas mais tarde, depois de tentar usar o PsExec conforme descrito abaixo, você receberá um erro de “acesso negado”.
Como usar o PsExec
Antes de usar o PsExec para executar comandos remotos, você deve baixar o programa e posicionar o Prompt de Comando de forma que possa utilizar a ferramenta corretamente.
Baixe e abra
-
Baixe o PsExec no computador que executará os comandos remotos. Está disponível gratuitamente da Microsoft em Sysinternals como parte do PsTools.
-
Extraia os arquivos do download do PsTools.zip. Você pode fazer isso clicando com o botão direito do mouse no arquivo ZIP e selecionando Extract All. Qualquer extrator de arquivos de terceiros também funcionará.
-
Abra a pasta onde os arquivos extraídos estão localizados e, na barra de navegação na parte superior da pasta, apague o que estiver lá e digite cmd.
Outra maneira de fazer isso, pelo menos em algumas versões do Windows, é Shift+Clique com o botão direito um espaço vazio na pasta PsTools e escolha Open janela de comando aqui.
Isso abrirá o Prompt de Comando nessa pasta para que você possa executar comandos através do PsExec.
-
Com o Prompt de Comando agora aberto na pasta que contém PsExec.exe, você pode começar a digitar comandos na máquina remota.
Compreendendo a Sintaxe
Assim como qualquer ferramenta de linha de comando, o PsExec funciona apenas quando sua sintaxe é seguida à risca. Depois de entender como digitar comandos da maneira que a ferramenta os entende, você pode controlar o programa a partir de qualquer Prompt de Comando.
É assim que os comandos PsExec devem ser inseridos:
psexec [ computador [, computador2 [, …] | @file\][- u nome de usuário [- p senha][- n s][- r servicename][- h][- l][- s |- e][- x][- i[sessão][-c executável [-f |-v ][-w diretório][- d][- ][- a n, n
Isso pode parecer complexo e confuso, mas não se preocupe! Há alguns exemplos na parte inferior desta página que você pode usar para praticar.
A sintaxe acima é usada para executar qualquer um dos seguintes argumentos de comando PsExec:
Opções do Comando PsExec | |
---|---|
Parâmetro | Explicação |
- a | Processadores separados nos quais o aplicativo pode ser executado, com vírgulas, onde 1 é a CPU de menor número. Por exemplo, para executar o aplicativo na CPU 2 e na CPU 4, digite: - a 2, 4 |
- c | Copia o executável especificado para o sistema remoto para execução. Se omitido, o aplicativo deve estar no caminho do sistema no sistema remoto. |
- d | Não espere o processo terminar (não interativo). |
- e | Não carrega o perfil da conta especificada. |
- f | Copia o programa especificado mesmo que o arquivo já exista no sistema remoto. |
- i | Execute o programa para que ele interaja com a área de trabalho da sessão especificada no sistema remoto. Se nenhuma sessão for especificada, o processo será executado na sessão do console. |
- h | Se o sistema de destino for o Windows Vista ou superior, execute o processo com o token elevado da conta, se disponível. |
- l | Executa o processo como usuário limitado (retira o grupo Administradores e permite apenas privilégios atribuídos ao grupo Usuários). No Windows Vista, o processo é executado com baixa integridade. |
- n | Especifica o tempo limite (em segundos) para conexão com computadores remotos. |
- p | Especifica a senha opcional para o nome de usuário. Se omitido, você será solicitado a inserir uma senha oculta. |
- r | Especifica o nome do serviço remoto para criar ou interagir. |
- s | Executa o processo remoto na conta do sistema. |
- u | Especifica o nome de usuário opcional para login no computador remoto. |
- v | Copia o arquivo especificado somente se ele tiver um número de versão superior ou for mais recente que o do sistema remoto. |
- w | Define o diretório de trabalho do processo (relativo ao computador remoto). |
- x | Exibe a interface do usuário na área de trabalho segura do Winlogon (somente sistema local). |
- prioridade | Especifica -low, -belownormal, -abovenormal, -high ou -re altime para executar o processo em uma prioridade diferente. Use -background para executar com pouca memória e prioridade de E/S no Windows Vista. |
computador | Direciona o PsExec para executar o aplicativo no(s) computador(es) remoto(s) especificado(s). Se omitido, o PsExec executa o aplicativo no sistema local e, se um caractere curinga () for especificado, o PsExec executa o comando em todos os computadores no domínio atual. |
@file | PsExec executará o comando em cada um dos computadores listados no arquivo. |
cmd | Nome do aplicativo a ser executado. |
argumentos | Argumentos a serem passados (observe que os caminhos dos arquivos devem ser caminhos absolutos no sistema de destino). |
Exemplos de comandos PsExec
Aqui estão alguns exemplos de como usar o PsExec para executar comandos remotos do Prompt de Comando, gerenciar os Serviços do Windows e iniciar ou instalar programas.
Abrir CMD remotamente
psexec \\192.168.86.62 cmd
Uma das maneiras mais fáceis de usar o PsExec para executar comandos do Prompt de Comando em um computador remoto é executar cmd seguindo o endereço IP da máquina, 192.168.86.62 neste exemplo.
Fazer isso iniciará uma janela de prompt de comando normal dentro da existente e permitirá que você digite todos os comandos como se estivesse sentado na frente do computador remoto. Por exemplo, você pode digitar ipconfig para obter esses resultados do outro computador, ou mkdir para criar uma nova pasta, dir para listar o conteúdo da pasta, etc.
Executar um Comando Remoto
psexec \\mediaserver01 tracert lifewire.com
Outra maneira de usar o PsExec é inserir comandos individuais, mas sem iniciar um prompt de comando completo. Neste exemplo, estamos executando o comando tracert em lifewire.com e, como especificamos o nome do computador remoto, mediaserver01, os resultados do comando são relevantes para essa máquina, não para a local (ou seja, a que você está ligado).
Iniciar um serviço remotamente
psexec \\FRONTDESK_PC -u tomd -p 3(tom87 net start spooler
O exemplo de comando PsExec mostrado acima inicia o serviço Print Spooler, spooler, remotamente no computador FRONTDESK_PC usando a senha do usuário tomd, 3(tom87.
O mesmo comando pode ser usado para parar um serviço remotamente, mas você digitaria "stop" em vez de "start."
Abra o Editor do Registro
psexec \\mikelatopw10 -i -s C:\Windows\regedit.exe
Aqui, estamos usando o PsExec para iniciar o Editor do Registro na máquina remota, mikelatopw10, na conta do sistema. Como -i é usado, o programa será aberto no modo interativo, o que significa que ele será realmente iniciado na tela da máquina remota.
Se -i fosse omitido do comando acima, ele seria executado em modo oculto para evitar a exibição de caixas de diálogo ou outras janelas.
Instalar Programa em Computador Remoto
psexec \\J3BCD011 -c Z:\files\ccleaner.exe” cmd /S
Neste último exemplo de como usar o PsExec, estamos usando -c para copiar o programa ccleaner.exe para o computador remoto J3BCD011 e, em seguida, executá-lo com o comando /S, pois é isso que o CCleaner usa para habilitar uma instalação silenciosa (sem necessidade de entrada do usuário). Adicionar um argumento como esse requer cmd.
PsExec Pode Ser Perigoso
É muito importante entender o quão poderoso é o PsExec e como ele pode ser usado para comprometer seu computador quando usado em um ambiente inseguro.
Por exemplo, combinando - c, - u e - p, especificamente permitir que qualquer pessoa com uma conexão de rede ao seu computador e conhecimento das credenciais de administrador execute malware secreto com as credenciais de qualquer pessoa.
Mesmo esse último exemplo perfeitamente aceitável da seção anterior assume um propósito totalmente novo quando você considera que, em vez do CCleaner, alguém poderia instalar qualquer outra coisa que desejasse, em segundo plano, e nenhuma janela aparecesse para mostrar isso alguma coisa está acontecendo.
Tudo isso dito, considerando as mudanças de firewall necessárias e o conhecimento de credenciais de administrador que alguém precisaria ter, há poucas razões para se preocupar desde que a senha de administrador no computador remoto seja complexa e outras medidas básicas de segurança tenham sido tomadas.
Alguns programas antivírus identificam falsamente o PsExec como um arquivo perigoso, mas esses avisos podem ser ignorados se você tiver certeza de que o programa que está usando é da fonte da Microsoft acima. Isso acontece porque o malware é conhecido por usar o PsExec para transferir vírus.