En abril de 2021 desde ESET Research publicamos un reporte en el cual analizamos un troyano bancario enfocado en usuarios corporativos de Brasil. Denominamos a esta familia de malware Janeleiro en referencia a su principal técnica: el uso de ventanas emergentes falsas especialmente diseñadas que se superponen y se hacen pasar por el sitio web de distintos bancos populares de Brasil. De esta manera, el troyano intenta engañar a la potencial victima mostrando un formulario falso para que ingrese datos personales que serán enviados automáticamente al atacante.

Al momento del primer análisis, una de las características más destacables que observamos en Janeleiro era que cada vez que se ejecutaba en un equipo comprometido descargaba las IP de los servidores de Comando y Control (C&C), y desde este repositorio era actualizado diariamente por los atacantes a fin de mantener al troyano constantemente en contacto con ellos para poder monitorear a sus víctimas.

Tras reportar la página con los repositorios recibimos una respuesta oficial de GitHub y para el 6 de abril fueron eliminados, por lo que podemos decir que efectivamente los atacantes perdieron acceso a todos los equipos infectados con las variantes de Janeleiro que analizamos la primera vez.

MSIL/Janeleiro.B

Sin embargo, en junio comenzamos a detectar en nuestra telemetría el surgimiento de una nueva campaña con una nueva versión de Janeleiro, aunque con el mismo objetivo: usuarios corporativos de Brasil.

De acuerdo con nuestra telemetría, los niveles de detecciones semanales de esta nueva versión de Janeleiro comenzaron a crecer a fines de julio.

Esta versión de la amenaza no es muy diferente de la última que describimos en abril, ya que continúa utilizando las mismas técnicas para engañar a sus víctimas. Estos son algunos de los cambios más notorios:

  • Implementación de un producto comercial de ofuscación llamado SmartAssembly que dificulta el análisis tanto estático como dinámico.
  • Nuevo proceso de carga utilizando DLL-side loading
  • Uso de un instalador MSI adicional que es persistido en el sistema para tener un segundo punto de ejecución
  • Se ha descartado el código que reemplaza las direcciones de bitcoin en el portapapeles.

Cadena de infección

Janeleiro continúa siendo distribuido vía correos de phishing que buscan engañar a las potenciales víctimas para que hagan clic en un enlace que los llevará a descargar un archivo comprimido ZIP. En el ejemplo que se observa en la Imagen 1, el correo simula ser el envío de un currículum a una empresa apuntada por la campaña:

Imagen 1. Ejemplo de un correo de phishing distribuyendo la nueva versión de Janeleiro en Brasil

El enlace en el cuerpo del correo dirige hacia un servidor Azure desde el cual automáticamente se descarga un archivo ZIP. Este archivo contiene un instalador MSI que se encarga de instalar a Janeleiro y sus componentes en el sistema.

Imagen 2. Diagrama de la cadena de infección de Janeleiro.B

El instalador MSI despliega varios componentes en las siguientes ubicaciones:

  • %AppData%\Progress
  • %AppData%\Executando

Los componentes son:

  • Avira.SystrayStartTrigger.exe
  • Avira.oe.nativecore.dll
  • SecurityHealthSystray.exe
  • msvcp120.dll
  • msvcr120.dll
  • mod110.dll
  • ini.1.msi

Como parte final del proceso de instalación, el MSI carga una DLL llamada sheriff.dll desde un archivo temporal. Esta DLL tiene dos propósitos:

  • Copiar los componentes (con excepción de 1.msi) a una nueva carpeta en %ProgramData%, cuyo nombre está compuesto por caracteres alfabéticos seleccionados aleatoriamente. Los componentes son eliminados de la carpeta original.
  • A modo de persistencia, Avira.SystrayStartTrigger.exe y ini.1.msi son registrados en: HKCU\Software\Microsoft\Windwos\CurrentVersion\Run para que sean iniciados juntos con Windows.

Imagen  3. Captura de pantalla del registro de Windows luego de que los componentes de Janeleiro.B son registrados.

También hemos hallado una variante de sheriff.dll llamada SwitchLaunch.dll, que intenta localizar geográficamente el equipo infectado a partir de su IP como en versiones anteriores de Janeleiro, abortando la ejecución si la IP no proviene de Brasil. Adicionalmente esta DLL recolecta información básica del equipo y la envía a un servidor que funciona como “tracker” de infecciones.

  • http[:]//trackermid.us-east-1.elasticbeanstalk.com/count

Por otro lado, el segundo instalador MSI (ini.1.msi) funciona como un segundo punto de ejecución. Este posee una DLL llamada WhileIni.dll que es cargada del mismo modo que sheriff.dll: desde un archivo temporal como parte final del proceso de instalación. WhileIni se encarga de localizar el archivo Avira.SystrayStartTrigger.exe y ejecutarlo.

DLL-side loading

La técnica de DLL side-loading (T1574.002), o “carga de DLL lateral”, consiste en reemplazar una DLL utilizada por un programa legítimo que no lleve a cabo ningún tipo de validación, y por lo tanto pueda ser abusado para cargar en su proceso una DLL maliciosa. Esta es una técnica muy popular entre los troyanos bancarios dirigidos a Brasil, y es la primera vez que Janeleiro hace uso de ella.

Imagen 4. Diagrama del flujo de ejecución de los distintos componentes de Janeleiro al iniciarse con el sistema o al ser ejecutado durante el proceso de instalación

En este caso, el programa abusado por Janeleiro es Avira.SystrayStartTrigger.exe, el cual utiliza una DLL llamada Avira.oe.nativecore.dll, la cual es suplantada por una DLL que en realidad es el cargador de Janeleiro. Esta DLL intenta localizar un archivo en la ubicación actual desde donde se esté ejecutando el programa, el nombre del archivo debe comenzar con “mod” (de mod110.dll). Si lo encuentra, lo carga también dentro del proceso de Avira.SystrayStartTrigger.exe.

Comando y Control

A pesar de haber sido uno de los puntos débiles en campañas anteriores, los operadores de Janeleiro han decidido continuar haciendo uso de GitHub con la misma metodología anterior: los repositorios son diariamente actualizados con nuevas direcciones IP almacenadas encriptadas y codificadas en archivos de texto.

Imagen 5. Captura de pantalla del repositorio en GitHub utilizado por los operadores de Janeleiro.B.

El nombre de la página de GitHub, el repositorio, y también los archivos de texto, son generados diariamente mediante el siguiente procedimiento:

  1. Generar una cadena concatenando los elementos:
    1. Prefijo “SLK” característico de Janeleiro.
    2. Convierte un valor numérico a string. Solo hemos visto el número 1.
    3. Fecha actual en formato ddMMyyyy.
  2. Cifrar una cadena que es la fecha actual en formato ddMMyyyy, utilizando AES en modo CBC, utilizando la cadena como passphrase y como valor Salt. El resultado es codificado en base64 por la función que se encarga de llevar a cabo el cifrado.
  3. El resultado es utilizado como passphrase y valor Salt para cifrar la cadena generada en el paso 1.
  4. Descartar los caracteres no alfabéticos y numerales, por ejemplo: “+”, “=”, “/”.

Imagen 6. Función que se encarga del cifrado en Janeleiro.B.

Las funciones de cifrado EncryptDecryptUtils.Encrypt provienen de una librería llamada RijndaelEncryptDecrypt que los desarrolladores de Janeleiro han estado utilizando desde hace ya tiempo.

Al momento de la publicación de este análisis, tanto la cuenta utilizada para administrar como la cuenta de GitHub de la falsa organización, han sido eliminadas.

El futuro de Janeleiro

Si bien las detecciones de Janeleiro han ido disminuyendo desde fines de agosto, es poco probable que esta familia de malware vaya a cesar sus operaciones en el futuro cercano: al igual que otras familias de troyanos bancarios latinoamericanos, es de esperarse que continúen adaptándose para permanecer en actividad y posiblemente comiencen a enfocarse en otros países hispanohablantes de la región.

Un agradecimiento especial a Johnatan Camargo Zacarias de Banco Itaú por su ayuda con la investigación.

Detección

Los productos de ESET detectan las nuevas variantes de Janeleiro como:

  • Backdoor MSIL/Janeleiro.B
  • Backdoor MSIL/Janeleiro.C
  • Backdoor MSIL/Agent.ACY
  • Backdoor MSIL/Agent.ACU

Consejos para estar protegido

Algunas recomendaciones para tener en cuenta y evitar ser víctima de esta amenaza:

  • Analizar los datos del remitente del correo. Prestar atención a:
    • La dirección de correo y de dónde proviene.
    • El nombre de la persona que nos envía el correo.
    • Revisar el contenido del correo; por ejemplo, faltas de ortografía.
  • En caso de que no haya ningún indicio de que el correo sea malicioso, revisar que ese destinatario sea válido.
  • No abrir ningún correo si hay motivos para sospechar, ya sea del contenido o de la persona que lo envió.
  • No descargar archivos adjuntos que llegan a través del correo si tiene algún tipo de dudas acerca de su origen.
  • Revisar las extensiones de los archivos. Por ejemplo, si un archivo termina con “.msi” la última extensión es la que determina el tipo de archivo, en este caso sería “.msi”; es decir, un ejecutable.
  • Si un correo incluye un enlace que nos lleva a una página que nos pide ingresar nuestras credenciales para acceder, ¡no ingresarlas! Recomendamos abrir la página oficial desde otro navegador u otra pestaña y acceder desde ahí.
  • Ser prudentes al descargar y extraer archivos comprimidos .zip, .rar, etc., más allá de que la fuente que envía el correo sea legitima.
  • Mantener actualizadas las soluciones de seguridad instaladas en el dispositivo.