El siguiente post es una traducción y adaptación de la publicación Win32/Gataka: a banking Trojan ready to take off? escrita por nuestro investigador y colega de ESET , Jean-Ian Boutin.

Durante varios meses se ha seguido el desarrollo del troyano bancario Win32/Gataka, que facilita las transferencias bancarias de tipo fraudulento. Este Troyano fue publicado en 2011 por S21Security, pero asombrosamente recibió poca atención desde entonces.

Win32/Gataka tiene una arquitectura similar a SpyEye: (troyano bancario que permite grabar imágenes con la cámara web de la víctima mientras operan con su entidad financiera) e incluso cuenta con la posibilidad de agregar  plugins que se pueden ir descargando para agregar mas funcionalidades. Está desarrollado en C++ y es bastante cuidadoso para depurar los strings en sus binarios y en la cantidad de información que envía de vuelta al servidor C&C (Centro de Comando y Control).

Instalación

Cuando el malware se ejecuta, se inyecta en explorer.exe y procede a su instalación.  Una vez que ha tomado el control del explorer.exe se inyecta en todos los procesos en ejecución y realiza un hook a las  APIs relacionadas con la creación de procesos en el sistema:

  • CreateProcess
  • CreateProcessAsUser

Antes de borrar el archivo original con el cual se infectó el sistema, guarda una copia  en la carpeta Application Data (%appdata%) siguiendo un comportamiento aleatorio predefinido para el nombre utilziado. Para tener persistencia, agregra un valor al resgitro [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun], apuntando al ejecutable que fue copiado a la carpeta Application Data.

El malware encripta el ejecutable original, usando una clave XOR, y lo almacena en la carpeta Application Data. La ruta de este archivo encriptado se mantiene en el registro [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerStartPageReserveProgram], que está igualmente encriptado usando XOR.

Una vez que se completa la instalación, tratará de contactar a su servidor C&C. Esto lo hace lanzando el Microsoft Internet Explorer (iexplore.exe) e inyectándole código malicioso para enviar peticiones POST cifradas.

Arquitectura

La funcionalidad de Win32/Gataka puede ser incrementada utilizando algunos plugins. De hecho, cuando se tiene únicamente el componente principal, no tiene muchas funcionalidades para el botmaster. Todos los plugins se descargan del panel de control y tienen un identificador (ID) único con su número de versión. Cuando se establece comunicación con el servidor C&C, el cliente entrega una lista donde se listan los plugins instalados con su versión. El servidor puede enviar actualización o nuevos puglins al troyano. En una de las campañas de propagación de Win32/Gataka que fueron seguidas, se observó una actualización a los componentes principales cada 2 o 3 días mientras que los plugins no tenían evoluciones significativas. Estas actualizaciones al parecer están enfocadas en evadir la detección de los antivirus.

Durante la investigación se hizo seguimiento de cuatro campañas de propagación  y se capturaron todos sus plugins. La siguiente tabla resume alguna información capturada en estos plugins. Vale la pena resaltar que la mayoría de las campañas de propagación estudiadas contenían todos los plugins listados a continuación. El nombre del plugin que está en la tabla fueron encontrados en la respectiva DLL export table.

Nombre del plugin

ID

Versión

Fecha de compilación

Descripción de algunas funcionalidades

HermesCore 0×1 0×501 Wed Feb 29 10:51:11 2012 Plugin principal y el único presente antes de descargar algún otro. Es el encargo de comunicarse con el servidor C&C y cargar los otros plugins. La dirección URL del C&C esta codificada en base64. Tambien puede ejecutar arbitrariamente archivos que vienen del servidor C&C.
0×801 Wed Apr 18 12:22:31 2012
0×901 Wed May 23 11:32:30 2012
0×A01 Fri May 25 09:43:43 2012
Interceptor 0×2 0×f01 Thu Mar 1 04:37:52 2012 Intercepta el tráfico de red, para los navegadores seleccionados. Las siguientes funciones son seleccionadas: connect, getpeername, closesocket.Este plugin crea un servidor proxy en la maquina local para analizar todo el trafico entrante y saliente. En el caso de tráfico HTTPS, certificados falsos encriptados en el plugin, son utilizados entre el cliente y el servidor proxy. Las funciones del navegador para verificar los certificados también son alteradas para utilizar los certificados falsos.
0×1201 Tue Mar 20 02:26:09 2012
NextGenFixer 0×4 0×103 Wed Feb 8 02:55:16 2012 Agrega un filtro para algunas URL específicas a medida que estos son visitados. Utiliza el plugin Interceptor para echar un vistazo y alterar las comunicaciones cliente/servidor.
0×403 Sat May 19 02:37:50 2012
WebInject 0×6 0×803 Wed Mar 7 06:12:04 2012 Puede inyectar JavaScript in páginas web visitadas. Estos scripts son enviados por el servidor como un archivo de configuración mantenido en base datos malware. Este plugin también puede grabar videos cuando se accede a algunos sitios específicos. Utiliza el plugin NextGenFixer para agregar un filtro a direcciones específicas para inyectarles contenido.
0×c03 Mon Apr 16 03:25:29 2012
HttpTrafficLogger 0×7 0×103 Sat Feb 18 08:29:57 2012 Almacena tráfico de red HTTP cuando son visitados algunos sitios particulares. Utiliza el plugin NextGenFixer para agregar filtros a direcciones específicas para dar una mirada al tráfico HTTP.
0×603 Sat Apr 21 05:55:52 2012
SocksTunnel 0×9 0×103 Mon Feb 6 02:37:07 2012 Crea servidores para navegación anónima.
0×303 Tue Mar 13 08:31:54
TrafficGrabber 0×f 0×404 Mon Apr 16 09:05:43 2012 Activa el modo promiscuo y monitorea todo el tráfico del sistema infectado.
CoreDb 0×19 0×103 Tue Feb 14 10:55:21 2012 Mantiene una configuración encriptada usando 3DES. El archivo de la base de datos se mantiene en la carpeta Application Data.

La siguiente ilustración describe la interacción entre los diferentes plugins:

Una vez descargados, los plugins son encriptados utilizando una llave XOR y comprimidos en una carpeta temporal, como se muestra en la siguiente captura de pantalla:

Campañas de infección

Durante la investigación se siguieron cuatro campañas de infección estudiando la forma en que Win32/Gataka se utilizaba para robar la información de sus victimas. Todas la campañas compartían el mismo protocolo de red. Hacían peticiones POST a una página atacada que actúa como un proxy y estas peticiones son redirigidas al verdadero servidor C&C. Las cuatro campañas utilizaron diferentes servidores. La lista para cada campaña está entre tres y diez direcciones cada una las cuales eran periódicamente actualizadas.

Mientras se investigaban estos sitios para una campaña de infección, se encontraron estadísticas del número de visitantes para unos de los servidores C&C. Lo interesante es que el sitio tenía un nivel bajo de visitantes; el cambio ocurrió en 19 de Abril, donde la mayor contribución de visitas fue de terminales infectadas.

Utilizando las estadísticas de este sitio, se pudo estimar que el tamaño de esta particular botnet es relativamente pequeño. El número total de visitantes a esta dirección entre el 19 y el 22 de abril es de 33,197. Teniendo en cuenta que cada una de las visitas no implica usuarios únicos, se podría pensar en un tamaño para la botnet entre 20,000 y 40,000 terminales infectados.

Sobre la distribución del origen de las peticiones, se tiene la siguiente gráfica donde la mayor cantidad es para Alemania:

Objetivos

Fue posible identificar tres tipos de descargas del servidor: la componente principal los plugins y la configuración de inyección HTTP.  Este último es muy interesante ya que proporciona información sobre los objetivos de cada campaña de infección. Tres de las cuatro campañas de infección analizadas tuvieron estos archivos de configuración.

  • Banco alemán

La primera campaña de infección estaba enfocada a los usuarios de un banco Alemán, donde trataban de convencerlos para que ingresaran un número de autorización de transacción (TAN) para luego hacer una transferencia fraudulneta simulando una transferencia de prueba. Este comportamiento fue reportado previamente a Trusteer.

  • Banco holandés

La segunda campaña de infección estaba enfoncada en bancos holandeses. El esquema utilizado fue muy similar al anterior del banco alemán, excepto que en este caso el usuario era engañado para ingresad un TAN necesario para ajustar un proceso.

Mientras el usuario espera, el malware hace la transación fraudulenta.

  • Periódico norteamericano

La tercera campaña de infección, configurada para utilizar inyección HTTP, trataba de obtener las cuentas del sitio web de uno de los más grandes periódicos de Norteamérica, utilizando algoritmos de fuerza bruta con el nombre de usuario y contraseña de los visitantes. El bot es dirigido a la página de autenticación del periódico para entrar parejas de usuario y contraseña aleatoriamente. A continuación se muestra la captura del código utilizado para este propósito.

function genStr(length, special) {
var iteration = 0;
var password = "";
var randomNumber;
if(special === undefined){
special = false;
}
while(iteration < length){
randomNumber = (Math.floor((Math.random() * 100)) % 94) + 33;
if(!special){
if ((randomNumber >=33) && (randomNumber <=47)) {continue;}
if ((randomNumber >=58) && (randomNumber <=64)) {continue;}
if ((randomNumber >=91) && (randomNumber <=96)) {continue;}
if ((randomNumber >=123) && (randomNumber <=126)) {continue;}
}
iteration++;
password += String.fromCharCode(randomNumber);
}
return password;
}
if(window.name!=1){
window.name=1;
document.getElementById('userid').value=genStr(10);
document.getElementById('password').value=genStr(10);
document.forms[0].submit();
}
Win32/Gataka puede no ser una amenanza tan grande como como SpyEye o Zeus, pero tiene objetivos similares. ¿Esta arquitectura modular y estable podrá atraer a más ladrones cibernéticos en el futuro? No sería de extrañar, pero sólo el tiempo lo dirá.
H. Camilo Gutiérrez Amaya
Especialista de Awareness & Research