Redes Sociales

martes, 17 de junio de 2014

El negocio de los Drive-by-downloads

La creciente concienciación de los usuarios con respecto a las buenas prácticas de seguridad en la navegación por internet provocó, hace un par de años, la aparición de nuevas técnicas, por parte de los ciberdelincuentes que permitían la infección del ordenador del usuario sin la intervención de éste.

Entre esas técnicas apareció lo que se ha venido a llamar técnicas drive-by-download. Esta técnica se basa en aprovechar vulnerabilidades del software de navegación de la víctima (ya sean Internet Explorer, Mozilla Firefox, Google Chrome, Opera, Safari, o cualquiera de la miríada de navegadores que se existen por internet) para infectar el equipo del usuario, en el mismo momento y por el simple hecho de que la víctima visite una página web maliciosa o legítima pero comprometida.

Para facilitar esta técnica existen lo que se llaman exploit-kits que se venden en el mundo underground (por precios tan reducidos como 100$ por licencia). Hay un gran numero de estos exploit-kits, como BlackHole (tal vez el más conocido, aunque ya en desuso), Phoenix, eCore, Eleonore, Incognito, Angler, CottonCastle, JustExploit, Cool EK... pero el numero total de ExploitKits existente desde la aparición del primero (MPack en 2006) supera el centenar.

Un exploit kit puede constar de uno o dos componentes principales. Por una parte, un script, generalmente escrito en PHP o Javascript ofuscado que se instala en una página legítima comprometida, que tiene como única tarea la redirección de la victima hacia un servidor de explotación. En ocasiones este script no existe y es el propio servidor comprometido el que actúa como servidor de explotación. El servidor de explotación contiene un "bundle" o paquete de exploits que son los que se intentan instalar en el equipo de la víctima.

Se encuentran en el mercado negro exploit kits (EK) "inteligentes" y "tontos". Un EK "tonto" simplemente intenta ejecutar todos los exploits que vienen en el paquete contra el navegador de la víctima independientemente de cual sea éste y cuales sean sus características. Los EK inteligentes en cambio comprueban cuales son las versiones del navegador, cuales son las extensiones instaladas y otras características e intentan ejecutar solo unos pocos exploits contra ese navegador. Por supuesto, los EK inteligentes son más caros que los tontos en el mercado negro5.

Pero los exploit kits ya no solo se aprovechan de las vulnerabilidades en los navegadores si no de todas las extensiones que llevan instaladas y de los programas que utilizan para mostrar las páginas web cada vez más complejas que encontramos en nuestra navegación diaria. Actualmente todos los exploit kits se aprovechan de vulnerabilidades en los lectores de PDF, Flash y por supuesto, de Java).

El funcionamiento de estos exploit-kits es casi siempre igual. Lo primero de todo es necesario conseguir tráfico (es decir visitas) hacia el servidor donde esté instalado el exploit-kit. Para ello existen dos opciones:

  • O bien comprometer un servidor legítimo e inyectarle código para que, además de mostrar la página web legítima nos redirija hacia nuestro servidor malicioso.
  • O bien conseguir visitas directamente hacia un servidor malicioso, cosa mas complicada de conseguir.

La primera opción generalmente se consigue inyectando código en la pagina web legítima, generalmente código JavaScript o PHP, que lo que hace es abrir una nueva ventana de nuestro navegador, generalmente oculta (invisible) y/o con un tamaño de página de un pixel. Esa ventana tan pequeña cargará una web maliciosa controlada por el atacante que comprobará el tipo y la versión del navegador para buscar una vulnerabilidad y explotarla. De esta forma, sin que el usuario se haya dado cuenta, con el simple hecho de visitar una página web legítima (pero que haya sido comprometida) el equipo del usuario habrá sido también comprometido. De esta manera, el ultimo paso consiste en la instalación de un malware en nuestro equipo aprovechando cualquiera de las vulnerabilidades antes mencionadas.

Existe, por supuesto una tercera opción consistente en la compra de tráfico en el mercado negro. Este tráfico procede de sitios legítimos comprometidos. Lo que se nos vende en estos servicios es la modificación del script de redirección de manera que cuando una victima visite esta web comprometida redirija hacia nuestro servidor de explotación. Estos servicios se vende por precios tan reducidos como 40 dólares por 1000 visitas redirigidas6.

En la siguiente imagen se puede ver el código fuente de una página web de un servicio de transferencia de dinero que fue comprometido en 2012. Como se puede ver el código javascript, que aparece abajo desofuscado, simplemente abre un iframe de 10x10, oculto, y carga una la web de un servidor de explotación donde el navegador de la victima será atacado en busca de un agujero de seguridad:

En 2011 la web de mysql.com fue comprometida y se le instaló un exploit kit que provocó que entre el 9 y el 14% de los visitantes posteriores quedaran infectados. Dado el volumen de tráfico de este dominio, un alcance del 14% supuso miles de equipos infectados. El acceso a estos equipos infectados fue posteriormente vendido en el mercado negro aportando grandes beneficios para los atacantes6.

El mundo del malware se ha convertido en un negocio, con margenes de beneficio incluso mayores que el mercado de la droga3 y que esta forma tan fácil de comprometer equipos es todo un negocio. En concreto el mercado underground ruso se ha especializado en este negocio5, en la venta de tráfico legítimo redirigido, exploit kits, servicios Pay-Per_install...

Existen tres formas diferentes, en dichos mercados, de contratar un licencia de un exploit-kit. La más sencilla y que menos conocimientos técnicos requiere es la de contratar un servidor de explotación (un exploit-server) ya instalado, con su exploit-kit ya instalado y con su tráfico de entrada (procedente de un servidor comprometido). Vamos, te lo dan todo hecho. Tu sólo tienes que ir viendo, en el panel de control como van creciendo los equipos comprometidos a los que tienes acceso.

La segunda forma de contratación es alquilando un servidor de explotación con el exploit-kit ya instalado, pero sin el tráfico de entrada. En este caso tu te tienes que currar el comprometer una página web legítima y que redirija el tráfico hacia esta plataforma maliciosa. Esto tampoco es mucho problema, porque sólo será necesario comprar, en el mercado negro, el acceso a una web legítima que haya sido comprometida y redirigirla hacia nuestra plataforma maliciosa.

Estas dos primeras opciones son conocidas como EaaS (Exploitation-as-a-service) y son todo un negocio en auge.

La tercera opción (que es más bien un "do-it-yourself"), consiste simplemente en alquilar el software del exploit-kit para que te lo instales en tu propio servidor y consigas por tu cuenta el tráfico entrante. Esta opción requiere algo mas de conocimientos técnicos pero tampoco especialmente profundos. Es poco menos que un siguiente-siguiente-siguiente.

Como vemos, siempre se habla de alquilar y no de comprar. La razón es que los exploit-kits deben permanecer siempre actualizados, puesto que las vulnerabilidades que aprovechan son constantemente parcheadas en los ordenadores. Los clientes de exploit-kits obtienen actualizaciones automáticas durante el tiempo que tienen contratado el exploit-kit.

Panel de control del Exploit kit Blackhole

Como muestra, un botón. En un estudio1 se comentaba que cuando salió la versión 2.0 de Blackhole, en tan solo 19 días todos los servidores de explotación conocidos se habían actualizado a dicha versión.

Como vemos los servidores de explotación generalmente son servidores dedicados, es decir, específicamente dedicados a este fin, en vez de servidores comprometidos como podría pensarse.

Esto puede hacer creer que sean fácilmente detectables y cancelables. Sin embargo un estudio1 detectó que más del 60% de los servidores de explotación pertenecen a servicios de hosting en la nube. Aprovechando el boom de servicios de hosting cloud realmente baratos, con servidores virtuales privados desde 6-8€ al mes y con servidores físicos dedicados desde 50€ al mes, el mercado de los exploit-servers no dudó en migrar hacia la nube. Además, en muchos casos, estos servicios en la nube eran fáciles de contratar, simplemente aportando un tarjeta de crédito, que, de nuevo, es fácilmente comprable a través del mercado negro.

Además, y para acabar de rematar la faena, estos servidores en la nube, permiten la contratación por periodos de tiempo reducidos (a veces hasta de un sólo día), resultando así en cargos menores en la tarjetas (y por tanto más difícilmente detectables) y en mayor movilidad de los servidores de explotación y por tanto mayor dificultad de detección.

El hecho de conocer tan bien este modelo de negocio podría hacer pensar que es fácil de denunciar y parar. Sin embargo son muchas las técnicas que utilizan los ciberdelincuentes para evitar ser detectados.

Otro estudio2 revela que la vida media de los servidores de explotación simples (después de su puesta en funcionamiento) es de apenas 16 horas y los dominios que redirigen a estos servidores de explotación tienen una vida media de apenas 2.5 horas. Un típico ejemplo de fast-flux en DNS.

Esto hace que sea virtualmente imposible mover tan rápidamente la maquinaria para la detención de las personas que montan esos servidores y contratan esos dominios. Además, según un estudio 1 el 60% de los informes de abuso presentados reportando servidores de explotación nunca recibieron respuesta y los que fueron cerrados tardaron una media de 4.3 días ser cerrados.

Además, la utilización de servicios en la nube fácilmente contratables con una simple tarjeta de crédito hacen que sea muy simple utilizar una tarjeta de crédito robada para contratarlos. Cierto es que el exploit server manager debe conectarse a este servidor y debe tener una IP que debe quedar registrada en por los proveedores de servicios en la nube. Sin embargo el uso de redes privadas virtuales, servicios de anonimización y el hecho de que la gran mayoría de las veces estas IPs provengan de oscuros ISPs de países del Este (Rusia, Ucrania, China) hacen poco menos que imposible el arresto de estos ciberdelincuentes.

Por otra parte, generalmente no es una única persona la que monta todo esta infraestructura maliciosa. Hay cuatro actores principales que interactúan en este modelo de negocio. Por una parte la víctima que casi siempre desconoce que esta siendo utilizada. Puede no perder (ni ganar) un céntimo en todo este negocio pero notará que el ordenador va lento, hace cosas raras y recibe correos extraños. El segundo actor es el proveedor de servicios PPI (Pay-per-install). Su tarea es el desarrollo de un programa (exploit kit) que se aprovecha de una serie de vulnerabilidades para poder tomar el control remoto de un ordenador. También son los encargados de proveer de una infraestructura de tráfico y de servidores de explotación. Persona o grupo de personas con conocimientos técnicos muy profundos que, no son delincuentes en sí, pero digamos que son "relajados" desde un punto de vista ético, ya que saben para qué serán utilizados sus programas y servicios.

El tercer actor es el cliente de servicios PPI. Esta persona u organización contrata los servicios (servidor de explotación) y programas (exploit kits) a los proveedores de servicio, infecta a las victimas finales y obtiene beneficios por métodos que luego mencionaremos. Y por ultimo estan los "afiliados", contratados por los proveedores de servicios para tareas concretas (empaquetado, cifrado, distribución de malware, por ejemplo)4.

Como decimos, todo este mundo es un gran mercado. No es dificil encontrar sitios (Sellmeyourtraffic, trafficadventure...) donde se compran/venden visitas a sitios maliciosos por precios tan ridiculos como 1 dolar por 1000 visitas. Posteriormente, una vez que los ciberdelincuentes han conseguido infectar una maquina tienen muchas maneras de sacarle partido a esa infección (por la que han pagado su dinero), Spamming, Robo de información, suplantación de personalidad, Clickfraud, reconversión del equipo en un proxy remoto y malware como falsos antivirus, etc.

En resumen y como lecciones aprendidas podemos decir:

  • NO estamos seguros navegando por Internet. En cualquier momento una web conocida puede resultar comprometida, dar la casualidad de que pasemos por ahí en ese mismo instante y quedar nosotros infectados sin saber cómo ni por qué.
  • La mejor manera de evitar ser infectados es mantener nuestro equipo actualizado. Los exploit kits se aprovechan de todas las vulnerabilidades conocidas que son publicadas. Los fabricantes actualizan constantemente su software para solucionar esas vulnerabilidades. Si tenemos nuestro software actualizado, aunque caigamos en una web comprometida, el exploit kit no podra encontrar ningún agujero en nuestro navegador y nunca resultaremos infectados.
  • El mundo del fraude underground es todo un negocio. Mueve mas de 400 millones de euros anuales y es un negocio al alza.




Para saber mas:

1 "Measuring Pay-per-Install: The Commoditization of Malware Distribution". Juan Caballero, Chris Grier, Christian Kreibich, Vern Paxson . USENIX Security Symposium, 2011

2 "Manufacturing Compromise: The Emergence of Exploit-as-a-Service". Chris Grier, Lucas Ballard, Juan Caballero, Neha Chachra, Christian J. Dietrich, Kirill Levchenko, Panayiotis Mavrommatis, Damon McCoy, Antonio Nappa, Andreas Pitsillidis, Niels Provos, M. Zubair Rafique, Moheeb Abu Rajab, Christian Rossow, Kurt Thomas, Vern Paxson, Stefan Savage, Geoffrey M. Voelke. ACM CCS, 2012

3 "Markets for Cybercrime Tools and Stolen Data", Hackers' Bazaar, Lilian Ablon, Martin C. Libicki, Andrea Golay, RAND 2014

4 "Measuring Pay-per-Install: The commoditization of malware Distribution". Juan Caballero, Chris Grier, Christian Kreibich, Vern Paxson. 2011

5 "Russian Underground revisited". Max Goncharov. Trendmicro

6 http://www.v3.co.uk/v3-uk/news/2112292/mysql-site-hit-drive-attack

jueves, 12 de junio de 2014

Challenge from Coursera's Malicious Software course

En el curso de Coursera de Malicious Software and its Underground Economy (https://class.coursera.org/malsoftware-002) que estoy siguiendo estos días nos pusieron un reto de un "crackme" donde había que ejecutar un programa e intentar introducir la palabra clave secreta correcta por teclado.

El ejecutable se puede encontrar aqui.

La pregunta era simple, e incluso traía pista, cosa que a mi al final me dio mas problemas que ayudas, ya que como veremos la pregunta no esta muy bien hecha (Hacer click para aumentar las imágenes):

Lo primero, pues era probar el ejecutable, que resultó ser un ejecutable ELF de Linux:

Como vemos a veces devolvía "Maybe" y a veces se quedaba bloqueado. Un "strings" también daba información interesante.

Así que el siguiente paso fue abrirlo en el IDA Pro, que nos descubrió un total de 5 funciones interesantes. Todas ellas sin nombres reales, solo mis amigas Sub_80489E3, Sub_8048776... vamos, muy agradable todo. No tardamos en encontrar una subrutina que tenia todo el aspecto de ser un main, el sub_8048A24 y que además contenía la parte donde se nos pide la cadena de texto:

...donde a grandes rasgos, se llamaba a una funciona anti-debugging, nos mostraba un texto, nos pedía el código y comprobaba si el primer carácter eran una C, una A o una N y en función de la letra que fuera, llamaba a una subrutina diferente.

La subrutina de anti-debug (la sub_80489E3) es bastante simple:

...y la sorteé modificando el ejecutable y sustituyendo el JNZ loc_8048A21 por un JMP 0x8048A21.

La subrutina de la "C", como yo la llamé, es decir la que se ejecuta cuando el texto introducido comienza por "C", básicamente no hacía nada. Creaba un fichero temporal en el que escribía "Woot!":

La subrutina de la "A" era más compleja, pero después de un rato me di cuenta que lo unico que hacia era conectarse con una IP y un puerto y hacer un netcat al mismo. Luego veremos por qué. Esta subrutina no tocaba para nada la cadena introducida por teclado.

Así que el meollo tenía que estar en la rutina "N", como yo la llamé o sub_8048743 como lo hizo mi amigo IDA. Sin embargo esta rutina es muy simple. Liosa, pero simple:

No tenía mucho sentido... hasta que me fijé en la linea roja del final de la función. Resulta que cuando IDA Pro detecta algún tipo de error en la instrucción RET, la pone en rojo. ¿A ver si es que no la va a ejecutar... y no vuelve a la funcion main?. ¿Y que hay despues de la funcion "N"?. Pues esto:

Al instante me llamó la atención la cadena "@EHJ@DZEL" de la ultima línea. Tras un rato de desensamblaje y con la ayuda del GDB (ya que parece que IDA no deja debuggear ejecutables en ELF, o al menos yo no se) descubre que ese trozo de código del centro lo que hace es sumar uno a cada caracter introducido y hacerle un XOR con 02Ah. Y claro, luego se compara con ese "@EHJ@DZEL" para sacar un texto u otro. Dos minutos más y sacamos el codigo descifrado: "ina_Simone". Siempre con la "N" delante, claro. Lo probamos en nuestro Linux y Eureka:

De ahi lo de hacer el netcat a esa IP y puerto.

Ahora ya sólo tenemos que escribir la respuesta (ina_Simone) en el "examen". Pues no, resulto que lo de "it's part of the input you provide and it is not the output the program produces" no era exactamente así. La respuesta correcta es "NiXx_SimXxe" (Lo haré publico cuando termine el periodo de evaluación) que es la entrada completa (no parte de ella) y la salida del programa también. En fin, a veces dar pistas lleva a mas confusión que ayuda.

Y esto es to, y esto es to, y esto es todo amigos!!