Resumen

En este artículo, el Security Lab de Hornetsecurity describe una de las cadenas de infección empleadas actualmente por quienes controlan el ransomware Clop. La cadena de infección descrita comienza con un correo electrónico que incluye un archivo adjunto malicioso en formato HTML. Este archivo adjunto conduce a la víctima hasta un archivo XLS que contiene el descargador Get2. A continuación, este descargador instala un troyano de acceso remoto (RAT) en el sistema empleado para preparar la red de la víctima antes del despliegue del ransomware Clop. El objetivo del ataque es cifrar tantos sistemas de la organización de la víctima como sea posible para obtener el mayor rescate posible. Con este objetivo, los atacantes también amenazan a las víctimas con publicar datos robados en caso de impago del rescate.

Detalles

Este artículo trata acerca de una actividad de amenaza cuyas tácticas, técnicas y y procedimientos e indicadores coinciden con actividades analizadas por otros proveedores bajo los nombres de TA505 (Proofpoint), SectorJ04 (NSHC Singapore), GRACEFUL SPIDER (Crowdstrike), GOLD TAHOE (Securework) y Dudear (Microsoft). El grupo criminal responsable lleva en activo desde, al menos, 2014. Su motivación es económica. Se les ha observado utilizando los siguientes medios:
  • Los descargadores Quant (2018), Marap (2018), Amadey (2019), AndroMut (2019) y Get2 (desde 2019).
  • Los RATs FlawedAmmyy (desde 2016), FlawedGrace (desde 2019), ServHelper (desde 2019) y SDBbot (desde 2019).
  • Los ransomwares Bart (2016), Locky (2016-2020), Jaff (2017) y Clop (desde 2019).
También emplean las siguientes redes de bots:
  • Dridex (desde 2014).
  • TrickBot (desde 2017).
  • Nercus (ya desaparecida) y Neutrino.
Como se trata de herramientas ampliamente utilizadas por otros grupos criminales, no se trata de indicadores de atribución fuertes. TA505 también emplea otro malware de uso común como TinyMet, una pequeña plataforma para Meterpeter de código abierto [TinyMet]. De 2016 a 2019, también emplearon de modo ilícito el software legítimo Remote Manipulator System (RMS) desarrollado por la empresa rusa TektonIT. La cadena de infección típica de TA505 tiene las siguientes características:
  1. Un malspam descarga Get2.
  2. Get2 descarga el RAT SDBbot, FlawedGrace o FlawedAmmyy.
  3. Movimiento lateral por la red de la víctima.
  4. Objetivo principal: desplegar el ransomware Clop en la mayor cantidad de sistemas posible.
Aquí nos concentraremos en una implementación de la cadena de infección empleada por TA505 desde 2019. En esta cadena de infección, el malspam inicial contiene un archivo adjunto en formato HTML. Este archivo adjunto HTML hace que la víctima descargue un documento XLS. Este documento XLS genera el descargador Get2 que, según lo observado, descarga a su vez SDBbot. Cadena de infección de TA505 con malspam en HTML SDBot se emplea para reconocer la red de la víctima y desplazarse por ella en sentido lateral. Cuando despliega el ransomware Clop, TA505 no parece estar interesado en cifrar ordenadores de determinados individuos. Su objetivo es cifrar de modo masivo los ordenadores de toda una organización. Esto probablemente lo haga con la intención de aumentar su influencia sobre la organización y, de este modo, incrementar tanto el importe del rescate como la presión para que se realice pago. Los ataques a grandes organizaciones se denominan «caza mayor». Un ejemplo de éxito de TA505 fue su ataque contra la Universidad de Maastricht. La universidad acabó con los datos de 267 servidores de Windows cifrados con el ransomware Clop. La universidad pagó 30 BTC (unos $ 220,000) por un descifrador con el que recuperar sus datos. Desde 24.03.2020, aproximadamente, TA505 ha comenzado también a publicar, en su página web CL0P^_- LEAKS, datos robados de víctimas del ransomware Clop que se niegan a pagar. De este modo trata de incrementar la presión sobre las víctimas para que paguen el rescate. El nivel de actividad es elevado. Las campañas de malspam se producen semanalmente. Los dominios de descarga y control rotan diariamente. A continuación, proseguiremos analizando la cadena de infección descrita en mayor detalle.

Análisis técnico

Siendo proveedores de seguridad para correo electrónico, nos centraremos en el vector de acceso inicial del ataque, basado en correo electrónico, y solo describiremos brevemente lo que ocurre cuando una víctima recibe y abre el correo inicial.

El correo

Los correos se envían desde cuentas de correo comprometidas. De este modo logran pasar comprobaciones de reputación de spam, DMARC, DKIM y SPF. Los correos utilizan bloques de firma de víctimas anteriores, probablemente para que los correos parezcan más realistas. Hemos podido confirmar estos dos hechos para algunos de los correos. Sin embargo, la cuenta comprometida es diferente a la del bloque de firma robado empleado en los correos. Tan solo el nombre visible del campo «From» del encabezado de los correos se cambia por el nombre empleado en el bloque de firma. He aquí algunos ejemplos de tales correos de TA505 recibidos a lo largo de una semana: TA505 correo inicial TA505 correo inicial TA505 correo inicial TA505 correo inicial TA505 correo inicial TA505 correo inicial TA505 correo inicial El hecho de que los correos cambien todos los días demuestra el elevado nivel de actividad de TA505.

Archivo adjunto HTML

Cada correo contiene un archivo adjunto HTML. El código HTML conduce a las víctimas a un sitio web comprometido. Al igual que los propios correos, los archivos adjuntos HTML cambian frecuentemente. Durante la semana en que se emplearon las plantillas de correo anteriormente descritas, identificamos el uso de tres técnicas de redireccionamiento diferentes en los archivos adjuntos HTML. La primera emplea el siguiente redireccionamiento con Javascript: TA505 HTML attachment La segunda, la etiqueta HTML <embed>: TA505 HTML attachment La tercera, la etiqueta <object>: TA505 HTML attachment Los archivos adjuntos HTML realizan hash busting mediante cadenas de caracteres aleatorias. Hemos podido confirmarlo al encontrar varios archivos adjuntos HTML en los que lo que parecían ser marcadores de posición no se habían sustituido por cadenas de caracteres aleatorias. En este ejemplo, parece que {{RND_TEXT}} fuese a sustituirse mediante una cadena aleatoria (como era el caso en el resto de archivos adjuntos HTML): Error en plantilla de archivo adjunto HTML de TA505 {{RND_TEXT}} podría ser sintaxis de Jinja. Jinja es un motor de plantillas web para el lenguaje de programación Python. Emplea la sintaxis {{var}} para introducir marcadores de posición en el código de la plantilla web que posteriormente se rellenan con los valores deseados al instanciar código HTML a partir de la plantilla. Además de cambiar las técnicas de redireccionamiento del archivo HTML y las URLs, en múltiples ocasiones, los archivos adjuntos HTML también reorganizaron los elementos HTML o añadieron etiquetas <a> sin usar para evitar la detección mediante firmas estáticas.

Páginas de redireccionamiento intermedio

Los archivos adjuntos HTML, bien redirigen a una página web probablemente comprometida o bien contienen código incrustado de la misma. A continuación, este código HTML redirige a la víctima a otro dominio controlado por el atacante: Redireccionamiento de TA505 a una página web comprometida Se desconoce cómo obtiene TA505 acceso a esas páginas de redireccionamiento intermedio. Sin embargo, como en su mayor parte presentan únicamente contenidos estáticos y carecen de CMS, es poco probable que haya vulnerabilidades web. Como sabemos que TA505 roba datos de acceso FTP, puede que éste sea un vector de acceso.

Dominio de descarga de XLS

A continuación, las páginas de redireccionamiento intermedio conducen a dominios registrados por TA505. Al igual que los correos, archivos adjuntos y páginas de redireccionamiento intermedio, estos dominios cambian frecuentemente. En el transcurso de un mes se han observado los siguientes dominios: Dominios de descarga de XLS de TA505 observados durante un mes Como podemos ver, durante las campañas, TA505 registra dominios frescos cada día. Esto es una nueva muestra de su elevado nivel de actividad. Puede observarse el siguiente patrón: En primer lugar, se obtienen certificados de Let’s Encrypt. Las horas a las que se adquirieron los certificados para los dominios descritos pueden verse en el siguiente gráfico: Horas de adquisición de certificados Let's Encrypt de TA505 A continuación, se envía el malspam con archivo adjunto HTML: Horas de malspam HTML de TA505 Una vez enviado el malspam se registran dominios nuevos para el día siguiente: Horas de registro de dominios de descarga de XLS de TA505 Esto vuelve a subrayar la persistencia y el elevado nivel de actividad de TA505.

CAPTCHAs

En 2020, los documentos XLS maliciosos se protegen mediante CAPTCHAs. A continuación se muestran las pantallas de descarga empleadas. Las siguientes se observaron en el curso de tan solo una semana: TA505 empleando CAPTCHAs TA505 empleando CAPTCHAs TA505 empleando CAPTCHAs Probablemente, los CAPTCHAs se utilicen para obstaculizar el análisis automático por parte de compañías de seguridad. De nuevo, el servicio de CAPTCHA y el diseño de la página de descarga también cambian frecuentemente. En el código HTML de una página de descarga de XLS, volvimos a encontrar el marcador de posición {{RND_TEXT}}: Error en plantilla HTML de TA505 Esto, de nuevo, probablemente se utilice para hacer hash busting.

XLS

Una vez resuelto el CAPTCHA, la víctima descarga el documento XLS de TA505. El número dentro del nombre del archivo cambia en cada descarga. El hash del documento cambia cada minuto. Los cambios se realizan tanto en los metadatos del documento (tales como el título, tema y autor) como en el documento en sí, tal y como puede verse comparando dos documentos XLS descargados en momentos distintos:
$ diff <(exiftool Form\ F-12189.xls) <(exiftool Form\ F-44754.xls)
2c2
< Nombre de archivo               : Form F-12189.xls
---
> Nombre de archivo               : Form F-44754.xls
4,5c4,5
< Tamaño de archivo               : 816 kB
< Fecha/hora de modificación      : 2020:06:25 15:13:02+02:00
---
< Tamaño de archivo               : 734 kB
< Fecha/hora de modificación      : 2020:06:25 15:13:11+02:00
7c7
< Fecha/hora de modificación de inodo de archivo: 2020:06:25 15:13:04+02:00
---
> Fecha/hora de modificación de inodo de archivo: 2020:06:25 15:13:13+02:00
14,16c14,16
< Título                          : Q
< Tema                            : U
< Autor                           : gzh
---
> Título                          : pfaE
> Tema                            : nudUSwT
> Autor                           : k
18c18
< Número de revisión              : 641
---
< Número de revisión              : 458
20c20
< Tiempo total de edición         : 18,4 horas
---
< Tiempo total de edición         : 14,5 horas
22c22
< Fecha de modificación           : 2020:06:25 07:55:19
---
> Fecha de modificación           : 2020:06:25 7:57:12
24,25c24,25
< Palabras                        : 2696
< Caracteres                      : 9575
---
> Palabras                        : 2669
< Caracteres                      : 4214
29,31c29,31
< Bytes                           : 28002
< Líneas                          : 689
< Párrafos                        : 75
---
> Bytes                           : 75897
> Líneas                          : 395
> Párrafos                        : 15
De nuevo, los cambios se basan en cadenas aleatorias. El proyecto de VBA del documento no cambia:
$ diff -r Form\ F-12189 Form\ F-44754
Binary files Form F-12189/[5]DocumentSummaryInformation and Form F-44754/[5]DocumentSummaryInformation differ
Binary files Form F-12189/[5]SummaryInformation and Form F-44754/[5]SummaryInformation differ
Binary files Form F-12189/Workbook and Form F-44754/Workbook differ
El documento incluye las típicas instrucciones para «Habilitar la edición» y «Habilitar el contenido»: Documento XLS de TA505 Si la víctima lo hace, aparece una ventana falsa de «Componentes de Microsoft Office»: Ventana falsa de "Componentes de Microsoft Office" en XLS de TA505 En realidad, la ventana es generada por el código macro VBA del propio documento: Código VBA para la ventana falsa de "Componentes de Microsoft Office" en XLS de TA505 La falsa página de carga probablemente se emplee para impedir que las víctimas cierren el documento demasiado pronto (es decir, antes de que el malware incrustado haya terminado de ejecutarse). Esto es importante, pues el descargador Get2 se ejecuta dentro del proceso EXCEL.EXE que abrió el documento XLS. Una vez cerrado este proceso, también se cierra este descargador de malware inicial. Las DLLs del descargador Get2 están incrustadas en el documento XLS descargado:
$ binwalk Form\ F-12189/MBD007A19C2/\[1\]Ole10Native --dd=".*"

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
17513         0x4469          Microsoft executable, portable (PE)
354857        0x56A29         Microsoft executable, portable (PE)
Una de las DLLs es de 32 bits, y la otra de 64:
$ file *
4469:  PE32 executable (DLL) (console) Intel 80386, for MS Windows
56A29 PE32+ executable (DLL) (console) x86-64, for MS Windows
El código macro VBA extrae el objeto incrustado y las DLLs incrustadas del descargador Get2. A continuación, las copia a %APPDATA%\Roaming\Microsoft\Windows\Templates\libIntel{1,2}.dll (primero, la versión de 64 bits y, después, la de 32). Seguidamente, el código utiliza ExecuteExcel4Macro para llamar a libIntel{1,2}.dll, es decir, el descargador Get2. La función ejecutada es, en realidad, la ruta (en este caso, vckpmd) a consultar por parte del sistema de control: XLS de TA505 llamando a DLL de Get2 La función ExecuteExcel4Macro permite ejecutar instrucciones arbitrarias de macro de Excel 4. En este caso se trata de la instrucción CALL("C:\Users\...\libIntel2.dll","vckpmd","J"), que permite ejecutar código de la DLL directamente desde el proceso EXCEL.EXE sin tener que generar ningún otro proceso que pudiera resultar sospechoso. En primer lugar, se llama a la DLL de 64 bits, incluso dentro de un proceso EXCEL.EXE de 32 bits. Si esto falla, la versión de 32 bits se copia a disco y se llama.

Descargador Get2

La DLL libIntel{1,2}.dll anteriormente mencionada es el descargador Get2. Su objetivo es descargar y ejecutar malware adicional TA505. Con este fin, comienza recopilando algunos datos del sistema, y después envía una solicitud POST como la siguiente al servidor de control: Solicitud POS de Get2 de TA505 Los parámetros enviados al servidor de control contienen los siguientes datos del sistema de la víctima:
  • D: Nombre de host
  • U: Nombre de usuario
  • OS: Versión de Windows
  • PR: Lista de procesos en ejecución
El servidor de control responde entonces con URLs para descargar el siguiente malware.

SDBbot

Actualmente, el malware elegido por el descargador Get2 de TA505 para la siguiente fase es SDBbot [SDBbot]. SDBbot es un RAT. Esta etapa de la infección sirve como cabeza de puente para el movimiento lateral y la preparación del despliegue del ransomware Clop. En este contexto, SDBbot se emplea para explorar la red infectada y cargar malware adicional en preparación del despliegue del ransomware Clop. Uno de los preparativos consiste en desactivar el software de seguridad de red antes de emplear el ransomware Clop.

El ransomware Clop

«Clop», pronunciado en inglés, se parece mucho al ruso y/o búlgaro «клоп», que quiere decir «chinche». Muchos creen que de ahí le viene el nombre. El ransomware Clop es un derivado del ransomware CryptoMix [CryptoMix]. Se trata de la última fase del ataque de TA505. El objetivo parece ser desplegar el ransomware Clop en el mayor número de sistemas posible dentro de la red de una víctima para poder ejercer la máxima presión posible para que ésta pague el rescate. El cifrado suele producirse durante los fines de semana para reducir el riesgo de que el personal de la víctima advierta el proceso de cifrado y detenga el ataque de ransomware antes de tiempo.

CL0P^_- LEAKS

Desde aproximadamente el 24.03.2020, TA505 publica en Internet datos robados de víctimas que se niegan a pagar el rescate. Con este fin, mantienen una página web en un servicio oculto de Tor titulada CL0P^_- LEAKS: CL0P^ _- LEAKS A fecha de redacción, la página alberga los datos de 12 víctimas. Su objetivo es continuar presionando a las víctimas para que paguen.

Conclusión y soluciones

Este artículo muestra el gran esfuerzo que invierten en sus ataques grupos criminales decididos como TA505. La rotación diaria de los dominios y la constante actualización de las cargas útiles para evitar la detección demuestran claramente que se trata de crimen organizado. La implacable extorsión a las víctimas mediante humillación pública demuestra hasta dónde son capaces de llegar los delincuentes para obtener beneficios. Los ataques de este tipo pueden repelerse en múltiples etapas. Como último recurso, unas buenas copias de seguridad pueden ayudar a las empresas a recuperarse tras un ataque con ransomware sin necesidad de pagar el rescate. La recomendación general para copias de seguridad es seguir la regla 3-2-1 [US-CERT]. 3 copias diferentes en 2 soportes diferentes, y al menos una de ellas deslocalizada (por ejemplo, en la nube). También se recomienda practicar la recuperación de sistemas a partir de copias de seguridad, pues una copia de seguridad solo tiene éxito una vez recuperados los datos, y no basta con hacer la copia. Bloquear la comunicación con servidores de control en cualquier punto de la cadena de infección también impide que la infección avance de fase. Para lograrlo es posible emplear filtros de red. En último lugar, pero no por ello menos importante, bloquear el correo inicial evitará que la cadena se despliegue desde un primer momento. Spam and Malware Protection de Hornetsecurity, con las tasas de detección más elevadas del mercado, es capaz de bloquear los archivos adjuntos HTML maliciosos descritos. Advanced Threat Protection de Hornetsecurity amplía esta protección añadiendo capas de seguridad de última generación contra amenazas aún desconocidas. Aunque pagar el rescate pueda resultar más barato que asumir los costes asociados a no pagarlo, no debe hacerse. Los rescates financian a los atacantes, lo que se traduce en más ataques con ransomware, y además mantienen a las víctimas que hayan pagado dentro de la lista de objetivos. Al fin y al cabo, lo que les interesa a los atacantes es obtener beneficios, y no destruir empresas, lo cual significa que una víctima que no pague no se considerará un buen objetivo. Obviamente, esto no garantiza que una empresa famosa por no pagar rescates no vaya a volver a ser atacada con ransomware, pero sí reduce la probabilidad de que los atacantes vuelvan a apuntar a esa empresa en concreto. Negarse a pagar un rescate y afrontar una fuga de datos es especialmente duro. Sin embargo, no existen garantías de que los datos robados vayan a eliminarse, solo la promesa de unos delincuentes. Los datos sustraídos podrían venderse en el mercado negro, emplearse en futuros ataques e incluso emplearse para volver a extorsionar a la víctima en un momento posterior. Por último, incluso si los datos no se hacen públicos, una brecha de seguridad de datos personales es una brecha de seguridad de datos personales con todas las consecuencias legales que ésta acarrea, tales como una notificación de violación de datos personales y sanciones económicas. Pagar un rescate no soluciona nada de eso.

Referencias