.jpg)
Artículo · Pentesting
Comprometiendo Windows con PowerShell Empire
¿Qué es Empire?
Empire es una herramienta de post-explotación de PowerShell construido sobre comunicaciones cripto-lógicamente seguras y una arquitectura flexible. Empire implementa la capacidad de ejecutar agentes de PowerShell sin necesidad de powershell.exe, módulos de post-explotación rápidamente desplegables que van desde un keyloggers a Mimikatz, y comunicaciones adaptables para evadir la detección de redes, todo ello envuelto en un Framework fácil de utilizar.
PowerShell Empire es un framework diseñado en Python y basado en agentes que se ejecuta en el equipo comprometido mientras nosotros podemos gestionar el control de diversas acciones como elevar privilegios, descargar o subir archivos, entre otros. Es una herramienta que podemos observar es un similar a Metasploit Framework y de cierto modo es como la temática en la que fue orientado Empire, adicionalmente de ofrecernos una comunicación cifrada que dificulte nuestra detección en la red.
En este primer apartado presentaremos un ejemplo práctico de una fase de explotación con esta herramienta.
Primero debemos descargar Empire desde Github:
git clone https://github.com/powershellempire/empire
Acceder a la carpeta y asignar permisos de ejecución o iniciar con python
chmod +x empire
Ahora iniciaremos PowerShell Empire
./empire
Se nos desplegará el siguiente banner donde se nos visualiza la totalidad de módulos, las conexiones a la escucha “Listeners” y los agentes “Agents”
Banner PowerShell Empire
Listeners: Se encargan de esperar las conexiones de los agentes desplegados en las máquinas comprometidas.
Agents: Los agentes son el código ejecutado en las máquinas comprometidas como por ejemplo BAT, VBS, DLL e incluso, un código preparado para Rubber Ducky.
En la siguiente imagen podemos observar las acciones principales que podemos realizar con Empire.
Menú de comandos principales
Para comenzar debemos configurar nuestro primer módulo que se encargue de estar escuchando las conexiones de algún equipo comprometido con nuestro host, esto lo realizaremos seleccionando “Listeners” y cómo podemos observar a continuación Empire nos indica que no hay ningún listeners a la espera de alguna conexión.
Menú de acciones para configurar el/los Listeners
Empire nos permite generar diferentes tipos de conexión vía https o generar una conexión por meterpreter.
Ejemplos del listeners
Para esta ocasión crearemos una conexión mediante el siguiente comando
uselistener http “nombre para listener”
Y con info podremos ver los parámetros que requiere el listener para operar
info
Configuración del Listener
Como podemos observar si tenemos más de alguna conexión creada para detectar claramente quien es nuestra víctima podemos indicar un nombre a la conexión adicionalmente debemos indicar nuestro host al módulo, para insertar un valor se realiza al igual que en Metasploit:
# set Host 192.168.200.124
En caso que tengamos operativo el puerto 81 o simplemente queremos cambiar el puerto de conexión también lo podemos realizar mediante:
# set Port 81
Posteriormente regresamos con el comando # back y ejecutamos el código del listeners que recién acabamos de crear, esto lo realizamos ingresando:
# launcher powershell Control_11
Código Powershell que debe ser ejecutado en el equipo víctima
Como podemos observar en la imagen se creará un código encodeado en Base64 que debemos explotar desde el equipo víctima, cuando este se ejecute el Powershell ejecutará el código a través de Base64 (-Enc), en un proceso oculto (-W Hidden) y no interactivo (-NonI).
Existen diferentes maneras de ofuscar un código en un archivo para que nuestra víctima nos genere la conexión, pero esto lo realizamos más adelante, para esta ocasión ingresamos el código generado en la imagen anterior en la consola de Windows.
Inyección del código ofuscado de Empire en la consola de Windows
Posteriormente a haber comprometido el equipo víctima Empire nos levantará un mensaje donde indica que se ha iniciado un agente desde la IP “Máquina comprometida”
Mensaje de conexión
Como podemos observar se generó un agente entre nuestro Host y el equipo víctima
Lista de agentes
Para comenzar a operar sobre nuestra víctima debemos usar el comando interact y el nombre del agente como podemos ver a continuación:
interact MYFRW1D8
Interacción con el agente
Ahora podemos comenzar a ejecutar código de manera remota también podemos visualizar la información del sistema comprometido con:
sysinfo
Resumen del equipo comprometido
En la siguiente imagen podemos observar las herramientas que nos ofrece Empire cuando logramos tomar el control del equipo, dentro de las características podríamos elevar privilegios con Bypassuac, descargar o subir archivos, ejecutar mimikatz, también contamos un apartado con módulos post explotación el cual aplicaremos a continuación:
Opción de ayuda de Metasploit
Pero no solo contamos con módulos de explotación de servicios, Empire también nos ofrece algunos módulos para jugar bromas como por ejemplo desplegar un mensaje en pantalla a la víctima indicando que su equipo ha sido comprometido.
Esto lo podemos realizar con el siguiente módulo:
use modulo “trollsploit/message” ← nombre del módulo
Posteriormente como podemos ver a continuación con info podemos configurar el módulo para que el exploit presente un mensaje personalizado a la víctima:
MsgText: Mensaje personalizado que leerá el usuario del equipo.
IconType: Tipo de mensaje que aparecerá en pantalla (Critical: Pop-up en pantalla)
Agent Title: Título de la ventana.
Opciones del módulo
Posteriormente a haber configurado nuestro módulo lo ejecutamos mediante el comando #execute y cómo podemos observar en la siguiente imagen, a la víctima le aparecerá un mensaje en pantalla indicando que su equipo se encuentra comprometido.
Foto pantalla equipo comprometido
¿Quieres aprender estas técnicas en profundidad?
Continúa tu ruta con Penetration Testing Student.

Escrito por
Cristian Palma PIngeniero civil informatico, con aptitudes por la seguridad informatica.



