PsExec y las Cosas Desagradables Que Puede Hacer

0 Comments

la Mayoría de las herramientas que utilizamos para administrar redes tienden a ser una espada de doble filo. Estas herramientas proporcionan una gran flexibilidad y permiten una gestión más fácil de dispositivos, servicios y software por igual. En las manos correctas no tenemos nada de qué preocuparnos, pero en las manos equivocadas nuestras herramientas de administración remota se convierten en armas poderosas que pueden ser utilizadas por los atacantes para realizar una amplia gama de actividades maliciosas., En este artículo voy a hablar de una herramienta que se ajusta a esta descripción. Esta herramienta es la herramienta PsExec de Microsoft Sysinternals. En este artículo voy a dar una visión general de lo que es PsExec y cuáles son sus capacidades desde un punto de vista administrativo. Después de esto, voy a tomar el papel de un adversario y demostrar algunas de las cosas desagradables para las que se puede usar en una red.

Este artículo tiene como objetivo servir a dos audiencias., La primera audiencia consiste en los administradores del sistema que es responsable de proteger sus redes del uso de herramientas como PsExec con fines maliciosos. La otra audiencia prevista consiste en hackers éticos y probadores de penetración profesionales que pueden obtener algún beneficio al saber un poco más sobre algunas de las cosas para las que se puede usar PsExec., Independientemente de la audiencia en la que caiga es importante que proporcione el descargo de responsabilidad de que algunos de los comandos y técnicas que discuto aquí pueden ser bastante ilegales dependiendo de la circunstancia en la que se utilizan, por lo que insto a proceder con precaución si cualquier acción que esté tomando puede ser cuestionable.

¿Qué es PsExec?

la utilidad PsExec fue diseñada como parte de la suite PsTools, originalmente desarrollada por Mark Russinovich de Sysinternals, ahora propiedad de Microsoft., La herramienta se acuñó como una herramienta de administración remota basada en línea de comandos y permite la ejecución remota de procesos en otros sistemas. Es muy flexible, ya que permitirá el uso de credenciales de autenticación alternativas en lugar de las del usuario que las ejecuta, lo que significa que puede administrar dispositivos separados por límites de dominio y sitio. PsExec no solo puede ejecutar programas en un sistema remoto, sino que también puede redirigir la entrada y salida de la consola entre sistemas para que pueda usar herramientas interactivas de forma remota.,

a diferencia de la mayoría del software asociado a Microsoft, el funcionamiento interno de PsExec no es un secreto y es bastante sencillo. PsExec permite redirecciones de la entrada y salida de un ejecutable iniciado de forma remota mediante el uso de SMB y el recurso compartido oculto ADMIN ADMIN en el sistema remoto. Con este recurso compartido, PsExec utiliza la API de Windows Service Control Manager para iniciar el servicio PsExecsvc en el sistema remoto, lo que crea una tubería con nombre con la que PsExec se comunica. Esta tubería llamada es lo que permite la redirección de entrada/salida al sistema que lanzó PsExec.,

jugar bien con PsExec

según su diseño original, PsExec se puede utilizar para hacer una serie de cosas muy útiles que pueden ayudar a los administradores del sistema. Uno de esos escenarios en los que me he encontrado varias veces es uno en el que he conocido el nombre DNS de un equipo, pero no la configuración exacta de IP (servidor DNS, puerta de enlace predeterminada, etc.). Bajo circunstancias normales usaría ipconfig en el sistema local para determinar esta información., En la gran mayoría de los casos, sin embargo, esto podría significar que tendría que conducir a otra ubicación o tomar prestada la computadora de un usuario, reduciendo inherentemente su productividad para el día. Dado que ipconfig no tiene capacidades para ejecutarse contra una máquina no local, puedo usar PsExec para iniciarlo correctamente, como se muestra en la Figura 1.

Figura 1: Uso de lanzar ipconfig en un sistema remoto

Después de PsExec es llamado, el equipo remoto está designada después de la doble barra (\\), seguido por el comando ipconfig., Cuando ejecuta PsExec, el valor predeterminado es el directorio %SYSTEM% en el sistema remoto en el que está intentando ejecutar el comando, por lo que no tuve que especificar una ruta completa aquí. Por último, el conmutador / all para ipconfig se especifica para generar toda la información disponible de ipconfig.

otra implementación común de PsExec es usarla para la implementación de actualizaciones, parches y revisiones. Aunque el método preferido típico para hacer esto es a través de la directiva de grupo, puede haber casos en los que ese método sea demasiado lento., He estado en muchas situaciones en las que he necesitado implementar un parche de seguridad de alta prioridad que no puede esperar la duración del tiempo de actualización de la directiva de grupo estándar, por lo que he recurrido a PsExec para implementar el archivo de una manera más rápida. Un ejemplo de esto se ve en la Figura 2.

Figura 2: Lanzamiento de un parche ejecutable de forma remota

la imagen de comando anterior utiliza algunas características adicionales. Primero, observe que hay dos nombres de equipo separados por comas después de la barra doble (\\)., PsExec le permite especificar varios dispositivos de destino aquí, o alternativamente, un archivo que contiene una lista de nombres de dispositivos o direcciones. El comando también incluye el conmutador /c, que se utiliza cuando se desea especificar un archivo en el sistema local que se ejecutará en el sistema remoto. En este caso he especificado el parche del archivo.exe. El archivo se encuentra en mi sistema local en la raíz de la unidad C, Por lo que he tenido que especificar la ruta completa del archivo. El conmutador / c se ve en el directorio% SYSTEM % en el sistema local de forma predeterminada., Como puede ver, el archivo se ejecuta correctamente y la salida se redirige de nuevo a la consola local desde la que estamos ejecutando PsExec.

Un último uso amigable de PsExec que he encontrado muy conveniente es usarlo para administrar remotamente sistemas de un nivel de privilegio más alto mientras se usa un sistema bajo una cuenta con privilegios más bajos. No puedo contar el número de veces que he estado en el sitio trabajando en una computadora de los usuarios y he recibido una llamada que requiere que realice una función administrativa, como un cambio de contraseña., Por supuesto, en un entorno de Active Directory podría simplemente RDP en un controlador de dominio y realizar este cambio, pero he tenido varios clientes que no usan active directory o RDP por varias razones. Cuando ese es el caso es bastante fácil de pop en una unidad flash USB y acceder a la copia de PsExec que he instalado en él. En el caso de la Figura 3, «he usado PsExec para restablecer una contraseña de usuario en un sistema elevando los privilegios» de la herramienta de red ejecutada por PsExec.,

la Figura 3: El cambio de un usuario contraseña mediante la elevación de PsExec»s privilegios

Haciendo Cosas Desagradables con PsExec

Ahora vamos a»s dar un paseo por el lado oscuro y mirar algunas cosas que se pueden hacer con PsExec por aquellos que potencialmente malas intenciones. En primer lugar, consideremos un escenario en el que un atacante ha obtenido credenciales para un sistema pero no tiene acceso directo a él., En este caso, el atacante está tratando de obtener GUI o control de línea de comandos del sistema, pero las vías disponibles para el uso de estas credenciales pueden ser limitadas. Un método que puede ser útil en esta situación es usar PsExec para ejecutar un ejecutable de puerta trasera en el sistema, como se muestra en la Figura 4.

Figura 4: un ejecutable malicioso que se ejecuta de forma remota

en el caso de esta captura de pantalla, Un atacante remoto está utilizando PsExec con el conmutador /c para ejecutar el archivo local nc.exe en el sistema remoto., Junto con esto, los conmutadores-u Y-p se utilizan para especificar el nombre de usuario y la contraseña comprometidos para que el archivo pueda ejecutarse con privilegios de nivel raíz. A espaldas de la víctima, el archivo que se ejecuta silenciosamente en realidad una puerta trasera que permite el atacante conectarse al sistema y recibir un símbolo del sistema administrativo.

una cosa interesante sobre el ataque que acabamos de ver es que en realidad no necesitas la contraseña de un usuario para ejecutarlo. En toda la realidad, todo lo que necesita es el nombre de usuario y contraseña hash del usuario., En Windows, los cálculos matemáticos se aplican a las contraseñas proporcionadas por el usuario para convertirlas en una cadena cifrada de longitud fija, llamada hash. Estos hashes son una característica de seguridad diseñada para evitar que las contraseñas de texto claro se transmitan a través de una red. Cuando se produce la autenticación, estos hashes de contraseña se envían de un host a otro. Usando PsExec esto se puede aprovechar simplemente proporcionando el hash de contraseña en lugar de la contraseña, como se muestra en la Figura 5.,

Figura 5: Usando un hash de contraseña para ejecutar un archivo de forma remota

Este ejemplo es el mismo que el visto en la Figura 4, la única diferencia es que un hash de contraseña se utiliza en lugar de la contraseña. El sistema receptor no tiene problemas para aceptar este hash con fines de autenticación. Hay una variedad de métodos para obtener hashes de contraseñas que están un poco más allá del alcance de este artículo. He escrito otro artículo sobre este tema que se puede ver aquí.,

otro buen truco que PsExec hace posible es la capacidad de acceder a archivos y generar procesos con la cuenta incorporada del sistema. La cuenta del sistema en una máquina Windows es la cuenta más poderosa y permite el acceso a casi cualquier cosa, incluidos algunos elementos que no son accesibles para la cuenta de administrador y las cuentas creadas por el usuario.. La figura 6 proporciona un ejemplo para acceder a la aplicación regedit.,

Figura 6: Acceso al registro de la víctima

el comando anterior se ejecuta directamente en un sistema local, pero especifica el interruptor-s para usar la cuenta del sistema local. Esto se combina con la opción-I (interactiva) que ejecuta regedit en modo interactivo. Al ejecutar este comando se iniciará regedit con acceso al sistema que proporciona acceso adicional a algunos archivos interesantes. Un ejemplo de esto es el archivo SAM que contiene hashes de contraseña de usuario., Dada la motivación adecuada, un atacante con acceso a un sistema y PsExec podría extraer fácilmente todos los hashes de contraseñas del sistema utilizando esta técnica, potencialmente proporcionándole información que puede permitir el compromiso de otros sistemas o cuentas.

algunas advertencias

credenciales en el claro – si le preocupa quién podría estar escuchando en su actividad de red, PsExec probablemente no es la mejor herramienta para usar., PsExec transmite todas las credenciales de usuario que se le proporcionan en el claro, lo que significa que si proporciona un nombre de usuario y contraseña para acceder a un sistema de forma remota, cualquier persona con una copia de Wireshark o Tcpdump en ejecución puede interceptar las credenciales.

detección de Antivirus-esto no solía ser un problema, pero ahora que la mayoría de las aplicaciones de análisis de virus hacen algún nivel de monitoreo del sistema y la memoria, la mayoría de ellos detectarán PsExec que se está utilizando en el sistema que están monitoreando., Si está haciendo una prueba de penetración en un sistema Windows y PsExec no funciona como debería, entonces es probable que esté bloqueado por el antivirus, y lo que es peor, puede estar dejando que el usuario final sepa que está jugando con su sistema.

PsExec y Metasploit-cuando es posible ya no uso PsExec solo. Ahora se incluye una versión modificada de PsExec en el Framework Metasploit. Metasploit es un marco de pruebas de penetración que proporciona un poco de funcionalidad., Si desea utilizar PsExec para algún tipo de evaluación de seguridad, considere buscar la funcionalidad adicional que Metasploit proporciona con ella. De hecho, usé esta versión de PsExec en un artículo que escribí anteriormente sobre pasar las técnicas de Hash.

conclusión

la herramienta PsExec tiene muchos usos para una variedad de intenciones del usuario. Con suerte, este artículo ha ayudado a educar sobre algunas de sus características y cómo se pueden utilizar para hacer el mal. PsExec es el tipo de herramienta que permite a un atacante ser creativo., Aunque solo he cubierto algunos usos únicos de la herramienta aquí, me atrevería a decir que docenas o incluso cientos de vectores de ataque interesantes están disponibles utilizando su conjunto de características. En algún momento planearé escribir un artículo de seguimiento que contenga usos más interesantes y avanzados para PsExec. Mientras tanto, si tienes algún truco interesante de PsExec, no dudes en escribirme directamente para incluirlo en el siguiente artículo.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *