A principios del mes de julio se publicó un exploit que afectaba a la versión 2.2.8 de VLC e inferiores. Además, el exploit era funcional en Windows 10, lo cual siempre le da un toque de interés extra. El CVE asignado es el CVE-2018-11529. La vulnerabilidad radica en las versiones 2.2.X y es que VLC es propenso a una vulnerabilidad Use-After-Free (UAF Vulnerability) con la que un atacante puede ejecutar código ‘arbitrario’ a través del uso de archivos MKV.
Estos archivos MKV están creados de forma que cuando la aplicación ‘parsea’ el archivo se produce la explotación del UAF y la consiguiente ejecución de código. Cuando el exploit falla, se produce una denegación de servicio, ya que la aplicación ‘crashea’. El 9 de julio se publicó en SecLists el detalle de la vulnerabilidad con el exploit. Lo que más llamó la atención era el funcionamiento de la vulnerabilidad de tipo fileformat en los sistemas Windows 10.
Apareció un módulo para Metasploit
A día de hoy está en proceso de ‘pull request’ para que el módulo que ha aparecido se integre en la rama oficial de Metasploit. He querido probar el módulo y ver si realmente era funcional. Como indica la descripción, el módulo funciona para sistemas de 32 y 64 bits. La vulnerabilidad radica en el ‘parseo’ de los ficheros MKV.
Para llevar a cabo la explotación de la vulnerabilidad, el módulo genera dos ficheros: el fichero que contiene el código que explota la vulnerabilidad, el segundo ayuda para disponer de la ruta del código vulnerable. El segundo debe encontrarse en el mismo directorio que el primero, cuando éste sea ejecutado.
Los payloads que se pueden utilizar y que se indican en la descripción son los exec, tanto en 32 como en 64 bits, y las shell reverse y de tipo bind, de nuevo en 32 y 64 bits. Los payloads de tipo Meterpreter provocan el crasheo de la aplicación.
PoC: Probando todo en mi entorno
Lo primero fue hacerse con la versión adecuada de VLC, ya que ésta no es la última. Es cierto, que la vulnerabilidad afecta a la última, y previas, de la rama 2.2.X, pero tenemos que tener en cuenta que existe la versión 3.0.0, 3.0.1, 3.0.2 y 3.0.3, por lo que se recomienda actualizar. La versión 2.2.8 es la última antes de que VLC pasara a la versión 3.0.0. Si queréis montar la prueba se puede obtener cualquier versión de VLC desde su repositorio de versiones.
Para poder obtener el módulo, ya que no se encuentra a día de hoy en la rama master, se puede descargar desde el Github de Metasploit en un Pull Request que se ha realizado y que, cuando se valide, pasará a formar parte de la rama oficial.
Si miramos las opciones del módulo, son las típicas de un módulo de tipo FileFormat. Es decir, tenemos unos atributos para dos archivos que se generarán, los comentados anteriormente. Además, si ejecutamos show targets podemos ver para qué sistemas está probado el módulo. En este caso, versión VLC 2.2.8 en Windows 10 de 64 y 32 bits.
Se debe configurar el payload que se quiere meter en los archivos para que, en caso de que el exploit tenga éxito, se lleve a cabo la ejecución de código. Para este ejemplo, se ha utilizado una shell reverse TCP. El resultado de la ejecución del módulo es la creación de un par de ficheros MKV, uno de ellos con más de 900MB de tamaño.
Ahora, la víctima deberá ejecutar el primero de los ficheros MKV, es decir, el del atributo FILENAME. El pentester debe configurar el módulo exploit/multi/handler para recibir la conexión o generarla, en función del tipo de payload que esté utilizando, reverse o bind.
Cuando el usuario de Windows 10 abra los videos con la aplicación VLC, ésta se cerrará inesperadamente y el pentester recibe la sesión a través del módulo exploit/multi/handler, tal y como se puede ver en la imagen.
Es recomendable estar al día a través de sitios como Exploit-DB o el propio Github de Metasploit, ya que se puede encontrar información interesante sobre nuevos módulos que pueden aparecer en breve en la rama master.
Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advance Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths
Figura 1: Exploit para VLC 2.2.8 o inferior con ejecución de código en Windows10 |
Estos archivos MKV están creados de forma que cuando la aplicación ‘parsea’ el archivo se produce la explotación del UAF y la consiguiente ejecución de código. Cuando el exploit falla, se produce una denegación de servicio, ya que la aplicación ‘crashea’. El 9 de julio se publicó en SecLists el detalle de la vulnerabilidad con el exploit. Lo que más llamó la atención era el funcionamiento de la vulnerabilidad de tipo fileformat en los sistemas Windows 10.
Apareció un módulo para Metasploit
A día de hoy está en proceso de ‘pull request’ para que el módulo que ha aparecido se integre en la rama oficial de Metasploit. He querido probar el módulo y ver si realmente era funcional. Como indica la descripción, el módulo funciona para sistemas de 32 y 64 bits. La vulnerabilidad radica en el ‘parseo’ de los ficheros MKV.
Figura 2: Descripción del módulo de Mestasploit para el CVE-2018-11529 |
Para llevar a cabo la explotación de la vulnerabilidad, el módulo genera dos ficheros: el fichero que contiene el código que explota la vulnerabilidad, el segundo ayuda para disponer de la ruta del código vulnerable. El segundo debe encontrarse en el mismo directorio que el primero, cuando éste sea ejecutado.
Los payloads que se pueden utilizar y que se indican en la descripción son los exec, tanto en 32 como en 64 bits, y las shell reverse y de tipo bind, de nuevo en 32 y 64 bits. Los payloads de tipo Meterpreter provocan el crasheo de la aplicación.
PoC: Probando todo en mi entorno
Lo primero fue hacerse con la versión adecuada de VLC, ya que ésta no es la última. Es cierto, que la vulnerabilidad afecta a la última, y previas, de la rama 2.2.X, pero tenemos que tener en cuenta que existe la versión 3.0.0, 3.0.1, 3.0.2 y 3.0.3, por lo que se recomienda actualizar. La versión 2.2.8 es la última antes de que VLC pasara a la versión 3.0.0. Si queréis montar la prueba se puede obtener cualquier versión de VLC desde su repositorio de versiones.
Para poder obtener el módulo, ya que no se encuentra a día de hoy en la rama master, se puede descargar desde el Github de Metasploit en un Pull Request que se ha realizado y que, cuando se valide, pasará a formar parte de la rama oficial.
Figura 3: Opciones del módulo |
Si miramos las opciones del módulo, son las típicas de un módulo de tipo FileFormat. Es decir, tenemos unos atributos para dos archivos que se generarán, los comentados anteriormente. Además, si ejecutamos show targets podemos ver para qué sistemas está probado el módulo. En este caso, versión VLC 2.2.8 en Windows 10 de 64 y 32 bits.
Se debe configurar el payload que se quiere meter en los archivos para que, en caso de que el exploit tenga éxito, se lleve a cabo la ejecución de código. Para este ejemplo, se ha utilizado una shell reverse TCP. El resultado de la ejecución del módulo es la creación de un par de ficheros MKV, uno de ellos con más de 900MB de tamaño.
Figura 4: Ficherso .mkv creados |
Ahora, la víctima deberá ejecutar el primero de los ficheros MKV, es decir, el del atributo FILENAME. El pentester debe configurar el módulo exploit/multi/handler para recibir la conexión o generarla, en función del tipo de payload que esté utilizando, reverse o bind.
Figura 5: Configuración del hadler |
Cuando el usuario de Windows 10 abra los videos con la aplicación VLC, ésta se cerrará inesperadamente y el pentester recibe la sesión a través del módulo exploit/multi/handler, tal y como se puede ver en la imagen.
Figura 6: Sesión obtenida |
Es recomendable estar al día a través de sitios como Exploit-DB o el propio Github de Metasploit, ya que se puede encontrar información interesante sobre nuevos módulos que pueden aparecer en breve en la rama master.
Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advance Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”, Microsoft MVP en Seguridad y Security Researcher en ElevenPaths
No hay comentarios:
Publicar un comentario