PsExec es una herramienta portátil de Microsoft que le permite ejecutar procesos de forma remota utilizando las credenciales de cualquier usuario. Es un poco como un programa de acceso remoto, pero en lugar de controlar la computadora con un mouse, los comandos se envían a través del Símbolo del sistema.
Puede usar PsExec no solo para administrar procesos en la computadora remota, sino también para redirigir la salida de la consola de una aplicación a su computadora local, haciendo que parezca que el proceso se está ejecutando localmente.
No se necesita ningún software en la computadora remota para que PsExec funcione, pero hay algunas cosas que debe tener en cuenta si la herramienta no se ejecuta correctamente la primera vez que la prueba.
Cómo configurar PsExec
Si PsExec es portátil y no necesita copiarse a la computadora remota, ¿qué tipo de configuración necesita realmente?
La herramienta funciona solo bajo ciertas condiciones. Es decir, cuando el uso compartido de archivos e impresoras está habilitado tanto en la computadora local como en la remota, y cuando la máquina remota tiene el recurso compartido $admin configurado correctamente para brindar acceso a su carpeta \Windows\.
Puede comprobar que el uso compartido de archivos e impresoras está activado consultando la configuración del Firewall de Windows:
- Ingrese firewall.cpl en el cuadro de diálogo Ejecutar. Una forma de abrir Ejecutar es a través del atajo de teclado WIN+R.
-
Seleccione Permitir una aplicación o función a través del Firewall de Windows en el lado izquierdo de la ventana.
Esto podría leerse como Permitir una aplicación o función a través del Firewall de Windows Defender dependiendo de cómo esté configurada su computadora, pero es la misma opción.
-
Asegúrese de que Compartir archivos e impresoras tenga una marca de verificación en el cuadro Privado a su derecha. Si no es así, marque esa casilla y seleccione OK.
Si no puede cambiar la configuración del cortafuegos porque está atenuada, seleccione Cambiar configuración en la parte superior de la ventana.
- Ahora puede salir de cualquier configuración abierta de Firewall de Windows.
Con el Firewall de Windows ahora configurado correctamente para PsExec, no debería tener problemas para acceder al recurso compartido $admin en la máquina remota, siempre y cuando se cumpla lo siguiente:
- Ambas computadoras pertenecen al mismo grupo de trabajo
- Conoce la contraseña de la cuenta de un administrador en la computadora remota
Consulte este tutorial en Wintips.org si necesita ayuda para hacer esas cosas o si las ha hecho correctamente, pero más adelante, después de intentar usar PsExec como se describe a continuación, obtiene un error de "acceso denegado".
Cómo utilizar PsExec
Antes de usar PsExec para ejecutar comandos remotos, debe descargar el programa y colocar el símbolo del sistema de manera que pueda utilizar la herramienta correctamente.
Descargar y abrirlo
-
Descargue PsExec en la computadora que ejecutará los comandos remotos. Está disponible de forma gratuita en Microsoft en Sysinternals como parte de PsTools.
-
Extraiga los archivos de la descarga de PsTools.zip. Puede hacerlo haciendo clic derecho en el archivo ZIP y seleccionando Extraer todo. Cualquier extractor de archivos de terceros también funcionará.
-
Abra la carpeta donde se encuentran los archivos extraídos y, desde la barra de navegación en la parte superior de la carpeta, borre lo que haya e ingrese cmd.
Otra forma de hacer esto, al menos en algunas versiones de Windows, es Mayús+clic derecho un espacio vacío en la carpeta PsTools y elegir Abrir ventana de comandos aquí.
Esto abrirá el símbolo del sistema en esa carpeta para que pueda ejecutar comandos a través de PsExec.
-
Con el símbolo del sistema ahora abierto en la carpeta que contiene PsExec.exe, puede comenzar a ingresar comandos en la máquina remota.
Comprender la sintaxis
Al igual que cualquier herramienta de línea de comandos, PsExec funciona solo cuando se sigue exactamente su sintaxis. Una vez que comprenda cómo escribir comandos de la forma en que la herramienta los entiende, podrá controlar el programa desde cualquier símbolo del sistema.
Así es como se deben ingresar los comandos de PsExec:
psexec [ computadora [, computadora2 [, …] | @archivo\][- u nombre de usuario [- p contraseña][- n s][- r nombre de servicio][- h][- l][- s |- e][- x][- i[sesión][-c ejecutable [-f |-v ][-w directorio][- d][- ][- a n, n
Esto puede parecer complejo y confuso, ¡pero no se preocupe! Hay algunos ejemplos al final de esta página que puedes usar para practicar.
La sintaxis anterior se usa para ejecutar cualquiera de los siguientes argumentos del comando PsExec:
Opciones de comando PsExec | |
---|---|
Parámetro | Explicación |
- a | Procesadores separados en los que se puede ejecutar la aplicación, con comas, donde 1 es la CPU con el número más bajo. Por ejemplo, para ejecutar la aplicación en CPU 2 y CPU 4, ingresaría: - a 2, 4 |
- c | Copiar el ejecutable especificado al sistema remoto para su ejecución. Si se omite, la aplicación debe estar en la ruta del sistema en el sistema remoto. |
- d | No espere a que finalice el proceso (no interactivo). |
- e | No carga el perfil de la cuenta especificada. |
- f | Copiar el programa especificado incluso si el archivo ya existe en el sistema remoto. |
- i | Ejecute el programa para que interactúe con el escritorio de la sesión especificada en el sistema remoto. Si no se especifica ninguna sesión, el proceso se ejecuta en la sesión de la consola. |
- h | Si el sistema de destino es Windows Vista o superior, ejecute el proceso con el token elevado de la cuenta, si está disponible. |
- l | Ejecute el proceso como un usuario limitado (elimina el grupo de administradores y permite solo los privilegios asignados al grupo de usuarios). En Windows Vista, el proceso se ejecuta con baja integridad. |
- n | Especifica el tiempo de espera (en segundos) para conectarse a computadoras remotas. |
- p | Especifica una contraseña opcional para el nombre de usuario. Si se omite, se le pedirá que ingrese una contraseña oculta. |
- r | Especifica el nombre del servicio remoto para crear o interactuar. |
- s | Ejecuta el proceso remoto en la cuenta del sistema. |
- u | Especifica un nombre de usuario opcional para iniciar sesión en una computadora remota. |
- v | Copia el archivo especificado solo si tiene un número de versión superior o es más nuevo que el del sistema remoto. |
- w | Establece el directorio de trabajo del proceso (relativo a la computadora remota). |
- x | Muestra la interfaz de usuario en el escritorio seguro de Winlogon (solo sistema local). |
- prioridad | Especifica -low, -belownormal, -abovenormal, -high o -re altime para ejecutar el proceso con una prioridad diferente. Use -background para ejecutar con poca memoria y prioridad de E/S en Windows Vista. |
ordenador | Dirige a PsExec para que ejecute la aplicación en las computadoras remotas especificadas. Si se omite, PsExec ejecuta la aplicación en el sistema local y si se especifica un comodín (), PsExec ejecuta el comando en todas las computadoras del dominio actual. |
@archivo | PsExec ejecutará el comando en cada una de las computadoras enumeradas en el archivo. |
cmd | Nombre de la aplicación a ejecutar. |
argumentos | Argumentos para pasar (tenga en cuenta que las rutas de los archivos deben ser rutas absolutas en el sistema de destino). |
Ejemplos de comandos PsExec
Aquí hay algunos ejemplos de cómo usar PsExec para hacer cosas como ejecutar comandos remotos del símbolo del sistema, administrar servicios de Windows e iniciar o instalar programas.
Abrir CMD de forma remota
psexec \\192.168.86.62 cmd
Una de las formas más sencillas de usar PsExec para ejecutar comandos del símbolo del sistema en una computadora remota es ejecutar cmd siguiendo la dirección IP de la máquina, 192.168.86.62 en este ejemplo.
Al hacer esto, se abrirá una ventana del símbolo del sistema normal dentro de la existente y le permitirá ingresar cada comando como si estuviera sentado frente a la computadora remota. Por ejemplo, podría ingresar ipconfig para obtener esos resultados de la otra computadora, o mkdir para crear una nueva carpeta, dir para enumerar el contenido de la carpeta, etc.
Ejecutar un comando remoto
psexec \\mediaserver01 tracert lifewire.com
Otra forma de usar PsExec es ingresar comandos individuales pero sin iniciar un símbolo del sistema completo. En este ejemplo, estamos ejecutando el comando tracert en lifewire.com y, dado que especificamos el nombre de la computadora remota, mediaserver01, los resultados del comando son relevantes para esa máquina, no para la local (es decir, la que está usando). activado).
Iniciar un servicio de forma remota
psexec \\FRONTDESK_PC -u tomd -p 3(tom87 net start spooler
El ejemplo de comando PsExec que se muestra arriba inicia el servicio Print Spooler, spooler, de forma remota en la computadora FRONTDESK_PC usando la contraseña del usuario tomd, 3(tom87.
El mismo comando se puede usar para detener un servicio de forma remota, pero debe escribir "detener" en lugar de "iniciar".
Abrir el Editor del Registro
psexec \\mikelaptopw10 -i -s C:\Windows\regedit.exe
Aquí, estamos usando PsExec para iniciar el Editor del registro en la máquina remota, mikelaptopw10, en la cuenta del sistema. Debido a que se usa -i, el programa se abrirá en modo interactivo, lo que significa que en realidad se iniciará en la pantalla de la máquina remota.
Si se omitiera -i en el comando anterior, se ejecutaría en modo oculto para evitar mostrar cuadros de diálogo u otras ventanas.
Instalar programa en computadora remota
psexec \\J3BCD011 -c Z:\archivos\ccleaner.exe” cmd /S
En este último ejemplo de cómo usar PsExec, estamos usando -c para copiar el programa ccleaner.exe a la computadora remota J3BCD011, y luego ejecutarlo con el /S ya que eso es lo que usa CCleaner para habilitar una instalación silenciosa (que no requiere intervención del usuario). Agregar un argumento como ese requiere cmd.
PsExec puede ser peligroso
Es muy importante comprender qué tan poderoso es PsExec y cómo podría usarse para comprometer su computadora cuando se usa en un entorno inseguro.
Por ejemplo, combinar - c, - u y - p, específicamente permita que cualquier persona con una conexión de red a su computadora y conocimiento de las credenciales de administrador ejecute malware secreto con las credenciales de cualquier persona.
Incluso el último ejemplo perfectamente aceptable de la sección anterior adquiere un propósito completamente nuevo si se considera que, en lugar de CCleaner, alguien podría instalar cualquier otra cosa que desee, en segundo plano, y no aparecerá ninguna ventana para mostrarlo. pasa algo.
Dicho todo esto, teniendo en cuenta los cambios de firewall requeridos y el conocimiento de las credenciales de administrador que alguien tendría que tener, hay pocas razones para preocuparse siempre que la contraseña de administrador en la computadora remota sea compleja y se hayan tomado otras medidas de seguridad básicas.
Algunos programas antivirus identifican falsamente a PsExec como un archivo peligroso, pero esas advertencias se pueden ignorar si está seguro de que el programa que está utilizando proviene de la fuente de Microsoft anterior. La razón por la que esto sucede es porque se sabe que el malware usa PsExec para transferir virus.