17 Abril, 2017 a las 13:11

El pasado día 8 FireEye anunció haber encontrado una vulnerabilidad en Word que permitía a un usuario ejecutar código VBScript mediante un fichero RTF que contiene un exploit, dicho documento descargará un fichero HTA con el código VBScript y lo ejecutará.

La vulnerabilidad se basa en la no comprobación del formato objetos OLE2Link vinculados por HTTP, que unido a que estos son tratados según el Content-Type de la respuesta HTTP en lugar de su extensión permiten ofrecer un ejecutable HTA en lugar de un supuesto RTF.

Es muy importante que para protegerte de esta vulnerabilidad instales el parche publicado por Microsoft el pasado martes.

Explotación de la vulnerabilidad CVE-2017-0199

Aunque existen varios modos de explotar esta vulnerabilidad vamos a explicar un modo sencillo y eficaz se hacerlo. Hay foros underground (especialmente rusos) que explican cómo hacerlo mediante ingeniería inversa a malware existente pero yo no recomiendo hacerlo así por razones obvias.

Lo primero que necesitaremos es tener un servidor Web con php habilitado. Además, deberemos configurar el servidor para que sea capaz se tratar los ficheros .rtf como si fueran PHP y así ejecutar código PHP. Para ello, si usamos Apache podemos editar el fichero /etc/apache2/mods-enabled/mime.conf y añadir la línea “AddType application/x-httpd-php .rtf”

Ahora habilita los módulos headers y mime ejecutando en la terminal:

a2enmod headers
a2enmod mime
service apache2 restart

Una vez hecho, en un equipo con Word crearemos un documento en Word con el texto que deseemos mostrar en el documento que queramos enviar a la víctima y lo guardaremos con formato RTF, en nuestro caso le pondremos de nombre template.rtf.

Este documento debemos editarlo con un editor de texto plano y añadirle al inicio del mismo un código PHP para que envíe la cabecera application/rtf como se ve en la siguiente imagen.

A continuación guardamos el fichero y lo subimos a nuestro servidor Web.

Una vez subido a nuestro servidor Web crearemos un nuevo documento RTF y añadiremos un objeto, esto podéis hacerlo desde la pestaña Insertar y pulsando sobre el botón “Objeto” dentro de la categoría Texto. Este objeto será la URL del documento anteriormente creado. Es importante marcar la opción vincular al archivo de esta forma no se incrustará el objeto de forma permanente si no que se vinculará para que pueda  actualizarse.

Una vez aceptado veréis que el texto del documento creado anteriormente queda incustrado en el documento. Este documento lo guardaremos con el nombre exploit.rtf.

Una vez guardado deberemos volver al documento inicial (template.rtf) y abrirlo de nuevo con un editor de texto plano, eliminar todo su contenido y escribir el script que deseemos. Además, en la primera línea deberemos establecer el Content-Type application/hda. Es importante no cambiar el nombre ni la extensión del fichero, únicamente el contenido ya que si no no el exploit no funcionará. En nuestro caso el fichero quedará de la siguiente manera.

Como veis, primero enviamos la cabecera y posteriormente ejecutamos el código. En nuestra prueba de concepto simplemente abrimos la calculadora pero podríamos ejecutar comandos en PowerShell, descargar un fichero, etc.

En este punto, si nosotros abrimos exploit.rtf y hacemos doble clic sobre el texto que hemos incrustrado se ejecutará el código VBScript que hemos creado (ejecutándose la calculadora). No obstante, lo curioso de este bug es que puede, además, hacerse de forma automática. Esto se consigue gracias a objupdate que como podéis ver en la RTF RFC obliga al documento RTF a actualizar el objeto al abrirse

Por tanto lo que tenemos que hacer es abrir el fichero exploit.rtf y buscar la línea del objeto, que dirá algo como:

  • \object\objautlink\rsltpict\objw8505\objh450

Y sustituirla por

  • \object\objautlink\objupdate\rsltpict\objw8505\objh450

Con esto al abrir el fichero RTF se actualizará el objeto ejecutándose el script.

Acerca de Miguel Díaz

Informático, enamorado de la programación, diseño Web y el deporte.
Categorías: Seguridad, Sin categoría. Etiquetas: , , , , , , , , .

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *