jueves, abril 18, 2019

Hacking Windows 10: Escalada de privilegios con CVE-2019-0841

Recientemente se ha liberado una PoC (Prueba de concepto) que implementa la escalada de privilegio descrita en el expediente CVE-2019-0841. Esta escalada de privilegio permite que un usuario pueda ejecutar código arbitrario, por ejemplo, a través de DLL Hijacking y ejecutar en el nivel de integridad de SYSTEM.

Figura 1: Hacking Windows 10: Escalada de privilegios con CVE-2019-0841

La vulnerabilidad se ha conocido por el nombre de “DACL Permissions Overwrite Privilege Escalation” y, si quieres saber más, la implementación de la prueba de concepto puede estudiarse y descargarse desde el siguiente Github.

Figura 2: GitHub con la PoC para estudiar

Con la vulnerabilidad un usuario sin privilegios o privilegios ‘bajos’ puede secuestrar archivos que son propiedad de NTAuthority\SYSTEM. Esto se realiza sobrescribiendo los permisos en el archivo destino, el que se quiere secuestrar. Cuando la escalada tiene éxito se obtiene un “Control Total” de los permisos para el usuario sin privilegio.

¿Dónde radica la magia?

En esta ocasión hay que hablar de que todas las aplicaciones de los sistemas Windows disponen de un archivo settings.dat. Este archivo es el que tiene la configuración de la aplicación. En otras palabras, es un registro que se puede cargar y modificar desde el propio registro.

Figura 3: Máxima Seguridad en Windows: Secretos Técnicos [4ª Edición]

Si eres de los que te preocupa por la tener fortificado al máximo tu sistema Windows, seguro que es un viejo amigo. En el libro de "Máxima Seguridad Windows: Secretos Técnicos [4ª Edición]" de nuestro compañero Sergio de los Santos (@ssantosV) sale en varios capítulos.

Este archivo del que hablamos es muy importante, y hay que tener en cuenta que en el momento en el que arranca una aplicación en Windows, el archivo settings.dat es utilizado por NTAuthority\SYSTEM. Esto es algo interesante, sin duda. En este punto al investigador que descubrió la vulnerabilidad le surge una nueva pregunta, ¿cómo se puede hacer un abuso de este acceso privilegiado a archivos?

Figura 4: Paquetes instalados en un Windows 10

El investigador se centró en el archivo settings.dat de Microsoft Edge. Cada paquete tiene un archivo settings.dat. Una vez que arranca dicho paquete o aplicación en Windows, el sistema realizará una operación OpLock o bloqueo exclusivo, con el objetivo de evitar que otros procesos utilicen o accedan a la información de ese archivo mientras se está ejecutando la aplicación.

Figura 5: Settings.dat de Microsoft Edge

En el caso de la PoC (Prueba de Concepto), cuando se arranca Microsoft Edge, el archivo settings.dat se abre como NTAuthority\SYSTEM. Una vez la aplicación es ejecutada y el archivo es abierto, se realizan algunas verificaciones de integridad:
1. Se comprueban los permisos de los archivos
2. Si los permisos son incorrectos, se corrigen los permisos de los archivos
3. Se lee el contenido
4. Si el contenido está corrupto o dañado se borra el archivo
5. Se restablece la configuración copiando el archivo, el cual sirve de plantilla, que se encuentra en C:\Windows\System32\settings.dat.
6. Se obtiene el bloqueo exclusivo en el archivo recién copiado
7. Se continua con la ejecución de la aplicación de Windows.
En resumen, si el fichero settings.dat no es considerado válido, Windows lo elimina y copia la plantilla que está almacenada en una ubicación protegida. De esta forma se evita el abuso, a priori. Pero no estamos aquí con un post que busca ampliar nuestros conocimientos de Hacking Windows para dejarlo aquí. Y vamos a verlo.

Figura 6: Libro en 0xWord de Hacking Windows:
Ataques a sistemas y redes Microsoft

El investigador se dio cuenta que se puede utilizar este comportamiento para establecer los permisos en ‘cualquier’ archivo mediante el uso de enlaces físicos. El objetivo ahora será crear enlaces duros a archivos dónde queremos tener un “Control Total” como usuario no privilegiado o usuario regular.

Explotándolo

Se sabe que los permisos de archivos establecidos en un enlace duro darán como resultado cambios en el archivo original. A continuación, se va a mostrar un ejemplo de cómo secuestrar un archivo. Para el ejemplo, el investigador optó por utilizar el fichero HOSTS. Un usuario normal no tiene acceso de modificación a este archivo, tal y como se puede ver en la imagen.

Figura 7: Modificación no disponible para usuarios no privilegiados

El investigador Nabeel Ahmed ha escrito un exploit que automatiza el proceso de creación de un enlace físico y provocar que la vulnerabilidad se desencadene. No es más que llevar a cabo lo que se ha ido explicando en los pasos anteriores. A continuación, se muestra el paso a paso del proceso.

¿Cómo funciona el exploit?

El exploit tiene el siguiente funcionamiento:
1. Primero verificará si el archivo settings.dat existe o no. Además, si éste existe, verificará los permisos. Si se utiliza la aplicación Microsoft Edge se parará la ejecución del proceso, en el caso de que esté en ejecución. Con cualquier otra aplicación ocurriría igual. Lo interesante es asegurarse de que se utiliza una herramienta que esté por defecto en el sistema, lógicamente.
2. Se buscará el archivo settings.dat y se eliminará para crear un enlace físico al archivo específico. En este caso al archivo HOSTS. En este paso es dónde se puede hacer el vínculo con cualquier archivo, por lo que, pensemos en un DLL Hijacking de una DLL que tenga nuestro código con un Meterpreter o con lo que sea.
3. Re-arrancar la aplicación. Una vez es creado el enlace físico, se vuelve a arrancar la aplicación, en este caso Microsoft Edge. Se desencadena la vulnerabilidad. Por último, hay que verificar si el fichero destino tiene permisos de “Control Total” para el usuario sin privilegio, lo que al principio no teníamos.
En la siguiente imagen publicada por Nabeel Ahmed se puede ver el resultado final después de lanzar el proceso que implementa el exploit de manera completa y con éxito en un sistema operativo Microsot Windows 10 vulnerable.

Figura 8: Exploit ejecutado con éxito

Además, se puede disfrutar de un video en el que se muestra la ejecución de una DLL, mediante técnica de DLL Hijacking y haciendo uso de la aplicación de actualización del navegador Google Chrome. Más que interesante.


Figura 9: DACL Permissions Overwrite Privilege Escalation
(CVE-2019-0841) PoC using Google Chrome

Interesante técnica que seguramente abrirá puertas en los Ethical Hacking, por lo que habrá que ver cómo se reacciona ante esta vulnerabilidad. Los equipos de IT tendrán trabajo.

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.

1 comentario:

  1. Me dcen a mi en mostoles mientras usaba el espectrum 128 que llegaria hasta este nivel de investigacion y no lo hubiera creido. Me deja pensando, si todo el tiempo usado en buscar vulnerabilidades se usase en acelerar y blindar todo y seriamos super felices navegando en aguas limpias sin preocuparse de los que las agitan. vuestro trabajo es super, ojala no existiera enemigo usurpador y todo lo invirtieramos en darle velocidad a todo. siempre siguiendote desde el primer video que vi de ti. ;)
    Que mal sescribe desdel movil y sin gafas coña.

    ResponderEliminar