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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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. |