Fileless UAC Bypass

Un paso muy importante tras obtener acceso a una máquina a la que no se debería tener acceso, suele ser elevar privilegios lo antes posible para poder acceder a las zonas más interesantes y poder borrar huellas del sistema de la forma más fiable.

Para controlar estos accesos con privilegios, Microsoft implementó a partir de Windows Vista, un sistema llamado User Account Control (UAC). Como era de esperar, no tardaron en aparecer métodos para saltarse esta protección, llamados de forma genérica como métodos de “bypass de UAC”. Desde el laboratorio de malware de S2 Grupo intentamos conocer bien este tipo de técnicas a fin de poder identificar cada paso que da una muestra de malware en un sistema, y esta en los últimos meses nos ha llamado la atención.

La mayoría de estos métodos “bypass de UAC” requieren de un fichero que se tiene que descargar en el equipo para ser ejecutado o importado por otro proceso ya con privilegios, lo cual en muchos casos hace que salten las alarmas. El sistema sobre el que vamos a hablar en este artículo difiere de ellos en este punto, y puede resultar realmente sencillo de implementar. Sin embargo, no es oro todo lo que reluce ya que este método solo permite hacer bypass cuando la cuenta original tiene un mínimo nivel de permisos. En el caso de una cuenta sin ningún tipo de permisos en la que para ejecutar algo requiere a un administrador, implica tener que introducir las credenciales de otro usuario y por tanto este método no resultaría efectivo.

Se trata de una vulnerabilidad que se puede explotar debido a varios factores:

El primero es el hecho de que Microsoft, para facilitar que los usuarios puedan utilizar cuentas con el mínimo nivel de privilegios posible y puedan trabajar con algunas de las aplicaciones del sistema (de forma que no tengan que estar cambiando de privilegios constantemente), ha permitido que aplicaciones concretas que cumplen ciertos requisitos, se puedan ejecutar con permisos de administrador sin “molestar” al usuario.

Algunos de estos requisitos que deben cumplir las aplicaciones son que estas han de estar firmadas por Microsoft y encontrarse, previamente, en directorios a los que un usuario sin permisos de administrador no tiene acceso (C:\ Windows\system32, por ejemplo).

El segundo factor es que algunas de estas aplicaciones comprueban entradas de registro que se encuentran en las secciones HKCU y HKCR. La razón de que consulten las dos es que la sección HKCR es la unión de HKCU:\Software\Classes y HKLM:\Software\Classes, por lo que puede que comprueben HKCU, a la cual el usuario actual sin privilegios tiene acceso de escritura, en busca de actualizaciones recientes que no han sido aplicadas a HKCR.

Como resultado de estos dos factores, modificando entradas del registro del usuario actual, podemos interactuar con el funcionamiento de aplicaciones que se ejecutan con permisos de Administrador.

A partir de este punto, en concreto la aplicación eventvwr.exe resulta que es una de estas aplicaciones con permisos automáticos y que comprueba primero HKCU, y si no encuentra lo que espera (que es lo normal), busca en HKCR. En concreto busca la entrada “HKCR:\mscfile\shell\open\command”.

Y lo que encuentra en el registro es el siguiente valor:

Si navegamos a la ruta de mmc.exe e intentamos ejecutarlo, nos saltará la ventana de UAC para escalar privilegios.

En cambio, si ejecutamos eventvwr.exe y abrimos algún programa del estilo de ProcessHacker, veremos que se nos abre mmc.exe sin pedir permiso.

Por ello, aunque no podemos editar la entrada “HKCR:\mscfile\shell\open\command”, sí podemos crear “HKCU:\Software\Classes\mscfile\shell\open\command” (puesto que a esta sí tenemos acceso) con el valor:

Tras volver a ejecutar eventvwr.exe podremos comprobar que no se ha abierto nada pero tenemos un nuevo fichero en C:/ llamado test.txt, zona en la que no tenemos permisos de escritura. Acabamos de saltarnos el UAC sin levantar sospechas.

El post original del que hemos obtenido mucha información es el de enigma0x3 y ya se pueden encontrar análisis de muestras de malware que aprovechan esta técnica.

Como medidas preventivas para evitar ser víctima de esta técnica, a parte del sentido común necesarios para no ejecutar nada que provenga de orígenes desconocidos o poco fiables, sería cambiar la configuración del UAC a “Notificar Siempre”, lo que evitaría las elevaciones automáticas de permisos por parte de cualquier tipo de software.