jueves, octubre 19, 2017

SuperUser in PentestLab: Bypassing UAC & AppLocker in Windows 7 to… 10!

El artículo de hoy no hablará de un nuevo Bypass de UAC o de un nuevo Bypass en AppLocker. Como hemos mencionando en muchos otros artículos ha sido "El año del bypass de UAC", empujado también por el leak de la NSA en Vault dónde se hablaba cómo se podían aprovechar ciertas condiciones para lograr un bypass de UAC. Nuestro enfoque siempre ha sido el divulgativo y con el deseo de ayudar a los pentesters en sus proyectos de Ethical Hacking. Así queríamos hacer en la pasada Navaja Negra, cuando a mi compañero Santiago Hernández y a mí nos tocó impartir un taller de estas técnicas que ayudan con el Hacking de Windows.

Figura 1: SuperUser in PentestLab: Bypassing UAC & AppLocker in Windows 7 to… 10!

Además, este último año ha tenido una componente de investigación sobre este tema y de mucho aprendizaje. Sin duda, para mí, ha sido muy interesante escribir todos los artículos y probar las diferentes técnicas que permitían, casi cada semana, realizar un bypass de UAC. Esto me llevo a tener en mente una herramienta que nos permitiera llevar a cabo o automatizar, en algunos casos, estas investigaciones. De esta herramienta os hablaremos más adelante.

Hemos hablado mucho, como he mencionado anteriormente, sobre UAC y, en algunos casos, sobre AppLocker. Hoy queríamos mostraros el taller y la recopilación de todo este trabajo que hemos llevado a cabo. Para comenzar el taller hablamos del laboratorio que los asistentes podían montarse para llevar a cabo los diferentes escenarios. Hoy en día con la virtualización es realmente sencillo para los alumnos.

¿Qué es UAC? ¿Cómo funciona UAC? ¿Qué es un bypass de UAC? ¿Por qué importa?

Con estas preguntas comenzábamos el taller. Es importante tener claro, en primer lugar, qué es sistema UAC. Todos sabemos que es la pantalla que nos sale ante una elevación de privilegio, pero ¿Sale siempre? Un dato importante era explicar cómo funciona el UAC, dónde podemos encontrar la política de UAC, cómo se comporta ante una elevación, qué son los contextos dónde los procesos se ejecutan, el nivel de integridad, etcétera.

Figura 2: Mensaje de UAC en Windows

En el taller teníamos unas reglas de resumen ante una elevación de privilegio por parte del usuario o de un proceso:
• Si el token pertenece al grupo administradores. 
• Si el proceso en ejecución está en un contexto de integridad media. 
• Si la política de UAC está configurada por defecto.
Si se cumplen estas tres condiciones se podría llevar a cabo un bypass de UAC con la ejecución adecuada utilizando diferentes métodos. Pero hay más, se habló de las configuraciones en el Manifest de los binarios del sistema, se habló del atributo AutoElevate y de si el binario está firmado por Microsoft. Desde Windows 7 este hecho ha provocado gran cantidad de bypasses de UAC.

Figura 3: Autoelevate en fichero Manifest

Además, hablamos de lo que es un bypass de UAC y de por qué realmente importa. La definición del bypass es la vía para lograr ejecutar un proceso en un contexto de integridad alta, System, evitando que la pantalla de consentimiento de UAC salte y sea visible por parte del usuario. Su importancia radica en la fase de post-explotación en un hacking de Windows y es que nos permite elevar el privilegio sin que salte el UAC, siempre y cuando el escenario sea el siguiente: proceso comprometido que pertenece a un usuario del grupo administradores.

DLL Hijacking

Tras explicar esto, nos centramos en las técnicas. La primera que tratamos fue DLL Hijacking. Esta técnica permite realizar el secuestro de una DLL. El objetivo es lograr que el proceso que se ejecuta en un contexto de integridad alta ejecute nuestra DLL en vez de la DLL legítima. Este bypass de UAC es el más clásico y el primero que salió se apoyaba en esto para lograr el objetivo. Para ejemplificar esta técnica llevamos a cabo dos ejemplos:
WinSxS con WUSA en Win 7/8/8.1. 
WinSxS con IFileOperation en Win 10
Estos dos ejemplos ayudan a entender la técnica DLL Hijacking. El resumen es fácil, un proceso autoelevado busca una DLL es \Windows\System32 que no encuentra y termina acudiendo a WinSxS. Si nosotros pudiéramos crear la DLL en la ruta privilegiada, conseguiríamos que el proceso privilegiado ejecutara nuestra DLL. WinSxS con WUSA en Win 7/8/8.1 lo hemos publicado en este blog y aquí tenéis el video de ejemplo.

Figura 4: WinSxS con WUSA en Win 7/8/8.1 

Por otro lado, la demostración y explicación sobre WinSxS con IFileOperation en Win10 también la hemos publicado en el blog. Decir que en las últimas versiones de Windows 10 no nos ha funcionado, por lo que parece que el método IFileOperation puede estar parcheado.

Figura 5: WinSxS con IFileOperation en Win10

Fileless: La técnica que lo cambió todo

La segunda técnica explicada en detalle fueron los ataques Fileless. Esta técnica descubierta por Enigma0x3 ha marcado un antes y un después. En esta parte hablamos sobre la estructura del registro de Windows, para que sirve cada rama y por qué los procesos buscan en dichas ramas información. Además, con las herramientas Process Explorer y Process Monitor, utilizadas durante todo el taller, pudimos ir viendo diferentes situaciones que se dan en el registro de Windows y que provocan la ejecución de procesos elevados.

Figura 6: Artículo en MSDN

Como gran curiosidad, nos fijamos en un comunicado sacado de la MSDN que dice que los procesos que se ejecutan en un contexto de seguridad alto no deberían utilizar HKEY_CLASSES_ROOT. Como pudimos ver, esto no ocurre y aquí se abre un problema que permite realizar bypass de UAC. Las demos que tratamos fueron las siguientes:
Eventvwr en Fileless en Win7 
Sdclt.exe y el kickoffelev en Win 10
El Fileless 1 o el bypass UAC del Eventvwr.exe fue parcheado por Microsoft debido a su utilización en campañas de malware como la de Keybase. Este es el vídeo con la PoC que publicamos en el artículo de Fileless 1.

Figura 7: PoC Fileless 1

Por otro lado, la técnica del sdclt.exe y el parámetro /KickOffElev fue conocido como Fileless 2 y permite, a día de hoy, hacer un bypass de UAC en Windows 10. En el blog ya hemos hablado de ello en detalle y os dejamos el video para que lo veáis en acción.

Figura 8: PoC Fileless 2

Por último, hablamos sobre un bypass de UAC que, a día de hoy, sigue funcionando en Windows 10. Este bypass de UAC es el de inyección de comandos a través de variables de entorno. El resumen es fácil, las variables de entorno se pueden modificar en HKCU\Environment, por lo que cualquiera puede modificar o crear las variables de entorno en dicha rama. La variable %windir% podría ser creada en esta rama e inyectar su contenido en una tarea programada que utilizaba y sustituía valores a través de dichas variables. El detalle de la técnica, la cual es muy sencilla, y su explicación completa se puede encontrar en el blog en la entrada "2017, el año que bypasseamos UAC peligrosamente".

Figura 9: PoC UAC Bypass con variables de entorno

AppLocker: También juega

AppLocker es una característica de seguridad de Windows cuya funcionalidad es la restricción de software. Para que se entienda fácil, AppLocker permite bloquear:
• EXE, COM.
• JS, PS1, VBS, CMD (ficheros), BAT. Es decir, scripts. 
• Instaladores: mst, msi, msp. 
• DLL y OCX.
En el taller mostramos un ejemplo sencillo a través del bypass de una restricción de ejecución de scripts, en este caso VBS, gracias al uso de herramientas como BGInfo y la posibilidad de invocar scripts VBS. El bypass funciona en Windows 10 y, a continuación, podéis ver el vídeo completo sobre la técnica.

Figura 10: Saltarse Applocker en Windows 10 con BGInfo

Y llegando al final del taller de la Navaja Negra, decidimos mostrar lo que el trabajo nos había facilitado: uac-a-mola estará en Black Hat Europa 2017, en Londres.
Será un honor estar en Black Hat Europa con la herramienta de uac-a-mola, la cual sigue una metodología IDEM: Investigación, detección, explotación y mitigación de bypasses de UAC. La herramienta permite, tanto investigar nuevas formas de llevar a cabo bypasses de UAC, como la detección y explotación de los conocidos, así como la posibilidad de “tapar” o “mitigar” los conocidos.

Figura 12: Info sobre UAC-a-Mola en Black Hat

La herramienta y su explicación deberá esperar todavía. Eso será en otro artículo. Sin duda fue un honor estar en Navaja Negra y poder impartir este taller. Nos vemos en la siguiente.

Autores: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Hacking Windows, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths & Santiago Hernández Ramos, cybersecurity researcher en ElevenPaths

No hay comentarios:

Entrada destacada

10 maneras de sacarle el jugo a tu cuenta de @MyPublicInbox si eres un Perfil Público

Cuando doy una charla a algún amigo, conocido, o a un grupo de personas que quieren conocer MyPublicInbox , siempre se acaban sorprendiendo ...

Entradas populares