Seguridad

Como apps pueden rastrearte incluso después de desinstaladas

¿Alguna vez te ha pasado que después de desinstalar una aplicación has recibido algún correo o anuncio sobre ella?. Pues puede que no sea una coincidencia, o así es lo que comentan en Bloomberg , donde el pasado lunes escribieron un artículo que hablaba de como algunas empresas como Adjust, AppsFlyer, MoEngage, Localytics y CleverTap ofrecen un conjunto de herramientas para hacer un seguimiento intensivo del uso de aplicaciones, llegando al punto de ser capaces de notificar hasta cuando un usuario desinstala una aplicación.

El seguimiento y las analíticas del uso de una aplicación no es algo ni secreto ni nuevo, tanto Google con sus Google Analytics como Apple con Apple Connect recopilan determinadas acciones y comportamientos del usuario, que sirve para que los desarrolladores detecten bugs, mejoren sus aplicaciones y depuren la experiencia de uso de la aplicación. Todo esto se ciñe a las normas de las tiendas de aplicaciones, al final ni la Play Store ni la App Store impiden la recolección de datos, siempre que sea para la mejora de servicios y con una cierta anonimidad. Otra cosa es utilizar determinados servicios con fines publicitarios, cosa que estaría pasando con el seguimiento de aplicaciones desinstaladas.

El funcionamiento de esta librería es sencillo, un desarrollador haría uso de las llamadas notificaciones push silenciosas, elemento que permite hacer un ping a aplicaciones instaladas sin alertar al usuario. Gracias a la capacidad de ejecución de código en segundo plano, la aplicación mandaría de vuelta una notificación para verificar que sigue instalada y en el caso de que no haya retorno, notificaría que la aplicación se ha desinstalado. El problema de este procedimiento es que sí viola las reglas de las tiendas de aplicaciones de Apple y Google, ya que habría un registro exacto de usuarios identificados con la aplicación desinstalada.

Para ver si esto es cierto, vamos a proponer hacer una prueba de concepto, en la que un servidor lanzará una notificación push silenciosa a un dispositivo con una app instalada, con una pequeña librería que intentaría imitar el funcionamiento antes descrito.

Para ello, nos vamos a valer de los siguientes elementos:

  • Un dispositivo iOS: La PoC no se puede realizar en un emulador ya que no soportan notificaciones push.
  • Pertenecer al programa de desarrolladores de Apple: Para habilitar las notificaciones push, es necesario pagar para el programa de desarrolladores y habilitar la funcionalidad.
  • Pusher. Pusher es una aplicación que podéis descargar aquí y sirve para enviar notificaciones push a dispositivos determinados, en la propia Wiki del proyecto aparece las instrucciones para configurar la aplicación y la app del destinatario.

Una vez tenemos todos los elementos, vamos a enumerar todas las tareas involucradas en el envío y procesamiento de notificaciones:

  • Una app configurada correctamente y registrada con el Apple Push Notification Service (APNS) para recibir notificaciones push desde que el teléfono se encienda.
  • Un servidor que envie las notificaciones push al APNS dirigido a uno o más dispositivos.
  • Código dentro de la app que pueda ejecutar acciones una vez reciba la notificación utilizando el delegado de la aplicación.

Figura 1: Configuración de SSL de las notificaciones push

Para habilitar las notificaciones push hay que dirigirse dentro de Xcode a App Settings > Capabilities, y allí habilitar el campo de “Push Notifications”, así Xcode realizará todos los pasos necesarios para crear los certificados de la funcionalidad. Después de esto tendremos que ir a nuestra cuenta de desarrollador para crear un certificado SSL de desarrollo para poder mandar las notificaciones a nuestra aplicación. Una vez creado es necesario descargarlo y añadirlo a nuestra keychain. Ahora Pusher será capaz de enviar notificaciones a nuestro dispositivo.

Por último nos queda habilitar las notificaciones push silenciosas, para ello, y otra vez en App Settings > Capabilities, seleccionaremos dentro de “Background Modes” las opciones “Background Fetch” y “Remote Notificacions”. Con esto podremos ejecutar código y enviar peticiones en segundo plano en nuestra app. Ahora solo sería necesario ejecutar la aplicación, recoger el token único identificativo que aparecen el log, introducirlo en la aplicación Pusher para enviar notificaciones.

Si hemos configurado la url de redirección bien a un servidor que esté activo y escuchando, deberíamos recibir una petición con el mail falso generado, cosa que se producirá si la aplicación no se encuentra en el dispositivo, generando así un registro de la eliminación de la app por parte del ususario.

Con el video de la prueba de concepto terminamos el artículo, como siempre dejamos el link al proyecto con el código de la aplicación.

Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.