Uso de PSEXEC de Forma Remota
Uso de PSEXEC de Forma Remota
Uso de PSEXEC de Forma Remota
La utilidad PsExec es uno de los programas más populares del paquete PsTools de Sysinternals.
Puedes descargarlo en esta página (la versión actual es PsExec v2.34).
En los recursos del archivo ejecutable PsExec.exe, hay otro archivo ejecutable: PSEXESVC, que
es un archivo de servicio de Windows. Al establecer una conexión con una computadora
remota, la utilidad PsExec copia este archivo en la carpeta administrativa oculta Admin$ de la
computadora remota (C:WindowsSystem32psexesvc.exe). Para que PsExec se conecte a una
computadora remota, el Servidor Lanman y Estación de trabajo Lanman los servicios deben
estar ejecutándose en una computadora. El puerto SMB (TCP/445) y los puertos UDP/137
deben abrirse en los firewalls entre las computadoras de origen y de destino.
Luego, PsExec instala e inicia el servicio PSEXESVC utilizando las funciones de la API de
Windows para administrar servicios. Después de ejecutar PSEXESVC, se establece una conexión
para la transferencia de datos entre este servicio y el proceso PsExec en su computadora.
Cuando se completa el trabajo, PsExec detiene el servicio y lo elimina automáticamente de la
computadora remota.
Cuando inicia PsExec por primera vez, debe aceptar el Acuerdo de licencia de Sysinternals.
Como ejemplo, queremos purgar el caché de DNS en la computadora remota lon-srv01.
Ejecute el comando:
Si necesita ejecutar varios comandos uno por uno, es mejor ejecutar PsExec en el modo
interactivo en la computadora remota. Para hacer esto, ejecute el comando:
Ahora todos los comandos que escribió en el símbolo del sistema en su computadora local, se
ejecutarán en la computadora remota lon-srv01.
Para conectarse a una computadora remota con una cuenta específica y ejecutar un shell
interactivo, use el siguiente comando:
Puede usar PsExec incluso para ejecutar comandos de PowerShell de forma remota. Por
ejemplo, el siguiente comando le devolverá el tamaño del directorio C:PS en la computadora
remota:
Nota. Para ejecutar un comando de forma remota en PowerShell, puede usar el cmdlet Invoke-
Command en lugar de PsExec.
Puede usar el parámetro -c para especificar el nombre del archivo local que desea copiar a la
computadora remota y ejecutarlo allí. Por ejemplo:
Puede usar PsExec como la forma más fácil de instalar software de forma remota. Por ejemplo,
tiene un archivo de instalación de cierto programa (por ejemplo, setup.msi). Para copiar el
archivo msi a una computadora remota e instalarlo, use la siguiente línea:
PsExec esperará a que se complete un proceso que se ejecuta en una computadora remota. Si
los usuarios remotos no cierran las ventanas del bloc de notas en su escritorio, su proceso de
PsExec esperará indefinidamente hasta que se complete. Para evitar que PsExec espere a que
finalice el proceso remoto, use el modificador -d:
psexec -i -d \lon-srv01 notepad
Se puede obtener información completa sobre todos los parámetros de PsExec simplemente
ingresando el comando psexec en la línea de comando sin parámetros.
Para finalizar una sesión remota de PsExec, escriba exit y presione Enter.
Uso de PsExec para ejecutar procesos como la cuenta del SISTEMA LOCAL
psexec -s cmd
Luego verifique con qué usuario está conectado actualmente con el quién soy mando. Como
puede ver, la consola se inicia desde la cuenta NTAuthoritySystem.
Por ejemplo, el siguiente comando copiará su correr.bat archivo a todas las computadoras
enumeradas en el archivo de texto c:pscomputer_list.txt, y ejecute este lote (el argumento –h
se usa para ejecutar lote elevado):
Cuando ejecuta cmd.exe de forma interactiva a través de PsExec con un usuario remoto, no
tiene forma de elevar los privilegios (como administrador) cuando el UAC está habilitado. Para
ejecutar los comandos con el token elevado de la cuenta, use la opción –h. Esta opción
significa que todos los comandos se ejecutarán en el modo "Ejecutar como administrador".
Errores de PsExec
En algunos casos, puede obtener el siguiente error al intentar conectar una computadora
remota mediante PsExec:
Puede abrir el puerto SMB en el Firewall de Windows Defender en una computadora remota
habilitando la regla "Compartir archivos e impresoras" usando el siguiente comando:
netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=Yes
net share
En algunos casos, al conectarse a una computadora remota a través de PsExec, puede recibir
un error:
Acceso denegado.
Si se encuentra con un error de este tipo, intente utilizar una de las siguientes soluciones: