Seguimiento de Turla: nueva puerta trasera entregada a través de abrevaderos armenios


¿Puede un viejo APT aprender nuevos trucos? Los TTP de Turla no han cambiado en gran medida, pero el grupo recientemente agregó una puerta trasera Python.

Los investigadores de ESET encontraron una operación de abrevadero (también conocido como compromiso web estratégico) dirigida a varios sitios web armenios de alto perfil. Se basa en un señuelo falso de actualización de Adobe Flash y ofrece dos piezas de malware previamente indocumentadas que hemos denominado NetFlash y PyFlash.

Varios aspectos de esta campaña nos llevan a atribuir esta operación a Turla, un infame grupo de espionaje activo durante más de diez años. Sus objetivos principales incluyen organizaciones gubernamentales y militares. Anteriormente hemos informado sobre varias campañas de este grupo, incluidas Mosquito y LightNeuron.

Esta operación reciente tiene similitudes con varias de las campañas de abrevaderos de Turla que hemos rastreado en los últimos años. En particular, el modus operandi es similar a un Campaña descubrimos en 2017. Las diversas piezas de JavaScript utilizadas allí son casi idénticas a las de esta campaña, pero los objetivos y las cargas son diferentes.

Sitios web dirigidos

En esta operación específica, Turla ha comprometido al menos cuatro sitios web armenios, incluidos dos pertenecientes al gobierno. Por lo tanto, es probable que los objetivos incluyan a funcionarios gubernamentales y políticos.

Según la telemetría de ESET, los siguientes sitios web se vieron comprometidos:

  • armconsul (.) ru: La Sección consular de la Embajada de Armenia en Rusia
  • mnp.nkr (.) am: Ministerio de Protección de la Naturaleza y Recursos Naturales de la República de Artsakh
  • aiisa (.) am: El Instituto Armenio de Asuntos Internacionales y de Seguridad
  • adgf (.) am: El Fondo de Garantía de Depósitos de Armenia

Tenemos indicios de que estos sitios web se vieron comprometidos al menos desde principios de 2019. Notificamos al CERT nacional armenio y compartimos nuestro análisis con ellos antes de su publicación.

Los operadores de Turla aprovecharon métodos de acceso desconocidos a estos sitios web para insertar un fragmento de código JavaScript malicioso. Por ejemplo, para mnp.nkr (.) am, agregaron código ofuscado al final de jquery-migrate.min.js (una biblioteca JavaScript común), como se muestra en la Figura 1.

Figura 1. Código JavaScript ofuscado inyectado en el sitio web mnp.nkr (.) Am

Este código carga un JavaScript externo de skategirlchina (.) com / wp-includes / data_from_db_top.php. Analizamos este código en la siguiente sección.

Desde finales de noviembre de 2019, notamos que skategirlchina (.) com ya no entregaba scripts maliciosos. Por lo tanto, es probable que los operadores de Turla hayan suspendido esta operación de abrevadero.

Huellas digitales y entrega de malware

Al visitar una página web comprometida, el JavaScript malicioso de la segunda etapa es entregado por skategirlchina (.) com y huellas digitales del navegador del visitante. La Figura 2 muestra la función principal de este script.

Si es la primera vez que el navegador del usuario ejecuta el script, agregará un Evercookie con un valor MD5 aparentemente aleatorio proporcionado por el servidor, diferente en cada ejecución del script. La implementación de evercookie se basa en el código disponible en GitHub. Utiliza múltiples lugares de almacenamiento, como la base de datos local, objetos compartidos locales (cookies Flash), almacenamiento Silverlight, etc., para almacenar el valor de la cookie. En comparación con una cookie normal, será mucho más persistente ya que no se eliminará si el usuario simplemente elimina las cookies del navegador.

Este evercookie se usará para rastrear si el usuario visita nuevamente uno de los sitios web comprometidos. Cuando el usuario regrese por segunda vez, el valor MD5 previamente almacenado se usará para identificarlos.

Luego, recopila varias piezas de información, incluida la lista de complementos del navegador, la resolución de pantalla y diversa información del sistema operativo. Esto se envía al servidor de C&C en un ENVIAR solicitud. Si hay una respuesta, se supone que es un código JavaScript y se ejecuta utilizando el eval función.

Figura 2. Script de huella digital (URL maliciosas desactivadas)

Si el visitante se considera interesante, el servidor responde con un código JavaScript que crea un iframe. Los datos de la telemetría de ESET sugieren que, para esta campaña, solo un número muy limitado de visitantes fueron considerados interesantes por los operadores de Turla.

Este iframe muestra una advertencia falsa de actualización de Adobe Flash para el usuario, que se muestra en la Figura 3, con el fin de engañarlos para que descarguen un instalador Flash malicioso.

Figura 3. Iframe falso de actualización de Adobe Flash

No observamos el uso de ninguna vulnerabilidad del navegador. El intento de compromiso se basa solo en este truco de ingeniería social. Una vez que el ejecutable malicioso se descarga del mismo servidor que el JavaScript del iframe, y si el usuario lo inicia manualmente, se instala una variante de malware Turla y un programa legítimo Adobe Flash.

La Figura 4 es una descripción general del proceso de compromiso desde la visita inicial de uno de los sitios web armenios comprometidos hasta la entrega de una carga útil maliciosa.

Figura 4. Descripción general de la operación del abrevadero

Malware

Una vez que el usuario ejecuta el instalador falso, ejecutará tanto una variante de malware de Turla como un instalador legítimo de Adobe Flash. Por lo tanto, es probable que el usuario crea que la advertencia de actualización era legítima.

Antes de septiembre de 2019: Skipper

Antes de finales de agosto de 2019, la víctima recibiría un archivo RAR-SFX que contiene un instalador legítimo Adobe Flash v14 y un segundo archivo RAR-SFX. Este último contiene los diversos componentes de una puerta trasera conocida como Skipper que se ha atribuido previamente a Turla. Fue documentado en 2017 por investigadores de Bitdefender, y una versión más reciente fue documentada por Telsy en mayo de 2019.

Dado que solo hay cambios menores entre las versiones documentadas y las más recientes, no proporcionaremos un análisis detallado aquí.

Un cambio interesante es que el módulo de comunicación Skipper usa el servidor que aloja los JavaScripts remotos de esta campaña y los binarios maliciosos para su servidor de C&C, específicamente skategirlchina (.) com / wp-includes / ms-locale.php.

Desde septiembre de 2019: NetFlash y PyFlash

A fines de agosto de 2019, notamos que la carga útil entregada por skategirlchina (.) com cambiado

NetFlash (descargador .NET)

La nueva carga útil fue una aplicación .NET que dejó caer un instalador para Adobe Flash v32 en % TEMP% adobe.exey NetFlash (un descargador de .NET) en % TEMP% winhost.exe.

Según sus marcas de tiempo de compilación, las muestras de malware se compilaron a fines de agosto de 2019 y a principios de septiembre de 2019, justo antes de cargarlas en el servidor C&C del abrevadero.

NetFlash descarga su malware de segunda etapa desde una URL codificada y establece persistencia para esta nueva puerta trasera utilizando una tarea programada de Windows. La Figura 5 muestra la función NetFlash que descarga el malware de segunda etapa, llamado PyFlash. También encontramos otra muestra de NetFlash, probablemente compilada a fines de agosto de 2019, con un servidor C&C codificado diferente: 134.209.222 (.) 206: 15363.

Figura 5. Función principal de NetFlash

PyFlash

Esta puerta trasera de la segunda etapa es un ejecutable py2exe. py2exe es una extensión de Python para convertir un script de Python en un ejecutable independiente de Windows. Hasta donde sabemos, esta es la primera vez que los desarrolladores de Turla utilizan el lenguaje Python en una puerta trasera.

La puerta trasera se comunica con su servidor C&C codificado a través de HTTP. La URL de C&C y otros parámetros como la clave AES y IV utilizados para cifrar todas las comunicaciones de red se especifican al comienzo del script, como se muestra en la Figura 6.

Figura 6. Variables globales en el script PyFlash Python

La función principal del script, que se muestra en la Figura 7, envía información sobre la máquina al servidor C&C. Este es el resultado de las funciones de la lista de comandos que se ve en la Figura 6. Incluye comandos relacionados con el sistema operativo (información del sistema, lista de tareas) y comandos relacionados con la red (ipconfig, getmac, arp)

Figura 7. Función principal de PyFlash

El servidor C&C también puede enviar comandos de puerta trasera en formato JSON. Los comandos implementados en esta versión de PyFlash son:

  • Descargue archivos adicionales de un enlace HTTP (S) dado.
  • Ejecute un comando de Windows usando la función Python subprocess32.Popen.
  • Cambiar el retraso de ejecución: modifica la tarea de Windows que regularmente (cada X minutos; 5 por defecto) lanza el malware.
  • Mata (desinstala) el malware. Para confirmar esta instrucción, el malware envía una solicitud POST al servidor de C&C con la siguiente cadena:

Estoy muriendo 🙁
Dile a mi esposa que la amo …

Luego, la salida del comando se envía de vuelta a los operadores, encriptada con AES, a través de una solicitud POST.

Conclusión

Turla todavía está utilizando los ataques de abrevaderos como una de sus tácticas de acceso inicial. Curiosamente, esta campaña se basa en un conocido truco de ingeniería social, una falsa advertencia de actualización de Adobe Flash, para inducir al usuario a descargar e instalar malware.

Por otro lado, la carga útil ha cambiado, probablemente para evadir la detección, como Skipper se conoce desde hace muchos años. Cambiaron a NetFlash, que instala una puerta trasera que llamamos PyFlash y que se desarrolla en el lenguaje Python.

Continuaremos monitoreando las nuevas actividades de Turla y publicaremos información relevante en nuestro blog. Para cualquier consulta, contáctenos como amenazaintel@eset.com. Los indicadores de compromiso también se pueden encontrar en nuestro GitHub repositorio.

Indicadores de compromiso (IoC)

Sitios web comprometidos

  • http: //www.armconsul (.) ru / user / themes / ayeps / dist / js / bundle.0eb0f2cb2808b4b35a94.js
  • http: //mnp.nkr (.) am / wp-includes / js / jquery / jquery-migrate.min.js
  • http: // aiisa (.) am / js / chatem / js_rA9bo8_O3Pnw_5wJXExNhtkUMdfBYCifTJctEJ8C_Mg.js
  • adgf (.) am

Servidores C&C

  • http: // skategirlchina (.) com / wp-includes / data_from_db_top.php
  • http: // skategirlchina (.) com / wp-includes / ms-locale.php
  • http: //37.59.60 (.) 199/2018 / .config / adobe
  • http: //134.209.222 (.) 206: 15363
  • http: //85.222.235 (.) 156: 8000

Muestras

SHA-1 Marca de tiempo Descripción Nombre de detección de ESET
973620A7AB28A2CBA82DC2A613CD24ED43734381 Jue 29 ago 04:14:46 UTC 2019 NetFlash Dropper MSIL / Turla.D
B6567F988C9ACC5DF3CBD72409FC70D54EA412BB Martes 3 sep 11:12:04 UTC 2019 NetFlash MSIL / Turla.D
9F81710B85AA7088505C1EECCE9DA94A39A2DC06 Jue 29 ago 04:12:33 UTC 2019 NetFlash MSIL / Turla.F
32430B11E42EDEB63A11E721927FFBABE7C9CFEA N / A PyFlash Win32 / Turla.EM
620A669EC0451C9F079FB4731F254AC577902E5E Mié 29 ago 09:43:18 UTC 2018 Skipper Communication DLL Win32 / Turla.EJ

Técnicas MITRE ATT y CK

Táctica CARNÉ DE IDENTIDAD Nombre Descripción
Acceso inicial T1189 Compromiso de conducción Turla comprometió sitios web de alto valor para entregar malware a los visitantes.
Ejecución T1204 Ejecución de usuario Un instalador de Flash falso está destinado a engañar al usuario para que inicie el malware.
Persistencia T1053 Tarea programada NetFlash y PyFlash persisten utilizando tareas programadas.
Descubrimiento T1016 Descubrimiento de configuración de red del sistema PyFlash se ejecuta ipconfig / all, getmac y arp -a
T1057 Descubrimiento de procesos PyFlash se ejecuta lista de tareas
T1082 Descubrimiento de información del sistema PyFlash se ejecuta información del sistema
Comando y control T1032 Protocolo criptográfico estándar PyFlash usa AES-128 en modo CBC para encriptar las comunicaciones C&C.
T1043 Puerto de uso común NetFlash usa el puerto 80.
T1065 Puerto poco utilizado PyFlash usa el puerto 8,000.
Una muestra de NetFlash usa el puerto 15,363.
T1071 Protocolo de capa de aplicación estándar NetFlash y PyFlash usan HTTP.
Exfiltración T1041 Exfiltración sobre el canal de comando y control La salida de la vigilancia PyFlash y los comandos C&C se filtran utilizando el protocolo C&C.








Enlace a la noticia original