El siguiente artículo es una traducción y adaptación del publicado por nuestro compañero Jean-Ian Boutin en el blog de ESET We Live Security.
Introducción
Un nuevo troyano bancario ha hecho aparición en los últimos meses. Siendo analizado en primera instancia por LEXSI, este troyano bancario ha estado muy activo y ha infectado a usuarios de todo el mundo. Su modus operandi consiste en el fraude bancario mediante inyecciones web. A pesar de que este vector de ataque ha estado presente durante mucho tiempo en varias familias de troyanos bancarios, aún sigue siendo efectiva. Win32/Qadars utiliza una amplia variedad de inyecciones web, algunas de ellas con componentes móviles de Android, utilizados para saltarse la seguridad de la banca online o para obtener acceso a la cuenta bancaria del usuario.
Normalmente, los troyanos bancarios tienen como objetivos a varias instituciones financieras importantes o se centran en un grupo más pequeño que suele incluir a aquellas instituciones en las que su base principal de usuarios se encuentra geográficamente cerca. Win32/Qadars se encuentra en la segunda categoría, obteniendo sus objetivos de regiones específicas y utilizando ficheros de configuración de inyecciones web diseñados a medida para aquellas entidades financieras más utilizadas por los usuarios. A lo largo de esta investigación hemos visto que hay principalmente seis países afectados por Win32/Qadars:
– Países Bajos
– Francia
– Canadá
– India
– Australia
– Italia
Mientras que la mayoría de ataques dirigidos a los usuarios en estos países fueron lanzados en sucesivas oleadas, los usuarios de los Países Bajos fueron objetivos durante todo el periodo de monitorización. Esto llamó poderosamente nuestra atención por lo siguiente:
- Sigue siendo muy activo tras seis meses y es actualizado constantemente.
- Apunta a regiones muy específicas del mundo.
- Utiliza una amplia variedad de inyecciones web, alguna de las cuales también fue utilizada por otra familia de troyanos bancarios en una campaña sin relación alguna.
- Utiliza Android/Perkele para saltarse los sistemas de doble factor de autenticación en los móviles.
Perspectiva histórica
Las primeras muestras de actividad que observamos de este malware fue a mediados de mayo de 2013. El siguiente gráfico muestra la detección diaria de Win32/Qadars.
Imagen 1 : Detecciones diarias de Win32/Qadars
A pesar de que las primeras detecciones se produjeron en mayo, la primera oleada de infecciones sucedió a finales de junio. De forma interesante, los autores parece que tuvieron una fase de pruebas hasta que se observó el siguiente pico de infecciones semanas después sin apenas detecciones entre oleadas. Asimismo, los usuarios italianos fueron el objetivo principal durante la primera oleada mientras que las campañas siguientes tenían como objetivo a usuarios holandeses. Pensamos que este kit se ha mantenido privado o vendido únicamente a un grupo de usuarios seleccionados cuidadosamente. Hemos viso unas cuantas campañas de propagación más, pero la mayoría de infecciones que hemos analizado son de la misma campaña y por eso comparten los mismos servidores de mando y control (C&C).
Podemos seguir la evolución del malware a través del número de versión que se incluye en el ejecutable. La primera versión que vimos fue la 1.0.0.0 y la última fue la 1.0.2.7. El lanzamiento constante de nuevas versiones nos indica que este malware se encuentra en continuo mantenimiento y desarrollo. El siguiente gráfico nos muestra la fecha en que se observó cada nueva versión.
Imagen 2 : Evolución del número de versión a través del periodo de monitorización
Análisis técnico
Win32/Qadars utiliza un esquema Man-in-the Browser (MitB) para realizar el fraude financiero. Tal y como hace Win32/Spy.Zbot, Win32/Qadars se inyecta en los procesos del navegador para anclarse a ciertas APIs. Utilizando este anclaje, es posible inyectar contenido en las webs visitadas por el usuario. Este contenido inyectado puede ser cualquier cosa, pero normalmente se trata de un formulario que pretende recopilar credenciales de los usuarios o un código Javascript diseñado para intentar realizar transferencias automáticas sin conocimiento o autorización del usuario.
Los ficheros de configuración de la inyección web se descargan del servidor C&C y contiene la URL de la web objetivo, el contenido que debería ser inyectado en la web y, finalmente, dónde debería ser inyectado. El formato de configuración del fichero es muy similar a otros troyanos bancarios existentes. Una vez descargada, la configuración se almacena cifrada con AES en las claves de registro del ordenador. Actualmente, Win32/Qadars es capaz de anclarse en dos navegadores para realizar la inyección de contenido: Firefox e Internet Explorer. También hay líneas de código que hacen referencia a Chrome, por lo que podríamos ver versiones que afecten a este navegador en el futuro.
Una vez que el malware ha infectado una máquina, el delincuente al mando de la botnet puede controlar las máquinas infectadas mediante diferentes comandos, la mayoría de los cuales aparecen listados en la tabla a continuación.
Tabla 1: Comandos y descripción
Un añadido que se realiza en la versión 1.0.2.7 es un ladrón de credenciales FTP. Soporta un amplio rango de clientes FTP e intenta abrir sus ficheros de configuración para robar las credenciales del usuario. Curiosamente, para poder robar las credenciales de los usuarios integra algunas contraseñas estáticas conocidas que algunos de estos clientes FTP utilizan para cifrar sus ficheros de configuración. Este comportamiento no es novedoso y ya se ha visto en otras muestras de malware como por ejemplo Win32/PSW.Fareit (Pony Loader).
Comunicaciones de red
Win32/Qadars usa un cifrado AES en modo ECB para cifrar sus comunicaciones de red. Antes de enviar un mensaje, el cliente generará una cadena aleatoria de nueve caracteres y utilizará su hash MD5 como la llave AES para cifrarlo. También generará otra cadena aleatoria que incluirá en el mensaje enviado al servidor. Esta llave será utilizada por el servidor para cifrar su respuesta. Para transferir de forma segura la clave AES utilizada para cifrar el mensaje al servidor el cliente lo cifrará una vez más, dos caracteres cada vez, y la añadirá al mensaje. Finalmente, el mensaje resultante se codifica usando base64 y se envía al servidor. La siguiente imagen representa este proceso y muestra los diferentes campos presentes en los mensajes enviados al servidor.
Imagen 3 : Comunicación Cliente/Servidor
La respuesta del servidor se cifra usando la clave del servidor introducida en la petición del cliente. También se añade el resumen MD5 del mensaje como un mecanismo de detección de errores. La siguiente imagen muestra la estructura de la respuesta del servidor.
Imagen 4 :Comunicación Servidor/Cliente
El análisis de los diferentes ID de los mensajes utilizados por Win32/Qadars nos dicen más cosas acerca de sus funcionalidades. La tabla a continuación nos muestra un listado de los diferentes identificadores de los mensajes y su descripción.
Tabla 2 : ID de los mensajes y su descripción
Conocer el protocolo de red utilizado por Win32/Qadars mejoró notablemente nuestra habilidad para realizar el seguimiento de la botnet y estudiar su comportamiento
Vector de infección
El fichero de configuración de la inyección web de Win32/Qadars cambia frecuentemente y apunta a instituciones específicas. Para maximizar su éxito con estas inyecciones web, los autores del malware intentan infectar a los usuarios en regiones específicas del mundo. En la siguiente sección mostraremos qué países fueron los más atacados, pero echemos primero un vistazo a los vectores de infección que el creador del malware eligió para atacar a ciertos países. Desde mayo a octubre no está claro cómo se propagaba el malware pero, mediante nuestro sistema de telemetría, encontramos numerosas pistas para deducir que los delincuentes habían comprado hosts comprometidos en los países en los que estaban interesados. Llegamos a esta conclusión porque todos los sistemas infectados que analizamos también tenían descargadores de troyanos y otros tipos de malware Pago-por-instalación (PPI) como Win32/Virut
A comienzos de noviembre vimos que Win32/Qadars estaba siendo distribuido a través del Nuclear Exploit Kit. A continuación hay una serie de URL que fueron utilizadas para distribuir este malware a principios de noviembre. El patrón utilizado por Nuclear Exploit Kit en ese momento es claramente visible:
hxxp://nb7wazsx[.]briefthink[.]biz:34412/f/1383738240/3447064450/5
hxxp://o3xzf[.]checkimagine[.]biz:34412/f/1383770160/1055461891/2
hxxp://pfsb77j2[.]examinevisionary[.]biz:34412/f/1383780180/1659253748/5
Ambos vectores de infección permiten a los gestores de la botnet elegir la ubicación de los sistemas comprometidos.
Objetivos regionales
Win32/Qadars se ha centrado hasta ahora principalmente en seis países: los Países Bajos, Francia, Canadá, Australia, India e Italia. El siguiente gráfico muestra la distribución geográfica de la detección en el periodo comprendido entre mayo y noviembre de 2013.
Imagen 5 : Distribución de la detección
Win32/Qadars claramente busca infectar ordenadores holandeses ya que el 75% de las detecciones vienen de esta región. El análisis de las fechas en las que fue detectado muestra que hubieron varias oleadas de infecciones.
Imagen 6: Detecciones diarias de Win32/Qadars por países
Las detecciones en los Países Bajos siempre son las más importantes, seguidas por las detectadas en Francia. El caso de Canadá es especialmente interesante ya que todas las detecciones en este país ocurrieron en los últimos quince días de octubre. Por supuesto, el fichero de configuración de la inyección web descargado por los bots en esas fechas contenía código que apuntaba a las principales instituciones financieras canadienses.
El inyector web descargado por los bots apunta a instituciones financieras en los seis países mencionados anteriormente con un grado variante de sofisticación. Algunas inyecciones web solamente recopilarán información extra cuando un usuario intente registrarse en la web segura de su banco. Esto se realiza a través de la inyección de un formulario adicional o de elementos que preguntan al usuario por información privada cuando se conecta a su banco. A continuación se muestra un ejemplo de formulario.
Imagen 7 : Inyección web con apariencia de phising
Otras inyecciones web son más complicadas y pueden realizar transacciones automáticamente y saltarse los sistemas de autenticación de doble factor implementados por los bancos.
Inyecciones web
Las inyecciones web utilizadas por los troyanos bancarios pueden ser obtenidas de diferentes formas. Pueden ser programadas directamente por los cibercriminales que manejan la botnet o pueden comprarse. Hay varios programadores que ofrecen inyecciones web públicas o las producen a medida según las necesidades del usuario. Hay muchas de estas ofertas y algunas pedirán una cantidad diferente de dinero dependiendo de las características solicitadas.
Cuando analizamos las inyecciones web utilizadas por Win32/Qadars nos pareció claro que no fueron escritas por las mismas personas, ya que las técnicas empleadas y estilos de programación son bastante diferentes. De hecho, pensamos que todas fueron compradas en varios foros underground. Una plataforma de inyecciones web que utilizan tiene una forma distintiva de obtener contenido externo como por ejemplo scripts e imágenes. La URL en el Javascript inyectado será algo parecido a esto:
hxxp://domain.com/gate.php?data=cHJvamVjdD1tb2ItaW5nbmwtZmFuZCZhY3Rpb249ZmlsZSZpZD1jc3M=
La porción “data=” de la URL está codificada en base 64. Cuando se descodifica se puede leer la siguiente cadena “project=mob-ingnl-fand&action=file&id=css”, lo que nos permite conocer el objetivo así como también el fichero que está tratando de obtener. Curiosamente, encontramos el mismo tipo de sintaxis en inyecciones web utilizadas en una campaña que tenía a bancos de la República Checa como objetivo y que utilizaba Win32/Yebot (alias Tilon) como troyano bancario. No obstante, a pesar de que no encontramos restos de esta particular plataforma de inyección web en los foros underground en los que buscamos, sí que encontramos otro tipo de ofertas.
Sistemas de Transferencias Automáticas (ATS)
ATS, utilizadas frecuentemente en troyanos bancarios, es un término aplicado a las inyecciones web que persiguen iniciar una transferencia automática una vez que el usuario accede a su cuenta bancaria a través de un ordenador infectado. Normalmente contendrá código para encontrar automáticamente la cuenta con la mayor cantidad de dinero y realizar una transferencia a la cuenta destino controlada por el atacante/mulero. Este código normalmente contiene algunos trucos (a base de ingeniería social) para saltarse los sistemas de autenticación de doble factor que algunos bancos imponen a la hora de realizar transferencias.
Hemos encontrado varios programadores en foros underground que venden ATS públicos o privados para varios bancos de todo el mundo. En los foros underground, una inyección web “pública” es aquella que se vende a cualquiera que la solicite mientras que la “privada” se personaliza según las necesidades del comprador y normalmente no vuelve a ser vendida por el programador. Por regla general, los compradores de las inyecciones web privadas reciben el código fuente y los derechos para redistribuirlas a terceros. Sabemos que los autores de Win32/Qadars están comprando algunas inyecciones web porque encontramos una ATS pública que había sido integrada en el fichero de configuración de su inyección web. Como muchas otras ofertas, este código vende, junto con el inyector web, un panel de administración (mostrado a continuación), que permite a los cibercriminales controlar varios aspectos sobre cómo debe realizarse la transferencia automática de fondos.
Imagen 8 : Panel de administración de inyección web ATS
Esta oferta en particular está apuntando a un banco francés y el programador afirma que puede saltarse el sistema de autenticación de doble factor por SMS establecido por el banco para evitar transferencias fraudulentas.
Perkele
En varios de los ATS que hemos analizado, como el que hemos descrito anteriormente, el malware debe interceptar un SMS para hacer que la transferencia se realice. Esto es necesario porque el banco envía un número de autorización de la transacción (TAN) al móvil del usuario cuando este inicia la transferencia de dinero. El usuario debe introducir este TAN en su navegador antes de que se autorice la transferencia. El uso de un componente móvil en un troyano bancario no es nuevo, puesto que ZitMo y otros han estado entre nosotros durante bastante tiempo.
Lo que resulta particularmente interesante en este caso es que varios programadores de inyecciones web están añadiendo estos malware para móviles en sus inyecciones web. Esto significa que el delincuente que gobierna una botnet puede comprar inyecciones web muy complejas que no son solamente código JavaScript, sino que también contienen un panel de administración y algunos malware para móviles personalizados para el banco objetivo.
En el caso de Win32/Qadars, el componente móvil que hemos visto unido a la inyección web es Android/Perkele, un malware para móviles que puede interceptar mensajes SMS y reenviárselos a los ciberdelincuentes, tal y como comenta Brian Krebs en el análisis de este malware. La inyección web se encarga de todo en este caso: cuando el usuario accede a su cuenta bancaria el contenido se inyecta en su navegador, solicitándole que especifique su marca de móvil y la descarga de una aplicación de “seguridad” en su dispositivo móvil. Debido a que el usuario puede ver este contenido mientras accede a su cuenta, será más propenso a pensar que este mensaje es genuino y que la aplicación realmente proviene de su banco. En una de las muestras que analizamos, una vez que la aplicación bancaria se instala en el móvil, envía un SMS a un número de teléfono en Ucrania.
Imagen 9: Captura de pantalla de Android/Perkele con un banco francés como objetivo
Android/Perkele soporta los sistemas Android, Blackberry y Symbian, pero tan solo hemos visto el componente de Android siendo utilizado en conjunto con Win32/Qadars. Una vez la aplicación se instala en el móvil del usuario se puede realizar la transferencia automática ya que el SMS que contiene el TAN puede ser obtenido por los delincuentes.
Esta oferta de inyectores web es un buen ejemplo de personalización del malware. El gestor de la botnet puede ahora comprar una solución completa que le permitirá realizar transferencias automáticas y saltarse los sistemas de autenticación de doble factor. Todo lo que necesita es proporcionar una manera de inyectar contenido en el navegador del usuario. Esta funcionalidad se encuentra implementada en todos los troyanos bancarios modernos.
Conclusión
Recientemente hemos visto un resurgimiento de nuevos troyanos bancarios distribuidos por ciberdelincuentes. Win32/Napolar, Win32/Hesperbot y Win32/Qadars han aparecido en los últimos meses. Probablemente no sea una coincidencia que haya un elevado número de troyanos bancarios y de su código fuente disponible tras las filtraciones del código de Win32/Zbot y Win32/Carberp.
Otro punto interesante que observar es la scene de los programadores de inyecciones web. Estos individuos están ofreciendo piezas de código cada vez más sofisticadas capaces de saltarse una amplia variedad de sistemas de autenticación de doble factor. Será interesante observar si en algún momento el mercado madura lo suficiente para que podamos ver aparecer kits de inyectores web, de la misma forma que sucedió con la scene de kits de exploits.
Agradecimientos especiales a Hugo Magalhães por su contribución a este análisis.
Hashes SHA1
Win32/Qadars (Nuclear Pack): F31BF806920C97D9CA8418C9893052754DF2EB4D
Win32/Qadars (1.0.2.3): DAC7065529E59AE6FC366E23C470435B0FA6EBBE
Android/Perkele: B2C70CA7112D3FD3E0A88D2D38647318D68f836F