En publicaciones anteriores repasamos la situación actual de los troyanos en el mundo de la plataforma móvil Android. Vimos cuáles son las características que normalmente presentan y cómo sirven al cibercrimen actual. Ha llegado el momento de diseccionar una de estas muestras para evaluar cómo se comportan y de qué manera se instrumentan.
Espías rusos en Latinoamérica
La detección Android/Spy.Banker fue creada a finales del año 2013, con el propósito de agrupar muestras que, entre otras características comunes, perseguían el robo de credenciales bancarias. Sin embargo, no fue hasta mediados del año 2014 que este tipo de amenaza tomó relevancia a nivel mundial.
Acompañando esta evolución, desde la declaración inicial de la firma se han presentado cada vez mayor cantidad de variantes, cada una de las cuales tiene por objetivo a diferentes entidades bancarias a lo largo y ancho del planeta.
En particular, una variante que ha logrado destacarse es Android/Spy.Banker.F. Este troyano bancario de procedencia aparentemente rusa llegó a propagarse a través de páginas latinoamericanas, cuando fue detectado por nuestro Laboratorio en sitios de Colombia y, en menor cantidad, Chile.
Además, como puede observarse en el siguiente gráfico, ha mostrado un crecimiento sostenible en el número de detecciones desde comienzos de 2014 hasta el día de la fecha, llegando a constituir el 68% del total de detecciones de la amenaza.
Al analizar los datos de manera más precisa, podremos observar un abrupto crecimiento en la cantidad de infecciones hacia agosto de 2014, presentándose un pico máximo de actividad a mediados de febrero del presente año.
En cuanto a dispersión geográfica, podemos notar que la mayor proporción de infecciones se ha concentrado en Rusia, acumulando casi el 98% del total de detecciones. Sin embargo, esta particular variante también ha logrado afectar a otros países europeos, lo cual cobrará relevancia una vez que entendamos cómo es que la misma funciona.
En los zapatos de la víctima
Cuando el usuario visita alguno de los sitios infectados, se descarga un archivo APK que lleva el nombre anketa, lo que significa “cuestionario” en checo. Una vez que el mismo ha sido instalado, es posible observar el ícono lanzador de la aplicación en el menú principal bajo, la cual se denomina con la palabra rusa Установка, que en español puede traducirse como “Ajustes” o “Configuración”.
Cuando el usuario inicia la aplicación, la misma solicitará permisos de administrador para el cifrado de los datos de la aplicación que se almacenen en la memoria, siempre que el equipo lo soporte. Esta característica puede hallarse en versiones de Android 3.0 y superiores.
Al ser presionado el botón activar, el troyano eliminará el ícono lanzador del menú principal. Además, será posible apreciar que no permitirá que el usuario del terminal pueda acabar el proceso ni desinstalar la aplicación desde el gestor de aplicaciones del sistema.
Con esto, un usuario descuidado puede confundir la aplicación maliciosa con aquellas que dan soporte al funcionamiento del móvil. Sin embargo, la próxima vez que intente abrir Google Play para realizar la búsqueda de material interactivo, la siguiente pantalla irá a su encuentro peticionando las credenciales de su tarjeta de crédito.
Además, esta particular variante apunta a capturar los datos de cuentas bancarias de uno de los bancos más importantes de Alemania: Commerzbank. Esta organización de servicios financieros posee una aplicación para servicios de e-Banking que pone a disposición de sus usuarios a través de la Google Play Store.
Cuando el troyano se ejecuta en equipos que tienen esta aplicación instalada, ocurrirá algo similar al caso de Google Play: al lanzar la aplicación genuina, se mostrará en cambio una ventana fraudulenta en la cual se insta a la persona a cargar su nombre de usuario o número de abonado, y su número de identificación personal.
Hasta aquí, tal vez el usuario haya podido advertir comportamientos extraños en su teléfono, relacionándolos a una probablemente vieja instalación fallida de una aplicación nada importante. O quizás haya brindado sus credenciales sin pensarlo, cansado de no poder deshacerse de las ventanas emergentes que le impedían utilizar normalmente su móvil. De cualquier manera, esto será sólo el comienzo de comportamientos anómalos, como la recepción de facturas con excesivos gastos telefónicos por mensajes y llamadas que no realizó.
Cabe preguntarnos entonces… ¿qué es lo que realmente sucedió?
Análisis post mortem de un espía abatido
Como muchas veces en la ingeniería inversa de archivos APK, todo comienza con el AndroidManifest. Lo primero que llama la atención es la numerosa lista de permisos que la aplicación debe persuadir al usuario de aceptar: envío de mensajes SMS, realización de llamadas, acceso a la lista de contactos registrados, acceso a redes y eventos de reinicio. Esto nos da una idea inicial de cuáles son las capacidades de la muestra y cómo fueron implementadas por su creador.
Luego, podemos dirigir nuestra mirada a las actividades y servicios que la aplicación lanzará, formando un nexo lógico con las clases definidas. Por sus denominaciones, podremos notar que tenemos dos actividades que se corresponden con las ventanas emergentes observadas durante el análisis dinámico.
Además, se declaran otros servicios varios y receptores, lo que nos indica qué eventos debemos emular para disparar determinadas funcionalidades y dónde encontraremos implementado su procesamiento.
Aplicando este razonamiento y siguiendo las llamadas entre objetos, podemos dar con el siguiente fragmento de código, el cual completa el panorama y nos confirma el modo de funcionamiento del malware: el troyano chequea constantemente el nombre del paquete de la aplicación actualmente en ejecución, y al detectar una correspondencia con los servicios de Google Play o la aplicación bancaria antes vista, genera el cuadro de diálogo pertinente.
Sin embargo, aún no sabemos qué ocurre con los datos ingresados por el usuario. ¿A quién son enviados? ¿De qué manera?
Para responder a estas interrogantes disponemos de dos caminos complementarios: el análisis estático de los métodos invocados, y el análisis dinámico del tráfico producido por la aplicación. Siguiendo el primer enfoque, podemos ver que la comunicación se realiza a través de HTTP POST.
Y luego, podemos corroborarlo en los paquetes capturados, obteniendo conjuntamente la URL destino de la información.
Algo similar ocurre con la actividad para el robo de credenciales bancarias, aunque esta vez el archivo peticionado en el servidor parece no encontrarse disponible.
Por otro lado, como agregado a la funcionalidad que resulta intencionalmente evidente a quien utiliza las prestaciones el equipo celular, la examinación del código subyacente y las transmisiones de red nos guían hacia el descubrimiento de otros comportamientos ocultos.
Tras instalarse, el troyano reporta su número de identificación y otros datos del dispositivo al servidor web. Además del número telefónico, se comunica el IMEI, país, versión de Android y modelo del equipo.
De manera consecuente con lo declarado en el manifiesto, cada vez que el teléfono recibe un mensaje SMS, su contenido es procesado. Parte del código encargado de esto último puede observarse en la siguiente figura, donde podemos ver una serie de cadenas de texto que se encuentran codificadas en base 64 con el objetivo de ofuscar el código.
Cuando el mensaje contiene una de estas específicas secuencias de caracteres, se dirige el flujo de control en una u otra dirección. Si decodificamos estos strings, obtendremos una lista de comandos y las acciones que desencadenan:
- rent&&&: activa en las preferencias de la aplicación la interceptación de mensajes SMS, es decir, en envío de los mensajes recibidos al cibercriminal;
- sms_stop&&&: desactiva el espionaje de mensajes de texto;
- sent&&&: envía un mensaje SMS a un determinado número telefónico;
- ussd&&&: emite una solicitud USSD;
- delivery&&&: envía un mensaje a la lista de contactos guardada en el teléfono;
- call_1&&&: habilita el desvío de llamada.
Estos son sólo algunos de los comandos dispersos entre las líneas de la aplicación que sirven al robo de información de la víctima, y permiten el control remoto del terminal. Por ejemplo, en la siguiente captura de pantalla podemos observar cómo todos los mensajes enviados por el equipo están siendo reportados al servidor malicioso.
¿Qué podemos aprender de esta experiencia?
Los troyanos móviles son una amenaza real, y por esto debemos permanecer alertas para evadir sus intentos de infección. Además de la instalación de una solución de seguridad móvil, recordemos ser sumamente cuidadosos al momento de instalar aplicaciones obtenidas fuera de Google Play. De hecho, la mejor práctica será evitar completamente este tipo de instalaciones y saber cómo determinar si una aplicación para Android es legítima.
Al navegar la web, se vuelve importante no hacer caso de aquellos sitios que insten sospechosamente la descarga de archivos APK desde páginas de reputación dudosa. Aún más, troyanos como el que acabamos de analizar nos dejan en claro que tampoco podemos confiar en mensajes SMS con enlaces extraños que recibimos desde nuestros propios contactos.
Recuerden acceder a nuestra Guía de Seguridad en Android para saber cómo proteger sus dispositivos.
Hash
SHA1: 358f3427184c0ffaf4c07d4857ecc2724a7b5eae