Más apps en Google Play que suscriben a mensajes SMS premium: JSSMSers

lunes, 23 de marzo de 2015

Después de encontrar los JSDialers, deberíamos haberlo predicho. Los atacantes están usando exactamente la misma técnica que en los JSDialers para esparcir apps que suscriben a las víctimas a servicios de SMS premium. De esta forma han eludido los sistemas de protección de Google Play, y utilizado técnicas basadas en JavaScript, más dinámicas e inteligentes. Todavía no son detectadas estáticamente por los motores antivirus. Veamos cómo funcionan.

Hemos encontrado 14 apps con este mismo comportamiento en Google Play que, con diferentes pretextos, (desde chistes a recetas), subscriben al usuario a servicios de mensajes SMS premium. Aunque las apps muestran un mensaje sobre la suscripción, envían por sí mismas el SMS de conformación de suscripción de forma transparente, para que el usuario no note nada. Los atacantes han obtenido más de 100.000 descargas. No todas las descargas se traducen en suscripciones directas porque los atacantes solo funcionan bajo los operadores más importantes de España, y si el dispositivo no cumple con estos requisitos, la app funcionará normalmente.

Lo que percibe el usuario

Cuando el usuario descarga e instala estas apps, se muestra algo así.

Esto es lo que ve el usuario si pertenece al operador y país adecuado

Es cierto que el atacante está realmente avisando al usuario: se te va a suscribir, pero los mensajes de confirmación serán enviados de forma automática sin dejar rastro en el teléfono. En apps con un comportamiento parecido y analizadas previamente, el mensaje aparecido en el botón podría ser menos explícito (quizás "Aceptar" o preguntar por la edad), pero en este punto, los atacantes han usado la palabra "Suscribir", que debería alertar a las potenciales víctimas.

La app comprobará si el dispositivo pertenece al operador correcto y que viene de España. Para ese momento,  ya se han enviado dos SMS diferentes, uno para comenzar el proceso de suscripción y otro para confirmarlo, sin que el usuario note nada.

Código JavaScript para comprobar operador y país

¿Qué ocurre y cómo funciona?

Todo el programa se lanza bajo un WebView, que llama a un fichero index que viene con la propia apk. Cuando los dos SMS se envían, las apps utilizan un truco interesante. Cargan y descargan dinámicamente el "receiver" para interceptar los mensajes entrantes. Normalmente, estos receivers se declaran en el AndroidManifest.xml. ¿Por qué dinámicamente? Posiblemente para eludir los análisis estáticos. Aunque la app tenga el permiso de interceptar mensajes, una sandbox o un analista podrían pensar que el desarrollador realmente no hace uso de él, porque carece de la rutina para manejar el evento. Pero lo cierto es que lo carga solo si es necesario y cuando lo necesita. El receiver funciona cuando el dispositivo recibe el mensaje, y hace que la app los marque como "ya leídos", para que el usuario no se percate del mensaje de bienvenida al servicio de suscripción.

Receiver dinámico para manejar SMSs entrantes


¿Entonces, qué es nuevo?

Hay varias partes interesantes en estas apps.

  • Primero, el uso de JavaSCript y Cordova (el puente entre JavaScript y el apk) para enviar mensajes y evitar introducir esa parte de la lógica en la propia aplicación. Esto lleva la lógica al servidor, lo que la hace más poderosa, dinámica, y difícil de detectar.


  • Cargar el "receiver" dinámicamente, que confundirá a los análisis estáticos. El receiver se carga y descarga a su antojo bajo las circunstancias adecuadas (país y operador) lo que lo hace más sigiloso. Además, la carga o descarga se hace también por JavaScript, por lo que solo se listará si las circunstancias son las adecuadas en un análisis dinámico.

  • No utilizan el sistema "habitual" para el envío de mensajes, sino que se los proporciona directamente al SMSProvider. Esto evita que los mensajes enviados se mantengan en la carpeta de "enviados" o "salida". Las apps proporcionan el texto de los SMS directamente el proveedor del sistema operativo.

Marcando los mensajes SMS entrantes como ya leídos

Otras apps como estas

¿Quién está detrás de estas apps? Obviamente están relacionadas con los JSDialers de los que hablamos hace unas semanas. Las compañías de suscripción y dominios nos proporcionan las pistas adecuadas.

Algunas capturas de las apps que hemos encontrado gracias a Tacyt, son estas:




Algunas apps con este comportamiento
Este es el título, nombre de paquete y hash de las apps encontradas:

  • Frases celebres bonitas cortas,com.thinkking,1e8568ccc54be7a73934965e97ff7e3fd9e4fec3
  • Imagenes amor fotos frases,com.romaticpost,2d26c676bcb5a5f8599f49a5b90599b7ff93dc11
  • Phrrasesfee,com.prasesfee,ca6ac2e1bf46087455fda358870070ec269faae6
  • Statetss,com.statetss,da045796efc737d42b9e86876ec5b854289212bc
  • New mensajes navidad y frases,com.navidad.extra,18db1cfb7e7340a5476a5c6e17f1f9d596045095
  • Postales perritos fondos,com.imagepets,bbc6e386281f2b1931ff2be7812bf4de4530d3fe
  • Funnyys,com.funnyys,9fc9e237903b02a2a47701139200c9177eec16a5
  • Fotos frases amor postales,com.prasesamor,65ce3043fc249cb906b4e50a23d581d5c70819fa
  • Gatitos tiernos fondos postal,com.cattss,f68ef39f5183da0745614c68a7ae135085298b54
  • Recetas de cocina dietas Salud,com.kitchenn,7fa17bed794a59dd3d914d05535fe25a357ab1cd
  • Chistes cortos buenos,com.chistescortos,daac73a325485f882b1dcda9758b16bb5f407770
  • Chistes Picantes buenos cortos,com.chistespicanticos,dc799bcc3f1f623e211e50fbb6ececb2e64753a6
  • Laughtter,com.laughtter,f569baf1c0f12c137a09e084c879979bbcfd11e1
  • Healthyy,com.recipesmart,0dd97d056fa7559a2cdb35d45850cefd400f4d6f


Sergio de los Santos
ssantos@11paths.com

Juan Manuel Tirado
juanmanual.tirado@11paths.com

No hay comentarios:

Publicar un comentario