Hacking – Explotando la peligrosa vulnerabilidad que WinRar ha tenido durante 19 años, con código de ejemplo real.

En este post te voy a enseñar de que trata la peligrosa vulnerabilidad que WinRar lleva arrastrando durante 19 años y como explotarla con un código de ejemplo. Dicha vulnerabilidad ha sido descubierta recientemente (hace apenas un mes) por un grupo de investigadores de Check Point Software Technologies. Podéis leer mas información acerca en el siguiente enlace.

Winrar es un software que permite comprimir/ descomprimir archivos en formatos rar y zip entre muchos otros y que es utilizada según el sitio web de Winrar, por más de 500 millones de usuarios.

¿Cómo funciona esta vulnerabilidad?

La vulnerabilidad en concreto afecta a una librería que Winrar utiliza para descomprimir archivos en formato ACE y que es de código privado. Dicha librería “UNACEV2.DLL” no filtra correctamente los “transversal path”, que no es más que añadir algo como “/../” en la ruta de un archivo y que el sistema operativo entiende como directorio padre. Y ésto es especialmente delicado cuando descomprimimos un archivo, ya que WinRar podría descomprimir archivos fuera de la carpeta donde le hemos dicho que queremos descomprimir el archivo ACE, y poner archivos no deseados en carpetas del sistema potencialmente peligrosas.

Siendo mas concretos, esta vulnerabilidad permite entre otras cosas, que simplemente descomprimiendo un archivo ACE con WinRar, se puedan descomprimir sin que lo sepamos ejecutables potencialmente peligrosos en la carpeta “C:\Users\<usuario_de_windows>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup”. Esta carpeta es especialmente vulnerable porque todos los archivos ejecutables que se encuentren en ella serán ejecutados automáticamente cuando nos “logueemos” en Windows. Imagina que ocurre si Winrar descomprime un virus, un keylogger o un ransomware en esta carpeta. ¡¡Jodidos vamos a estar!!.

Y ¡sí! ya sé que alguno pensará que nunca ha descomprimido un archivo “.ace” porque no son muy comunes, pero… ¿ y si te digo que te la pueden colar con un archivo “.rar” o un “.zip” ?. ¿ La cosa cambia verdad ?

En realidad, para esta vulnerabilidad se utilizan archivos con la extensión “.rar” para asegurarse que WinRar sea el encargado de descomprimirlo, pero se pueden renombrar a “.zip”, ya que siempre y cuando Winrar sea el encargado de descomprimirlo, te la pueden colar. Resulta que Winrar no decide si el archivo es en realidad un “.ace” basándose en la extensión del archivo, sino basándose en la información interna (“header”) de dicho archivo, por lo tanto puedes renombrarlo a “.rar” o “.zip” que seguirá funcionando.

Otro dato importante es que como he dicho anteriormente, la librería “UNACEV2.DLL” no filtra correctamente los “transversal path”. En realidad si que los filtra, de hecho filtra de la ruta de destino del archivo todo lo que contenga “/../” o “\..\”, pero no filtra cosas como “../”. Por esto mismo, se puede al menos subir un directorio. Si resulta que el archivo comprimido lo pusiste en Desktop (“Escritorio” –> “/Users/<usuario_de_windows>/Desktop”) o Downloads (“Descargas” –> “/Users/<usuario_de windows>/Downloads” –> el sitio por defecto cuando descargas archivos de Internet desde tu navegador), “UNACEV2.DLL” podrá acceder fácilmente al directorio “\Users\<usuario_de_windows>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\” y descomprimir cualquier ejecutable ahí. Dicho ejecutable se ejecutará en el próximo inicio de sesión y ¡”pwned”!. ¡Tu PC infectado!

A modo de ejemplo, supón que descargas de Internet un archivo “.rar” infectado al directorio “/Users/<usuario_de windows>/Downloads”. Supongamos también que este archivo comprimido infectado contiene un virus “soymuuumalo.exe” en su interior y su ruta de destino se ha modificado adrede para que se descomprima en “C:\C:C:../AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\”. Lo que ocurrirá será que al descomprimir, Winrar filtrará “C:\C:C:” e interpretará el transversal path “../” como “/Users/<usuario_de windows>/”, ya que el archivo se encuentra en la subcarpeta “Downloads” . A partir de ahí, añade “AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\” y ¡bualá!. El directorio final donde se descomprimirá el virus será “/Users/<usuario_de windows>/AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\”. Ahora simplemente a esperar que te vuelvas a “loguear” en Windows para que el virus sea ejecutado automáticamente.

Creando nuestro archivo malvado

En GitHub he creado un repositorio que contiene un programa en Python que te permitirá de forma muy fácil crear estos archivos “.ace” camuflados como “.rar”, que explotan la vulnerabilidad de Winrar. Dicho proyecto esta basado en otro proyecto del usuario WyAtu, al cual le he modificado el código y creado un sistema de carpetas para que con tan solo poner tu archivo maligno y tus archivos dummies (“Aquellos que sirven para poner de relleno en el archivo comprimido y que la victima se piense que es un archivo legítimo”) en las carpetas correspondientes, el programa generará un archivo “.rar” que será el que tendrá que ejecutar la víctima.

No hace falta decir que ésto en con fines educativos y que no hagáis “perrerias” con los archivos generados por este proyecto.

A modo de ejemplo, y para que podáis probarlo con seguridad, en vez de añadir un “.exe” que pudiera hacer cosas que no podéis comprobar mientras lo probáis, he añadido un archivo JScript de Microsoft (situado en “./files_to_pack/evil/evil_script.js” y que podéis editarlo para ver su código) que simplemente lanza el navegador predeterminado en vuestro PC y carga mi pagina web. Suficiente para comprobar que la vulnerabilidad funciona y que vuestro equipo os abre el navegador automáticamente con mi blog al volver a “loguearos” en Windows después de haber sido infectados.

Para generar el archivo malvado “rar” basta con clonar o descargar el repositorio https://github.com/DANIELVISPOBLOG/WinRar_ACE_exploit_CVE-2018-20250 en una carpeta de vuestro PC, instalar Python 3.7 en Windows y ejecutar el programa con:

py ./create_exploit.py

Si todo ha ido bien y no hay errores, veréis una nueva carpeta llamada “build” que contiene el archivo “exploit.rar”

Probando nuestro archivo malvado

Para probar que “exploit.rar” funciona correctamente podéis copiarlo a la carpeta “Descargas” de vuestro PC y con Winrar (versión <= 5.60 ) descomprimirlo.

Podréis ver como ha descomprimido el archivo “dummy” (“downloadthemovie.txt”) del proyecto en la misma carpeta.

Lo que la víctima no verá es que se ha creado otro archivo que contiene el ejecutable malicioso en la capeta “/Users/<usuario_de windows>/AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\”. Este archivo se creará con un nombre al azar (utilizando la función “UUID”) pero manteniendo la extensión original del archivo “./files_to_pack/evil/evil_script.js”.

Ahora solo queda reiniciar el PC y veréis como tras “loguearos” en Windows, automáticamente se ejecutará este archivo y se abrirá el navegador por defecto cargando mi blog.

¿Cómo puedo protegerme?

Muy simple, desinstala cualquier versión de Winrar <= 5.60 e instala la nueva versión (5.70) desde su página de descargas. En esta versión han quitado el soporte la descomprimir archivos ACE.

Happy hacking!

 

 

(Visited 91 times, 1 visits today)

Si te ha gustado y quieres compartir esta página..