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.10Aquí 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.10En 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 ipconfigEn 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 ipconfigEjemplo 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 ipconfigEjemplo 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 tasklistEncuentre el número PID del proceso y luego use taskkill para finalizar el proceso.
psexec \\pc1 taskkill /pid 2892 /fEjemplo 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 60La 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.txtEjemplo 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 spoolerPara iniciar el servicio de cola de impresión, utilice este comando.
psexec \\pc1 net start spoolerEjemplo 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 cmdPuede 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 notepadEso 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.










