PsExec es una herramienta de línea de comandos que permite a los usuarios ejecutar programas en sistemas remotos. Se puede utilizar para ejecutar comandos, scripts y aplicaciones remotos en sistemas remotos, así como para iniciar aplicaciones basadas en GUI en sistemas remotos.
PsExec utiliza el Administrador de control de servicios (SCM) de Microsoft Windows para iniciar una instancia del servicio en el sistema remoto, lo que permite que la herramienta ejecute el comando o aplicación especificado con los privilegios de la cuenta del cuenta de servicio en el sistema remoto.
Para establecer la conexión, el usuario remoto debe tener privilegios de acceso a la máquina de destino y proporcionar el nombre de la máquina de destino, así como su nombre de usuario y contraseña en el siguiente formato:
PsExec -s \\MACHINE-NAME -u USERNAME -p PASSWORD COMMAND (the process to be executed following establishing the connection).
PsExec es una potente herramienta de línea de comandos que se utiliza principalmente para la administración y ejecución remota de procesos en sistemas Windows. Permite a los administradores de sistemas y profesionales de la seguridad ejecutar comandos o ejecutar programas en computadoras remotas en un entorno de red. A continuación se muestran algunos casos de uso comunes de PsExec:
Administración remota del sistema: PsExec permite a los administradores gestionar y administrar de forma remota varios sistemas Windows sin necesidad de acceso físico. Les permite ejecutar comandos, ejecutar scripts, instalar software, modificar configuraciones del sistema y realizar diversas tareas administrativas en máquinas remotas desde una ubicación central.
Implementación y actualizaciones de software: Con PsExec, los administradores pueden implementar de forma remota paquetes de software, parches o actualizaciones en varias computadoras simultáneamente. Esta característica es particularmente útil en entornos a gran escala donde la instalación manual en sistemas individuales llevaría mucho tiempo y sería poco práctica.
Solución de problemas y diagnósticos: PsExec se puede utilizar para diagnosticar y solucionar problemas del sistema de forma remota. Los administradores pueden ejecutar herramientas de diagnóstico, acceder a registros de eventos, recuperar información del sistema o ejecutar scripts de solución de problemas en sistemas remotos para identificar y resolver problemas sin estar físicamente presentes.
Auditoría de seguridad y gestión de parches: Los profesionales de la seguridad suelen emplear PsExec para realizar auditorías de seguridad, evaluaciones de vulnerabilidad o ejercicios de pruebas de penetración. Les permite ejecutar de forma remota herramientas de escaneo de seguridad, verificar niveles de parches y evaluar la postura de seguridad de los sistemas remotos dentro de la red.
Respuesta a incidentes y análisis forense: Durante las investigaciones de respuesta a incidentes, PsExec ayuda a acceder de forma remota a los sistemas comprometidos para realizar análisis y recopilar pruebas. Permite a los analistas de seguridad ejecutar comandos o herramientas forenses en máquinas comprometidas sin interactuar directamente con ellas, minimizando el riesgo de un mayor compromiso o pérdida de datos.
equipo rojo y Movimiento lateral: En los ejercicios de equipo rojo, donde las organizaciones simulan ataques del mundo real para probar sus defensas de seguridad, PsExec se utiliza a menudo para el movimiento lateral dentro de la red. Los atacantes pueden usar PsExec para ejecutar comandos o ejecutar cargas útiles maliciosas en sistemas comprometidos, moviéndose lateralmente y escalando privilegios para obtener acceso no autorizado a recursos confidenciales.
Automatización y secuencias de comandos: PsExec se puede integrar en scripts o archivos por lotes, lo que permite la automatización de tareas repetitivas en múltiples sistemas. Proporciona un medio para ejecutar scripts de forma remota, lo que permite a los administradores organizar operaciones complejas o realizar tareas de mantenimiento periódicas de manera eficiente.
Sin embargo, es importante tener en cuenta que PsExec también puede ser una herramienta poderosa en manos de atacantes, ya que les permite ejecutar código arbitrario en sistemas remotos, lo que podría conducir a escalada de privilegios y movimiento lateral en la red. Por lo tanto, es importante utilizar PsExec de forma segura y limitar el uso de PsExec a usuarios y sistemas confiables.
Instalar y configurar PsExec es un proceso sencillo que implica los siguientes pasos:
Para instalar PsExec, puede visitar el sitio web oficial de Microsoft o repositorios de software confiables para descargar el archivo ejecutable de PsExec. Asegúrese de descargarlo de una fuente confiable para evitar riesgos de seguridad o malware.
PsExec no requiere un proceso de instalación formal. Una vez que haya descargado el archivo ejecutable de PsExec, puede guardarlo en un directorio de su elección en su sistema local. Se recomienda colocarlo en una ubicación de fácil acceso e incluida en la variable de entorno PATH del sistema para un uso conveniente.
Para conectarse a una computadora remota usando PsExec, siga estos pasos:
a. Abra un símbolo del sistema o una terminal en su sistema local.
b. Navegue hasta el directorio donde guardó el archivo ejecutable de PsExec.
C. Para establecer una conexión con una computadora remota, use el siguiente comando:
psexec \\nombre_ordenador_remoto_o_IP -u nombre de usuario -p comando contraseña
d. Presione Enter para ejecutar el comando. PsExec establecerá una conexión con la computadora remota, se autenticará utilizando las credenciales proporcionadas y ejecutará el comando especificado de forma remota.
mi. Verá el resultado del comando ejecutado en su símbolo del sistema local o en la ventana de terminal.
Es importante tener en cuenta que la conexión y ejecución exitosa de comandos usando PsExec depende de la conectividad de red entre su sistema local y la computadora remota, así como de las credenciales de autenticación y permisos correctos en el sistema remoto.
PsExec ofrece varios comandos de uso común que brindan a los administradores potentes capacidades de ejecución remota. Estos son algunos de los comandos de PsExec más comunes y sus funciones:
Comando PsExec \remote_computer:
Comando PsExec \remote_computer -s:
PsExec \remote_computer -u nombre de usuario -p contraseña comando:
Comando PsExec \remote_computer -c -f -s -d:
PsExec \remote_computer -i session_id -d -s comando:
PsExec \remote_computer -accepteula -s -c -f script.bat:
Estos comandos representan un subconjunto de los comandos PsExec disponibles, cada uno de los cuales tiene un propósito específico en la administración y ejecución remota.
La sintaxis de los comandos de PsExec es:
psexec \computadora[,computadora[,..] [opciones] comando [argumentos]
psexec @run_file [options] command [arguments]
Opciones de línea de comando de PsExec:
Optión | Explicación |
---|---|
\computadora | La computadora remota a la que conectarse. Utilice \* para todas las computadoras del dominio. |
@run_file | Ejecute el comando en las computadoras enumeradas en el archivo de texto especificado. |
comando | Programa a ejecutar en el sistema remoto. |
argumentos | Argumentos para pasar a programa remoto. Utilice rutas absolutas. |
-a | Establecer la afinidad de la CPU. Números de CPU separados por comas comenzando en 1. |
-c | Copie el programa local al sistema remoto antes de ejecutarlo. |
-f | Forzar la copia sobre un archivo remoto existente. |
-v | Copie solo si el programa local es una versión más reciente que la remota. |
-d | No espere a que finalice el programa remoto. |
-e | No cargar perfil de usuario. |
-i | Interactuar con el escritorio remoto. |
-l | Ejecutar con derechos de usuario limitados (grupo de usuarios). |
-n | Tiempo de espera de conexión en segundos. |
-p | Especifique la contraseña para el usuario. |
-r | Nombre del servicio remoto con el que interactuar. |
-s | Ejecute en la cuenta SISTEMA. |
-u | Especifique el nombre de usuario para iniciar sesión. |
-w | Configure el directorio de trabajo en el sistema remoto. |
-x | Muestra la interfaz de usuario en el escritorio de Winlogon. |
-bajo | Ejecute con baja prioridad. |
-aceptula | Suprimir el diálogo EULA. |
PsExec no es un PowerShell. Es una herramienta de línea de comandos que permite a los usuarios ejecutar programas en sistemas remotos.
PowerShell, por otro lado, es un marco de gestión de configuración y automatización de tareas desarrollado por Microsoft, que incluye un shell de línea de comandos y un lenguaje de secuencias de comandos asociado creado en el marco .NET. PowerShell se puede utilizar para automatizar diversas tareas y realizar operaciones complejas en sistemas locales o remotos.
Si bien tanto PsExec como PowerShell se pueden utilizar para realizar tareas similares, como ejecutar comandos en sistemas remotos, son herramientas diferentes y tienen capacidades diferentes. PsExec está diseñado para ejecutar un único comando o aplicación en un sistema remoto, mientras que PowerShell es un marco más potente que se puede utilizar para automatizar y administrar diversas tareas, incluida la ejecución de comandos y scripts en sistemas remotos.
Por tanto, dependiendo del escenario, una herramienta puede ser más adecuada que otra.
PsExec funciona aprovechando su arquitectura y protocolos de comunicación únicos para permitir la ejecución remota en sistemas Windows. Exploremos los aspectos clave de cómo opera PsExec:
PsExec sigue una arquitectura cliente-servidor. El componente del lado del cliente, ejecutado en el sistema local, establece una conexión con el componente del lado del servidor que se ejecuta en el sistema remoto. Esta conexión permite la transmisión de comandos y datos entre los dos sistemas.
PsExec utiliza el protocolo Server Message Block (SMB), específicamente el intercambio de archivos SMB y los mecanismos de canalización con nombre, para establecer canales de comunicación con sistemas remotos. Esto permite una comunicación segura y confiable entre los componentes del cliente y del servidor.
PsExec emplea mecanismos de autenticación para garantizar el acceso seguro a sistemas remotos. Admite varios métodos de autenticación, incluido el uso de un nombre de usuario y contraseña, o autenticación a través de NTLM (NT LAN Manager) o Kerberos.
Para mejorar la seguridad, es fundamental seguir las mejores prácticas de autenticación al utilizar PsExec. Estas prácticas incluyen el uso de contraseñas seguras y únicas, la implementación autenticación de múltiples factores cuando sea posible, y adhiriendo al principio de privilegio mínimo al otorgar solo los permisos necesarios a los usuarios de PsExec.
PsExec facilita el acceso a archivos y registros en sistemas remotos, lo que permite a los administradores realizar tareas como copiar archivos, ejecutar scripts o modificar la configuración del registro. Al ejecutar comandos de forma remota, PsExec copia temporalmente el ejecutable o script requerido en el directorio temporal del sistema remoto antes de la ejecución.
Es importante tener en cuenta posibles consideraciones de seguridad al utilizar PsExec para operaciones de archivos y registros. Por ejemplo, los administradores deben tener cuidado al transferir archivos confidenciales y asegurarse de que existan controles de acceso adecuados para evitar el acceso no autorizado o la modificación de archivos críticos del sistema y entradas de registro.
PsExec no es malware en sí mismo, pero puede ser utilizado por malware y atacantes para realizar acciones maliciosas.
PsExec es una herramienta legítima que permite a los usuarios ejecutar programas en sistemas remotos. Se puede utilizar para una variedad de tareas legítimas, como resolución de problemas, implementación de actualizaciones y parches de software y ejecución de comandos y scripts en múltiples sistemas simultáneamente.
Sin embargo, los atacantes también pueden utilizar PsExec para obtener acceso no autorizado a sistemas remotos y realizar acciones maliciosas. Por ejemplo, un atacante podría utilizar PsExec para ejecutar una carga útil maliciosa en un sistema remoto o para moverse lateralmente dentro de una red y obtener acceso a información confidencial.
Por lo tanto, es importante utilizar PsExec de forma segura y limitar el uso de PsExec a usuarios y sistemas confiables.
Los actores de amenazas abusan intensamente del acceso remoto fluido que PsExec permite desde una máquina de origen a una máquina de destino durante la etapa de movimiento lateral de los ciberataques. Esto normalmente ocurriría después del compromiso inicial de una máquina de paciente cero.
A partir de ese momento, los atacantes buscan expandir su presencia dentro del entorno y alcanzar el dominio del dominio o los datos específicos que buscan. PsExec les proporciona una forma fluida y confiable de lograrlo por las siguientes razones.
Al combinar las credenciales de usuario comprometidas con PsExec, los adversarios pueden eludir los mecanismos de autenticación, obtener acceso a múltiples sistemas y potencialmente comprometer una parte importante de la red. Este enfoque les permite moverse lateralmente, escalar privilegios y llevar a cabo sus objetivos maliciosos con un impacto más amplio.
PsExec a menudo se considera una herramienta de elección para "vivir de la tierra" para ataques de movimiento lateral debido a varios factores clave:
Es importante señalar que, si bien PsExec tiene casos de uso legítimos, su potencial de uso indebido y su presencia en el entorno objetivo lo convierten en una herramienta atractiva para los adversarios que buscan realizar ataques de movimiento lateral. Las organizaciones deben implementar medidas de seguridad sólidas, como segmentación de red, gestión de credenciales y sistemas de monitoreo, para detectar y prevenir el uso no autorizado de PsExec o herramientas similares.
El uso de PsExec para el movimiento lateral ofrece varias ventajas para ransomware actores:
Las herramientas de protección de endpoints pueden tener dificultades para detectar y prevenir el uso malicioso de PsExec por varios motivos:
Las herramientas tradicionales de MFA pueden enfrentar limitaciones en evitando el movimiento lateral usando PsExec por las siguientes razones:
PsExec ha ganado popularidad entre los administradores de sistemas y profesionales de la seguridad por sus capacidades de administración remota legítimas y eficientes. Sin embargo, como muchas herramientas, PsExec también puede utilizarse indebidamente con fines maliciosos. En los últimos años, los actores de amenazas han comenzado a incorporar PsExec en sus estrategias de ataque de ransomware, lo que lo convierte en un componente potencialmente peligroso de su arsenal.
En los últimos cinco años, la barrera de las habilidades se ha reducido significativamente y el movimiento lateral con PsExec se incorpora en más del 80% de los ataques de ransomware, lo que hace que la protección contra la autenticación maliciosa a través de PsExec sea una necesidad para todas las organizaciones.
Los ataques de ransomware implican que actores maliciosos obtengan acceso no autorizado a los sistemas, cifren datos críticos y exijan un rescate por su liberación. Anteriormente, los atacantes a menudo dependían de técnicas de ingeniería social o kits de explotación para obtener acceso inicial. Sin embargo, ahora han ampliado sus tácticas utilizando herramientas legítimas como PsExec para propagarse dentro de redes comprometidas.
En un ataque de ransomware, una vez que los actores de amenazas obtienen acceso a un único sistema dentro de una red, su objetivo es moverse lateralmente e infectar tantos sistemas como sea posible. PsExec proporciona un medio conveniente y eficiente para este movimiento lateral. Los atacantes utilizan PsExec para ejecutar de forma remota cargas útiles de ransomware en otros sistemas vulnerables, propagando la infección rápidamente por la red.
Al incorporar PsExec en su cadena de ataque, los ciberdelincuentes obtienen varias ventajas. En primer lugar, PsExec les permite ejecutar comandos y ejecutar cargas maliciosas de forma silenciosa y remota, lo que reduce las posibilidades de detección. En segundo lugar, dado que PsExec es una herramienta legítima, a menudo pasa por alto las medidas de seguridad tradicionales que se centran en firmas de malware conocidas. Esto permite a los atacantes mezclarse con el tráfico normal de la red, lo que dificulta la detección de sus actividades.
La defensa contra los ataques de ransomware basados en PsExec requiere un enfoque de varios niveles. Aquí hay algunas mitigaciones importantes:
Control de Acceso: Implemente controles de acceso estrictos, garantizando que solo los usuarios autorizados tengan acceso administrativo a los sistemas críticos. Limitar el número de cuentas con privilegios de PsExec puede ayudar a reducir el superficie de ataque.
Protección de punto final: Implementar y mantener soluciones sólidas de protección de terminales que incluyan mecanismos de detección basados en el comportamiento. Estos pueden ayudar a identificar y bloquear actividades sospechosas asociadas con el uso de PsExec.
Segmentación de la red: Emplear segmentación de red para limitar las oportunidades de movimiento lateral de los atacantes. Separar los sistemas críticos y restringir el acceso entre segmentos de red puede ayudar a contener el impacto de una posible infección de ransomware.
Monitoreo y Detección de Anomalías: Implemente sistemas integrales de monitoreo de red y detección de anomalías que puedan detectar el uso inusual o no autorizado de PsExec. Investigar y responder rápidamente a dichas alertas puede ayudar a mitigar daños potenciales.