El 28 de octubre de 2024, la Policía Nacional holandesa, junto con el FBI, Eurojust y otras fuerzas de seguridad, desmantelaron la infame operación de malware como servicio (MaaS) RedLine Stealer y su clon META Stealer. Este esfuerzo global, denominado Operación Magnus, dio como resultado el desmantelamiento de tres servidores en los Países Bajos, la incautación de dos dominios, la detención de dos personas en Bélgica y la presentación de cargos contra uno de los presuntos autores en los Estados Unidos.
Ya en abril de 2023, ESET había participado en una operación de interrupción parcial del malware RedLine, que consistió en la eliminación de varios repositorios de GitHub utilizados como dead-drop resolvers para el panel de control del malware. Por aquel entonces, investigamos módulos backend no documentados anteriormente de esta familia de malware en colaboración con otros investigadores de Flare. Estos módulos no interactúan directamente con el malware, sino que gestionan la autenticación y proporcionan funcionalidad al panel de control.
Dado que RedLine ha sido retirado, estamos revelando públicamente nuestros hallazgos de 2023, junto con algunos descubrimientos más recientes que se hicieron sobre la base de código fuente y muestras compartidas con nosotros por la Policía Nacional Holandesa.
Hay que tener en cuenta que, incluso con el desmantelamiento, RedLine puede seguir funcionando hasta cierto punto durante un tiempo: los paneles que ya estaban en funcionamiento seguirían siendo capaces de recibir datos, aunque no pudieran construir nuevas muestras o volver a conectarse después de cerrar la sesión. Además, también existen copias antiguas y crackeadas del malware que podrían seguir funcionando. Debido a estos factores, describimos la operación RedLine como si se tratara de una actividad en curso.
Puntos clave del blogpost:
- En 2023, los investigadores de ESET, en colaboración con las fuerzas de seguridad, recopilaron múltiples módulos utilizados para ejecutar la infraestructura detrás de RedLine Stealer.
- Analizamos estos módulos previamente indocumentados para proporcionar información sobre el funcionamiento interno de este imperio del malware as a service.
- Pudimos identificar más de 1.000 direcciones IP únicas utilizadas para alojar los paneles de control de RedLine.
- Las versiones 2023 de RedLine Stealer que investigamos en detalle utilizaban Windows Communication Framework para la comunicación entre los componentes, mientras que la última versión de 2024 utiliza una API REST.
- Basándonos en nuestro análisis del código fuente y las muestras de backend, hemos determinado que Redline Stealer y META Stealer comparten el mismo creador.
RedLine Stealer es un malware de robo de información descubierto por primera vez en 2020 por Proofpoint. En lugar de ser operado de forma centralizada, RedLine opera en un modelo MaaS en el que cualquiera puede comprar una solución de infostealer llave en mano en varios foros en línea y canales de Telegram. Los clientes, llamados afiliados, pueden optar por una suscripción mensual o una licencia de por vida; a cambio de su dinero, obtienen un panel de control que genera muestras de malware y actúa como servidor de C&C para ellos. Las muestras generadas pueden recopilar una gran variedad de información, como monederos locales de criptomonedas; cookies, credenciales guardadas y datos de tarjetas de crédito guardados de navegadores; y datos guardados de Steam, Discord, Telegram y varias aplicaciones VPN de escritorio.
El uso de una solución ya preparada facilita a los afiliados la integración de RedLine Stealer en campañas de mayor envergadura. Algunos ejemplos notables incluyen hacerse pasar por descargas gratuitas de ChatGPT en 2023, y hacerse pasar por tramposos de videojuegos en la primera mitad de 2024.
Nota sobre la terminología utilizadaDebido a su modelo MaaS, cualquier debate exhaustivo sobre RedLine implicará múltiples componentes y capas diferentes de infraestructura de red. Para limitar cualquier posible confusión, utilizaremos los siguientes términos de forma coherente a lo largo del texto:
- Malware RedLine: El malware RedLine Stealer o una muestra del mismo.
- Panel RedLine: Panel de control GUI utilizado para gestionar campañas de robo de información.
- RedLine backend: Colección de módulos que proporcionan autenticación y funcionalidad para el panel RedLine.
- RedLine: Toda la operación del malware. Incluye el malware RedLine, el panel RedLine y los módulos backend RedLine.
- Servidor backend: Un servidor en el que se ejecuta el backend de RedLine.
- Víctima: Entidad a la que se dirige el malware RedLine.
- Operador: Persona o equipo que desarrolla RedLine, vende licencias y opera la infraestructura de licencias y backend asociada.
- Afiliado: Entidad que opera campañas de robo de información a través de una instancia del panel RedLine. Normalmente tienen una licencia comprada al operador, pero también pueden utilizar una versión crackeada del panel.
Visión general
En este blogpost documentamos los módulos que se ejecutan en los servidores backend de RedLine para proporcionar una mayor comprensión del funcionamiento interno de este imperio MaaS. También proporcionamos información sobre el panel RedLine. La figura 1 contiene una visión simplificada de todo el funcionamiento de RedLine.
Normalmente, las muestras conocidas del panel RedLine que se distribuyen a los afiliados están muy empaquetadas y virtualizadas después de aplicar la primera capa de ofuscación. Pero mientras buscábamos en nuestra telemetría actividad relacionada con RedLine Stealer y su panel, nos encontramos con una versión antigua del panel RedLine que sólo estaba ofuscado con .NET Reactor, lo que facilitaba mucho su análisis.
Conjunto de herramientas de RedLine
Todos los componentes de RedLine, desde el propio malware hasta el servidor de autenticación backend, están escritos en C# con el framework .NET. Las versiones que analizamos utilizaban el marco Windows Communication Foundation (WCF) para comunicarse entre sí. Este marco permite definir una API mediante contratos, que son declaraciones aplicadas a clases e interfaces para especificar cómo se traducen los objetos y las acciones entre su representación en el código y las comunicaciones de red. Así, los programas que interactúan utilizando este marco deben compartir las definiciones de estas estructuras de datos o clases. Estos modelos compartidos resultaron útiles en nuestro análisis de los componentes ofuscados.
Nótese que la última versión 2024 de RedLine utiliza una API REST en lugar de WCF para comunicarse con el backend.
Panel RedLine
Este panel de control es lo que los afiliados pueden comprar en foros y canales de Telegram. Las licencias se venden por 150 dólares al mes o 900 dólares por una licencia de por vida. A cambio del dinero, los afiliados obtienen una interfaz gráfica de usuario a través de la cual gestionan sus campañas, con funciones para configurar qué información recopilar, crear muestras de malware, ver y gestionar la información recopilada e integrarse con un bot de Telegram para vender la información robada.
Las versiones 2023 del panel que investigamos estaban fuertemente ofuscadas utilizando DNGuard, un conocido ofuscador .NET, y BoxedApp, un empaquetador comercial y biblioteca de virtualización. Por suerte para nosotros, RedLine utilizaba el marco WCF, por lo que el panel tenía que compartir algunas clases e interfaces con otros componentes. Analizando estos elementos compartidos de los componentes de malware y backend, que están menos protegidos, pudimos comprender gran parte de la funcionalidad del panel a pesar de las protecciones.
Todos los paneles RedLine de 2023 estaban firmados con certificados emitidos a AMCERT,LLC por Sectigo, que han sido revocados después de que informáramos de ellos. AMCERT,LLC corresponde a una empresa registrada en Armenia que no parece tener presencia online, algo bastante inusual para un supuesto desarrollador de software.
Autenticación
Para poder utilizar un panel RedLine, los afiliados deben autenticarse primero. La figura 2 muestra la pantalla de inicio de sesión.
Los paneles RedLine que hemos analizado utilizan repositorios de GitHub, como el de la Figura 3, como dead-drop revolvers para sus servidores de autenticación. La dirección de este repositorio está codificada en el panel, pero no es la misma para todas las versiones del panel. Encontrar y eliminar varios de estos repositorios en colaboración con GitHub es lo que nos permitió interrumpir temporalmente las operaciones de RedLine en abril de 2023. Aunque la eliminación no afectó al backend del malware, obligó a los operadores a distribuir nuevas versiones de los paneles. Durante un breve periodo de tiempo tras la interrupción, trasladaron los dead-drop resolvers a Pastebin, antes de optar por utilizar sus propios dominios en mayo de 2023, tal y como describimos en nuestra charla conjunta con Flare en la Sleuthcon 2023. En la última versión del panel RedLine, los autores de la amenaza abandonaron por completo los resolvers de caída muerta y se limitaron a utilizar una URL codificada https://fivto[.]online/secure-api/. Encontrará más información sobre los dead-drop resolvers en la sección Infraestructura de red.
Al ejecutar los componentes del servidor backend en una red virtual, conseguimos crear cuentas de afiliados y autenticarnos con nuestra propia instancia sin tener que comprar una suscripción.
La primera pantalla que se muestra a los afiliados al iniciar sesión, que se ve en la Figura 4, está llena de anuncios. Aunque desconocemos la naturaleza exacta de los anuncios servidos por los servidores de autenticación reales, hemos podido crear algunos en nuestra propia instancia del servidor backend con fines de demostración. El servidor backend no aloja las imágenes reales presentes en esos anuncios, sólo sus URL.
La pestaña Listas negras permite a los afiliados ignorar los datos entrantes por país, dirección IP, Build ID o HWID (un ID único calculado a partir del nombre de dominio, nombre de usuario y número de serie de una máquina víctima). Independientemente de las exclusiones seleccionadas aquí, todas las muestras de RedLine Stealer contienen código para impedir la ejecución si la configuración regional se establece en uno de los siguientes países: Armenia, Azerbaiyán, Bielorrusia, Kazajistán, Kirguistán, Moldavia, Tayikistán, Uzbekistán, Ucrania y Rusia.
La pestaña Telegram, mostrada en la Figura 5, permite a los afiliados configurar un bot de Telegram para publicar datos robados en chats o canales específicos. El afiliado debe proporcionar un token de API válido para el bot, y luego puede seleccionar qué entradas se compartirán basándose en el país, Build ID, versión de SO y dominios encontrados en cookies o inicios de sesión guardados. El bot también puede configurarse para compartir los registros completos o sólo información específica según se defina en el campo Formato de mensaje, y para compartir estadísticas con los destinatarios seleccionados (véase la Figura 6).
Creación de muestras de malware en el front-end
La pestaña Builder, mostrada en la Figura 7, permite a los afiliados crear nuevas muestras de RedLine Stealer proporcionando una dirección de servidor del panel RedLine, un Build ID, un mensaje de error a mostrar y una imagen a utilizar como icono para la muestra creada. Estos dos últimos son opcionales, sirviendo la imagen como icono del software que RedLine está suplantando, mientras que el mensaje de error puede utilizarse para engañar a la víctima sobre por qué no se inició la aplicación esperada.
El Build ID se utiliza como identificador de la campaña y es enviado por las muestras junto con la información robada. Mientras que algunas versiones filtradas anteriormente del panel RedLine incluían un ejecutable para crear compilaciones localmente, en las versiones más recientes esto lo realiza el servidor backend. Este cambio hace que cualquier panel RedLine filtrado o crackeado sea mucho menos útil, ya que los afiliados no podrán crear muestras para utilizarlas con él. Describimos el proceso de construcción en la sección RedLine.Nodes.LoadBalancer.
RedLine backend
El backend de RedLine que analizamos en 2023 consta de dos módulos. El primero, denominado RedLine.Nodes.DbController, gestiona los datos de afiliados y anuncios. A pesar de su nombre, este módulo no utiliza una base de datos tradicional, sino que almacena los registros como objetos codificados en Protobuf en archivos individuales, con un subdirectorio específico para cada tipo de datos. El segundo módulo, llamado RedLine.Nodes.LoadBalancer, funciona como servidor y proporciona la mayor parte de la funcionalidad utilizada por el panel RedLine.
También encontramos un módulo llamado RedLine.MainServer, que es probablemente el antepasado de RedLine.Nodes.DbController y RedLine.Nodes.LoadBalancer. En versiones posteriores, se separó como un módulo independiente que gestiona los datos de usuarios y anuncios.
En la versión 2024 del backend, DbController y LoadBalancer han sido sustituidos por un único módulo denominado Nodes.Api.
RedLine.Nodes.DbController
En DbController, los datos de los afiliados están representados por una clase llamada ClientData, detallada en la Tabla 1.
Tabla 1. Descripción de las propiedades de ClientData Descripción de las propiedades deClientData
Esto es sencillo en su mayor parte, pero presenta algunas peculiaridades interesantes, principalmente la forma en que se gestionan las contraseñas y las licencias de por vida.
Si nos fijamos en el código utilizado para autenticar a los afiliados (mostrado en la Figura 8), resulta obvio que las contraseñas se almacenan en texto claro. La contraseña enviada se compara directamente con la almacenada sin que intervenga ninguna función hash.
La figura 9 muestra que una licencia vitalicia, que los afiliados pueden comprar por 900 dólares, se representa estableciendo la fecha de caducidad de una licencia dada en cualquier fecha posterior a 2025. En otras partes del código se hace referencia a esta licencia como licencia Pro.
RedLine.Nodes.LoadBalancer
Como se ve en la Figura 10, el módulo LoadBalancer escucha en el puerto 8778. Esta captura de pantalla también muestra los manejadores definidos en el contrato WCF MainPanelService. Los controladores relacionados con los datos de afiliación y publicidad, es decir, OnSignInInternal, OnConnect, OnCheckExpire y OnGetPartners, delegan las solicitudes en el controlador correspondiente de DbController. El controlador OnCheckConnect es utilizado por el panel Redline para comprobar si su servidor C&C es accesible desde el exterior. El resto de los manejadores están todos relacionados con la creación de muestras de malware.
Creación de muestras en el backend Redline
Desde que se documentó por primera vez en 2020, RedLine Stealer se ha reescrito para utilizar el marco WCF, y más tarde una API REST, para la comunicación de red. Como se ve en la Figura 11, el nombre interno de estas versiones reescritas parece ser RedLine.Reburn.
Para crear muestras del malware RedLine Stealer, el manejador OnCreateLastBuild mostrado en la Figura 10 utiliza el método CreateBuild de la clase personalizada VSBuilder. Cuando se recibe una solicitud CreateBuild, la contraseña en texto claro de la cuenta del afiliado se registra en la consola. Esto muestra un desprecio casual por prácticas de seguridad bien conocidas.
Si en la petición no se especifica ningún puerto para el servidor C&C, el constructor utiliza por defecto el puerto 6677. Cuando se construye una muestra, el código de la Figura 12 se utiliza para derivar un token a partir del ID de construcción de la campaña y la clave de construcción de la cuenta del afiliado. Creemos que esto corresponde al valor de la cabecera ns1.Authorization utilizada en la comunicación entre las muestras y el panel. Esta cabecera parece ser utilizada por el panel para filtrar conexiones de muestras no creadas por la cuenta actual.
El método VSBuilder.CreateBuild utiliza una solución local de C# para crear muestras. Algunos de los archivos fuente se leen en memoria para sustituir valores específicos antes de volver a escribirse en el disco. Aunque no pudimos recopilar los archivos del proyecto, la salida del descompilador para este método junto con la de una muestra de RedLine Stealer proporcionan suficiente contexto para entender que los valores modificados son:
- Dirección de C&C (encriptada),
- ID de compilación (cifrado),
- mensaje de error falso (cifrado),
- clave de descifrado,
- bandera para indicar si se envía la información robada por partes o toda a la vez,
- token de autenticación, y
- nombre del ensamblador.
Una vez sustituidos estos valores, se invoca a Visual Studio para construir el proyecto.
Si el afiliado ha seleccionado la opción correspondiente, y tiene una licencia de por vida, el ejecutable compilado se ofusca con el Babel Obfuscator disponible comercialmente. En la versión 2024, la ofuscación se implementa para todos los usuarios y se realiza a través de .NET Reactor.
Por último, se genera un certificado autofirmado con el código de la figura 13 y se utiliza para firmar el ejecutable. Los campos de su Nombre Distinguido (DN) se rellenan con palabras aleatorias del diccionario. Los certificados generados de este modo utilizan la contraseña codificada 123321 y tienen un periodo de validez que va desde siete días antes de su generación hasta 10 años después.
El módulo LoadBalancer también proporcionaba un manejador OnCreateClipper. Como su nombre indica, se utilizaba para generar malware de secuestro del portapapeles; en este caso, se utilizaba para secuestrar transacciones de criptomonedas sustituyendo las direcciones de los monederos en el portapapeles por las de los monederos controlados por el atacante. Esta funcionalidad se ha eliminado en las últimas versiones del backend Redline.
Curiosamente, la clase Builder también contenía código muerto para generar una muestra de malware a partir de un ejecutable stub. Creemos que se trata de un resto del método utilizado para generar versiones anteriores de RedLine Stealer. La última versión del backend Redline ya no contiene este código.
Otro controlador, llamado OnSignFile, permite a los afiliados con licencias de por vida firmar archivos arbitrarios con un certificado ubicado en el servidor backend. No hemos podido recopilar este certificado, pero tenemos razones para creer que puede ser el mismo certificado utilizado para firmar los paneles RedLine, ya que también se ha utilizado para firmar un gran número de muestras de RedLine Stealer y otros programas maliciosos. Otro posible candidato es el certificado con la huella 28F9A8E7601F5338BF6E194151A718608C0124A8, emitido a nombre de Hangil IT Co. Este certificado, probablemente robado, se ha utilizado para firmar muchas muestras de RedLine Stealer y otros archivos maliciosos. Ya ha sido revocado.
RedLine.MainServer
El módulo RedLine.Main Server combina algunas de las funciones de los dos módulos anteriores con una interfaz gráfica de usuario que permite al administrador gestionar fácilmente las cuentas de afiliados y los datos de los anuncios. A pesar de esta funcionalidad añadida, múltiples factores indican que esta versión de MainServer es probablemente un ancestro de LoadBalancer y DbController más que un sucesor:
- Las muestras deMainServer se compilan con una versión anterior del marco .NET (4.6.2 frente a 4.8).
- El año de copyright del ensamblado es 2020 en lugar de 2021.
- Algunas muestras de MainServer no contienen funcionalidad para anuncios.
- El contrato del servicio WCF principal(MainPanelService) no incluye el manejador IsAlive que está presente en la misma clase que LoadBalancer. Este manejador es utilizado por todos los paneles RedLine más recientes que hemos analizado.
Tenga en cuenta que en versiones posteriores del backend RedLine, el panel de administración GUI se ha dividido en su propio módulo también llamado MainServer.
La versión examinada de la interfaz gráfica de usuario nos proporcionó una visión interesante de la gestión de RedLine. Proporciona un formulario para crear y editar datos de cuentas de afiliados, como se muestra en la Figura 14. Los campos corresponden a la clase ClientData descrita anteriormente.
Existe un formulario similar, en la Figura 15, para gestionar los anuncios.
Por último, el rudimentario cuadro de mandos de la Figura 16 ofrece al operador una visión general de las ventas de licencias.
Nodos.Api
El análisis de las muestras compartidas por las fuerzas de seguridad holandesas muestra que en las últimas versiones de RedLine, las funcionalidades de los módulos LoadBalancer y DbController se han combinado en uno nuevo denominado Nodes.Api. Este módulo backend se empaqueta como una aplicación .NET de un solo archivo y utiliza la clase WebApplication de ASP.NET para proporcionar la API REST utilizada por los paneles. Como se puede ver en la Figura 17, el módulo gestiona las peticiones enviadas a los servidores RedLine(fivto[.]online) y META(spasshik[.]xyz), lo que demuestra que los dos infostealers comparten los mismos operadores.
La Tabla 2 enumera los puntos finales expuestos por la API REST junto con el manejador WCF correspondiente de versiones anteriores.
Tabla 2. Puntos finales de RedLine
Endpoint | Corresponding WCF Handler | Description |
/api/test | N/A | Probably used to test connectivity. This simply returns the value OK. |
/secure-api/sign-in | OnSignInInternal | Handles logins from the panel. |
/secure-api/getBanners | OnGetPartners | Returns the ads to be displayed in the panel. |
/secure-api/createFile | OnCreateLastBuild | Creates an instance of the stealer malware. |
/secure-api/checkConnect | OnCheckConnect | Pings the specified address and port to check whether it is externally reachable. |
/secure-api/updateDb | N/A | Makes the backend reload affiliate data. This is only done if the request comes from a loopback address. |
/edk92hd/createRandom | N/A | Creates a new affiliate entry with a random username and password. |
/edk92hd/renew | N/A | Extends the license validity period of the specified affiliate. |
/Panel.zip | N/A | Returns the Panel.zip file from disk. This password-protected archive contains the latest version of the panel. |
A diferencia de las versiones 2023 del backend que analizamos inicialmente, las licencias de por vida ya no aparecen en el código del nuevo módulo. Dado que las licencias de este tipo se seguían vendiendo, creemos que probablemente se gestionaban simplemente fijando su caducidad en una fecha muy lejana en el futuro. También se ha eliminado por completo la funcionalidad relacionada con la firma de código.
Las muestras creadas por el módulo Nodes.Api se ofuscan utilizando .NET Reactor si está presente en la ruta codificada C:\Archivos de programa (x86)\Eziriz\.NET Reactor\dotNET_Reactor.exe. Esto corresponde a su ruta de instalación por defecto.
Más allá de los cambios mencionados, las funcionalidades que estaban presentes en versiones anteriores se comportan prácticamente igual que antes. Sin embargo, se han añadido un par de funcionalidades interesantes.
Gestión de afiliados
Se exponen tres puntos finales utilizados para gestionar los datos de los afiliados. Estos parecen estar destinados a ser utilizados únicamente por el operador, pero esto se maneja de dos maneras muy diferentes. El endpoint /secure-api/updateDb hace que el servidor recargue los datos del usuario desde el disco. La figura 18 muestra el método de actualización invocado por el módulo MainServer cada vez que se crea o modifica una nueva entrada. La operación sólo es realizada por el módulo Nodes.Api si la petición procede de una dirección loopback, lo que impide que los usuarios del Panel la utilicen.
Los otros dos endpoints, /edk92hd/createRandom y /edk92hd/renew, utilizan un método diferente para mitigar el acceso no autorizado. Como se ve en la Figura 19, sólo pueden ser invocados si la petición contiene una cabecera sko3s con un valor codificado aparentemente aleatorio.
Copias de seguridad
La otra característica interesante es la posibilidad de realizar copias de seguridad de los datos de afiliación, funcionalidad que faltaba en las versiones anteriores del código. Dado que estos datos se almacenan en una serie de ficheros en el disco, la copia de seguridad es un archivo ZIP del directorio que contiene los ficheros. Este archivo se envía a través de Telegram utilizando un ID de chat codificado que se muestra en la Figura 20.
Enlaces con META Stealer
META Stealer es el otro infostealer desbaratado junto a RedLine Stealer. Según un artículo de Kela, META Stealer se anunció por primera vez en foros de ciberdelincuentes en marzo de 2022. El autor afirmaba que utilizaba el mismo código que RedLine Stealer y ofrecía la misma funcionalidad y panel. META Stealer no ha sido investigado tan a fondo como RedLine Stealer, pero nuestra investigación indica que las afirmaciones que hizo inicialmente son exactas. Basándonos en el código fuente, lo más probable es que los dos infostealers hayan sido creados por la misma persona. Aunque hay algunas diferencias, la mayor parte del código es el mismo, con instancias de la cadena RedLine sustituidas por Meta. Como puede verse en la Figura 21, el código que se comenta como inactivo en RedLine está presente en META.
Como ya hemos mencionado, otra prueba que apunta a que RedLine y META tienen los mismos operadores se ve en el código del módulo Nodes.Api, que gestiona las peticiones enviadas tanto a los servidores RedLine como META, como se muestra en la Figura 17.
También encontramos dos muestras del panel META firmadas con un certificado que también se utilizó para firmar muestras del panel RedLine. Este panel utilizaba los mismos esquemas de resolución dead-drop, llegando incluso a utilizar las mismas claves AES y RSA, sólo que con un repositorio GitHub diferente. Además, como muestra la Figura 22, una comparación de los paneles utilizados por META y RedLine revela sólo pequeñas diferencias cosméticas.
META Stealer utiliza la misma combinación de DNGuard y BoxedApp para proteger su panel del análisis. Sin embargo, el proceso de autenticación de META no pudo completarse cuando se ejecutó contra nuestra instancia del backend RedLine de 2023, por lo que parece haber sido modificado con respecto al de RedLine.
Infraestructura de red
Al analizar las muestras de RedLine que detectamos entre el30 de noviembre de 2022 yel 23 de marzo de 2023, pudimos identificar más de 1.000 direcciones IP únicas utilizadas para alojar paneles RedLine. La figura 23 muestra la distribución geográfica de estos paneles alojados. Rusia, Alemania y los Países Bajos representan cada uno alrededor del 20% del total, mientras que Finlandia y Estados Unidos representan cada uno alrededor del 10%. Aunque estos datos sólo proceden de muestras dirigidas a nuestros clientes, creemos que ofrecen una imagen bastante precisa, ya que los ataques de RedLine suelen ser oportunistas más que dirigidos.
También pudimos identificar varios servidores backend distintos. Es probable que hubiera más en los resolvers de caída muerta que no pudimos descifrar. Basándonos en su distribución geográfica, que se muestra en la Figura 24, los servidores se encuentran principalmente en Rusia (alrededor de un tercio de ellos), mientras que el Reino Unido, los Países Bajos y la República Checa representan cada uno alrededor del 15% de los servidores que identificamos.
Dead-drop resolvers
Como ya hemos mencionado, las versiones 2023 del panel RedLine utilizaban repositorios de GitHub como dead-drop resolvers para sus servidores de autenticación. Todos estos repositorios contenían un archivo con una lista cifrada de direcciones de servidores. El archivo se encriptaba utilizando un módulo personalizado llamado simplemente RSA. En una versión de este módulo, mostrada en la Figura 25, la lista se encriptó usando AES-CBC con una clave y un IV codificados, y se guardó en un archivo llamado nodesUpdate.config.
Versiones más recientes, que estuvieron en uso al menos hasta mediados de 2024, emplean en su lugar encriptación RSA (ver Figura 26), con la salida escrita en un archivo llamado nodes.config. En este caso, la clave se lee de un archivo en lugar de estar codificada en el ejecutable. Sin embargo, la clase utilizada para realizar el cifrado RSA también está presente en el módulo LoadBalancer, con valores predeterminados codificados para las claves pública y privada. Observe el uso de "nodos" de nuevo para referirse a los servidores backend.
Hemos observado repositorios de GitHub que contienen al menos un archivo cifrado de este tipo. Junto con las claves mostradas anteriormente, pudimos extraer una clave privada RSA de una muestra del panel. Esto nos permitió obtener listas de servidores de autenticación, que compartimos con las fuerzas de seguridad.
Conclusión
Antes de la Operación Magnus, RedLine era uno de los malware infosteadores más extendidos, con un gran número de afiliados que utilizaban su panel de control. Sin embargo, la empresa de malware como servicio parece estar orquestada por sólo un puñado de personas, algunas de las cuales han sido identificadas por las fuerzas de seguridad.
META Stealer, clon de RedLine Stealer y muy probablemente creado por los mismos actores de amenazas, hizo su entrada en el campo en 2022. No parece ser un sucesor de RedLine, ya que el desarrollo de ambas familias ha continuado en paralelo. Fue eliminado junto con RedLine Stealer.
Esperamos que nuestro análisis en profundidad de los entresijos de RedLine -su panel de control y su backend- proporcione una comprensión más holística de esta amenaza.
Para cualquier consulta sobre nuestra investigación publicada en WeLiveSecurity, póngase en contacto con nosotros en threatintel@eset.com.ESET Research ofrece informes privados de inteligencia APT y fuentes de datos. Para cualquier consulta sobre este servicio, visite la página de ESET Threat Intelligence.
IoCs
Puede encontrar una lista completa de indicadores de compromiso (IoCs) y muestras en nuestro repositorio GitHub.
Archivos
SHA-1 | Filename | Detection | Description |
1AD92153B56FC0B39F8F |
Nodes.Api.exe | N/A | RedLine backend single-file application. |
8A0CAFE86C0774F1D9C7 |
MainServer.exe | N/A | RedLine backend user and advertisement management module (2024 version). |
607DBA5F630A1DBFF0E1 |
Nodes.Api.dll | N/A | RedLine backend main module. |
FB3ABAC1FAC852AE6D22 |
Panel.exe | MSIL/Spy.RedLine.O | META stealer panel (2024 version). |
EE153B3F9B190B1492DE |
RedLine.MainPanel.exe | MSIL/Spy.RedLine.H | RedLine stealer panel (2024 version). |
1AB006B1C5403BA46480 |
Panel.exe | MSIL/Spy.RedLine.O | RedLine stealer panel (2024 version). |
DC3A236245AE8C4D5D07 |
RedLine.MainServer.exe | N/A | RedLine backend licensing server GUI. |
06A2A900561C122F4508 |
rsa.exe | N/A | Tool to encrypt the list of C&C servers. |
1626F2666782710FC28D |
RedLine.Nodes |
N/A | RedLine backend server module. |
37D1221CE6BB82E7AD08 |
RedLine.SharedModels |
MSIL/Spy.RedLine.K | RedLine WCF models and contracts definitions. |
66C0E7E74C593196E092 |
Panel.exe | Win32/GenCBL.ATC | RedLine panel (v22.4). |
2E5D9F2ED82C81609F4C |
RedLine.MainPanel.exe | MSIL/Spy.RedLine.H | RedLine panel (non-virtualized). |
47B78A5698A289C73175 |
RedLine.SharedModels |
MSIL/Spy.RedLine.J | RedLine models and contracts definitions. |
49BE1D7C87AC919BB908 |
Panel.exe | MSIL/Spy.RedLine.H | META Stealer Panel. |
4BF4D42EED7FCA8FD528 |
RedLine.Nodes |
N/A | RedLine backend server user and advertisement management module. |
27BD472729439D5B8814 |
Panel.exe | MSIL/Spy.RedLine.H | RedLine panel (v26). |
A154DFAEDC237C047F41 |
Panel.exe | MSIL/Spy.RedLine.H | RedLine Panel (leaked cracked version). |
Red
Tenga en cuenta que los dominios de la siguiente tabla han sido incautados por las fuerzas de seguridad. El resto de direcciones de paneles y servidores que recopilamos se compartieron con las fuerzas del orden de forma regular para ayudar en sus acciones y ya no están activas.
IP | Domain | Hosting provider | First seen | Details |
N/A | spasshik[.]xyz | N/A | 2024-06-02 | META backend REST server. |
N/A | fivto[.]online | N/A | 2024-08-03 | RedLine backend REST server. |
Técnicas ATT&CK de MITRE
Esta tabla se ha elaborado utilizando la versión 15 del marco MITRE ATT&CK.
Tactic | ID | Name | Description |
Resource Development | T1583.003 | Acquire Infrastructure: Virtual Private Server | Instances of the RedLine back end are hosted on leased virtual private servers. |
T1583.004 | Acquire Infrastructure: Server | Instances of the RedLine back end are hosted on servers that appear to be exclusive to RedLine. | |
T1587.001 | Acquire Infrastructure: Web Services | Operators of RedLine have created multiple GitHub accounts and repositories. | |
T1587.002 | Develop Capabilities: Malware | Operators of RedLine have developed their own malware families, control panels, and back-end servers. | |
T1588.003 | Develop Capabilities: Code Signing Certificates | The RedLine back end automatically generates self-signed certificates when creating samples. | |
T1608.002 | Obtain Capabilities: Code Signing Certificates | RedLine panels are signed with valid certificates issued to AMCERT,LLC. | |
T1608.001 | Stage Capabilities: Upload Malware | Back-end components of RedLine are uploaded to private servers. | |
Defense Evasion | T1622 | Debugger Evasion | The RedLine panel automatically terminates itself if it detects a debugger or analysis tools. |
T1027.002 | Obfuscated Files or Information: Software Packing | Samples of the RedLine panel are packed using DNGuard and BoxedApp. | |
Command and Control | T1132.001 | Data Encoding: Standard Encoding | RedLine makes extensive use of base64 encoding in its network communications. Network communication uses the standard binary encoder of the WCF framework. |
T1573.001 | Encrypted Channel: Symmetric Cryptography | Communications between the panel and back-end server use AES encryption. In some cases, dead-drop resolver content is encrypted with AES-CBC. |
|
T1573.002 | Encrypted Channel: Asymmetric Cryptography | Communications between the panel and back-end server use RSA encryption. In some cases, dead-drop resolver content is encrypted with RSA. |
|
T1071.001 | Application Layer Protocol: Web Protocols | Network communication in recent versions is done via a REST API over HTTPS. | |
T1095 | Non-Application Layer Protocol | Network communication is done with the WCF Framework over TCP. | |
T1102.001 | Web Service: Dead Drop Resolver | The RedLine panel uses GitHub repositories as dead-drop resolvers to obtain the address of back-end servers. | |
T1571 | Non-Standard Port | By default, the RedLine panel’s Guest Links functionality runs an HTTP server on port 7766. |