Mekotio: cómo trabaja el troyano bancario más efectivo de Latinoamérica

Por César López Hormazábal, Analista de Malware
mekotio_malware_visualization_blog_technical

Mekotio es un malware o troyano bancario diseñado para el robo de información privilegiada como datos financieros de los usuarios.

Este troyano fue observado por primera vez alrededor del año 2015 y en un principio solo afectaba a países de Iberoamérica como Chile, Brasil, México, Perú y España. Su modo de propagación es por medio de correos electrónicos de phishing.

Para fomentar que los destinatarios hagan clic en sus enlaces maliciosos, Mekotio se hace pasar por falsas citaciones judiciales, información de pagos atrasados y boletas de honorarios rechazadas, entre otros mensajes que buscan generar alerta.

Precisamente, hemos visto en este último tiempo un aumento de correos electrónicos de phishing que contienen a Mekotio.

Correo phishing mekotio
¿Qué hace Mekotio luego de instalarse?

Una vez instalado en el sistema de la víctima, el método de ataque de Mekotio es permanecer oculto en el sistema infectado hasta que ella acceda a un sitio de banca en línea o un portal de pago. Es en ese momento cuando el programa malicioso despliega un sitio falso en lugar del sitio real que la víctima busca visitar. Con esto, el malware roba la información bancaria personal de la persona afectada, datos que son enviados a un servidor de comando y control (C&C).

Cabe destacar que este malware ha sufrido bastantes cambios desde sus primeros días. Inicialmente, se instalaba con un programa de extensión MSI (Microsoft Windows Installer) adjunto en el correo, pero debido a las protecciones antimalware que los proveedores de correo electrónico han aplicado en sus sistemas, hoy se comparte a través de URLs maliciosas incluidas en el mensaje fraudulento.

¿Cómo funciona Mekotio?

Ahora, veremos un ejemplo de correo fraudulento relacionado a Mekotio, e intentaremos explicar algunas de las técnicas que usa para no ser detectado.

Uso de múltiples URL de redirección

En este caso, cuando la víctima hace clic en la URL maliciosa, es redirigida varias veces, hasta llegar finalmente a un sitio como el que se observa a continuación, en el cual se suplanta a una empresa de electricidad.

Documento falso mekotio

Descarga de archivos batch ofuscados

Al hacer click en el botón de "emitir documento", se descarga un archivo comprimido (.zip), el que contiene un archivo de script de Windows ejecutable (.bat). Este código se encuentra ofuscado, usándose, por ejemplo, una variable “qRe6ze” como base para extraer caracteres especificas en distintas posiciones y otras dos variables, llamadas “zTsPGI7CY8cqLoyzj” y “TGuOvdmqp0WPUfpi1exd”, para la ejecución del código.

cmd_ofuscado

Algunas partes del código utilizan la siguiente metodología de ofuscación, que es una técnica que se utiliza para esconder el verdadero propósito del código: definir los caracteres a utilizar en una cadena de texto al inicio del código (en la variable qRe6ze) y luego referirse a las posiciones en esa cadena usando esta sintaxis. “%qRe6ze:~X,Y%”. En el caso anterior, se tomará el carácter “X” de la cadena “qRe6ze”, con esto construye nuevas cadenas de texto.

extracto_codigo

Para esto generamos el siguiente código para la decodificación del archivo .BAT, colocando las variables y posiciones de ambas variables mencionadas anteriormente.

Defuscador

Obteniendo el siguiente resultado, URL de descarga con la información complementaria para continuar con la fase de infección, y a esto desactiva las protecciones de Windows para la ejecución del Powershell y oculta la ejecución del código malicioso.

Resultado_decode

Uso de código remoto cifrado

Una vez descargada la información complementaria desde la URL que logramos decodificar “http://146.59.116[.]73/contadores/UTM95Aq7.php?qBf0=N5DjsFX01XC1zFXaqCyKo9mwxxeZASjHhBqymMF81s3Yb4xeRbKxuoVKf9qUql15bAZcZkYY5P”. El parámetro qBf0 sirve como llave simétrica para descifrar el código malicioso, lo que dificulta su detección.

Uso de cadenas aleatorias

La siguiente función genera cadenas aleatorias compuesta con letras mayúsculas y minúsculas. Donde la longitud de la cadena determina el parámetro “$length” la que se pasa a la función.

Funcion_1

El uso de cadenas aleatorias puede ser para nombres de archivos o para la creación de directorios temporales, lo que ayuda a esconder la actividad del script para que este sea difícil de detectar. También esto puede ayudar a generar nombres de variables dinámicas (estas variables cambian).

Los números 65 a 90 representan los caracteres en el código ASCII para las letras mayúsculas (A-Z) y los números 97 a 122 representan las letras en minúsculas (a-z), luego la función toma un numero como parámetro ($length), que indica cuantos caracteres debe tener la cadena aleatoria, para elegir los caracteres de este rango ASCII y los convierte en una cadena que se devuelve como resultado.

Cifrado del código con XOR

La función se utiliza para “desofuscar” cadena de texto que han sido previamente codificados o cifrados. Esta función tomará una cadena en texto hexadecimal (%FFF), la que convertirá en texto plano usando una operación aritmética llamada XOR, el que devolverá un resultado en texto plano.

Dentro de la función existe una clave ($SvN3ditr8E) que será utilizada para decodificar los datos aplicando la operación anteriormente mencionada cada dos caracteres hexadecimales de la cadena.

Funcion_2

Descarga de contenido remoto

El propósito de esta función es la descarga de contenido desde una URL que previamente fue oculta (ofuscada) dentro del código para ser decodificada por la función anterior (nTt59gKdE6). Luego utiliza la clase “System.Net.WebClient” de Powershell para descargar el contenido desde la URL. Por último este contenido es procesado y dividido en pares clase-valor (como una tabla), en donde cada una de las entradas se analizan y almacenan.

Funcion_3
Funcion_3_decode

Reconocimiento del equipo infectado

La función inuQ2DTwXD realiza consultas WMI (Windows Management Instrumentation) para la obtención de información de los procesos en el sistema operativo. El funcionamiento es muy similar a las funciones anteriores, decodifica las cadenas hexadecimales para así obtener las rutas del espacio de nombres WMI y una consulta que se ejecuta en el sistema. Esta utilidad es muy poderosa la que permite la administración y monitoreo de sistemas Windows.

Funcion_4

Al realizar esta consulta se recupera información sobre los procesos que se están ejecutando en la maquina infectada como el nombre de los procesos y otros detalles, si la consulta WMI falla, este código captura el error y devuelve un mensaje decodificado.

Funcion_4_decode

Descarga remota de archivos adicionales

El código de la imagen anterior establece una conexión con un servidor remoto utilizando el protocolo TCP para recibir un archivo ZIP. Como podemos observar la dentro de la función existen los siguientes parámetros la dirección del servidor ($serverAddress), el puerto TCP ($port), la dirección HTTP del servidor ($httpServerAddress), y por ultimo la ruta donde se almacenará el archivo descargado ($destinationPath).

Funcion_5

Como se ve en el código previo, al establecer una conexión TCP con el servidor remoto, éste envía la información de la victima como la fecha, la hora y otros datos del sistema. Por último, el servidor envía un archivo .ZIP, y la función lo descarga y almacena en el sistema.

Esta parte del código podría ser importante para la continuidad de la infección y obtención de los datos del sistema, donde el malware puede recibir archivos adicionales.

Funcion_5_decode

Uso de archivos temporales con nombre aleatorio

La función mostrada anteriormente crea un entorno temporal donde el malware utilizara ese espacio de almacenamiento temporal del sistema para alojar los archivos, lo que lo ayuda a ocultarse de usuario y administradores.

Ésta también organiza por fechas las carpetas, lo que permite a Mekotio manejar varios archivos en diferentes momentos sin dejar todo en un solo lugar, lo que ayuda al malware a gestionar su carga útil.

Los nombres aleatorios de las carpetas dificultan que el administrador o una herramienta de análisis pueda rastrear o reconocer fácilmente los archivos maliciosos.

Escrito por
César López Hormazábal
Analista de Malware
Soy ingeniero en conectividad y redes, y estoy estudiando ingeniería en ciberseguridad y auditoría informática. Me apasionan la seguridad industrial y el análisis de malware, y siempre estoy al tanto de las últimas noticias tecnológicas. En mi tiempo libre, disfruto del modelismo, construyendo tanques y aviones a escala, y jugando juegos en línea como War Thunder. Me encanta explorar nuevos lugares y disfrutar de las cosas simples de la vida. Mis tiempos libres los comparto entre mi pareja y mis dos gatitos, que llenan nuestro hogar de alegría y diversión.