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:
Objeto Flash empaquetado (paquete de exploits)
Y este es el aspecto que tiene después de desenmarañar su código:
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.
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.
Objetos binarios cifrados dentro del objeto Flash
Así se descifra y entrega uno de los objetos:
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
- 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.
- Exploit para la vulnerabilidad 2014-0569 de Adobe Flash
- Exploit para la vulnerabilidad CVE-2014-0515 de Adobe Flash Player
Exploit para la vulnerabilidad CVE-2013-2551
Exploits para la vulnerabilidad CVE-2014-6332
Exploit para la vulnerabilidad 2014-0569
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:
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.
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.
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.
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.
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".
Parte principal del código shell32.dll
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.
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á.
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