Buscar

Skuld: El ladrón de información que habla Golang

Por Ernesto Fernández Provecho*

Golang, conocido como Skuld, que comprometió sistemas alrededor del mundo, algo que los investigadores de seguridad también notaron.

Ernesto Fernandez Provecho

El uso de Golang en desarrollo de malware, también conocido como Go, sigue siendo raro comparado con otros lenguajes de programación, pero se ha ganado cierta popularidad en años recientes por la simplicidad, eficiencia y compatibilidad con varias plataformas, lo que permite a los creadores de malware apuntar a un amplio rango de sistemas operativos, ampliando su grupo de víctimas potenciales. Además, la naturaleza compilada de Golang permite a los autores de malware producir ejecutables binarios que son más difíciles de analizar y realizar ingeniería inversa. Esto lo hace más difícil para los investigadores de seguridad y las soluciones tradicionales anti malware para detectar y mitigar estas amenazas efectivamente

Esta nueva cepa de malware trata de robar información sensible de sus víctimas, para lograr esto busca información almacenada en aplicaciones como Discord y navegadores de red, información del sistema y archivos guardados en los folders de la víctima. Algunos ejemplos pueden incluir un módulo para robar activos de criptomonedas, que se piensa que está en desarrollo.

El desarrollador, conocido como Deathined, se inspiró de varios proyectos de open-source y ejemplos de malware, portando su funcionalidad a Golang para construir Skuld. También, el autor parece haber creado varias cuentas de redes sociales que se sospecha que serán usadas para promover su negocio de malware en el futuro.

Análisis técnico

Las muestras descubiertas de Skuld están escritas en Goland 1.20.3, usando una gran cantidad de librerías para completar las diferentes tareas de soporte, algunas de ellas fueron modificadas para sugerir que algunas estructuras se corrompieron y, por lo tanto, no pueden detectarse adecuadamente por los desensambladores. Así que, antes de analizar esas muestras, se debe hacer cierto trabajo para ayudar al análisis. Una gran herramienta es el GoReSym, desarrollado por Mandiant para reconstruir estas estructuras y extraer información de las muestras basadas en Golang.

El ladrón Skuld se analizó en detalle junto con algunos extractos de código. Una vez iniciado, el ladrón cargará algunos parámetros, paths y expresiones regulares en una estructura de mapa de cadenas que se usa después por diferentes módulos de soporte. Luego de establecer el ambiente de ejecución, la muestra mostrará un mensaje de error falso para engañar a los usuarios haciéndoles creer que el binario tiene errores.

Después ejecuta los diferentes módulos para robar información del sistema de la víctima, pero antes de robar, la muestra revisa si está siendo analizado por un producto de seguridad o investigador, vía diferentes propiedades del ambiente. Si el binario confirma el análisis, la ejecución termina.

Las primeras revisiones que hace el binario son comparar algunos atributos del sistema contra diferentes listas negras, como nombre de usuario, nombre de la PC, HWID y dirección IP pública. Otra estrategia común para detectar técnicas de análisis es revisar si el sistema objetivo es una máquina virtual, Skuld utiliza tres técnicas diferentes para esto:

  • La primera es revisar si la resolución de pantalla del sistema es más de 200×200 pixeles, si no, la muestra asume que está corriendo en un ambiente virtual.
  • La segunda técnica verifica si el total de RAM es más de 2,000 millones de bytes (aproximadamente 1.86 GB).
  • La tercera técnica es verificar diferentes claves de registro asociadas con información de video y disco del sistema, si alguna contiene información relacionada a VMware o Virtual Box, la aplicación termina.

La tercera revisión que hace Skuld es obtener los procesos en ejecución del sistema y compararlos con la lista de bloqueos. En este caso, si algún proceso coincide con la lista, la aplicación matará el proceso en lugar de que termine automáticamente.

Una vez que Skuld determina que el ambiente es real, comenzará a robar información sensible de aplicaciones y del sistema. Utiliza varias maneras para hacerlo de la plataforma social Discord. Lo primero que hace es tratar de inyectar algún código de JavaScript en el módulo “discord_desktop_core”. Sin embargo, para completar con éxito este ataque la muestra debe sobrepasar dos aplicaciones de seguridad de open-source: Better Discord y Discord Token Protector. La primera es un cliente de Discord que provee mayor seguridad, entre otras características. Por otra parte, Discord Token Protector es un plugin que puede instalarse para prevenir que aplicaciones maliciosas roben los tokens de seguridad de Discord. Para poder pasar, la muestra debe corromper el archivo “%APPDATA%BetterDiscorddatabetterdiscord.asar”, reemplazando la cadena “api/webhooks” con la cadena “ByDeathined”.

Una vez pasado el mecanismo del Token Protector, requiere otra estrategia, en este caso, encuentra y remueve varios archivos, modifica el contenido del archivo “config.json” para deshabilitar el autoinicio y las revisiones de integridad de Discord, permitiendo al atacante inyectar el código en la aplicación.

Luego de deshabilitar la protección de Discord, el binario descarga e inyecta un archivo de JavaScript a Discord, la muestra que se analizó no contenía un URL a diferencia de otras vairantes que se han encontrado y que sí tenían un URL para descargar e inyectar la versión JavaScript del ladrón Empyrean. Después de inyectar el código se roba los códigos de respaldo de Discord, que es una alternativa de código de autenticación de dos factores para el usuario, esto es necesario para completar el proceso de robo de una cuenta con dichos mecanismos de seguridad. Finalmente, todas las piezas de datos obtenidos son filtrados.

Información del navegador

El siguiente objetivo del malware ladrón Sklud es la información almacenada por Chromium y otros navegadores basados en Gecko, que puede ser categorizada como datos locales, datos de acceso, tarjetas de crédito, cookies, historia, descargas y tokens de sesión. Una vez obtenida la información se archiva y comprime en un archivo llamado “browsers.zip” y enviado al atacante.

Información del sistema

El Skuld toma una captura de pantalla del sistema y extrae información incluyendo la línea de comando si se tiene, incluyendo el Hostname y el Username. Después toma la información del CPU, RAM, GPU, dirección MAC, dirección IP pública y país de la dirección IP. La muestra incluía un ladrón de archivos que busca los archivos guardados en una lista predefinida, incluyendo el escritorio, documentos, descargas, fotos, música, videos y OneDrive. Los archivos son después filtrados en un archivo ZIP.

Clipper

Otra funcionalidad del ladrón es la modificación del clipboard del usuario cuando detecta una cartera de criptomonedas, este ataque busca robar el dinero del usuario cuando envía dinero a una cuenta cambiando la cartera destino por la del atacante. Actualmente Skuld soporta las criptomonedas Bitcoin, Ethereum, Monero, Litecoin, Chia, Porchain, Coinchase, Cardano y Dash, pero solo Bitcoin está implementada usando una cartera que resultó ser una bien conocida del Twitter hack de 2020, lo que sugiera que esta dirección es solo un marcador o una falsa bandera para confundir a los analistas. El hecho de que solo el Clipper de Bitcoin está implementado sugiere que esta característica está en desarrollo.

Descubriendo a Deathined, el desarrollador Golang

El actor detrás de Skuld es conocido como Deathined, basado en los hallazgos, parece ser un desarrollador comenzando su propio negocio en la competitiva industria de ladrones. Lo primero que se encontró fue la cuenta de GitHub de un usuario con el mismo alias, el URL de su avatar es el mismo que utiliza en el Discord webhook, aunque con diferentes colores.

El usuario Deathined de GitHub señala que sabe programar en Golang, lo que coincide con lo que se vio en las muestras de Skuld. La cuenta se creó en abril de 2023, solo 3 semanas antes de escribir esto, y no contiene ningún repositorio aparte del que da una breve descripción del actor. La única otra pieza de información es la existencia de un seguidor con el alias Trotzzler que parece haber creado una cuenta más o menos al mismo tiempo, pero no se ha encontrado información acerca de este usuario.

Se pueden encontrar links a varias plataformas de redes sociales, la primera a un grupo de Telegram llamado deathinews; el segundo a un grupo de Guilded (el competidor de Discord), ambos grupos fueron creados en mayo de 2023 y seguían vacíos al momento de escribir esto. Sin embargo, es probable que esos grupos se usen para promover y vender nuevas versiones de Skuld y otros malwares en el futuro. El último link es a la cuenta @deathined en Twitter, que no contiene tweets, likes ni seguidores, solo está el hecho de que también se creó en abril de 2023.

Otras cuentas con el nombre de Deathined también hay en Reddit, creada también en abril, y aquí publicó contenido relacionado con el videojuego Fortnite que después fue borrado. Este tipo d einteres es consistente con el uso de Discord por Skuld, ya que es una plataforma usada principalmente por gamers. También hay una cuenta de Tumblr con el mismo nombre, aquí el usuario muestra interés en escribir historias con el tema de arcanos, la Liga de Leyendas basada en la serie de TV, que nuevamente coincide con lo que se ha visto de Deathined.

Conclusión

El asenso del malware Goland presente una grave preocupación en el siempre cambiante paisaje de la ciberseguridad. Conforma gana popularidad, los ciber criminales están aprovechando sus fortalezas para desarrollar nuevas variantes de malware que son una seria amenaza para los usuarios y empresas. El ladrón Skuld es un excelente ejemplo de un nuevo malware que busca información sensible almacenada en sistemas, incluyendo archivos y aplicaciones, como los navegadores web y Discord. Muchas otras características parecen estar en desarrollo, basadas en cierta funcionalidad que está parcialmente implementada en algunas muestras, como la inyección de Discord o los módulos de Clipper.

El autor Deathined parece estar tratando de implementar constantemente nuevas características, tomando inspiración de proyectos de open-source y portando la funcionalidad a Golang si es necesario. El autor no ha comenzado a vender sus productos todavía, pero es probable que en el futuro cercano comience a hacerlo vía Telegram u otros servicios. El hecho de que el desarrollo de Skuld esté incompleto no significa que es un malware incompetente. De hecho, es una amenaza viable, capaz de robar datos sensibles de máquinas infectadas, algo que muchos usuarios alrededor del mundo ya han experimentado

*Ernesto Fernández Provecho es investigador en el Centro de Investigación Avanzada (ARC) de Trellix en donde se ha especializado en cazar y analizar malware. Originario de España, ha trabajado con diversas agencias gubernamentales en investigaciones de ciber crimen y ciber terrorismo.

Acerca de Trellix

Trellix es una empresa global que redefine el futuro de la ciberseguridad y el trabajo apasionado. La plataforma abierta y nativa de detección y respuesta extendida (XDR) de la empresa, ayuda a las organizaciones que se enfrentan a las amenazas más avanzadas de la actualidad a ganar confianza en la protección y resiliencia de sus operaciones. Trellix, junto con un extenso ecosistema de socios, acelera la innovación tecnológica a través del aprendizaje automático y la automatización para empoderar a más de 40,000 clientes empresariales y gubernamentales con seguridad viva. Conozca más en https://trellix.com