miércoles, septiembre 13, 2017

Y otro Bypass más para UAC: CMSTP.EXE y el misterio del autoelevado en Windows 10

Hacia mediados de agosto apareció un nuevo bypass de UAC. En este caso el investigador que lo ha descubierto es Oddvar Moe, el cual publicó recientemente una nueva forma de hacer bypass al Device Guard a través de la vulnerabilidad CVE-2017-8625. Ahora Oddvar ha publicado su investigación sobre la tecnología UAC junto con una nueva forma de saltárselo. Por otro lado, la gente detrás del proyecto UACMe ya lo ha integrado y publicado en su proyecto.

Figura 1: Y otro Bypass más para UAC: CMSTP.EXE y el misterio del autoelevado en Windows 10

El problema viene en el fichero binario llamado cmstp.exe. Éste es un programa que permite instalar o eliminar un perfil de Connection Manager Service. Para llevar a cabo el bypass de UAC desde 0 necesitaremos habilitar una característica de Windows o que ésta estuviera activa, antes de nada. Tal y como se puede ver en la imagen, necesitaremos RAS Connection Manager Administration Kit (CMAK) habilitado ya que con esta herramienta crearemos los ficheros necesarios para manipular y conseguir el bypass de UAC. Otra opción es utilizar el fichero INF que Oddvar Moe ha dejado preparado para conseguir una cmd.exe autoelevada, mediante la invocación o ejecución del binario cmstp.exe apuntando al fichero INF.

Figura 2: Característica CMAK

Si optamos por crear el fichero INF a mano, una vez habilitado CMAK, debemos ejecutar la aplicación CMAK e ir paso a paso en el asistente. Rellenando los diferentes campos que podemos ir viendo y que nos solicitarán. El objetivo es crear un perfil y obtener los ficheros adecuados. Como dije anteriormente, otra opción es bajarse el fichero INF desde el repositorio Github de Oddvar. También se ha publicado un fichero escrito en Powershell que genera automática el fichero INF y realiza los pasos necesarios para automatizar el bypass de UAC.

Como decía anteriormente, el asistente de CMAK es sencillo para acabar creando los ficheros necesarios. CMAK solicita permisos de administrador, por lo que sería una solución interesante traer el fichero INF generado previamente a la auditoría, ya que no podríamos habilitar la característica, ni crear el fichero. Por esta razón, se pueden copiar los ficheros desde nuestro equipo al equipo necesario y aprovecharse de la debilidad para lograr el bypass de UAC.

Figura 3: Creación de un servicio en CMAK

Por defecto, CMAK almacena estos ficheros del perfil creado. Es importante conocer que para crear estos archivos con CMAK necesitamos permisos, pero nos aprovecharemos del fichero INF, por lo que se recomienda crearlo en otro equipo donde podamos hacerlo y luego llevarlo al equipo en cuestión.

Figura 4: Fichero .INF del perfil CMAK

Hay que modificar el fichero *.inf. Los cambios son sencillos. En primer lugar, hay que buscar la sección RunPreSetupCommandsSection y añadir un par de líneas. Como se puede ver en la imagen, una de las líneas a añadir es la ejecución de un cmd.exe, lo cual ya nos hace ver por dónde van los tiros.

Figura 5: Inserción de cmd.exe en el archivo INF

Otro cambio a realizar en el fichero INF es el comentar dos líneas, las cuales se encuentran marcadas en la imagen siguiente. Como se puede ver, las líneas CopyFiles y AddReg no tienen que ser ejecutadas por cmstp.

Figura 6: Líneas a comentar del fichero INF

Una vez configurado esto, se puede abrir una cmd.exe y ejecutar el binario cmstp.exe con el fichero INF recién creado. El parámetro utilizado es /au, el cual indica que se instalará el perfil para todos los usuarios, por lo que debe ejecutarse con privilegio. Aquí está el truco. Si analizáis el manifest del binario encontramos que no está auto elevado, es más Oddvar Moe indicaba en su publicación que no entendía bien por qué estaba ocurriendo esto:

¿Por qué nos eleva si en el Manifest no se indica?

La solución al tema la proporcionó el creador de UACMe. La razón es que debido al objeto COM CMLUAUTIL que está autoelevado, el cual viene de cmlua.dll, se utiliza un ShellExec y algunos métodos provocando que el flujo se ejecute con privilegio.

Figura 7: UAC Bypass con CMAK

Figura 8: UAC Bypass con CMA_K para elevar DLL

De nuevo un bypass de UAC y ya hemos visto unos cuantos por aquí. Sin duda, una nueva técnica que ayudará en los proyectos de Ethical Hacking en su día a día, a lograr saltarse el UAC de Windows 10 y otra cosa que tienes que tener en cuenta si quieres fortificar Windows correctamente.

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

No hay comentarios:

Publicar un comentario