El troyano bancario Banload y sus técnicas para evadir software de seguridad

 

Resumen

De todas las muestras de troyanos bancarios recibidas durante las últimas semanas, son los scripts en Visual Basic (.vbs o .vbe) los que han llamado más nuestra atención. En este reporte analizamos un archivo de Visual Basic pero codificado con un programa legítimo de Windows para dificultar su análisis. La muestra analizada es la primera etapa de la infección y  se encarga de descargar y, en algunos casos, asegurar la persistencia de módulos adicionales o actualizaciones del troyano; además de programar la desinstalación del software de seguridad instalado en el equipo, como antivirus o plugins bancarios, y de crear reglas de firewall para bloquear el tráfico de red relacionado con esos ejecutables en caso de que la desinstalación falle.

 

 

Introducción

Como se ha mencionado en los reportes sobre el phishing recibido en el UNAM-CERT, desde hace algunos meses se ha visto una campaña de correos electrónicos que informan al usuario sobre una supuesta investigación de la Policía Federal (Procedimento Investigatório en portugués). Estos incluyen títulos con un identificador, como el que se muestra a continuación, y que hacen mención de artículos de la “Constitución Federal” (Constituição Federal) para hacerle creer al usuario que se trata de un aviso legítimo:

Intimação Procedimento Investigatório Policia Federal nr <año><mês><dia>5641541BR (<número>)

 

El correo electrónico que contenía el enlace de descarga de la muestra, analizada en este reporte, se puede observar en la imagen del inicio.

Al dar clic en el supuesto “anexo”, el navegador redirigía a una cuenta de Google Drive desde donde se descargaba el archivo malicioso.

El archivo ZIP descargado contenía el archivo “Bonus20reais_PDF.vbe”. Por la extensión, vbe, se sabe que es un script en Visual Basic codificado con el comando screnc de Windows, por lo que al abrirlo con un editor de texto sólo se pueden observar caracteres aleatorios.

 

Una vez decodificado, aunque ya era posible identificar algunas líneas de código, fue necesario renombrar las variables y funciones para hacer el script legible. Un fragmento del script decodificado se observa en la siguiente imagen.

 

 

 

 

Análisis Estático

A continuación se explican los aspectos relevantes del funcionamiento del script.

1)      Lee la llave de registro HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductName para identificar la versión del sistema operativo. Si es Windows 7, Windows Vista o Windows 8, se vuelve a ejecutar el script con wscript, excepto que esta vez con permisos de administrador.

 

2)      Añade la cadena “RR” al final del archivo C:\Windows\<Nombre_del_Equipo>_Part.rri.

3)      Si existe el archivo C:\Windows\idx se termina la ejecución del script; de lo contrario, lo crea.

 

4)      Después el script crea varias tareas programadas con el comando schtasks, todas se ejecutan una sola vez con el usuario SYSTEM, en distintos momentos y con el mismo identificador (0CE4BD10-B60E-49E4-93A5-7415FFD761CC, en adelante referido como “ID”) como parte del nombre. A su vez, estas tareas se encargan de ejecutar comandos de cmd, como se explica en los siguientes puntos:

 

Tarea

Ejecución

Acciones

{ID}

9 minutos después del inicio Del sistema

Descarga un archivo desde hxxp://xxxdownload1.com/up.jpg con el comando bitsadmin.

El archivo descargado se guarda en C:\Windows\<número_aleatorio>.tmp y posteriormente es ejecutado con rundll32.exe.

La URL se almacena en la variable de entorno “UPLKVARIABLE”.

El nombre que se le asigna al archivo descargado es almacenado en la variable de entorno “upvariable”.

{ID}1

4 minutos después de ejecutar el script

Descarga un archivo llamado mod1.jpg desde un servidor remoto con bitsadmin.

Este archivo se guarda en C:\Windows con el nombre %COMPUTERNAME%.tmp.

Agrega a la subllave de registro HKLM\Software\Microsoft\Windows\CurrentVersion\Run un valor con el nombre del equipo y añade como dato el comando “rundll32 %SYSTEMROOT%\%COMPUTERNAME%.tmp,#1”.

{ID}2

3 minutos después de ejecutar el script

Descarga el archivo part.jpg desde el servidor remoto con dirección IP 167.xxx.131.179 y lo guarda en C:\Windows\<nombre_del_equipo>_Part.exe.

Añade la cadena "autocheck autochk *\0 \0%SYSTEMROOT%\%COMPUTERNAME%_Part.exe\0" a la llave de registro "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\BootExecute”. El valor “autocheck autochk” obliga al equipo a hacer un escaneo del sistema durante su inicio. En este caso, lo que el malware hace es aprovechar el hecho de que se le pueden añadir otros valores a la subclave “BootExecute” para que el archivo malicioso SYSTEMROOT%\%COMPUTERNAME%_Part.exe se ejecute desde que se inicia el equipo.

Agrega la subclave de registro HKLM\SYSTEM\CurrentControlSet\Control\Partizan.

(1)                                          (2)

(1)   La primera parte contiene información para controlar el inicio del sistema.

(2)   Partizan es un anti-rootkit que forma parte de la edición rusa del programa UnHackMe. Durante el arranque del sistema realiza un escaneo para desinstalar los archivos especificados en el archivo con extensión “rri”.

{ID}3

14 minutos después de ejecutar el script

La tarea se borra a sí misma y le indica al equipo que debe reiniciarse en 60 segundos.

{ID}4

2 minutos después de ejecutar el script

La tarea se borra a sí misma y abre la URL hxxps://contxxx.whelaxxx.net/infects/mk.php?url=[Plugin][%COMPUTERNAME%]-cn- en el navegador que esté configurado por defecto.

Este proceso se repite con la URL hxxps://contxxx.whelaxxx.net/infects/mk.php?url=[N/A][%COMPUTERNAME%]-cn-.

 

También revisa el valor de la llave de registro HKLM\SYSTEM\ControlSet001\Services\GbpSv para saber si está instalado “G-Buster Browser Defense-Service”, que es un programa de seguridad utilizado por los clientes de los bancos brasileños Caixa Econômica Federal y Banco do Brasil, entre otros.

                                                                                    

----- GBPLUGIN y Warsaw -----                                    

5)      Se crean reglas en el firewall de Windows para bloquear el tráfico de salida y de entrada de todos los ejecutables y DLLs que se encuentren en los directorios %PROGRAMFILES%\GbPlugin\ y %PROGRAMFILES%\Diebold\Warsaw\. Warsaw también es un plugin de seguridad desarrollado por GAS Tecnologia para hacer más confiables las transacciones electrónicas de algunos bancos brasileños (Itaú, Banco do Brasil, Caixa, Santander, Banco de Venezuela, etc.).

 

----- ANTIVIRUS -----

Muchos productos antivirus soportan la integración con WMI (Windows Management Instrumentation), que es una infraestructura para administrar los datos y operaciones de los sistemas operativos Windows y que Windows Security Center utiliza para detectar las soluciones antivirus y de firewall instaladas en un equipo. Windows Security Center monitoriza el “estado de salud” del sistema, como por ejemplo: las actualizaciones y la configuración del firewall y de antivirus o antispyware.

Si el producto AV registró sus datos con Windows Security Center, habrá información sobre la aplicación (nombre, identificador único, ruta, estado de la protección en tiempo real y estado de las definiciones) en alguno de los dos espacios de nombres WMI del Centro de Seguridad: \root\SecurityCenter (versiones anteriores a Vista) o \root\SecurityCenter2 (versiones posteriores a Vista). En este caso, el script sólo se ejecuta si el sistema operativo es Windows Vista, 7 u 8, por lo que se realiza la consulta a \root\SecurityCenter2. Dentro de éste, se encuentra la clase AntiVirusProduct.

6)      El script revisa el contenido del la clase AntivirusProduct por medio de la consulta "Select * from AntiVirusProduct". Para cada producto AV realiza lo siguiente: busca en las subcarpetas los ejecutables, obtiene el nombre y la ruta y guarda esa cadena en %SYSTEMROOT%\%COMPUTERNAME%_Part.rri. Después agrega reglas en el firewall de Windows para bloquear el tráfico, de entrada y salida, relacionado con el programa AV.

 

 

 

Análisis Dinámico

Una vez que los plugins Warsaw y G-Buster fueron instalados, el archivo Bonus20reais_PDF.vbe se ejecutó para analizar su comportamiento.

 

·         Árbol de procesos

  • wscript.exe
  • --cmd.exe
  • ------conhost.exe
  • ------schtasks.exe
  • --cmd.exe
  • ------conhost.exe
  • ------req.exe
  • --cmd.exe
  • ------netsh.exe
  • --cmd.exe
  • ------setx.exe

 

·         Sistema de archivos

Después de que Bonus20reais_PDF.vbe descarga los tres archivos (su actualización y dos módulos adicionales), estos se ejecutan después del reinicio del sistema de la siguiente forma:

-          Part.jpg: Se ejecuta durante el arranque para desinstalar el antivirus. Programado en Borland Delphi. No empaquetado.

-          Mod1.jpg: Se ejecuta en cuanto un usuario inicia sesión en el equipo infectado. Programado en Borland Delphi. No empaquetado.

-          Up.jpg: Es ejecutado inmediatamente después de su descarga con rundll32.exe. Programado en Microsoft Visual C++. No empaquetado.

 

 

·         Comportamiento observado

En el manejador de tareas se observaron las tareas generadas por el script.Cuando se tomó la imagen estaban activas las tareas 1 y 2, encargadas de descargar los archivos part.jpg y mod.jpg respectivamente.

 

También se comprobó la existencia y el contenido de las variables de entorno %uplkvariable% y %upvariable%. La primera contenía la URL para descargar el archivo up.jpg. Y la segunda tenía como valor un número aleatorio, con el que se nombra al archivo up.jpg una vez descargado. El archivo up.jpg parece ser una actualización de este troyano bancario.

 

En la carpeta C:\Windows se pueden observar los archivos idx y <Nombre_Equipo>_Part.rri, creados por el malware, y dos archivos BIT*.tmp, generados de forma temporal por bitsadmin durante la descarga de part.jpg y mod.jpg. El archivo mod1.jpg es el payload, una variante de la familia ChePro que se encarga de robar los datos del usuario cuando éste accede a uno de los sitios web bancarios que el troyano monitoriza. Mientras que el archivo part.jpg es en realidad la herramienta Partizan, mencionada anteriormente, que obtiene los nombres de los programas que debe borrar del archivo con extensión “rri”. En este caso, dicho archivo contenía la ruta de los ejecutables relacionados con Windows Defender, que es el único software anti-malware instalado en el equipo.

 

De hecho, algunas cadenas relacionadas con Partizan se pueden observar en el tráfico de red durante la descarga del archivo.

 

Al revisar las reglas del firewall para el tráfico de entrada y salida, no se observaron reglas para los plugins de seguridad de los bancos brasileños, sino únicamente para los ejecutables de Windows Defender.

 

Después de unos minutos, el equipo se reinició. Durante el arranque del sistema se ejecutó Partizan, tal como estaba especificado en el manejador de tareas.

 

Como se observa en la siguiente imagen, Partizan deja un archivo de texto que contiene una bitácora de eventos de su ejecución.

 

Donde se especifica si el archivo fue o no removido del sistema. Por lo que se observa a partir de las fechas de creación, los archivos no son realmente borrados sino que se les cambia la extensión, añadiendo “.del” al final del nombre.

 

 

·         Up.jpg / <número>.tmp

El archivo up.jpg, que parece ser una actualización para el troyano bancario analizado, incluye otra URL para descargar mod1.jpg y otro comando para añadir los ejecutables y DLLs de GbPlugin y Warsaw al firewall de Windows, posiblemente para corregir los que fallaron en el script original.

 

·         Mod1.jpg / <Nombre_Equipo>.tmp

En el archivo mod1.jpg  se encontraron comandos en texto plano, cadenas relacionadas con bancos brasileños codificadas en base64 y cadenas cifradas. Entre las cadenas que se encuentran en texto plano se encontró una que parece tener los datos necesarios para que el equipo infectado se conecte a la base de datos de un servidor remoto, así como lo que parecen ser comandos de un bot: “Provider=SQLOLEDB.1;Password= ;Persist Security Info=True;User ID=conectwebm1;Initial Catalog=conectwebm1;Data Source=”

 

Texto plano

  • cmd.exe /c taskkill /IM explorer.exe /F &&%systemroot%\explorer.exe
  • Provider=SQLOLEDB.1;Password=
  • ;Persist Security Info=True;User ID=conectwebm1;Initial Catalog=conectwebm1;Data Source=
  • Internet Explorer
  • #32770
  • Mensagem da p
  • gina da web
  • @idcliente
  • @casa
  • @pcname
  • @versao
  • spcadnovainfo
  • @objeto
  • @comando
  • @resposta
  • @param
  • spprincipal
  • spresposta

 

Base64

  • YWliHd9H8 = ancosantan
  • MzBob3Jhcw==    = 30horas
  • bmNvYnJhZGVzYw==  =ncobradesc
  • ZXJuZXRiYW5raW5n =ernetbanking
  • dGJhbmtpbmdjYWl4 = tbankingcaix
  • W2JiLmNvbS5i = [bb.com.b
  • YmFuY29icmFz = bancobras
  •  Z2JmdGJidC5kbGw=  =gbftbbt.dll   Utilizado por Banco do Brasil
  •  Z2JwaW5qLmRsbA==  =gbpinj.dll
  • ZGJzcTAwMTUud2hzZXJ2aWRvci5jb20=   =dbsq0015.whservidor.com

 

Hashes

mod1.jpg: 691e85c70eb994d5ce556cfd88d463d6

part.jpg: d5915a4c454e50d76b343019d9978373

up.jpg: 692eedb2b519b86f9d5a1e4a85b7b606

Bonus20reais.vbe: 6396334d7c2dd955f70c20f73f434ee1