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:
- Un malspam descarga Get2.
- Get2 descarga el RAT SDBbot, FlawedGrace o FlawedAmmyy.
- Movimiento lateral por la red de la víctima.
- 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.

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:

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:

La segunda, la etiqueta HTML
<embed>
:

La tercera, la etiqueta
<object>
:

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):
{{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:

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:

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:

A continuación, se envía el malspam con archivo adjunto HTML:

Una vez enviado el malspam se registran dominios nuevos para el día siguiente:

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:

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}}
:

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»:

Si la víctima lo hace, aparece una ventana falsa de «Componentes de Microsoft Office»:

En realidad, la ventana es generada por el código macro VBA del propio documento:

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:

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:

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
:

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