Búsqueda de sitios web

PsExec: ejecutar comandos en computadoras remotas


PsExec es un pequeño programa que permite a los administradores de TI ejecutar comandos y procesos en computadoras remotas.

En esta guía, aprenderá cómo usar PsExec para ejecutar comandos, finalizar procesos, instalar software, reiniciar servicios y más en computadoras remotas.

Advertencia: Los atacantes pueden hacer todo tipo de cosas malas con PsExec, como copiar y ejecutar archivos maliciosos, acceder a sus datos y cambiar o recopilar información del sistema.

El uso de PsExec debe limitarse a ejecutarse únicamente desde computadoras autorizadas. Hay varias formas de proteger el uso de PsExec; en esta guía le mostraré cómo protegerlo con el firewall de Windows.

Empecemos.

Requisitos de PsExec

La computadora remota debe cumplir los siguientes requisitos:

  • Puerto TCP/445 abierto
  • Puerto UDP/137 abierto
  • Credenciales para la computadora remota (las credenciales locales o de dominio funcionarán).
  • Gestión remota de servicios (RPC) abierta: esto no es necesario, pero PsExec se ejecuta extremadamente lento si el firewall está habilitado y este servicio está bloqueado.

Vídeotutorial

Si no te gustan los videos, continúa leyendo los detalles a continuación.

Asegure PsExec con el Firewall de Windows

Le recomiendo encarecidamente que bloquee el uso de PsExec para ejecutarlo desde computadoras autorizadas, como su computadora portátil o una estación de trabajo segura. Si no lo bloquea, un atacante con credenciales comprometidas puede ejecutar fácilmente comandos y procesos en computadoras remotas de su red.

Estos son los pasos para permitir y proteger PsExec.

Paso 1: habilite el firewall de Windows

Primero, debe tener habilitado el Firewall de Windows. A veces las organizaciones desactivan esto por motivos de comodidad y eso es un gran error. Si tiene muchas computadoras que administrar, puede usar la política de grupo para administrar la configuración del firewall.

Asegúrese de que esté habilitado para todos los perfiles (dominio, privado, público).

Paso 2: Permitir puertos PsExec en el Firewall de Windows

PsExec requiere que los puertos tcp/445 y udp/137 estén abiertos en la computadora remota. A continuación se muestra el comando de PowerShell para habilitar esto para el perfil de dominio.

Consejo: Utilice la opción -RemoteAddress para limitar las conexiones desde sistemas autorizados. En este ejemplo, solo permito que la IP "192.168.100.10" realice conexiones a la computadora remota para el servicio para compartir archivos e impresoras. Si otra dirección IP intentara conectarse a la computadora remota, el Firewall la bloquearía.

Aquí está el comando para habilitar TCP/445.

New-NetFirewallRule -DisplayName 'TCP/445' -Profile @('Domain') -Direction Inbound -Action Allow -Protocol TCP -LocalPort @('445') -RemoteAddress 192.168.100.10

Aquí está el comando para habilitar UDP/137.

New-NetFirewallRule -DisplayName 'UDP/137' -Profile @('Domain') -Direction Inbound -Action Allow -Protocol UDP -LocalPort @('137') -RemoteAddress 192.168.100.10

En la GUI, la configuración de la dirección IP remota se encuentra en la pestaña de alcance.

Paso 3: Permitir la gestión remota de servicios (opcional)

Esto no es necesario, pero PsExec se ejecutará extremadamente lento cuando este servicio esté bloqueado. También uso la opción -RemoteAddress para limitar qué direcciones IP pueden conectarse a la computadora remota.

Set-NetFirewallRule -DisplayGroup “Remote Service Management” -Enabled True -Profile domain -RemoteAddress "192.168.100.10"

Cómo instalar PsExec

En esta sección, explicaré cómo instalar PsExec en mi computadora local.

Paso 1: descargue PsExec

PsExec es parte del paquete PsTools proporcionado por Microsoft.

Puedes descargarlo aquí.

Paso 2: extraiga la descarga

Descomprima el archivo descargado (PSTools.zip) y cópielo en una ruta de su disco duro. Lo copié en la raíz de c: (Ejemplo c:\pstools).

Consejo: Para mayor comodidad, también puede copiar PsExec.exe a una ruta del sistema (como c:\windows\system32), esto le permitirá ejecutar el archivo ejecutable sin tener que cambiar los directorios desde el símbolo del sistema.

Paso 3: Pruebe Psexec

Probemos la instalación para asegurarnos de que PsExec esté funcionando.

Abra el símbolo del sistema de Windows y cambie al directorio pstools, luego escriba psexec y presione Entrar. Debería ver que PsExec devuelve la versión y la sintaxis del comando.

En la siguiente captura de pantalla puedes ver que cambié al directorio “c:\pstools” para ejecutar el comando psexec.

Escribir psexec también es una forma rápida de ver la sintaxis y las opciones de la línea de comandos.

Ejemplos de PsExec

Usar PsExec es muy fácil de usar, la sintaxis básica es:

psexec \\remotecomputer command [arguments]

Ejemplo 1: ejecutar comando en una computadora remota

Utilice el siguiente comando para ejecutar un comando en una sola computadora remota.

psexec \\pc1 ipconfig

En este ejemplo, estoy ejecutando el comando ipconfig en la computadora remota PC1.

Ejemplo 2: ejecutar comando en varias computadoras

Para ejecutar PsExec en varias computadoras, simplemente separe las computadoras con una coma. Aquí estoy ejecutando ipconfig en pc1 y srv-vm1.

psexec \\pc1,srv-vm1 ipconfig

Ejemplo 3: especificar nombre de usuario y contraseña

Para conectarse a una computadora remota usando un nombre de usuario y contraseña específicos, use este comando:

psexec \\pc1 -u user -p password ipconfig

Ejemplo 4: finalizar el proceso en una computadora remota

Para finalizar un proceso en una computadora remota, use los siguientes comandos.

Primero necesita obtener el PID del proceso, esto se puede hacer con el comando de lista de tareas.

psexec \\pc1 tasklist

Encuentre el número PID del proceso y luego use taskkill para finalizar el proceso.

psexec \\pc1 taskkill /pid 2892 /f

Ejemplo 5: instalar software

En este ejemplo, estoy instalando 7zip en la computadora remota PC1. El archivo de instalación se ha copiado a la computadora remota. También puedes usar la opción -c para copiar un archivo y ejecutarlo.

psexec \\pc1 msiexec.exe /i "c:\it\7z2201-x64.msi"

Ejemplo 6: reiniciar la computadora remota

Utilice este comando para reiniciar una computadora remota. Aquí estoy diciendo que reinicie la PC1 en 60 segundos.

psexec \\pc1 shutdown /r /t 60

La computadora remota recibirá un mensaje emergente que le indicará que se reiniciará.

Ejemplo 7: eliminar un archivo

Este comando eliminará el archivo usuarios.txt de la computadora remota.

psexec \\pc1 cmd /c del /f c:\it\users.txt

Ejemplo 8: reiniciar la cola de impresión de la impresora

En este ejemplo, detendré e iniciaré el servicio de cola de impresión en una computadora remota.

psexec \\pc1 net stop spooler

Para iniciar el servicio de cola de impresión, utilice este comando.

psexec \\pc1 net start spooler

Ejemplo 9. Copiar y ejecutar un archivo por lotes

La opción -c copiará un archivo específico a una computadora remota y lo ejecutará.

psexec \\pc1 cmd

Puede ver a continuación que abro cmd y ejecuto varios comandos que se ejecutan en la computadora remota. Esto puede resultar muy útil para los administradores de TI a la hora de solucionar problemas informáticos y necesitan una forma rápida de ejecutar comandos en ordenadores remotos.

Ejemplo 11: abrir un programa

Si desea abrir un programa en la computadora remota, use la opción -i. La opción -i ejecuta el programa para que interactúe con el escritorio. Por ejemplo, utilice este comando para abrir notepad.exe en una computadora remota.

psexec \\pc1 -i notepad

Eso es todo por esta guía, publique sus comentarios en los comentarios a continuación.

A continuación, consulte mi lista de los 50 comandos de Windows más útiles.

Artículos relacionados