Revisión de un malware que no nos afecta…por ahora

Update 23-12-2024
A través de Germán Fernández se nos aclara que este malware es URSA/Mispadu y que otro artículo ya lo había analizado antes, les dejo el link del artículo
https://blog.morphisec.com/mispadu-infiltration-beyond-latam.

¡Volvemos con artículos que revisan malware!

Esta vez revisaremos un caso que parte en Brasil con objetivo en Argentina, pero que eventualmente podría llegar a Chile en un futuro muy cercano.

¿Por qué revisamos esto si no nos afecta? Porque es interesante y nos permite aprender de ciertos comportamientos que probablemente se repliquen en Chile.

Para un TL:DR dirigirse a Recuento Final, al término del artículo.

Comencemos por el principio, ¿Cómo podemos conocer una campaña de malware que no nos pega?

Necesitamos tener una práctica que puede ser un poco incómoda: revisar la “basura”, que en este caso sería la cuarentena del correo. Al hacerlo, vemos que hay una campaña que se está repitiendo hace algunos meses y que tiene características interesantes.

A nivel de asunto, los correos no son tan relevantes, de hecho algunos no se dirigen a usuarios de Chile.

Todos estos correos tienen una cosa en común y es que intentan hacer que descargues una factura o algún documento que debes llenar, y con eso buscan instalar el agente malicioso.

Si vemos el diagrama de la infección a nivel general, tenemos lo siguiente:

Para comenzar el proceso de infección se debe hacer click en los links de los correos. Es decir, solamente abrir uno de estos correos no genera ninguna amenaza.

Pero veamos que pasa si hacemos click…

Revisión de los links de redirección

Al revisar el link que viene en el correo vemos que éste es de los que levanta sospechas por ser de la siguiente forma:

hxxps://144[.]149[.]167[.]72[.]host[.]secureserver[.]net/ ? facdigital-web/ConsultaTelecom.aspx?nroFactura=9203
hxxps://198[.]56[.]205[.]92[.]host[.]secureserver[.]net/ ? [ALGO]

Esto se puede reducir al uso de un dominio alojado en el rango de secureserver.net y apenas con el nombre se puede obtener la IP que está detrás con tan solo tomar los números al revés:

DominioIP
144[.]149[.]167[.]72[.]host[.]secureserver[.]net72.167.149.144
198[.]56[.]205[.]92[.]host[.]secureserver[.]net92.205.56.198
22[.]29[.]168[.]184[.]host[.]secureserver[.]net184.168.29.22

Además, el comportamiento de estos dominios es solamente de redirección para equipos Windows. Por ejemplo, si estamos usando un dispositivo móvil tenemos lo siguiente:

Si tenemos un equipo Windows tenemos el siguiente tráfico:

Vemos que este link se usa solamente para poder llegar al “sitio siguiente” y que al final está la carga maliciosa. Si nos fijamos en el penúltimo tráfico web tenemos un caso interesante: ¡es un tráfico con código HTTP 404 que tiene mucho contenido!

Esto es interesante porque pareciera que es una página que no existe y por eso envía un código HTTP 404, logrando evadir ciertos tipos de análisis automatizados. Además esa página de error tiene un peso de más de 400 kb. Lo interesante es que si se ve la pantalla completa para dar un poco más de contexto, tenemos lo siguiente:

No solo la página sí tiene contenido y dice “Descarga Iniciada”, sino que también logra la descarga de un archivo .zip. ¿Cómo puede hacer eso una “página que no existe” (404)?

La página sigue siendo código HTML y si vemos el código fuente veremos que la descarga completa está embebida en Base64 en el código Javascript. Por lo tanto, para generar la descarga basta solo forzar a que lo que se tiene ahí (ya cargado en memoria) se empaquete como un archivo .zip que se tiene que descargar.

En el extracto anterior tenemos que la variable “paZE198” está todo el archivo .zip en Base64, y luego se genera el nombre del archivo en la variable “QtI6Eq355”. Finalmente, genera el blob para la descarga y la acción de descarga en el mismo Javascript.

Con esto logra generar la descarga a pesar de que la página no existe, pero aunque tengamos la descarga lograda, no pasa nada si no interactuamos con el archivo, por lo que basta con que lo eliminemos de nuestro equipo para que estemos libre de la amenaza.

Pero ¿qué pasaría si interactuamos con el archivo .zip?

Archivo .zip, el inicio del laberinto

El archivo descargado parte con unas medidas anti evasión bastante interesantes: nombres casi completamente en caracteres Unicode.

Revisando los nombres, vemos que son una versión compleja del nombre Archivos_numeros.zip, o Factura_numeros.zip. Es entretenido, porque si vemos esos nombres en hexadecimal el utilitario “xxd” se marea y no entiende lo que tiene que mostrar.

Los nombres de estos archivos .zip son todos del mismo estilo y, de hecho, son archivos comprimidos que comparten una misma característica interna.

Tiene un archivo .hta con un nombre similar al del archivo .zip y además tiene una carpeta interna con un nombre extraño “\t”, y luego otra carpeta con un nombre aleatorio para terminar con un archivo con un nombre que parece ser aleatorio.

Si vemos el nombre de archivo más en detalle, nos daremos cuenta de que parte con un caracter de espacio ” “.

Y si vemos el hash del archivo y lo buscamos en Virustotal podemos ver que es un archivo conocido (y que está marcado como malicioso por MaxSecure por razones desconocidas):

Creemos que la inclusión de este archivo es solo un señuelo para que herramientas automatizadas tomen el archivo .zip e investiguen el binario sin prestar atención al otro archivo que sí es parte de la cadena de infección, el archivo .hta.

Como habíamos enfatizado anteriormente, el hecho de descomprimir el archivo no genera la infección, sino que se tiene que interactuar con el archivo .hta para que recién ahí comience la infección real. Es decir, si eliminamos los archivos descargados y descomprimidos, no tenemos amenaza.

Inicio de infección real, el archivo .hta

El archivo .hta es un archivo muy simple, que en este caso tiene solamente una línea de contenido:

Lo interesante es que si esto se trata como una página web “común”, no funciona nada. Estos archivos .hta son una “HTML Application”, con estructura y funcionalidades muy similares a una página web (HTML) pero con características extra.

Una de estas características es que no solo usa lenguaje HTML, sino que además puede interpretar lenguaje JScript (.js) y VBScript (.vbs), que son lenguajes usados principalmente por Microsoft para interactuar con el sistema operativo.

Otra de las características es que usa por detrás la aplicación “mshta.exe” y ésta -a su vez- utiliza el motor de Internet Explorer, por lo que necesita su User-Agent para poder tomar el contenido, por ejemplo algo así:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; Win64; x64; Trident/7.0; .NET4.0C; .NET4.0E)

Si ese User-Agent está presente, el servidor entrega el contenido que sigue para ejecutar el siguiente paso: un código ligeramente ofuscado para la descarga y ejecución de un siguiente archivo .vbs de una URL en el mismo servidor.

Como es en el mismo contexto de la “HTML Aplicación”, se necesita usar el mismo User-Agent anteriormente mencionado.

Con esto, podemos ver el siguiente paso de infección:

Este es otro código ligeramente ofuscado, pero en otro lenguaje (Visual Basic Script) en el que se busca llegar a la descarga y ejecución de otro código VBScript que se descarga del mismo servidor.

hxxps[:]//maxternaftgx[.]com/g1

Lo interesante de la descarga de este código es que es mucho más complejo que todos los anteriores. Es el bloque código (27 Kb) que realmente infecta al equipo y se da varias vueltas para hacerlo. Por ejemplo, el inicio del documento se muestra a continuación:

El código VBS encargado de la infección

Este código descargado contiene varias ofuscaciones y descifrados de variables. Si lo vemos a nivel macro tenemos los siguientes bloques:

  • Definición de variables cifradas
  • Funciones de apoyo
    • Descifrado de strings
    • Descarga de código desde fuente remota
    • Descarga de archivos desde fuente remota
    • Descomprimir archivos
  • Proceso de descarga de tres archivos

El diagrama general de este proceso de infección es el siguiente:

Finalmente, el archivo se encarga de la descarga de tres archivos, todos con extensión .nk2, pero la extensión es lo de menos, porque varía entre muestras y/o campañas. Si vemos esta parte en el código VBScript tenemos el siguiente código (comentado y reescrito):

Aquí podemos ver que se llaman a procesos de descarga, descifrado y de descompresión de cada uno de los archivos (menos el primero).

Para no ahondar en el proceso de descifrado de los archivos, tenemos que parece ser un cifrado de transposición un poco modificado, en el que la llave es el primer carácter y luego van sustrayendo el valor de esa llave (el valor entero de la tabla de ASCII). El código sería algo así:

Es interesante que un código tan sencillo sea tan efectivo para ocultar el contenido potencialmente malicioso de los archivos. Esto es particularmente interesante por el contenido de cada uno de estos archivos.

  • Archivo zu0am1.nk2: Es un archivo comprimido que tiene otro archivo dentro llamado zu01. Este archivo final no se entiende por sí solo, queda como un archivo “basura” por ahora.
  • Archivo zu0462.nk2: Es un archivo que necesita ser descifrado y luego descomprimido para que aparezca el archivo zu04. Este archivo final es un archivo que no es reconocido inicialmente por las herramientas “normales”, pero es un script compilado de AutoIT por los caracteres mágicos (AU3!EA06) al inicio del script.
  • Archivo zu0aa3.kn2: Es un archivo que necesita ser descifrado y luego descomprimido para que aparezca el archivo zu0a3. Este archivo es un ejecutable que corresponde a la versión 3.3.16.1 de AutoIt3, un binario muy utilizado por los ciberdelincuentes brasileños para distribución de malware.

Con lo anterior, ya podemos predecir cuál será el modo de infección de este malware:

  • Ejecuta binario de AutoIt3 (zu0a3)
  • Carga script compilado (zu04)
  • Infecta al equipo

Pero al revisar un poco más la ejecución, vemos que existen unos pasos extras que tenemos que revisar, por ejemplo, el script compilado y la ejecución de éste.

El script compilado de AutoIT

Este tipo de script es interesante porque se puede “reversear” fácilmente. Para ello, existen diferentes herramientas como AutoIt-Ripper (https://github.com/nazywam/AutoIt-Ripper), que es de línea de comando y resulta más rápida, pero también existen otras herramientas que ayudan con lo mismo.

Una vez que encontramos el código fuente vemos que tenemos un código embebido llamativo:

Este código nos hace asumir que hay un binario (probablemente una DLL) embebido en hexadecimal directamente en el código, concatenando strings en la variable “$DLLBINARY”.

No solo eso, sino que de alguna forma la carga en memoria y ejecuta este binario en el entrypoint “m0g8f2”.

Con esto podemos extraer la DLL y comenzar a analizarla, para saber si tiene ese punto de entrada:

¡Y justamente, tiene ese punto de entrada!

Ahora, al intentar analizarla vemos que está buscando otro archivo en una ruta muy específica.

Este archivo es uno que habíamos dejado de lado, es el que anteriormente se mencionaba como zu01 y que habíamos catalogado como “basura”.

Es interesante ver que ese nombre de archivo está “hardcodeado”, o sea, saben desde un inicio cuál será la ruta donde se guardará el archivo y, por lo tanto, nos podemos adelantar para los bloqueos.

¿Y qué hacen con el archivo?

Al igual que los otros archivos descargados por el VBScript, éste tiene el mismo patrón de cifrado y al ejecutar el código de descifrado anteriormente revisado (archivo zu01.out), tenemos un nuevo archivo.

¡Es un binario de Windows! Un binario bien formado, un ejecutable para llegar y ejecutar directamente en el equipo objetivo.

Ahora podemos entender el objetivo final de todas estas vueltas: lograr descargar y ejecutar este binario cifrado, que inicialmente llamábamos zu01.

El malware

Aún no tenemos una revisión exhaustiva de este binario, pero tenemos varios indicios para decir que es un troyano bancario que afecta a distintas instituciones de la región.

Si hacemos una revisión muy por encima de los strings que encontramos, tenemos las siguiente evidencias:

Esto evidencia que los ciberdelincuentes son de Brasil y utilizan un lenguaje portugués. Además, armaron este binario para lograr un control remoto del equipo y que no sea solo un troyano bancario, sino que permita lograr funcionalidades de troyano de acceso remoto (RAT). Por ejemplo, los strings siguientes dan a entender que el binario tiene muchas de estas funcionalidades:

  • wGET enviado
  • Hook instalado W2
  • Hook instalado COD:
  • Comando Shell
  • Comando WinExec

Los ciberdelincuentes nos ayudaron mucho porque no protegieron este binario y pudimos acceder a todos sus recursos internos, entre ellos, las imágenes que usan, por ejemplo:

Estas imágenes las colocan como capa superior (overlay) en la pantalla del equipo para que el usuario sea engañado y piense que es parte de su navegación normal en el banco, pero está ingresando los datos en unos campos controlados por el ciberdelincuente.

Y no solo eso, sino que también tienen imágenes de múltiples logos, que asumimos que son las marcas que finalmente van a ver a sus clientes afectados por este tipo de malware:

Estos archivos son todos imágenes .png extraídas del malware mismo.

Aquí podemos ver que no solamente son instituciones argentinas, como se podría pensar solamente revisando el correo inicial, sino también de Chile, Colombia, Perú, España, entre otros.

Por eso nos interesa compartir este tipo de análisis. Aunque creemos que no nos afecta directamente hoy, vemos que está muy cerca de poder afectar a personas en Chile y también a otros países latinoamericanos.

¿Y qué dice VirusTotal?

Subimos una de las muestras asociadas a esta campaña a VirusTotal y al parecer es un caso donde las marcas están detectando algo malicioso, pero por razones equivocadas:

Lo catalogan como un Trojan “Tedy” (que tiene algunos falsos positivos) y que también tiene funcionalidades de la herramienta de NirSoft Browserpassview. Pero la realidad, como hemos visto, parece ser un poco más complicada que eso.

Recuento final

Esta investigación comienza con la revisión de un correo sencillo que rápidamente evoluciona en una serie de etapas:

  • Un link de correo para descarga de una supuesta factura o documento “genérico”.
  • Una serie de redirecciones en dominios sospechosos.
  • Una descarga de un archivo comprimido con un nombre extraño y que tiene dentro un archivo .hta
  • Una descarga de archivos que ejecutan JScript y VBScript a través del mismo mshta.exe
  • Una descarga de binario de AutoIT3 para ejecución de un script compilado.
  • La ejecución de una DLL que requiere de un binario malicioso cifrado descargado anteriormente.
  • La infección con binario de la campaña con capacidades de troyano bancario o de acceso remoto (RAT).

Hemos detectado que este malware apunta hoy a personas en Argentina por los tipo de correo que hemos revisado que se generan para su distribución. Pero esto no implica que no puedan/quieran dar el salto a otros países de Latinoamérica por la cantidad de empresas que tiene en la mira.

¿Qué podemos hacer?

En este caso, a nivel técnico podemos:

  • Bloquear o por lo menos alertar cualquier comunicación directa a dominios host[.]secureserver[.]net
  • Alertar el uso de mshta.exe anómalo en las empresas.
  • Bloquear cualquier uso de AutoIT3 o bloquear la versión usada en esta campaña.

A nivel de usuarios finales, nunca olvidar que todos deben estar concientizados de este tipo de campañas o al menos conocer que existen y cuáles son sus riesgos.

También llevarles el mensaje de que no porque les llega el correo van a estar infectados, sino que tienen que pasar varias “acciones equivocadas” (descargar archivo, descomprimir archivo, ejecutar .hta) para que esto ocurra y el equipo sea comprometido.

Tenemos que aprender del ciberdelincuente para poder adelantarnos a él.

¡Muchas gracias por leer hasta acá!

La lista siguiente es la de Indicadores de Compromiso (IOCs).

Indicadores de Compromiso

Los IOCs de esta y otras campañas están en nuestro sitio: https://ioc.finsin.cl

El listado específico para el caso visto en este análisis es el siguiente:

IOC (con VT si correspone)Contexto
98e4f904f7de1644e519d09371b8afcbbf40ff3bd56d76ce4df48479a4ab884bBinario de AutoIt3*
https://203[.]21[.]205[.]92[.]host[.]secureserver[.]net/Sitio Redirección campaña 1
https://113[.]188[.]205[.]92[.]host[.]secureserver[.]net/Sitio descarga .zip campaña 1
https://54[.]57[.]205[.]92[.]host[.]secureserver[.]net/Sitio descarga de otras capas campaña 1
http://92[.]205[.]57[.]54/Comunicación con C2 campaña 1
C:\fcn74013\gfn4tnsw3511.153Ruta de malware campaña 1
5e287379ab7c57935ecc0b423aa703ee3d0ac429c3664c9a36c296e4f664a8adHash de malware final campaña 1
https://213[.]159[.]66[.]148[.]host[.]secureserver[.]net/Sitio Redirección campaña 2
https://22[.]29[.]168[.]184[.]host[.]secureserver[.]net/Sitio Redirección campaña 2
https://107[.]31[.]205[.]92[.]host[.]secureserver[.]net/Sitio descarga .zip campaña 2
https://238[.]202[.]148[.]37[.]host[.]secureserver[.]net/Sitio descarga .zip campaña 2
https://60[.]246[.]109[.]208[.]host[.]secureserver[.]net/Sitio descarga de otras capas campaña 2
https://198[.]233[.]109[.]208[.]host[.]secureserver[.]net/Sitio descarga de otras capas campaña 2
http://208[.]109[.]246[.]60/Comunicación con C2 campaña 2
C:\qxv7u5\d4s261.62sRuta de malware campaña 2
7abe82d631012de011fce10b59d30591d1f683f7afbccc027534b075e1034d70Hash de malware final campaña 2
https://144[.]149[.]167[.]72[.]host[.]secureserver[.]net/Sitio Redirección campaña 3
https://stevmovtingx[.]com/Sitio descarga .zip campaña 3
https://maxternaftgx[.]com/Sitio descarga de otras capas campaña 3
http://191[.]243[.]161[.]64/Comunicación con C2 campaña 3
C:\cd8u2\m0g8f21.2f8Ruta de malware campaña 3
af1a18bfb603938bc9bae6702be8eca68c7f5c2f46ca2bdabe55d492e655aebbHash de malware final campaña 3
https://46[.]175[.]153[.]160[.]host[.]secureserver[.]net/Sitio Redirección campaña 4
https://105[.]201[.]148[.]37[.]host[.]secureserver[.]net/Sitio descarga .zip campaña 4
https://76[.]21[.]168[.]184[.]host[.]secureserver[.]net/Sitio descarga de otras capas campaña 4
http://184[.]168[.]21[.]76/Comunicación con C2 campaña 4
C:\oj68\j512u80tm491.94mRuta de malware campaña 4
f2c7576ba840dec071ffe6b0153708e974c2034aa6f074fc3c0999deb18fd1d6Hash de malware final campaña 4

* El caso de AutoIt3 es muy particular porque no es muy usado en Chile como herramienta de administración o automatización de procesos, pero es una herramienta válida. Recomendamos bloquear este hash, pero no la herramienta en sí. Si usan esta misma versión en sus sistemas actualicen a una versión más nueva.

Deje un comentario

Crea una web o blog en WordPress.com

Subir ↑