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.
No hay comentarios:
Publicar un comentario