Investigando la configuración del Troyano de Acceso Remoto LuminosityLink

Esta publicación también está disponible en: 日本語 (japonés)

En las últimas semanas, he dedicado tiempo a investigar la configuración integrada del Troyano de Acceso Remoto LuminosityLink (RAT). Para aquellos que no lo saben, LuminosityLink es una familia de malware que cuesta 4 40 y que pretende ser una utilidad de administración del sistema. Sin embargo, cuando se ejecuta, el malware aprovecha un keylogger muy agresivo, así como una serie de otras características maliciosas que permiten a un atacante obtener el control total sobre una máquina víctima.

LuminosityLink 1

Figura 1 Sitio web de LuminosityLink

A petición de un compañero de trabajo, se me pidió que extraiga la configuración de una muestra de LuminosityLink, y aunque simplemente podría haber ejecutado el malware en un entorno aislado y extraído la configuración de la memoria, elegí ver si podía realizar la misma acción contra el binario estático.

Esto me llevó a comprender cómo se encripta la configuración dentro del binario, así como cómo analizar esa configuración. He creado un script para realizar esta acción contra una muestra de malware de LuminosityLink inalterada, que compartiré en esta publicación de blog. Además, observé las aproximadamente 18,000 muestras de LuminosityLink que Palo Alto Networks ha recopilado a lo largo del tiempo, y usando este script, pude extraer las configuraciones de 14,700 muestras. (Estos datos se pueden encontrar en la sección del Apéndice de este post.)

Descripción general de LuminosityLink

Que apareció originalmente en mayo de 2015, la popularidad de LuminosityLink ha ido en aumento, como se muestra en el siguiente gráfico. Hasta la fecha, Palo Alto Networks ha rastreado aproximadamente 50,000 intentos de infecciones de LuminosityLink contra nuestros clientes.

 LuminosityLink 2

Figura 2 Gráfico de enfoque automático de sesiones de LuminosityLink a lo largo del tiempo.

LuminosityLink actualmente se vende por 4 40 y se puede comprar directamente a su autor. Este paquete permite a los atacantes alojar un servidor LuminosityLink, así como generar binarios personalizados, que están ofuscados con ConfuserEx 0.4.0. ConfuserEx es un proyecto de código abierto que ofusca lo subyacente .Código de RED, lo que lo hace mucho más difícil para los ingenieros inversos que lo descompilan. Es importante tener en cuenta esto para más adelante cuando discutamos cómo determinar la ingeniería inversa del proceso de cifrado.

Como se mencionó anteriormente, se incluyen varias opciones de configuración, como podemos ver en la siguiente captura de pantalla.

 LuminosityLink 3

Figura 3 Opciones de configuración del cliente en LuminosityLink

Una vez ejecutados, los atacantes reciben una gran cantidad de opciones, que incluyen registro de teclas, escritorio remoto, robo de contraseñas e interacción con un shell en el dispositivo.

Ingeniería inversa de la configuración

El primer paso para analizar la configuración de LuminosityLink es extraerla de forma estática. Inicialmente abrí una muestra limpia de LuminosityLink usando un programa llamado dnSpy para buscar pistas sobre dónde se podría almacenar la configuración. (Como una rápida lado, yo recomiendo dnSpy, ya que no sólo hace un gran trabajo de descompilar el .NET binario, pero también viene equipado con un depurador integrado, que es fundamental en la lucha contra problemas como el que estamos enfrentando.)

Al abrir inicialmente un binario de muestra, no esperaba mucho, ya que sabía que la muestra estaba ofuscada usando ConfuserEx. Sin embargo, mirando los recursos de la muestra, vi algunas cuerdas que parecían prometedoras.

 LuminosityLink 4

Figura 4 Cadenas de recursos incrustadas en LuminosityLink

Como podemos ver, el malware contiene una serie de recursos que a su vez contienen lo que parecen ser datos codificados con Base64. Los recursos” SMARTLOGS”,” XML “y” CONFIG ” contienen una gran cantidad de datos que, en este momento, todavía se desconocen. Desafortunadamente, decodificar estas cadenas resulta en basura, lo que probablemente significa que se está utilizando alguna otra forma de cifrado debajo.

Continué investigando el código subyacente, que, aunque ofuscado, todavía proporciona una idea de alto nivel de lo que están haciendo varias clases. Usando espacios de nombres importados, llamadas a API y ciertas cadenas no ofuscadas, podemos obtener pistas sobre lo que está sucediendo dentro del programa. Específicamente, vemos la clase fd () usando el espacio de nombres de ‘System.Seguridad.Criptografía’, que sin duda merece una investigación, ya que sospechábamos que el cripto se estaba utilizando contra las cadenas de recursos a las que se hacía referencia anteriormente.

LuminosityLink 5

Figura 5 Espacio de nombres de criptografía utilizado por LuminosityLink

A medida que investigamos más a fondo esta clase, vemos referencias a las siguientes clases y funciones:

  • MD5CryptoServiceProvider
  • ComputeHash
  • FromBase64String
  • RijndaelManaged

En este punto, recurrí a mi depurador en un intento de ver cómo se manejaban estas cadenas. Establecí puntos de interrupción en varias llamadas mencionadas anteriormente. Específicamente, el punto de interrupción en la clase administrada Rijndael produce excelentes resultados.

 LuminosityLink 6

Figura 6 Recuperación exitosa de la clave AES-128

No solo podemos verificar que se utiliza el cifrado AES-128, sino también verificar que se está utilizando la cadena de recursos “SMARTLOGS”. También podemos identificar la cadena que se utiliza como clave, que en este ejemplo en particular es “\ \ ecnOnuR\ \ noisreVtnerruC \ \ swodniW \ \ tfosorciM \ \ erawtfoS”. Una investigación adicional revela que esta cadena está hash usando el algoritmo MD5. Los primeros 15 bytes de este hash se concatenan con los 16 bytes completos del hash, seguidos de un byte nulo. Podemos repetir este proceso de descifrado en Python como tal:

1
2
3
4
5
6
7
8
9
10

def decrypt_data(datos, key_string):
decoded_data = base64.b64decode (datos)
m = hashlib.md5 ()
m.update (key_string)
md5 = m.digest ()
key = md5+md5+”\x00″
mode = AES.MODE_ECB
iv = ‘\x00’ * 16
e = AES.nuevo (clave, modo, iv)
devuelve e. descifrar (decoded_data)

Podemos verificar que esto es correcto usando el código anterior. En el siguiente ejemplo, la variable de datos se ha establecido con la cadena codificada en base64 que se encuentra dentro del recurso” SMARTLOGS”, y la variable key_string se ha establecido en la clave de registro invertida mencionada anteriormente.

1
2

>>> imprimir decrypt_data(datos, key_string)
172.16.1.100|11111|backup.dns.com|filename.exe|startup_name|folder_name|data_directory_name|backup_startup.exe / df5e0e1c667c399588b014cb9b4ae7b33c9c0b4cac9d4169f39197e41e9a43a4 / BuildID / 1idssb|

Mediante prueba y error, podemos mapear con éxito cada variable presenciada en la configuración anterior. La última variable resulta ser bastante interesante, ya que cada carácter, a excepción de ‘1’, se asigna a una opción de configuración en particular. Se determinó el siguiente mapeo:

  • i: Habilitar la Instalación/Inicio del Cliente
  • d: Módulo de Persistencia del Cliente: Proteger el Binario del Cliente de Luminosidad
  • s : Modo Silencioso (Ocultar ventana de luminosidad en el PC Cliente)
  • a : Antimalware Proactivo: Limpie los archivos maliciosos y Acelere el PC Cliente
  • n : Ahorrador de energía: Evite el Modo de suspensión y Apague el monitor después de 15 minutos de inactividad
  • m : Elimine el archivo después de la ejecución (Fusión)
  • v : Máquinas Ocultar archivos y directorios
  • b : Inicio de copia de seguridad

Utilizando este conocimiento, podemos analizar la configuración anterior, que produce los siguientes resultados.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

Dominio/IP: 172.16.1.100
Puerto: 11111
Copia de seguridad de DNS: backup.dns.com
nombre de archivo: nombre de archivo.exe
Nombre de inicio: startup_name
Nombre de carpeta: folder_name
Nombre de directorio de datos: data_directory_name
Inicio de copia de seguridad Exe: backup_startup.exe
Mutex: df5e0e1c667c399588b014cb9b4ae7b33c9c0b4cac9d4169f39197e41e9a43a4
ID de compilación: BuildID
Configuración:
Habilitar la instalación/inicio del cliente
Módulo de Persistencia del cliente: Proteja el Binario del Cliente de Luminosidad
Modo silencioso (Ocultar la ventana de Luminosidad en el PC Cliente)
Antimalware Proactivo: Limpie los archivos maliciosos y Acelere el PC Cliente
Ahorro de energía: Evite el modo de suspensión y Apague el monitor después de 15 minutos de inactividad
Eliminar el archivo después de la ejecución (Derretir)
Máquinas/Depuración Anti-Virtuales
Ocultar archivos y directorios
Inicio de copia de seguridad

Analizando configuraciones de LuminosityLink a escala

Usando este conocimiento, creamos un script para analizar la configuración de un ejemplo dado. El script busca cadenas que parecen estar codificadas en base64 con una longitud superior a 50 y adopta un enfoque de fuerza bruta. Aunque no es elegante, hace el trabajo con bastante éxito. El script se puede descargar en la sección Apéndice de esta entrada de blog.

Pasando por el repositorio de muestras de Palo Alto Networks, encontramos aproximadamente 18,000 archivos etiquetados como LuminosityLink. Para estas 18.000 muestras, aplicamos nuestro script de extracción y análisis de configuración estática y recuperamos con éxito unas 4.500 configuraciones. Las muestras restantes se empaquetaron más allá de la rutina de ofuscación ConfuserEx incorporada, y como tal, las cadenas de configuración sin procesar no estaban presentes.

Estas muestras se ejecutaron a través de una instancia local de la caja de arena de Cuco de código abierto, donde se extrajeron los volcados de proceso. El mismo script se aplicó a estos volcados de procesos, donde pudimos obtener 10.200 configuraciones adicionales, dejándonos con un total de 14.700 configuraciones de LuminosityLink analizadas.

A medida que se procesaban las muestras, se descubrió que el autor utilizaba más llaves. Se utilizaron las siguientes tres cadenas adicionales para generar las claves de las muestras de LuminosityLink.

  • Esta configuración no contiene nada útil. Deja de actuar como si estuvieras bien desencriptándolo.
  • Recursos.SMARTLOGS
  • Especifique una contraseña

Parece que el autor de LuminosityLink no carece de sentido del humor. Además, a medida que analizamos muestras más antiguas, se descubrió que la configuración hizo un cambio en algún momento entre febrero y junio de este año. Había menos opciones disponibles en la configuración de muestras más antiguas. El script proporcionado explica estas diferencias y las diversas claves utilizadas.

Utilizando los datos agregados de las 14.700 configuraciones, se extrajeron las siguientes estadísticas de alto nivel:

LuminosityLink 7

Figure 7 Prevalence of enabled settings in LuminosityLink configurations

Top C2 TLDs/IP Addresses

  • ddnsnet
  • duckdnsorg
  • no-ipbiz
  • chickenkillercom
  • no-iporg
  • mooocom
  • fishdnscom
  • no-ipinfo
  • ignorelistcom
  • freednssu

Top Build IDs

  • HOME
  • Client
  • crtx1
  • M4CHINATION
  • CSGO
  • NEW
  • Slave
  • CAPO
  • Youtube
  • PROJECT.D

Top Executable Names

  • sysmon.exe
  • client.exe
  • helper.exe
  • repair.exe
  • winlogon.exe
  • svchost.exe
  • Luminosity.exe
  • WinCOMHost.exe
  • chrome.exe
  • windowsbootapp.exe

Puertos superiores

  • 6318
  • 1400
  • 1604
  • 1337
  • 3175
  • 22028
  • 9045
  • 2122
  • 100
  • 9999

Los datos de configuración analizados, proporcionados en formato de archivo CSV, se proporcionan gratuitamente a la comunidad de seguridad con la esperanza de que se creen protecciones contra esta amenaza.

Conclusión

LuminosityLink, aunque se comercializa como una utilidad de administración de sistemas, es un formidable keylogger y puerta trasera utilizado por un gran número de delincuentes. Hasta la fecha, Palo Alto Networks ha sido testigo de más de 50,000 intentos de infecciones de LuminosityLink, abarcando 18,000 muestras únicas. El malware es barato y está disponible para el público, lo que lo convierte en una amenaza peligrosa tanto para las organizaciones como para los individuos.

Mediante la ingeniería inversa de muestras de LuminosityLink, pudimos extraer y analizar de forma estática la configuración integrada, lo que a su vez proporciona información valiosa sobre con qué hosts y puertos está configurado el malware para comunicarse. También proporciona información sobre las protecciones configuradas dentro del ejecutable, así como información de instalación.

Los clientes de Palo Alto Networks están protegidos de esta amenaza de las siguientes maneras:

Se puede usar una etiqueta de enfoque automático para rastrear esta familia de malware

  • Todas las muestras de LuminosityLink se marcan adecuadamente como maliciosas en WildFire
  • Todos los dominios identificados se marcan como maliciosos
  • El tráfico de red se identifica y bloquea adecuadamente como amenaza ID #14460 (LumonosityLinkRAT.Tráfico De Comando Y Control De Generación)

Apéndice

Se puede encontrar un script de extracción y análisis para muestras de LuminosityLink aquí.

Un script que se utilizará para analizar cadenas de configuración simples se puede encontrar aquí.

Un archivo CSV que contiene todos los datos de configuración extraídos del conjunto de muestras de Palo Alto Networks se puede encontrar aquí.

Obtenga actualizaciones de redes
Palo Alto
!

Regístrese para recibir las últimas noticias, información sobre amenazas cibernéticas e investigaciones de nuestra parte

Al enviar este formulario, acepta nuestros Términos de Uso y reconoce nuestra Declaración de privacidad.

Write a Comment

Tu dirección de correo electrónico no será publicada.