miércoles, septiembre 28, 2016

WinPayloads: Automatizar la generación y el uso de payloads en máquinas Windows #Metasploit #PowerShell

WinPayloads es una herramienta que se presenta en su descripción como que es capaz de generar payloads indetectables para los sistemas operativos Microsoft Windows. La herramienta se encuentra escrita en Python y proporciona una pequeña navaja suiza de automatizaciones útiles en la ejecución del payload y la post-explotación.

Figura 1: WinPayloads. Automatizar la generación y el uso de payloads en máquinas Windows

La herramienta tiene diversas posibilidades para la generación de payloads. Como se puede ver en la imagen tenemos la posibilidad de generar varios tipos de Meterpreter y una shell de tipo inversa. Lo curioso, y potente, es que durante el proceso de creación de los payloads se puede añadir funciones secundarias en forma de post-explotación. Como se ve en la imagen, una Meterpreter puede ejecutar a posteriori, y de forma automática, un script que permita intentar el bypass del UAC, ejecutar persistencia en el equipo y ejecutar una serie de checks sobre la máquina y devuelvan los resultados.

Figura 2: Menú de WinPayloads

Para obtener Winpayloads podemos descargarlo desde su Github. Una vez descargado, debemos ejecutar el fichero setup.sh, el cual llevará a cabo la instalación de las dependencias de la herramienta, por si hubiera alguna que no estuviera instalada.

PoC: Meterpreter con automatización de acciones I

En este ejemplo generamos un binario siguiendo los sencillos pasos de WinPayloads. Al llegar a la opción bypassuac indicamos que sí. Esto genera un script de Powershell y un script de instrucciones de Metasploit. Este último fichero tiene la extensión “rc” y permite configurar de forma automática el binario msfconsole del framework de Metasploit.

Figura 3: Creación de un payload para Windows Meterpreter Reverse HTTPs

Si observamos el fichero bypassuac.ps1 generado, podemos ver como hay un Invoke-Expression de lo obtenido mediante un objeto Net.WebClient que descarga el script de Invoke-BypassUAC desde el repositorio de PowershellEmpire. Es una forma interesante de ejecutar en memoria directamente el script en Powershell y evitar mecanismos de protección en una auditoría.

Figura 4: Script en Powershell creado

En el caso del fichero uacbypass.rc se puede ver el contenido que WinPayloads ejecutará a través de msfconsole -r [nombre fichero RC]. Cargaremos el módulo de post-explotación windows/manage/priv_migrate SESSION=1 y ejecutaremos el módulo de post-explotación denominado windows/manage/exec_powershell SCRIPT=bypassuac.ps1 SESSION=1, siendo el atributo session el adecuado, por lo que quizá hubiera que cambiarlo.

Figura 5: Contenido de ejecución de WinPayloads

Como se puede ver a continuación obtenemos una primera sesión con el EXE generado con WinPayloads. Una vez se consigue la sesión, automáticamente, vemos como se ejecuta el script de Powershell y ejecuta el proceso del bypass UAC. Esto consigue devolvernos una nueva sesión, la cual está identificada como segunda sesión, en este caso, ya con privilegios.

Figura 6: Ejecución del payload

En el caso de no utilizar el bypass UAC, se permite utilizar otros scripts como el de persistencia y el de allChecks.

PoC: Powershell Actions!

WinPayloads dispone de un menú para Powershell y posibles acciones. En la imagen se puede ver cómo se pueden obtener una serie de payloads inversos: ScreenWatch, Asks Creds o Invoke Mimikatz. Solo por el nombre, podemos ver que son muy ilustrativos.

Figura 7: Payloads inversos

En el caso de seleccionar la opción ScreenWatch, se solicita al usuario el puerto en el que nos quedaremos a la escucha, por defecto el 4444. Una vez generado el código codificado en base64, se puede copiar y pegar sobre una máquina con acceso físico, o a través de la explotación de alguna vulnerabilidad a través de, por ejemplo, Metasploit.

Figura 8: Explotación del payload SceenWatch

Otras opciones generan scripts preparados para ser lanzados, como Asks Creds que permite realizar un phishing sobre la máquina víctima, en el que se solicita a un usuario que introduzca sus credenciales del sistema. Otra opción es ejecutar un Mimikatz y que los resultados se nos envíen al puerto abierto.

WinPayloads es una herramienta interesante que debemos llevar en nuestra mochila de ethical hacking. Las posibilidades son mucho más amplias, por lo que recomendamos que juegues con la herramienta y veas el potencial de ésta.

Autor: Pablo González Pérez (@pablogonzalezpe)
Escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y “Pentesting con Powershell

No hay comentarios:

Publicar un comentario