Publicaciones

Cómo esconder paquetes de exploits en un objeto Flash

Una de las cualidades más importantes de cualquier ataque malicioso es ser indetectable tanto para los sistemas de defensa, como para la víctima. El principal rol en la realización de un ataque oculto lo juegan los exploits para las vulnerabilidades de software, mediante los cuales se puede descargar código malicioso en el equipo de la víctima de una forma solapada. Como regla, los exploits se propagan en forma de paquetes de exploits, que constan de un plugin detector (que determina el software y la versión instalada en el equipo del usuario) y un conjunto de varios exploits, uno de los cuales se activa si se detecta la vulnerabilidad correspondiente.

Hace relativamente poco tiempo detectamos una nueva forma de camuflar un ataque mediante el uso de exploits: los delincuentes ponían un paquete de exploits en un fichero Flash.

Descarga de los exploits

El modo estándar de realizar un ataque drive-by es poner en una página web un enlace a una página que contenga un paquete de exploits (landing page, página de aterrizaje), que le descargue al usuario el exploit correspondiente. Desde el punto de vista del software de seguridad, este esquema desenmascara todos los componentes del paquete de exploit, ya que estos simplemente se almacenan en la página y como resultado tanto los exploits como el plugin detector están presentes en el tráfico. Para que el ataque pase inadvertido, los delincuentes tienen que camuflar cada uno de los componentes.

De hecho, el nuevo método no estándar, que usa el empaquetamiento en Flash, es más efectivo para los delincuentes. La página de aterrizajede costumbre brilla por su ausencia. Al seguir el enlace, el usuario llega a una página con un objeto Flash empaquetado, que en realidad es el paquete de exploit, y un fichero de configuración en forma de imagen. El fichero Flash empaquetado, que contiene a su vez el paquete de exploits, se carga a la página en el navegador con derechos de lectura y modificación, es decir, puede agregar a la página exploits para usarlos más adelante.

Analizaremos cómo funciona todo esto en el ejemplo del paquete de exploits Neutrino.

Así luche el objeto Flash empaquetado:

flash-exploit_1

Objeto Flash empaquetado (paquete de exploits)

Y este es el aspecto que tiene después de desenmarañar su código:

flash-exploit_2

Objeto Flash (paquete de exploits) desenmarañado

El empaquetamiento debe evitar que se detecte el objeto malicioso. La mayoría de los desenmarañadores difundidos no abren automáticamente este objeto Flash. Por ejemplo, SWF Decompiler se congela, mostrando un código de error.

flash-exploit_3
flash-exploit_4

Consecuencias de aplicar uno de los descompiladores estándar al objeto Flash del paquete de exploits Neutrino

El objeto Flash se graba en la página en el navegador del usuario con el parámetro allowscriptaccess = “always”, que permite modificar la página incluso si el objeto se ha cargado de otro dominio. Por una parte, no es muy seguro darle a Flash derechos de modificar una página, ya que el uso corriente de los objetos Flash no suele exigirlos, y esto nos hace sospechar. Pero al mismo tiempo, es una opción completamente legítima, y hay muchos contenidos Flash que se descargan de esta forma. Gracias a esta opción el objeto Flash malicioso simplemente extrae los exploits de sus datos binarios y los agrega a la página de los exploits.

De esta manera, el contenido malicioso no está presente ni en el tráfico, ni en la página que se entrega al navegador. Todo está escondido detrás de un buen empaquetador y los exploits van apareciendo a medida que el navegador va procesando la página.

Contenido del objeto Flash

Veamos qué contiene el objeto Flash de nuestro estudio y qué es lo que “escribe” en la página web. Después de realizar el desempaque, vemos seis objetos binarios. Estos objetos binarios están codificados con RC4 y algunos hasta vienen comprimidos con el algoritmo estándar deflate.

flash-exploit_5

Objetos binarios cifrados dentro del objeto Flash

Así se descifra y entrega uno de los objetos:

flash-exploit_6

Código del descifrado e inclusión del exploit en la página

Los demás objetos se descifran de manera similar.
Enumeraremos los objetos binarios contenidos en el paquete Flash:

  • Exploit para la vulnerabilidad CVE-2013-2551 de Internet Explorer
  • flash-exploit_7

    Exploit para la vulnerabilidad CVE-2013-2551

  • Biblioteca dll maliciosa que también es parte de las demás versiones del paquete de exploit Neutrino (de ella hablaremos más adelante).
  • Dos exploits para la vulnerabilidad CVE-2014-6332 en el procesador de Visual Basic de Internet Explorer.
  • flash-exploit_8
    flash-exploit_9

    Exploits para la vulnerabilidad CVE-2014-6332

  • Exploit para la vulnerabilidad 2014-0569 de Adobe Flash
  • flash-exploit_10

    Exploit para la vulnerabilidad 2014-0569

  • Exploit para la vulnerabilidad CVE-2014-0515 de Adobe Flash Player
  • flash-exploit_11

    Exploit para la vulnerabilidad CVE-2014-0515

Por cierto, el plugin detector para los exploits de Adobe Flash no está presente en este paquete de exploits, la versión de Adobe Flash se comprueba mediante ActionScript. Las versiones de Adobe Flash susceptibles a los ataques con exploits están indicadas en el código del paquete Flash:

flash-exploit_13

En las modificaciones más recientes se han introducido cambios al paquete Flash, entre ellas se ha agregado un exploit más para la vulnerabilidad CVE-2015-0536 en Adobe Flash.

Fichero de configuración

Analicemos otra función interesante en el paquete Flash.

Recordamos que junto con el objeto Flash, en la página de aterrizaje hay una imagen, que en realidad es un fichero de configuración.

flash-exploit_12

Una función especial lee la imagen de la página de aterrizaje, la descifra con Base64 y RC4 para obtener el fichero de configuración.

flash-exploit_20

Función de obtención del fichero de configuración

El fichero de configuración contiene las llaves e identificadores de los exploits mencionados más arriba y que se pueden cargar al equipo del usuario. La presencia de un fichero de configuración permite a los delincuentes tener flexibilidad en su trabajo: pueden, sin modificar el paquete de exploits en sí, ajustar los parámetros de su funcionamiento para hacer que sean los óptimos en determinado periodo de tiempo. Por ejemplo, indicar los exploits prioritarios o almacenar aparte las llaves de descifrado de objetos del paquete.

flash-exploit_14_sm

Fichero de configuración descifrado a partir de la imagen

Es más, en las siguientes modificaciones del paquete flash el fichero de configuración ya no viene como una imagen aparte, sino que está dentro del paquete exploit.

Recepción de la carga

El código shell de uno de los exploits es un código vbs con código binario en el renglón, que se ejecuta como resultado de la vulnerabilidad CVE-2014-6332 en el procesador del vbs en Internet Explorer. Como resultado se carga el fichero shell32.dll en la carpeta "%temp%/System32/”. š

La ruta y el nombre del fichero descargado son parecidos al nombre y dirección de las bibliotecas estándar de Windows. Esto permite, aplicando la técnica estándar dll hijacking, no usar las funciones run, start, open, etc. y así ocultar al antivirus que se está lanzando una biblioteca dll maliciosa.

flash-exploit_15

Uso del dll hijacking de shell32.dll

El exploit modifica la variable de entorno sysdir y trata de cargar System.ShellApplication, con lo que se inicia la biblioteca dll maliciosa.

La dll iniciada es un dropper que se carga al equipo de la víctima y lanza el script "p.js".

flash-exploit_16

Parte principal del código shell32.dll

flash-exploit_17

Script p.js iniciado

Este script es el principal cargador del fichero malicioso.

Propagación

La versión del paquete Flash descrito en este artículo apareció a finales de 2014 y se difundió activamente durante el primer trimestre de 2015. Más adelante aparecieron nuevas modificaciones del paquete Flash, pero sus principios de funcionamiento siguen siendo los mismos.

Sólo en marzo de 2015 detectamos ataques del paquete Flash Neutrino en los equipos de 60451 usuarios. En promedio, cada día cerca de dos mil usuarios sufrieron ataques y algunos días el número de víctimas potenciales creció hasta los cinco o seis mil unidades.

flash-exploit_18

Número de usuarios únicos atacados por el paquete Flash Neutrino

Este paquete de exploits se usa sobre todo en los ataques contra los usuarios de EE.UU. y Canadá.

flash-exploit_19

Territorios de los ataques del paquete de exploits Neutrino (mazo de 2015)

Conclusión

Esta técnica, relativamente nueva, de difundir exploits usando un paquete Flash resultó bastante exitosa para los delincuentes. Las propiedades estándar de Flash les permiten empaquetar los paquetes de exploits en objetos Flash y camuflarlos con un enmarañador. Y la posibilidad de Flash de indicar los parámetros de acceso a la página permite almacenar los exploits en la página en el navegador del usuario. Con esto, los componentes del paquete de exploits no están presentes en el tráfico ni en la página que se carga al navegador.

A pesar de que los escritores de virus modernizan todo el tiempo los paquetes de exploits y modifican el código malicioso de Flash para evitar la detección, Kaspersky Lab reacciona a tiempo ante estas amenazas. Aparte de los métodos estándar de defensa, nuestros productos usan un componente especial, llamado “Protección contra exploits” (AEP), que detecta esta amenaza mediante el analizador de comportamientos.

Kaspersky Lab detecta este paquete Flash como HEUR:Exploit.Script.Blocker, HEUR:Exploit.SWF.Generic.

Cómo esconder paquetes de exploits en un objeto Flash

Su dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Informes

MosaicRegressor: acechando en las sombras de UEFI

Encontramos una imagen de firmware de la UEFI infectada con un implante malicioso, es el objeto de esta investigación. Hasta donde sabemos, este es el segundo caso conocido en que se ha detectado un firmware malicioso de la UEFI usado por un actor de amenazas.

Dark Tequila Añejo

Dark Tequila es una compleja campaña maliciosa que tiene por objetivo a los usuarios ubicados en México, con el propósito principal de robar información financiera, así como credenciales de acceso a sitios populares que van desde versionado de código fuente a cuentas de almacenamiento de archivos en línea y de registro de dominios web.

Suscríbete a nuestros correos electrónicos semanales

Las investigaciones más recientes en tu bandeja de entrada