Esta publicación del blog fue escrita por  @hasherezade  y  Jérôme Segura .

Recientemente detectamos un ataque de descarga drive-by tratando de explotar CVE-2018-4878 , una vulnerabilidad en Flash Player, en una secuencia que no coincidía con ninguno de los patrones de kits de exploits que actualmente rastreamos. Tras la investigación, descubrimos algo nuevo para nosotros, pero es parte de un marco de explotación existente mencionado a fines de 2017 por la empresa china de seguridad Qihoo360. En ese momento, la carga útil parecía ser un troyano que empujaba adware. ( Nota: el 26 de julio, nuestros colegas de TrendMicro publicaron una publicación de blog que lo llamó el kit de explotación de Underminer ).

Desde la última documentación, ha habido cambios en los exploits que se utilizan, aunque el método de distribución es similar. Un aspecto interesante que no vemos mucho en estos días es el uso del cifrado para empaquetar exploits sobre la marcha, que requiere una clave del servidor backend para descifrarlos y ejecutarlos.

La carga útil servida en esta campaña también es fuera de lo común porque no es un archivo PE estándar. En cambio, se trata de un formato ejecutable personalizado de varias etapas, que actúa también como un descargador para recuperar los scripts LUA utilizados por los actores de la amenaza que están detrás de la   botnet minera Hidden Bee . Este fue quizás el primer caso de un bootkit que se usa para esclavizar máquinas que extraen criptomonedas.

Visión general de la campaña

Los atacantes están aprovechando la publicidad maliciosa en sitios para adultos para redirigir a sus víctimas a la página de inicio del kit de explotación. Creemos que esta campaña se dirige principalmente a los países asiáticos en función de los anuncios que se sirven y nuestros propios datos de telemetría. Un servidor que pretende ser un servicio de citas en línea contiene un iframe malicioso responsable de las fases de explotación e infección.

Tráfico play-by-play

IE explotar

Con algunas excepciones, los kits de exploits suelen ofuscar su página de destino y sus exploits. Pero aquí los actores de la amenaza van más allá usando cifrado y requiriendo un intercambio de claves con el servidor back-end para descifrar y ejecutar el exploit. En el pasado, los kits de exploits Angler , Nuclear y Astrum han abusado del protocolo de intercambio de claves Diffie-Hellman de forma similar para evitar que los analistas vuelvan a reproducir el tráfico malicioso.

La ejecución del código malicioso comienza desde una página web con un bloque encriptado incrustado. Este bloque está codificado y cifrado en Base64 con uno de dos algoritmos: RC4 o Rabbit .

Después de ser descifrado, el bloque se ejecuta. Puede encontrar la versión decodificada de Java Script que se está ejecutando aquí . Como puede ver en el script, genera una clave de sesión aleatoria y luego la encripta con la clave RSA pública del atacante:

La clave cifrada se transfiere a la siguiente función y se convierte a formato JSON para realizar una solicitud POST a la URL codificada:

Esto es lo que podemos ver si observamos el tráfico entre el cliente y el servidor (el cliente envía la «clave» encriptada y el servidor responde con el «valor»):

Lado del servidor

  • Con la clave RSA privada de los atacantes, el servidor descifra la clave de sesión aprobada.
  • Lo usa para encriptar el contenido del exploit con un algoritmo simétrico elegido (Rabbit o RC4).
  • Devuelve el contenido cifrado al cliente.

Gracias al hecho de que el cliente todavía tiene una versión no encriptada de la clave en la memoria, puede descifrar y ejecutar el exploit. Sin embargo, los investigadores que solo tienen capturado el tráfico no pueden recuperar la clave de sesión original y es imposible reproducir el exploit. Afortunadamente, logramos capturar el exploit durante el análisis dinámico.

Creemos que el exploit descifrado es CVE-2018-8174,  ya que una de nuestras máquinas de prueba parcheadas contra CVE-2016-0189 fue explotada con éxito.

Flash exploit

Este nuevo exploit de Flash ( CVE-2018-4878 ) no formaba parte del kit de herramientas de exploit en el momento en que Qihoo lo documentó, y parece ser una adición más reciente para mejorar sus capacidades. El Shellcode incrustado en el exploit es un descargador para la próxima etapa.

Tras una explotación exitosa, recuperará su carga útil en la siguiente URL:

Este archivo, dado el .wasm de extensión, pretende ser un módulo de Web Assembler. Pero, de hecho, es algo completamente diferente, que parece ser un formato ejecutable personalizado o un archivo PE modificado y sin encabezado.

Comienza a partir de los nombres de las DLL que se necesitarán durante la ejecución:

Como puede ver, carga Cabinet.dll que se utiliza para desempaquetar archivos contenedores. En secciones posteriores, vimos las API y cadenas que se utilizan para la comunicación a través del protocolo HTTP. También encontramos referencias a «dllhost.exe» y «bin / i386 / core.sdb».

Es fácil adivinar que este módulo descargará algo y se ejecutará a través de dllhost.exe.

Otra cadena interesante es un contenido codificado en Base64:

El contenido decodificado apunta a más URL:

http://103.35.72.223/git/wiki.asp?id=530475f52527a9ae1813d529653e9501
http://103.35.72.223/git/glfw.wasm
http://103.35.72.223/rt/lsv3i06rrmcu491c3tv82uf228.wasm

Al observar el tráfico capturado por Fiddler, descubrimos que, de hecho, esas URL están siendo consultadas:

Las solicitudes provienen de dllhost.exe, por lo que significa que el ejecutable anterior se inyectó allí.

El archivo glfw.wasm  no tiene nada en común con Web Assembly. Es, de hecho, un archivo Cabinet, que contiene contenido empaquetado en la ruta interna bin / i386 / core.sdb. Mirando hacia adentro, encontramos el mismo formato ejecutable personalizado, comenzando desde nombres de DLL:

Entonces, el tráfico HTTP se detiene. Este fue otro aspecto interesante de esta amenaza, porque los actores de la amenaza quizás intenten ocultar el tráfico pretendiendo usar el protocolo SLTP para recuperar la carga real, que se puede ver en las cadenas extraídas del archivo del gabinete dentro del núcleo. sdb :

INSTALL_SOURCE
& sid =% u
INSTALL_SID
INSTALL_CID
sltp: //setup.gohub [.] en línea: 1108 / setup.bin? id = 128
ntdll.dll
ZwQueryInformationProcess
Numero de volumen
SCSIDISK
os =% d & ar =% d
kernel32.dll
IsWow64Process
RtlGetNtVersionNumbers
% 02x
& sz =
sltp

Ese nombre de host se resuelve en 67.198.208 [.] 110:

Pinging setup.gohub.online [67.198.208.110] con 32 bytes de datos:
Respuesta de 67.198.208.110: bytes = 32 tiempo = 76ms TTL = 51

El tráfico de red TCP encriptado de nuestra máquina de espacio aislado muestra cómo se recupera la carga binaria:

Todo este proceso de recuperación y recuperación de cargas útiles es bastante complejo, especialmente a la luz del propósito de esta campaña drive-by. Los hosts infectados reciben instrucciones para extraer criptomonedas:

Lo que es único de este minero es que logra la persistencia mediante el uso de un bootkit, como se describe aquí . Los hosts infectados tendrán su registro de arranque maestro modificado para iniciar el minero cada vez que arranque el sistema operativo.

Un ataque sofisticado para una simple carga útil

Este ataque es interesante en muchos niveles por su uso de diferentes tecnologías tanto en la parte de entrega de exploits como en la forma en que se empaqueta la carga útil. De acuerdo con nuestra telemetría, creemos que también se enfoca en unos pocos países asiáticos seleccionados, lo que tiene sentido al considerar su carga útil.

También muestra que los actores de amenazas no han renunciado completamente a los kits de exploits, a pesar de una tendencia a la baja notoria en los últimos años.

Proteccion

Malwarebytes detecta los exploits de IE y Flash, lo que provoca que la cadena de infección se detenga desde el principio.

Indicadores de compromiso

Sitio de citas inyectado

144.202.87 [.] 106

Kit de herramientas de explotación

103.35.72 [.] 223

52he3kf2g2rr6l5s1as2u0198k.wasm

087FD1F1932CDC1949B6BBBD56C7689636DD47043C2F0B6002C9AFB979D0C1DD

glfw.wasm

CCD77AC6FE0C49B4F71552274764CCDDCBA9994DF33CC1240174BCAB11B52313

Payload URL e IP

setup.gohub [.] en línea: 1108 / setup.bin? id = 128
67.198.208 [.] 110

Miner Proxy

133.130.101 [.] 254