Por  William Tsing , Vasilios Hioureas y Jérôme Segura

En los últimos meses, hemos notado un aumento de la actividad y el desarrollo de nuevos ladrones. Uno de estos nuevos ladrones, llamado Baldr, apareció por primera vez en enero de 2019, y nuestro análisis de este malware encuentra que sus autores tomaron en serio la creación de un producto de larga duración.

A diferencia de muchos troyanos bancarios que esperan a que la víctima inicie sesión en el sitio web de su banco, los ladrones suelen operar en modo de agarrar y usar. Esto significa que, tras la infección, el malware recopilará todos los datos que necesita y los eliminará de inmediato. Debido a que estos ladrones a menudo no son residentes (lo que significa que no tienen un mecanismo de persistencia) a menos que sean detectados en el momento del ataque, las víctimas no sabrán que han sido comprometidos.

Este tipo de malware es popular entre los delincuentes y cubre una mayor superficie que los banqueros más especializados. Además de capturar el historial del navegador, las contraseñas almacenadas y las cookies, los ladrones también buscarán archivos que puedan contener información valiosa.

En esta publicación del blog, revisaremos al ladrón de Baldr analizando su introducción en los foros de delitos informáticos y su distribución en el medio silvestre.

Baldr en el mercado

Es probable que Baldr sea el trabajo de tres actores de amenazas: Agressor para la distribución, Overdot para ventas y promoción, y LordOdin para el desarrollo. Apareciendo por primera vez en enero, Baldr generó rápidamente muchos comentarios positivos en la mayoría de los populares foros de piratería rusos de clearnet.

Anteriormente asociado con el ladrón de Arkei (que se ve a continuación), Overdot publica la mayoría de las publicidades en múltiples foros de mensajes, proporciona servicio al cliente a través de Jabber y aborda las quejas de los compradores en el sistema de reputación utilizado por varios foros.

De interés es una publicación de foros que hace referencia al trabajo anterior de Overdot con Arkei, donde afirma que los desarrolladores de Baldr y Arkei están en contacto y colaboran en ocasiones.

A diferencia de la mayoría de los productos publicados en los tableros clearnet, Baldr tiene una reputación de confiabilidad y también ofrece una comunicación relativamente buena con el equipo que lo respalda.

LordOdin, también conocido como BaldrOdin, tiene un perfil significativamente más bajo en combinación con Baldr, pero monitoreará y apreciará las publicaciones que lo rodean.

Principalmente publica para diferenciar a Baldr de productos de la competencia como Azorult, y confirma que Baldr no es simplemente un personaje de Arkei:

Agressor / Agri_MAN es el jugador final que aparece en la distribución de Baldr:

Agri_MAN tiene un historial de ventas de tráfico en los foros de piratería rusos que se remontan aproximadamente a 2011. En contraste con LordOdin y Overdot, él tiene una reputación más marcada, apareciendo en una lista negra para las devoluciones de cargo, así como siendo llamado para usar las cuentas de títeres. Para generar buenos comentarios.

Utilizando la cuenta alternativa Agressor, actualmente mantiene una tienda automatizada para generar construcciones de Baldr en  service-shop [.] Ml . Curiosamente, Overdot hace referencia a un robot de instalación automatizado que no está conectado a ellos, y está generando quejas de los clientes:

Esto puede indicar que Agressor es un afiliado y no está directamente asociado con el desarrollo de Baldr. En Presstime, Overdot y LordOdin parecen ser los principales actores de amenazas que manejan Baldr.

Distribución

En nuestro análisis de Baldr, recopilamos algunas versiones diferentes, lo que indica que el malware tiene ciclos de desarrollo cortos. La última versión analizada para esta publicación es la versión 2.2, anunciada el 20 de marzo:

Capturamos a Baldr a través de diferentes cadenas de distribución. Uno de los vectores principales es el uso de aplicaciones troyanas disfrazadas de grietas o herramientas de hackeo. Por ejemplo, vimos un video publicado en YouTube que ofrecía un programa para generar Bitcoins gratuitos, pero en realidad era el ladrón de Baldr disfrazado.

También atrapamos a Baldr a través de una campaña de drive-by con el kit de explotación de Fallout:

Análisis técnico (Baldr 2.2)

La funcionalidad de alto nivel de Baldr es relativamente sencilla, ya que proporciona un pequeño conjunto de habilidades maliciosas en la versión de este análisis. No hay nada innovador en cuanto a lo que está tratando de hacer en la computadora del usuario, sin embargo, donde esta amenaza se diferencia en sí misma es en su implementación extremadamente complicada de esa lógica.

Por lo general, es bastante evidente cuando se lanza un malware para obtener una inversión rápida en comparación con cuando se crea con habilidad para una campaña de larga duración. Baldr se sienta firmemente en la última categoría, no es el trabajo de un script para niños. Ya sea que estemos hablando de su uso del empaquetador, la estructura del código de la carga útil, o incluso de su C2 backend y su distribución, está claro que los autores de Baldr pasaron mucho tiempo desarrollando esta amenaza particular.

Descripción de la funcionalidad

La funcionalidad principal de Baldr se puede dividir en cinco pasos, que se completan en orden cronológico.

Paso 1: Perfil del usuario

Baldr comienza reuniendo una lista de datos de perfiles de usuarios. Todo, desde el nombre de la cuenta de usuario hasta el espacio en disco y el tipo de sistema operativo, se enumera para la exfiltración.

Paso 2: Exfiltración de datos sensibles.

A continuación, Baldr comienza a recorrer todos los archivos y carpetas dentro de las ubicaciones clave de la computadora víctima. Específicamente, busca en la carpeta AppData y temporal del usuario información relacionada con datos confidenciales. A continuación hay una lista de ubicaciones clave y datos de aplicaciones que busca:

AppData \ Local \ Google \ Chrome \ Datos de usuario \ Predeterminado
AppData \ Local \ Google \ Chrome \ Datos de usuario \ Predeterminado \ Datos de inicio de sesión
AppData \ Local \ Google \ Chrome \ Datos de usuario \ Predeterminado \ Cookies
AppData \ Local \ Google \ Chrome \ Datos de usuario \ Predeterminado \ Datos Web
AppData \ Local \ Google \ Chrome \ Datos de usuario \ Predeterminado \ Historial
AppData \ Roaming \ Exodus \ exodus.wallet
AppData \ Roaming \ Ethereum \ keystore 
AppData \ Local \ ProtonVPN 
Carteras \ Jaxx 
Libertad\ 
NordVPN \ 
Telegrama 
Farfullar 
Comandante total 
Ghisler

Muchos de estos archivos de datos van desde bases de datos sqlite simples hasta otros tipos de formatos personalizados. Los autores tienen un conocimiento detallado de estos formatos de destino, ya que solo los datos clave de estos archivos se extraen y se cargan en una serie de matrices. Una vez analizados y preparados todos los datos dirigidos, el malware continúa con su siguiente conjunto de funciones.

Paso 3: captura de archivos ShotGun

Los archivos DOC, DOCX, LOG y TXT son los objetivos en esta etapa. Baldr comienza en los directorios Documentos y Escritorio e itera recursivamente todos los subdirectorios. Cuando se encuentra con un archivo con cualquiera de las extensiones anteriores, simplemente toma todo el contenido del archivo.

Paso 4: ScreenCap

En este último paso de recopilación de datos, Baldr le da al controlador la opción de capturar una captura de pantalla de la computadora del usuario.

Paso 5: Exfiltración de red

Una vez que todos estos datos se han cargado en arreglos / listas organizados y categorizados, Baldr aplana los arreglos y los prepara para enviarlos a través de la red.

Una nota interesante es que no hay ningún intento de hacer que la transferencia de datos sea más discreta. En nuestra máquina de análisis, proporcionamos deliberadamente una cantidad extrema de archivos para que Baldr los tomara, preguntándonos si el malware exfiltraría lentamente esta gran cantidad de datos, o si simplemente los enviaría de vuelta al C2.

El resultado fue una transferencia de red grande y obvia. El malware no tiene funcionalidad incorporada para permanecer residente en la máquina de la víctima. Ya ha recopilado los datos que desea y no le importa re-infectar la misma máquina. Además, no existe un mecanismo de difusión en el código, por lo tanto, en un entorno corporativo, cada empleado tendría que ser dirigido manualmente con un intento único.

Análisis de nivel de código de Packer

Comenzaremos con la ofuscación de la carga útil y el uso del empacador. Esta versión de Baldr comienza como un script AutoIt integrado en un exe. Usando un descompilador AIT disponible gratuitamente, llegamos a la primera etapa del empaquetador a continuación.

Como puede ver, este código está muy confuso. Las dos primeras funciones son el principal caballo de batalla de esa ofuscación. Lo que está sucediendo aquí es simplemente reordenar la cadena provista, de acuerdo con los índices pasados ​​como segundo parámetro. Sin embargo, esto no representa un gran problema, ya que podemos extraer fácilmente las cadenas generadas simplemente modificando este script a ConsoleWrite las cadenas desofuscadas antes de regresar:

Las cadenas resultantes extraídas se encuentran a continuación:

Ejecutar
BinaryToString
@TempDir
@SystemDir
@SW_HIDE
@StartupDir
@ScriptDir
@Versión del sistema operativo
@HomeDrive
@CR
@ComSpec
@AutoItPID
@AutoItExe
@AppDataDir
WinExists
UBound
StringReplace
StringLen
StringInStr
Dormir
ShellExecute
RegWrite
Aleatorio
ProcessExists
ProcesoCerrar
IsAdmin
FileWrite
FileSetAttrib
FileRead
FileOpen
El archivo existe
FileDelete
ArchivoCerrar
DriveGetDrive
DllStructSetData
DllStructGet
DllStructGetData
DllStructCreate
DllCallAddress
DllCall
DirCreate
BinaryLen
BandejaIconcultar
: Zone.Identifier
kernel32.dll
encargarse de
CrearMutexW
estructura *
FindResourceW
kernel32.dll
palabra
SizeofResource
kernel32.dll
LoadResource
kernel32.dll
LockResource
byte[
VirtualAlloc
byte shellcode [

Además de estas llamadas a funciones obvias, también tenemos una cantidad de blobs binarios que se desenfocan. Hemos incluido solo un conjunto limitado de estas cadenas para no sobrecargar este análisis con conjuntos largos de datos.

Podemos ver que está extrayendo y desencriptando una DLL de recursos desde el ejecutable principal, que se cargará en la memoria. Esto tiene sentido después de analizar una versión anterior de Baldr que no usó AIT como su primera etapa. Las versiones anteriores de Baldr requerían un archivo secundario llamado  Dulciana. Entonces, en lugar de usar AIT, las versiones anteriores usaron este archivo que contiene los bytes cifrados de la misma DLL que vemos aquí:

Avanzando a la etapa dos, todas las cosas esencialmente permanecen iguales en todas las versiones del empaquetador Baldr. Tenemos la DLL cargada en la memoria, lo que crea un proceso secundario del ejecutable Baldr principal en un estado suspendido y procede a vaciar este proceso, reemplazándolo finalmente con la carga útil principal de .NET. Esto hace que el desempaquetado manual con ollyDbg sea agradable porque después de interrumpir la carga de Baldr.exe secundario, podemos recorrer el código restante del padre, que escribe para procesar la memoria y finalmente llama a ResumeThread () .

Como puede ver, una vez que se carga el proceso hijo, las funciones que ha configurado para llamar contienen VirtualAlloc, WriteProcessMemory y ResumeThread, que nos da una idea de qué buscar. Si volcamos esta memoria escrita justo antes de llamar al hilo de reanudación, podemos extraer fácilmente la carga útil principal.

Nuestro colega @hasherezade ha hecho este video paso a paso de desempacar Baldr:

Análisis de código de carga

Ahora que hemos desempaquetado la carga útil, podemos ver la funcionalidad maliciosa real. Sin embargo, aquí es donde comenzaron nuestros problemas. En su mayor parte, el malware escrito en cualquier lenguaje interpretado es un alivio para un ingeniero inverso en lo que respecta a la facilidad de análisis. Baldr, por otro lado, logró hacer la depuración y el análisis de su código fuente una tarea difícil, a pesar de estar escrito en C #.

El código base de este malware no es sencillo. Toda la funcionalidad está muy resumida, encapsulada en funciones de envoltura y utiliza una tonelada de clases de utilidad. Al analizar esta base de código de alrededor de 80 clases y módulos separados, no es fácil ver dónde se encuentra la funcionalidad clave. Se requieren múltiples pases estáticos sobre la base del código para comenzar a darle sentido a todo. Agregue el hecho de que los nombres de las funciones han sido modificados y se han insertado instrucciones de correo no deseado en todo el código, y el siguiente paso sería comenzar a depurar el archivo ejecutable con DnSpy.

Ahora llegamos a nuestro siguiente problema: hilos. Cada acción de minuto que realiza este malware se ejecuta a través de un hilo separado. Esto fue obviamente hecho para complicar la vida del analista. Sería exacto decir que hay más de 100 funciones únicas que se llaman dentro de los hilos en todo el código base. Esto no incluye los subprocesos que se llaman recursivamente, que podrían convertirse en miles.

Afortunadamente, podemos ver los datos locales a medida que se escriben, y eventualmente podemos ubicar las secciones clave del código:

La función que se muestra arriba recoge el perfil del usuario, como se mencionó anteriormente. Esto incluye el tipo de CPU, el nombre del equipo, las cuentas de usuario y el sistema operativo.

Una vez que se completa el proceso completo, se aplanan las matrices que almacenan estos datos, lo que resulta en una cadena como esta:

La siguiente sección de código muestra una de las muchas clases de enumeradores que se utilizan para completar un ciclo de directorios, buscando datos de aplicaciones, como las cuentas de usuario almacenadas, que guardamos a propósito para realizar pruebas.

Los datos recuperados se guardaron en listas en el siguiente formato:

En la etapa final de la recopilación de datos, tenemos los subprocesos a continuación, que completan los directorios clave en busca de archivos txt y doc. Guardará el nombre de archivo de cada txt o documento que encuentre, y almacenará el contenido del archivo en varios arreglos.

Finalmente, antes de continuar con el segmento de red del malware, tenemos la sección de código que realiza las capturas de pantalla:

La función Class 2d10104b 1b0b685 () es uno de los módulos principales que se bifurca para realizar la mayoría de las funciones, como recorrer los directorios. Una vez que se han recopilado todos los datos, los hilos convergen y las líneas de código restantes continúan en un solo hilo. Es entonces cuando comienzan las llamadas de la red y todos los datos se envían de vuelta al C2.

Panel

Al igual que otros ladrones, Baldr viene con un panel que permite a los clientes (delincuentes que compran el producto) ver estadísticas de alto nivel, así como recuperar la información robada. A continuación se muestra una página de inicio de sesión del panel:

Y aquí, en una captura de pantalla publicada por el actor de amenazas en un foro, vemos el interior del panel:

Análisis final

Baldr es un ladrón sólido que se distribuye en la naturaleza. Su autor y distribuidor están activos en varios foros para promover y defender su producto contra los críticos. Durante un corto período de tiempo de solo unos pocos meses, Baldr ha pasado por muchas versiones, lo que sugiere que su autor está corrigiendo errores e interesado en desarrollar nuevas características.

Baldr tendrá que competir contra otros ladrones y diferenciarse. Sin embargo, la demanda de tales productos es alta, por lo que podemos esperar que muchos distribuidores lo utilicen como parte de varias campañas.

Los usuarios de Malwarebytes están protegidos contra esta amenaza, detectada como Spyware.Baldr.

Gracias a S! Ri por contribuciones adicionales.

Indicadores de compromiso

Muestras de baldr

5464be2fd1862f850bdb9fc5536eceafb60c49835dd112e0cd91dabef0ffcec5 -> versión 1.2
1cd5f152cde33906c0be3b02a88b1d5133af3c7791bcde8f33eefed3199083a6 -> versión 2.0
7b88d4ce3610e264648741c76101cb80fe1e5e0377ea0ee62d8eb3d0c2decb92> versión 2.2
8756ad881ad157b34bce011cc5d281f85d5195da1ed3443fa0a802b57de9962f (2.2 sin empaquetar)