4 nov 2016

Winpayloads: Automatizando la generación y el uso de payloads

Winpayloads es una herramienta que nos indica en su descripción que es capaz de generar payloads indetectables para el sistema operativo 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. 

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 payload 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.


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.


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. 


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. 


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.


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. 


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. 


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 pentesting. Las posibilidades son mucho más amplias, por lo que recomendamos que juegues con la herramienta y veas el potencial de ésta. 

No hay comentarios:

Publicar un comentario