En una nueva entrega de nuestra serie sobre troyanos bancarios de América Latina, nos centraremos en Mispadu, un ambicioso troyano bancario latinoamericano que utiliza publicidad maliciosa bajo el nombre de McDonald's y extiende su superficie de ataque a navegadores web.

Creemos que esta familia de malware está dirigida al público en general. Sus principales objetivos son el robo de dinero y de credenciales. En Brasil, por ejemplo, hemos visto  a esta familia distribuir una extensión de Google Chrome maliciosa que intenta robar datos de la banca electrónica y de las tarjetas de crédito, y que compromete el popular sistema de pagos de facturas de Brasil conocido como Boleto Bancario.

Características

Mispadu es una familia de malware que apunta principalmente a Brasil y México y que identificamos durante nuestra investigación sobre troyanos bancarios de América Latina. Está escrito en Delphi y ataca a sus víctimas utilizando el mismo método que describimos en las otras familias de esta serie, es decir: desplegando falsas ventanas emergentes y tratando de persuadir a las posibles víctimas para que divulguen información confidencial.

Por su funcionalidad de backdoor, Mispadu puede realizar capturas de pantalla, simular acciones de mouse y teclado, además de registrar las pulsaciones de teclado. Puede actualizarse a través de un archivo de Visual Basic Script (VBS) que se descarga y ejecuta de manera automática.

Al igual que los otros troyanos bancarios analizados y que forman parte de esta serie, Mispadu también recopila información sobre sus víctimas. Los datos que recopila son los siguientes:

  • versión del sistema operativo
  • nombre de la computadora
  • ID de idioma
  • Si está instalada la aplicación “Diebold Warsaw GAS Tecnología”, una app muy popular en Brasil que es utilizada para proteger el acceso al sistema de banca electrónica
  • lista de aplicaciones bancarias comúnmente instaladas en América Latina
  • lista de productos de seguridad instalados

Como en los casos de Amavaldo y Casbaneiro, Mispadu también puede identificarse por el uso de un algoritmo criptográfico único y personalizado para ofuscar las strings en su código. Esto es utilizado en todos los componentes, así como para proteger sus archivos de configuración y sus comunicaciones con el C&C. La Figura 1 ilustra el código central que implementa este algoritmo, y la Figura 2 el pseudocódigo para el algoritmo.

Figura 1. Núcleo del algoritmo de Mispadu para descifrar datos

def decrypt_string(data_enc, key):
	seed = data_enc[0] - 0x41 # 'A'
	data_dec = str()
	for i in range(1, len(data_enc), 2):
		b1 = (data_enc[i] - 0x41) * 25
		b2 = data_enc[i+1] - 0x41 - seed - key
		data_dec += chr(b1 + b2)
	return data_dec

Figura 2. Pseudocódigo del algoritmo de Mispadu para descifrar datos

El ejecutable del troyano bancario viene con cuatro aplicaciones potencialmente no deseadas almacenadas en su sección de recursos. Todas estas aplicaciones son archivos legítimos de Nirsoft, pero han sido parcheados para correr desde la línea de comandos sin GUI. Son utilizados por el malware para extraer credenciales almacenadas de:

  • navegadores (Google Chrome, Mozilla Firefox, Internet Explorer) y
  • clientes de correo electrónico (Microsoft Outlook, Mozilla Thunderbird y Windows Live Mail, entre otros).

Mispadu también monitorea el contenido del portapapeles e intenta reemplazar las posibles billeteras de bitcoin con las suyas, como lo hizo Casbaneiro. Sin embargo, al examinar la billetera del atacante (ver Figura 3) pudimos ver que hasta la fecha no ha tenido mucho éxito.

Figura 3. Billetera Bitcoin utilizada por el operador Mispadu

Distribución de Mispadu

Mispadu emplea dos métodos de distribución: spam (ver Figura 4) y publicidad maliciosa. Si bien el primer método es muy común de ver en el caso de los troyanos bancarios latinoamericanos, el segundo no lo es, lo que nos llevó a querer analizarlo más de cerca. La Figura 5 muestra cómo se desarrolla el ataque de Mispadu.

Figura 4. Ejemplos de correos de spam utilizados para distribuir Mispadu. El que apunta a Brasil (izquierda) afirma que se han realizado tres intentos de entrega de un paquete, pero el destinatario ha estado ausente siempre, por lo que debe seguir la URL para obtener un reembolso. El que apunta a México (derecha) insta al destinatario a descargar una factura para evitar el "bloqueo" de la cuenta.

Figura 5. Cadena de distribución y ejecución de Mispadu

El responsable de esta campaña colocó anuncios patrocinados (consulte la Figura 6 para ver un ejemplo) en Facebook ofreciendo falsos cupones de descuento para McDonald's. En caso de hacer clic en uno de los anuncios, la potencial víctima es dirigida a una de las páginas web que se muestran en la Figura 7. Independientemente del sistema operativo que utilice el visitante, hacer clic en el botón que sugiere el anuncio descargará un archivo ZIP que contiene un instalador MSI. Ocasionalmente, este archivo ZIP también incluye software legítimo como Mozilla Firefox o PuTTY, pero son simples señuelos y no se utilizan en absoluto.

Los operadores de Mispadu compilaron dos versiones diferentes del troyano bancario en función del país al que ataca. Además de eso, decidieron usar diferentes instaladores y etapas posteriores para cada país atacado. Sin embargo, la lógica de ambas cadenas es la misma y describimos esa forma general a continuación.

Figura 6. Anuncios de Facebook creados por los operadores de Mispadu que conducen a sitios web falsos de cupones de McDonald's (traducción del título del anuncio: "¡Úselos cualquier día de septiembre! Cupones del día de la Independencia. Obtenga el suyo ahora")

Figura 7. Páginas web maliciosas que ofrecen cupones de descuento falsos para McDonald's Brasil (izquierda) y México (derecha) (traducción del texto principal de ambos: "Este cupón solo se puede usar una vez. ¡Quiero! / Generar cupón")

Cuando la potencial víctima ejecuta el instalador MSI, se da inicio a una cadena subsecuente de tres secuencias de comandos VBS. El primer script (desempacador) descifra y ejecuta el segundo script (downloader) a partir de sus datos internos, como se ve en la Figura 8. El script del downloader recupera el tercer script (loader) y lo ejecuta (consulte la Figura 9).

Figura 8. Cadena de distribución de la secuencia de comandos del desempacador de Mispadu (etapa 1). Obsérvese que la clave es calculada en la variable w2 con el valor 95.

Figura 9. Cadena de distribución de la secuencia de comandos del downloader de Mispadu (etapa 2). Nótese que la clave hardcodeada es la misma que en la etapa anterior.

El script del loader es más complicado que el de las dos primeras etapas. Es específico de la localidad; ya que comprueba el identificador de idioma de la máquina de la potencial víctima para verificar que realmente proviene del país apuntado en la actual campaña (Brasil o México, respectivamente). También puede detectar algunos entornos virtuales; y en caso de detectar un entorno virtual o no encontrar el entorno local deseado, el loader se cierra.

Por otra parte, el script del loader continúa configurando archivos de configuración (descritos en detalle más adelante) y descargando (i) un troyano bancario Mispadu, (ii) un injector (DLL) utilizado para ejecutarlo y (iii) archivos DLL de soporte legítimo. Cada archivo se descarga en un archivo ZIP separado, tal como se ilustra en la Figura 5. Proporcionamos pseudocódigo para el algoritmo de descifrado en la Figura 10.

def decrypt_payload(data_enc):
	key = data_enc[0]
	data_dec = str()
	for i in range(1, len(data_enc)):
		data_dec += chr(data_enc[i] - ((key + i - 1) % 10))
	return data_dec

Figura 10. Pseudocódigo del algoritmo de descifrado del payload de Mispadu

Los servidores de descarga de Mispadu verifican la validez de las solicitudes que reciben. Enviar una solicitud no válida da como resultado el envío de una imagen obscena como respuesta, la cual no podemos reproducir aquí.

Finalmente, el script del loader configura la persistencia creando un enlace en la carpeta de inicio y ejecutando el injector. Esto se realiza a través de rundll32.exe llamando a una función exportada de la DLL del injector cuyo nombre proviene de uno de los archivos de configuración previamente configurados. El injector localiza el troyano bancario cifrado, luego lo descifra y lo ejecuta.

Encontramos un directorio abierto en uno de los servidores que utiliza Mispadu que almacenaba archivos conectados a una campaña muy similar. Esos archivos pueden ser utilizados para crear una página web que imite AreaVIP (un sitio web sensacionalista en Brasil) y para forzar a sus potenciales víctimas a una falsa actualización de Adobe Flash Player. No hemos observado esa campaña activa por lo que creemos que puede tratarse ser una configuración para el futuro.

Como la campaña de Mispadu dirigida a Brasil utilizó el acortador de URL Tiny.CC, pudimos recabar algunos datos. Como se puede ver en la Figura 11, esta campaña produjo casi 100,000 clics exclusivamente desde Brasil. Los clics provenientes de Android son probablemente el resultado de que el anuncio se muestra en Facebook, independientemente del dispositivo del usuario. También se puede ver que la campaña es recurrente: una fase finalizó en la segunda mitad de septiembre de 2019 y surgió nuevamente a principios de octubre de 2019.

Figura 11. Estadísticas de la campaña de Mispadu en Brasil

Compartir un archivo adjunto de correo electrónico

Tanto los correos de spam como el falso sitio web de McDonald's son interesantes en un aspecto más: desde donde se descarga el falso cupón. Los operadores de Mispadu abusaron de la plataforma rusa Yandex.Mail para almacenar su payload (ver Figura 12). El escenario más probable es que los operadores crearon una cuenta en Yandex.Mail, enviaron un correo electrónico con el cupón malicioso como adjunto y luego le presentaron a la potencial víctima un enlace directo a este archivo adjunto.

Figura 12. La URL desde la cual se descarga el archivo que contiene el instalador malicioso MSI de Mispadu

Configuración

El uso de archivos de configuración es bastante poco común entre los troyanos bancarios latinoamericanos. Sin embargo, Mispadu generalmente utiliza tres diferentes y no puede funcionar sin ellos. Todos los archivos de configuración están contenidos u obtenidos por el script del loader descrito anteriormente.

La configuración de ejecución de Mispadu se almacena únicamente en la memoria con los datos descargados de uno de sus servidores de descarga (Servidor remoto 1 en la Figura 5). Contiene tres piezas de información que son clave:

  • una string necesaria para crear la URL para descargar el injector
  • el nombre de la carpeta donde se instalará el malware
  • el nombre de la función exportada del injector que se llamará para que ejecute el troyano bancario

Los datos de configuración general son droppeados en C:\Users\Public\%COMPUTERNAME%[1], y se nombran como la segunda letra del nombre de la computadora de la víctima (por ejemplo, para una computadora llamada "JOHN-PC", el archivo se llamará "O"). Se crea a partir de los datos contenidos en el script del loader y en el archivo de configuración de ejecución y contiene la información de la versión, la clave criptográfica y las rutas del sistema de archivos.

Los datos de configuración del C&C se almacenan en un archivo en la misma ubicación que el anterior con el mismo nombre de archivo con “_” agregado (“O_”, para continuar con el ejemplo anterior). Consiste en:

  • #ip# (un marcador de posición para una dirección IP que utiliza el troyano bancario para recibir comandos de backdoor)
  • #wp [1-3]# (marcadores de posición para 3 puertos asociados con #ip#)

Mispadu elige sus dominios principales y secundarios de C&C de estas listas en función del día actual del mes. Luego, cada unas pocas horas intenta obtener una versión actualizada del archivo de configuración del C&C de ese dominio y reemplaza al que se droppeo con esta nueva versión. Creemos que la idea principal detrás de este enfoque es completar los marcadores de posición para activar la funcionalidad de backdoor.

Protege el navegador Google Chrome

Es una buena idea proteger el navegador, simplemente no lo hagas con la extensión maliciosa del navegador Google Chrome que hemos observado que se ha estado distribuyendo junto con el troyano bancario Mispadu en Brasil (ver Figura 13). La extensión (consulte la Figura 14 se llama "Securty [sic] System 1.0" y pretende ayudarlo a "Protege seu Chrome" (traducción: "Proteja su Chrome"). Consiste en tres archivos JavaScript maliciosos que describimos a continuación.

Figura 13. Parte de la cadena de distribución de Mispadu que cambia cuando también se distribuye la extensión maliciosa de Google Chrome. El resto de la cadena de distribución sigue siendo la misma.

 

Figura 14. La extensión maliciosa de Google Chrome instalada por Mispadu

Componente 1: ventanas manipuladoras

Este simple componente tiene una sola funcionalidad: crea una nueva ventana de Google Chrome y cierra todas las demás. Este componente no estaba presente en todas las muestras que analizamos y creemos que todavía está en la fase de prueba.

Componente 2: robo de datos de tarjetas de crédito

El segundo componente contiene una lista hardcodeada de sitios web. En las páginas servidas desde estos sitios, busca cualquier campo de entrada que contenga "texto", "correo electrónico", "tel", "número", "contraseña" o "radio". Si "CVV", "CÓD SEG" o sus variantes se encuentran en cualquier parte del sitio web, el contenido de esos campos de entrada es enviado al atacante cuando la víctima envía la información. Esto claramente revela la intención de esta parte de la extensión: el robo de datos de tarjetas de crédito.

Componente 3: robo de datos bancarios y del “boleto”

El tercer componente es el más avanzado. Primero, usando un algoritmo similar a DGS, genera dos strings basadas en el día actual del mes y el número del mes. Esas strings se utilizan para formar una URL de GitHub con el formato https://raw.githubusercontent.com/%FIRST_STRING%/w/master/%SECOND_STRING%, donde %FIRST_STRING% es un nombre de usuario de GitHub. Los datos descargados de la URL generada se descifran en una URL diferente que llamaremos URL del payload.

Este componente también contiene una lista hardcodeada de sitios web específicos, como lo hizo el anterior. Si la víctima visita uno de estos sitios web, a partir de la URL del payload obtiene un archivo JavaScript malicioso, específico de ese sitio web, que es cargado dinámicamente a través de la función de evaluación de JavaScript.

Además de eso, este componente también intenta comprometer el uso del Boleto bancario, un sistema de pago popular en Brasil. El sistema ha sido un blanco atractivo para los atacantes durante mucho tiempo (puede leer más en este documento de 2014). Para pagar con este sistema, debe imprimir un voucher, en Brasil denominado boleto. Este boleto contiene un número de identificación específico de la cuenta bancaria que debe recibir el pago y un código de barras (consulte la Figura 15). El pago se realiza escaneando el código de barras o escribiendo el número de identificación manualmente.

Figura 15. Un ejemplo de un boleto (fuente: Wikipedia)

Usando una expresión regular, el malware intenta encontrar el número de identificación y reemplazarlo con el del atacante (obtenido dinámicamente). Además, abusa de un sitio web legítimo para generar el código de barras de pago utilizando el número de cuenta del atacante y reemplaza el legítimo con ese. La parte del código responsable de comprometer el boleto se muestra en la Figura 16.

Figura 16. Extensión de Google Chrome de Mispadu que compromete al boleto. El código que obtiene el número de cuenta del atacante está marcado en rojo, la generación de códigos de barras maliciosos en verde.

Diferencias entre campañas

Además de las diferencias ya mencionadas y el hecho obvio de que cada variante del troyano bancario Mispadu apunta a un conjunto diferente de bancos según el país de residencia, la campaña brasileña difiere de la mexicana en varios otros aspectos menores.

Parece definir de manera aleatoria las rutas del sistema de archivos y los nombres de archivos donde se almacenan los archivos de configuración y se instala el troyano bancario para cada víctima. Además, el script del loader contiene una parte que no se usa en el momento de la escritura, pero que está lista para abusar de Windows mshta.exe para ejecutar el troyano bancario real en lugar de rundll.exe.

Conclusión

En esta publicación hemos hablado de Mispadu, otra familia de troyanos bancarios latinoamericanos. Hemos mostrado sus principales características, incluidas las razones por las que lo consideramos un troyano bancario latinoamericano: está escrito en Delphi, apunta a Brasil y México, usa ventanas emergentes y contiene funcionalidad de backdoor.

Hemos descrito su cadena de distribución más reciente y nos hemos centrado en algunos aspectos interesantes como el abuso del servicio de correo de Yandex.Mail para almacenar los payloads maliciosos y los anuncios maliciosos de Facebook. También hemos analizado los archivos de configuración utilizados por Mispadu.

Finalmente, hemos hablado de una extensión maliciosa de Google Chrome que hemos visto distribuir a Mispadu en Brasil. El objetivo de esta extensión es robar información de tarjetas de crédito, información bancaria confidencial e intentar robar dinero de sus víctimas comprometiendo el sistema de pago conocido en Brasil como Boleto Bancario.

Para cualquier consulta, contáctenos a la threatintel@eset.com. Los indicadores de compromiso también se pueden encontrar en nuestro repositorio de GitHub.

Indicadores de Compromiso (IoCs)

Hashes

Campaña de Brasil

SHA-1 Description ESET detection name
A4EDA0DD2C33A644FEEF170F5C24CF7595C19017 MSI installer VBS/TrojanDownloader.Agent.RVY
A9BADCBF3BD5C22EEB6FAF7DB8FC0A24CF18D121 Mispadu injector Win32/Injector.EHXF
337892E76F3B2DF0CA851CCF4479E56EAF2DB8FD Mispadu banking trojan (PE compilation timestamp 8 Sep, 2019) Win32/Spy.Mispadu.C
A8CD12CC0BBD06F14AA136EA5A9A2E299E450B18 Mispadu banking trojan (PE compilation timestamp 2 Oct, 2019) Win32/Spy.Mispadu.C

Campaña de México

SHA-1 Description ESET detection name
CFE21DBFB97C2E93F099D351DE54099A3FC0C98B MSI installer VBS/TrojanDownloader.Agent.RVY
251AC7386D1B376FB1CB0E02BDFC45472387C7BC Mispadu injector Win32/Injector.EHXF
A4FC4162162A02CE6FEADFE07B22465686A0EC39 Mispadu banking trojan (PE compilation timestamp 10 Sep, 2019) Win32/Spy.Mispadu.J
710A20230B9774B3D725539385D714B2F80A5599 Mispadu banking trojan (PE compilation timestamp 11 Sep, 2019) Win32/Spy.Mispadu.J

Extensión de Google Chrome 

SHA-1 Description ESET detection name
3486F6F21034A33C5425A398839DE80AC88FECA8 Component 1 (manipulating windows) JS/Spy.Banker.DQ
1D19191FB2E9DED396B6352CBF5A6746193D05E8 Component 2 (credit cards) JS/Spy.Banker.DQ
22E6EBDFAB7C2B07FF8748AFE264737C8260E81E Component 3 (banking and Boleto data) JS/Spy.Banker.DQ

Aplicaciones potencialmente no deseadas para robo de credenciales

SHA-1 Description ESET detection name
63DCBE2DB9CC14564EB84D5E953F2F9F5C54ACD9 Email client credential stealer Win32/PSWTool.MailPassView.E
8B950BF660AA7B5FB619E1F6E665D348BF56C86A Google Chrome credential stealer Win32/PSWTool.ChromePass.A
F6021380AD6E26038B5629189A7ADA5E0022C313 Mozilla Firefox credential stealer Win32/PSWTool.PassFox.F
76F70276EB95FFEC876010211B7198BCBC460646 Internet Explorer credential stealer Win32/PSWTool.IEPassView.NAH

Nombres de archivo

  • C:\Users\Public\%COMPUTERNAME%[1]
  • C:\Users\Public\%COMPUTERNAME%[1]_
  • C:\Users\Public\{winx86,libeay32,ssleay32}.dll (legitimate DLLs downloaded by the loader script; partial indicator)

Servidores utilizados

  • http://18.219.25[.]133/br/mp1a{1,sq,sl,ss}.aj5
  • http://3.19.223[.]147/br/mp1a{1,sq,sl,ss}.aj5
  • http://51.75.95[.]179/la8a{1,sq,sl,ss}.ay2

URLs para el cupón de descuento

  • Brasil
    • http://promoscupom[.]cf/
    • http://mcdonalds.promoscupom[.]cf/index3.html
  • México
    • http://mcdonalds.promoscupom[.]cf/index2.html

Billetera de Bitcoin

  • 3QWffRcMw6mmwv4dCyYZsXYFq7Le9jpuWc

Técnicas de MITRE ATT&CK

Tactic ID Name Description
Initial Access T1192 Spearphishing Link In Mispadu spam campaigns, the victim is led to the payload by a malicious link.
Execution T1085 Rundll32 Mispadu banking trojan is executed by an injector that is run via rundll32.exe.
Persistence T1176 Browser Extensions Mispadu variant targeting Brazil utilizes a Google Chrome browser extension.
T1060 Registry Run Keys / Startup Folder Mispadu ensures persistence by creating a link in the startup folder.
Defense Evasion T1140 Deobfuscate/Decode Files or Information Mispadu uses encoded configuration files.
T1036 Masquerading Mispadu masquerades as a discount coupon.
T1064 Scripting Mispadu utilizes VBS exclusively in its distribution chains.
Credential Access T1056 Input Capture Mispadu may execute a keylogger. Its Google Chrome extension tries to steal various sensitive information via input capturing.
T1081 Credentials in Files Mispadu uses other tools to extract credentials for email clients and web browsers from files.
T1214 Credentials in Registry Mispadu uses other tools to extract credentials for email clients and web browsers from the Windows Registry.
Discovery T1083 File and Directory Discovery Mispadu searches for various filesystem paths in order to determine what applications are installed on the victim's machine.
T1057 Process Discovery Mispadu searches for various process names in order to determine what applications are running on the victim's machine.
T1063 Security Software Discovery Mispadu scans the system for installed security software.
T1082 System Information Discovery Mispadu extracts the version of the operating system, computer name and language ID.
Collection T1115 Clipboard Data Mispadu captures and replaces bitcoin wallets in the clipboard.
T1113 Screen Capture Mispadu contains a command to take screenshots.
Command and Control T1024 Custom Cryptographic Protocol Mispadu uses a custom cryptographic protocol to protect its data.
Exfiltration T1041 Exfiltration Over Command and Control Channel Mispadu sends the data it collects to its C&C server.