Ha pasado un tiempo desde que en este mismo espacio realizamos el reporte del primer troyano SMS para Android, el sistema operativo para dispositivos móviles de Google. Durante la semana pasada se han detectado diferentes variantes de un troyano que envía mensajes de texto a números premium dentro de varias aplicaciones maliciosas publicadas en el Android Market. Hoy, vamos a compartir con ustedes el análisis de las variantes de este código malicioso e intentar demostrar cómo es que intenta esconderse del usuario.
Esta amenaza se propagó principalmente en China y como mencionamos anteriormente realiza el envío de mensajes de texto a números de este país. Todas las aplicaciones publicadas en el Android Market habían sido creadas por un usuario conocido como zsone, y presentaban un patrón en común que comentaremos con ustedes.
Algunas de las aplicaciones detectadas fueron iCalendar, iSms, iMatch e iMine todas ellas identificadas como alguna variante de Android/Raden. En el momento que cualquiera de estas aplicaciones era ejecutada enviaba un mensaje de texto al iniciarse, y para evitar que el usuario detectara la suscripción quedaba a espera del mensaje de confirmación, lo capturaba antes de que el usuario recibiera la notificación y lo descartaba.
En el momento de comenzar un nuevo juego, internamente se ejecutaba una sección de código que además de dar inicio a la partida realizaba una llamada a la función sendSms() en dónde efectuaba el envío del mensaje de texto. En otras palabras, ni bien el usuario comenzaba a jugar, el código maliciosos se ejecutaba e iniciaba la suscripción a un número de teléfono. En la siguiente imagen podemos ver la representación de cómo esto sucede:
Para aclarar un poco la secuencia del ataque y comprender realmente cómo es que esta amenaza atenta contra el bolsillo del usuario veamos paso por paso qué es lo que sucede. Todo comienza en el momento que se inicia un nuevo juego cuando el usuario presiona sobre el ícono central de la pantalla (1), al hacerlo se ejecuta la función startNewGame() que además de empezar una nueva partida (2) realiza la llamada a la función que aparentemente enviará el mensaje, sendSms(). La primera vez que se realiza la llamada a esta función la aplicación envía un mensaje de texto suscribiendo al usuario a un número premium (3).
Con el objetivo de que no se envíen mensajes cada vez que se inicia una nueva partida el código maliciosos persiste la información de la hora a la que se envió el mensaje para no levantar sospechas y como si eso fuera poco queda a espera de recibir la confirmación de que la suscripción ha sido aprobada y evita que el usuario reciba el mensaje.
Entonces, una vez terminado este proceso el teléfono del usuario puede comenzar a recibir mensajes desde un número premium en dónde debería de tener que abonar por un servicio el cual no tuvo intenciones de recibir. Pero hay un punto en dónde esto no se puede pasar por alto y se encuentra en los permisos que la aplicación necesita. Todas las aplicaciones para Android, cuentan con un archivo en el que se declaran los permisos de la aplicación, este archivo se conoce como AndroidManifest.xml.
Dentro de este archivo se puede observar que el código malicioso solicita permisos no solo para enviar y recibir mensajes sino que también para poder ser advertida al momento de la recepción de los mismos. De esta manera cuando reciba la confirmación del servicio al cual suscribió al usuario pueda eliminarlo antes de que este se de cuenta de ello. Los permisos que solicita la aplicación son:
Entonces la aplicación cuenta con permisos para envía y recibir mensajes, pero, como comentamos antes para poder ser notificado acerca de la recepción de los mensajes de texto también se solicitan permisos para un BroadCastReceiver. Con ello permite que una clase sea notificada ante cualquier mensaje de texto y pueda eliminar el mismo antes de que el usuario lo note.
Con los permisos especificados en la última imagen, cuando un mensaje de texto proveniente de un determinado número sea recibido por el dispositivo este podría ser descartado. De esta manera se efectúa la ejecución de este reciente código malicioso para la plataforma móvil de Google, suscribiendo al teléfono del usuario a un servicio premium y evitando que se de cuenta de ello.
Como recomendación para los usuarios siempre es necesario contar con buenas prácticas para el uso de dispositivos móviles y particularmente en el caso de Android, prestar especial atención los permisos que el sistema requiere para su ejecución. A todos ellos que quieran probar una solución antivirus para esta plataforma pueden instalar la versión beta de ESET Mobile Security para Android
Pablo Ramos
Especialista en Awareness & Research