Hacking Windows: Bypass UAC en Windows 10 a través de Windows Store
El año 2017 y 2018 fue, probablemente, el año de los bypasses de UAC. En este blog hablamos de muchos de ellos: mocking trusted directory, fileless 3, con DLL Hijacking, etcétera. Hay un largo repositorio de técnicas de bypass de UAC en este blog. Es más, desde el equipo de Ideas Locas del área CDO lanzamos una herramienta para la investigación, detección, explotación y mitigación de bypasses de UAC llamada UAC-A-Mola. La herramienta fue presentada en la BlackHat Europe de 2017.
Llevaba un tiempo con los bypasses de UAC apartados, aunque seguía las noticias de cerca y veía que han seguido apareciendo diferentes técnicas. El objetivo es encontrar nuevos caminos para hacer Hacking de Windows 10. Hoy voy a hablar de un bypass de UAC que fue publicado en marzo de 2019 y ha sido “parcheado” por Microsoft en mayo de 2019. Lo interesante de este bypass es que si has ido siguiendo los artículos y has visto el paper que el equipo de Ideas Locas publicó puedes ver que el siguiente bypass que trataremos es muy sencillo de entender y de lograr.
Es más, una de las cosas que UAC-A-Mola pretendió en sus comienzos era ayudar a los investigadores a descubrir, de forma automatizada, a encontrar binarios potenciales y descubrir nuevos bypasses de UAC. No hay que olvidar este artículo en el que hablamos bien a fondo de este hecho.
¿En qué consiste este nuevo bypass de UAC? Es un bypass de tipo fileless, ya que no hay que subir nada a disco para lograr la ejecución en un contexto de integridad alto. Lo interesante es que es en Windows 10 y, como se verá, no es nada difícil de entender o manipular, sin olvidarnos que se ha parcheado.
Jugando con el bypass de UAC también en 2019
Lo primero es tener el binario potencial. En este caso se trata de un binario de Windows 10 denominado wsreset.exe. Este binario corresponde con el Windows Store. Tiraremos de sigcheck para ver la firma del binario y si la directiva "autoElevate" se encuentra a "True". En este caso observamos que se cumplen estas dos situaciones por lo que el binario es potencialmente bypasseable.
Ahora toca analizar qué es lo que no se encuentra en el sistema de archivos o en las ramas del registro cuando el binario wsreset.exe es ejecutado. Con la herramienta procmon.exe se puede monitorizar las acciones que realiza un proceso en diferentes entornos: sistema de archivos, en la red, en el registro… Vamos, una de nuestras preferidas en los scripts de Pentesting con Powershell que te debes conocer al detalle.
Aplicando varios filtros en la herramienta, entre ellos el que solo se monitorice el registro, que el nombre del proceso sea wsreset.exe y el valor de la operación sea ‘NAME NOT FOUND’ podemos encontrar una cosa interesante. Se busca en HKCR un hive que no se encuentra y que apunta a un binario.
En la documentación de Microsoft podemos encontrar algo interesante y es que desde Windows 2000 HKCR es una compilación y mezcla entre HKCU\Software\Classes y HKLM\Software\Classes. Además, si un valor existe en ambas subclaves, la que tiene precedencia es HKCU\Software\Classes. ¿Interesante? Si nos fijamos en el resultado que obtenemos con procmon es que la ruta del registro
Cuando creamos la ruta hay que fijarse que DelegateExecute esté apuntando a “”. En el caso de la clave ‘(Default)’ se debe indicar qué binario que se quiera arrancar. Para este ejemplo se usa un simple cmd.exe, pero se puede utilizar otras cosas para levantar sesiones de Meterpreter o de nuestro iBombshell, entre otras cosas, por ejemplo.
Una vez está creada la ruta en el registro y configurada con el binario se puede invocar la aplicación wsreset.exe. Lógicamente, y como siempre hemos dicho, esto tiene sentido dentro de la fase de post-explotación de un Ethical Hacking. En el momento en el que tenemos una máquina comprometida y se dan las circunstancias para que un bypass de UAC, a través de una Shell remota, nos proporcione una nueva sesión con privilegios. Fácil de utilizar en Metasploit.
Ahora vamos a abrir un cmd.exe y miramos el nivel de integridad - recordad nuestra querida MicEnum de ElevenPaths - del proceso a través del comando whoami /groups. En esta imagen se puede ver que el nivel de integridad donde se ejecuta el cmd.exe es nivel medio.
Desde esta cmd.exe lanzamos el comando wsreset.exe y vemos que se abre una nueva ventana que corresponde con el binario Windows Store. En una ejecución normal, tras lanzar el binario wsreset.exe se abriría un entorno gráfico de la Windows Store.
Como se puede ver en la imagen siguiente, se obtiene una pantalla, la cual al cerrarse abrirá una cmd.exe. Esto es importante, porque este proceso se estará ejecutando en un nivel de integridad alto.
Esta nueva cmd.exe que se abre se está ejecutando en un nivel de integridad alto, es decir, se podrá impersonar a SYSTEM y tener el control total del sistema. En ningún momento el UAC ha saltado evitando o alertando de la elevación de privilegio. Para obtener este tipo de información se debe ejecutar el comando whoami /groups.
Sin duda es un bypass de UAC sencillo, pero que es útil. Es más, según han informado se ha parcheado recientemente, finales de mayo. Sea como sea, seguramente lo veamos pronto en nuestro iBombShell y en otras herramientas de explotación y post-explotación. Os dejamos un video para ejemplificar el bypass.
Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced 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.
Figura 1: Hacking Windows: Bypass UAC en Windows 10 a través de Windows Store |
Llevaba un tiempo con los bypasses de UAC apartados, aunque seguía las noticias de cerca y veía que han seguido apareciendo diferentes técnicas. El objetivo es encontrar nuevos caminos para hacer Hacking de Windows 10. Hoy voy a hablar de un bypass de UAC que fue publicado en marzo de 2019 y ha sido “parcheado” por Microsoft en mayo de 2019. Lo interesante de este bypass es que si has ido siguiendo los artículos y has visto el paper que el equipo de Ideas Locas publicó puedes ver que el siguiente bypass que trataremos es muy sencillo de entender y de lograr.
Figura 2: Libro de "Hacking Windows: Ataques a sistemas y redes Microsoft" de 0xWord |
Es más, una de las cosas que UAC-A-Mola pretendió en sus comienzos era ayudar a los investigadores a descubrir, de forma automatizada, a encontrar binarios potenciales y descubrir nuevos bypasses de UAC. No hay que olvidar este artículo en el que hablamos bien a fondo de este hecho.
Figura 3:UAC Bypass & Research with UAC-A-Mola de ElevenPaths
¿En qué consiste este nuevo bypass de UAC? Es un bypass de tipo fileless, ya que no hay que subir nada a disco para lograr la ejecución en un contexto de integridad alto. Lo interesante es que es en Windows 10 y, como se verá, no es nada difícil de entender o manipular, sin olvidarnos que se ha parcheado.
Jugando con el bypass de UAC también en 2019
Lo primero es tener el binario potencial. En este caso se trata de un binario de Windows 10 denominado wsreset.exe. Este binario corresponde con el Windows Store. Tiraremos de sigcheck para ver la firma del binario y si la directiva "autoElevate" se encuentra a "True". En este caso observamos que se cumplen estas dos situaciones por lo que el binario es potencialmente bypasseable.
Figura 4: autoElevate vale True |
Ahora toca analizar qué es lo que no se encuentra en el sistema de archivos o en las ramas del registro cuando el binario wsreset.exe es ejecutado. Con la herramienta procmon.exe se puede monitorizar las acciones que realiza un proceso en diferentes entornos: sistema de archivos, en la red, en el registro… Vamos, una de nuestras preferidas en los scripts de Pentesting con Powershell que te debes conocer al detalle.
Figura 5: Libro de "Pentesting con PowerShell" 2ª Edición de 0xWord |
Aplicando varios filtros en la herramienta, entre ellos el que solo se monitorice el registro, que el nombre del proceso sea wsreset.exe y el valor de la operación sea ‘NAME NOT FOUND’ podemos encontrar una cosa interesante. Se busca en HKCR un hive que no se encuentra y que apunta a un binario.
Figura 6: Valores NAME NOT FOUND en WSReset.exe |
En la documentación de Microsoft podemos encontrar algo interesante y es que desde Windows 2000 HKCR es una compilación y mezcla entre HKCU\Software\Classes y HKLM\Software\Classes. Además, si un valor existe en ambas subclaves, la que tiene precedencia es HKCU\Software\Classes. ¿Interesante? Si nos fijamos en el resultado que obtenemos con procmon es que la ruta del registro
HKCR\AppX82a6gwre4fdg3bt635tn5ctqjf8msdd2\Shell\open\commandPara ver si realmente existe tenemos que mirar en:
HKEY_CURRENT_USER\Software\Classes\AppX82a6gwre4fdg3bt635tn5ctqjf8msdd2\Shell\open\commandEn caso de existir podremos cambiar el valor ‘(Default)’ y apuntarlo hacia donde nosotros queramos. En el caso de que no exista, se puede crear la estructura.
Cuando creamos la ruta hay que fijarse que DelegateExecute esté apuntando a “”. En el caso de la clave ‘(Default)’ se debe indicar qué binario que se quiera arrancar. Para este ejemplo se usa un simple cmd.exe, pero se puede utilizar otras cosas para levantar sesiones de Meterpreter o de nuestro iBombshell, entre otras cosas, por ejemplo.
Figura 7: Modificación de valor (Default) |
Una vez está creada la ruta en el registro y configurada con el binario se puede invocar la aplicación wsreset.exe. Lógicamente, y como siempre hemos dicho, esto tiene sentido dentro de la fase de post-explotación de un Ethical Hacking. En el momento en el que tenemos una máquina comprometida y se dan las circunstancias para que un bypass de UAC, a través de una Shell remota, nos proporcione una nueva sesión con privilegios. Fácil de utilizar en Metasploit.
Figura 8: Metasploit para Pentesters 4ª Edición y Hacking con Metasploit: Advanced Pentesting |
Ahora vamos a abrir un cmd.exe y miramos el nivel de integridad - recordad nuestra querida MicEnum de ElevenPaths - del proceso a través del comando whoami /groups. En esta imagen se puede ver que el nivel de integridad donde se ejecuta el cmd.exe es nivel medio.
Figura 9: Nivel de Integridad del proceso |
Desde esta cmd.exe lanzamos el comando wsreset.exe y vemos que se abre una nueva ventana que corresponde con el binario Windows Store. En una ejecución normal, tras lanzar el binario wsreset.exe se abriría un entorno gráfico de la Windows Store.
Figura 10: Ejecución de WSreset.exe |
Como se puede ver en la imagen siguiente, se obtiene una pantalla, la cual al cerrarse abrirá una cmd.exe. Esto es importante, porque este proceso se estará ejecutando en un nivel de integridad alto.
Figura 11: Nivel de integridad alto |
Esta nueva cmd.exe que se abre se está ejecutando en un nivel de integridad alto, es decir, se podrá impersonar a SYSTEM y tener el control total del sistema. En ningún momento el UAC ha saltado evitando o alertando de la elevación de privilegio. Para obtener este tipo de información se debe ejecutar el comando whoami /groups.
Figura 12: PoC Bypass UAC en Windows 10 a través de Windows Store
Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced 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