Hoy os traigo un artículo un tanto distinto, pero no distinto por la temática del mismo, distinto por la aplicación que vamos a “trinchar”. Posiblemente ya os imaginareis por el título del artículo, que hoy va a pasar por el bisturí y la mesa de autopsias de GLIDER la aplicación para smartphones: Tinder. Como seguro que nadie conoce esta aplicación 😉 , os explico brevemente para que sirve. Tinder básicamente es una aplicación de citas o contactos, cada usuario crea un perfil con su descripción: nombre, foto (normalmente sugerente), edad, estatuara, empleo… y todo (todo) lo que quiera dar a conocer para ser mas “matcheable”.
El tema de los match es muy sencillo, el usuario al darse de alta indica que es lo que busca: (hombres, mujeres, bi), edad del candidato/a y distancia en kilómetros a su posición actual. Por ejemplo podemos configurar Tinder para que nos muestre mujeres de entre 35 a 40 años, interesadas en hombres y que se encuentren en un radio de 30Km de nuestra posición. Lo de configurar la distancia es una autentica declaración de intenciones… no dejes para mañana lo que puedas hacer hoy. Configurado todo, en este caso, al usuario le irán apareciendo candidatas y este en base a la foto y su bio indicará si le gusta o no le gusta cada una de ellas, a la candidata también se le mostrará de forma aleatoria el usuario, si esta también hace match, ambos podrán chatear entre sí, si no hay match mutuo, nunca podrán hablar entre ellos. Lógicamente, a mi todo esto me lo han contado, yo no uso esta aplicación. De hecho, no hay muchas personas que confiesen que usen esta aplicación, pero la realidad es bien distinta, si nos vamos a las estadísticas de Google, Tinder ha sido descargada por más de 100 millones de usuarios en todo el mundo, y esto solo en Android.
Cierto es, que tengo algunos amigos y amigas, que me cuentan que usan esta aplicación simplemente para conocer a gente, sin mayor intención que esa, en este momento es cuando se me viene a la cabeza el anuncio de la App Chicfy, que decía algo tal que: “Claro que sí….” bueno, sea como fuere, el caso es que nosotros somos forenses y nuestra finalidad ha de ser obtener datos y evidencias empíricas de un vestigio, nada de valorar el motivo por el cual alguien decide instalar o usar una aplicación concreta en su móvil.
Como es costumbre en cualquier sistema Android, los datos de las aplicaciones que tenemos instalados en nuestro smartphone se encuentran en la ruta “/data/data”, en este caso estamos analizado la app Tinder, tan solo tendremos que dirigirnos a la ruta “/data/data/tinder” para extraer toda la información de esta aplicación. Existen varias formas para obtener estos datos, hoy me voy a decantar por ejecutar un elegante “adb pull” para traerme todo el directorio de la aplicación a mi ordenador de análisis. Como es habitual, podemos tener problemas con los permisos de los ficheros a los que estamos accediendo a través de ADB, una buena solución es comprimir todo el directorio en .ZIP, para posteriormente “descargar” el fichero .zip el cual hemos creado desde ADB. De este modo no vamos a tener ningún problema con nuestros privilegios de usuario.
Ya con el fichero .ZIP en nuestro equipo forense (en este caso un sistema Linux) descomprimimos la extracción y comprobamos que contiene una estructura con todas las carpetas y ficheros que ha generado la aplicación Tinder. Para este articulo me voy a centrar exclusivamente en cuatro directorios clave: databases, shared_prefs, app_webview y cache.
La primera carpeta que vamos a “trinchar” será la denominada: “shared_prefs”. En ella hay un fichero de texto llamado: “appsflyer-data.xml”, en el que podemos encontrar y por lo tanto determinar, cual es el género con el que el usuario se ha registrado (hombre, mujer…), la localización GPS de su posición, su edad (la que haya puesto, que ya sabemos lo que pasa en estas apps), la versión de Android con la que está operando Tinder, el nombre del usuario, en este caso: “manu” (usuario para pruebas), marca y modelo del teléfono móvil y por último la compañía telefónica. Esta información nos puede resultar de interés si resulta que alguien se ha hecho pasar por quien no debe.
En el fichero “LastActivityDatePreferencesRepository_last_activity_date.xml”, encontraremos un registro con la fecha y la hora en la que se utilizó/abrió por última vez Tinder en ese teléfono en concreto. “– Nah, yo tengo el Tinder pero no lo uso…”
Otro de los ficheros que encontraremos en la carpeta “shared_prefs”, es el fichero “sp.xml”, el cual, entre otros datos, contiene el User Agent concreto con el que opera la aplicación Tinder. Este dato se podría llegar a utilizar como un fingerprint o huella digital de la navegación web que se ha realizado desde el propio Tinder.
De nuevo, en el fichero “sp.xml”, tambien podremos determinar la geoposición del usuario a través de unas coordenadas GPS. Que Tinder necesite registrar en varios sitios la geoposición del usuario es normal, ya que según dicen, yo nunca lo he probado, para buscar a otros usuarios/as es necesario estar físicamente cerca de su posición, o al menos que el GPS crea que está cerca de una posición.
El fichero xml “com.tinder_preferences”, en principio no tiene demasiados datos relevantes, a excepción de dos timestamps, el: “SESSION_APP_START” con la fecha en formato epoch del momento en el que se inició la aplicación, y la variable “SESSION_APP_END”con la fecha en la que se cerró la sesión. De este modo se puede llegar a determinar el tiempo que la aplicación/sesión permaneció abierta.
Como sabréis, yo no, se puede iniciar sesión en Tinder con una cuenta de Facebook, eso sí, ya os anticipo que no es buena idea mezclar Tinder y Facebook si lo que buscáis es tener una cuenta de Tinder “undercover”. En el fichero “com.facebook.loginManager.xml”, queda registrado si el login de Tinder es mediante una cuenta de Facebook o no.
Es el turno de analizar la segunda de las carpetas, en el directorio “app_webview/…/leveldb”, encontraremos un fichero llamado “LOG”, que como su propio nombre indica es un pequeño registro de tareas de la aplicación. No vamos a entrar en lo que significa cada uno de los registros. Desde el punto de vista del análisis, es interesante saber que en este fichero podemos encontrar un registro tipo timestamp de “cosas” que hace la app Tinder, y si hace “cosas” es que está abierta, o lo que es lo mismo, es otra forma de contrastar o determinar si esta aplicación en un momento dado estaba abierta.
Subiendo un nivel a la ruta: “Web Data”, encontraremos una base de datos muy curiosa, o mejor dicho, un tabla. En la tabla “unmasked_credit_cards”, podremos localizar las distintas tarjetas bancarias que el usuario vinculó a la aplicación para poder realizar pagos. Resulta, que según me han dicho, si no se es muy ducho/a en los temas del amor, existe la posibilidad de pagar cierta cantidad de dinero a Tinder y de este modo entras en una especie de modo “pro” o “turbo” para lograr más “matchs” en menos tiempo.
La tercera carpeta que vamos a analizar en este artículo se llama “cache/image_manager_disk_cache”. En ella habrá un fichero de texto llamado: “journal” que contiene una serie de líneas con un “string/hash” suficientemente largo como para que no pueden existir duplicidades. Además cada línea termina con un número aparentemente aleatorio. SPOILER: No es un número aleatorio, es el tamaño en bytes del fichero al que hace mención.
Resulta que en ese mismo directorio existen otro tantos ficheros como líneas que contiene el fichero: “image_manager_disk_cache” y con el mismo nombre, por supuesto, también con el mismo tamaño al que se hace mención en el fichero de “journal”. Básicamente el fichero “jourunal” es un listado con los nombres y tamaño de todos los ficheros almacenados en esta carpeta.
En un primer momento estos ficheros nos pueden parecer “garbage”, pero si abrimos cualquier de ellos con un editor hexadecimal pronto veremos que todos comienza con el mismo patrón: xFF xD8, o lo que es lo mismo, la cabecera hexadeciamal de un fichero de imagen tipo JPG. Lo que significa que estos ficheros son imágenes sin extensión, por lo que las podremos visualizar con cualquier visor de imágenes. Esto nos permitirá determinar si el usuario en algún momento ha visto el perfil de la otra persona.
Para terminar esta primer parte del artículo sobre Tinder, analizaremos quizás una de las carpetas más importantes de esta aplicación, la carpeta “databases” dónde se almacenan todas las bases de datos de la aplicación. Como es habitual en este tipo de aplicaciones, las bases de datos se operan en ficheros del tipo SQLite, por lo que solamente necesitaremos un visor compatible con estas bases de datos para poder leer todo su contenido. A grandes rasgos, una base de datos SQLite es como un fichero en “Excel”, contiene tablas, y cada tabla contiene: columnas y filas, cuya intersección es una celda. Comenzaremos analizando la base de datos “Tinder-1.db”
En la tabla “photos_processed”, de la base de datos “legacy_tinder-1.db”, encontraremos las fotos del usuario que está utilizando en la aplicación. Si nos fijamos, la ruta de la imagen no es local, si no que apunta a una URL de Internet.
En ese caso vemos hasta cuatro URLs distintas, esto no significa que el usuario de Tinder tengo subidas cuatro fotos de perfil, si no que es la misma imagen pero en cuatro tamaños distintos: 84×84; 172×172; 320×320 y 640×640 pixeles. Resulta curioso que podamos ver la imagen del usuario tan solo con la URL, sin necesidad de estar logados en la aplicación, ni tan siquiera es necesario tratar de ver la fotografía desde un smartphone, desde cualquier navegador la imagen es visible.
Antes de alarmarse pensado que las fotos de Tinder pueden ser tan fácilmente accesibles por un tercero, hay que tener en cuenta que la URL es lo suficientemente compleja para que no sea tarea sencilla poder hacer fuerza bruta contra las posibles combinaciones de URLs.
Existe otra tabla llamada “photos”, en esta tabla podremos encontrar la misma foto anterior, pero sin redimensionar.
Finalmente, en la tabla “user” de la DB “legacy_tinder-1.db”, podremos encontrar los datos del usuario, datos como: fecha de nacimiento en epoch (1 de enero de 1970); distancia (en millas) que el usuario ha indicado en la aplicación para localizar a otros usuarios; género; nombre; bio; si es un superuser (ha pagado); intereses y número de teléfono, entre otros datos personales.
Vamos a cambiar de base de datos, ahora le toca a la DB: “tinder-3.db”, dónde podremos encontrar información diversa. Por ejemplo en la tabla “gif”, como su propio nombre indica podremos ver los gif que el usuario ha enviado.
No hay que olvidar que este análisis de la aplicación Tinder lo estoy realizando sobre un sistema Android, para iOS (Apple) funcionará todo igual, a excepción del nombre de las bases de datos que suelen comenzar por el carácter “Z”, como por ejemplo: ZMESSAGE; ZUSER; ZPROCESSEDPHOTO; Z_5SHAREDFRIENDS…
Y ahora viene lo más importante de todo: ¡los casos de éxito!. En la tabla “match” veremos un listado con todos los match que el usuario ha conseguido, en este caso solo han sido dos (para evitar suspicacias comentar que ningún usuario real ha interactuado con el perfil simulado creado para este análisis). Gracias a esta tabla podremos determinar la fecha del match y el ID del usuario/a con la que el usuario ha logrado hacer match.
Ahora que sabemos que el usuario ha logrado conseguir dos matchs, podremos ir a la tabla: “match_person” para ver la información personal de los usuarios con los que el usuario analizado ha hecho match, podremos ver: ID del usuario, nombre de usuario y fecha de nacimiento entre otros datos.
Finalmente, si ha habido un match, ¿qué habrás después?, pues lógicamente una conversación. Tinder dispone de un sistema de chat integrado, el cual solamente se pude usar con los contactos con los que el usuario hubiera conseguido un match. Antes de continuar, me gustaría aclarar que los mensajes que a continuación se describen los he creado de forma artificial entre dos cuentas de Tinder controladas por mí, tampoco es cuestión de crearle exceptivas falsas a ningún usuario de esta red social hacía un usuario que en la vida real no existe. Podremos consultar todas la conversaciones del usuario con otros usuarios en la tabla “messages”. Veremos datos como las ID de los distintos usuarios, fecha de envío, el identificador del match y por supuesto, el texto del mensaje en sí.
En este artículo no he hablado de todas las bases de datos, ni de todos los ficheros con los que trabaja la aplicación Tinder, simplemente he comentado los que a mi criterio me parecen más interesantes, si tienes que realizar un análisis forense sobre esta aplicación te recomiendo que no te quedes solamente en las bases de datos que he comentado y que trates de profundizar un poco más en el resto de ficheros. En la siguiente parte de este artículo seguiremos comentados otros lugares de los que poder obtener datos de interés en esta aplicación tan conocida, o no.
¿Te ha gustado este artículo? Si quieres, puedes ayudarme a escribir el siguiente artículo de GLIDER invitándonme a un rico café.
Pulsa Aquí para invitarme a un café con hielo.
Salu2.
Miguelito
Hola Manu,
Desde el punto de vista policial, ¿qué opinas sobre los perfiles falsos en Tinder? ¿Es denunciable el hecho de que alguien intente conseguir información de un conocido a través de un perfil que no sea el suyo?
Un saludo.
unoporaquí
He descubierto este blog a través de un artículo en EP y me parece muy interesante.
Un asunto importante que no he visto en este artículo:
Los datos quedan almacenados en el móvil y pueden rastrearse toda la información que hacemos.
La cuestión es:
¿No es necesario «hackear» el móvil de otra persona para poder acceder a esos datos?
¿Usan estas Apps los datos de los clientes?
Bueno, a ver si hay suerte y aporta algo más de información al respecto.
Manuel Guerra
Si, la información está almacenada en distintas bases de datos que se guardan en el teléfono. La idea no es hacker nada, si no realizar un análisis forense sobre el dispositivo en cuestión (sin acceso remoto). En principio, las aplicaciones solamente puedes utilizar los datos de la propia aplicación.
Un saludo.