Whatsapp: no solo de SQLite vive el hombre.

Posiblemente si pensamos en análisis forense de dispositivos móviles, lo primero que se nos viene a la cabeza es la idea de lograr ver las conversaciones de la aplicación de mensajería online Whatsapp, y esto no es nada nuevo, ya que Whatsapp lleva años estando a la cabeza en el ranking de aplicaciones de este tipo mas usadas en todo el mundo. Este mérito tienes sus consecuencias, una de ellas es que los mensajes enviados a través de esta aplicación se puedan convertir en pruebas de un crimen y por lo tanto será necesario extraer estos mensajes del teléfono, de tal forma que puedan ser utilizados en un eventual procedimiento judicial, es decir, realizar una correcta adquisición forense de estos mensajes. Además, que Whatsapp sea una de las aplicaciones mas usadas en todo el mundo, la convierten en objetivo de todo tipo de ataques y pruebas para tratar de desvirtuar una prueba o indicio criminal obtenido a través de la misma.

Últimamente se está hablando mucho de lo sencillo que puede resultar modificar o alterar una conversación de Whatsapp, para que dónde diga “Diego”, diga “digo”, no seré yo quien diga que esto técnicamente no se puede hacer, ya que es bien conocido el funcionamiento de un base de datos SQLite y como se pueden llegar a modificar los datos de una de sus tablas para volver a inyectarla a dicha aplicación y que efectivamente dónde decía “Diego”, ahora diga“Digo”, cosa bien distinta es lograr realizar esta manipulación sin llegar a dejar ningún rastro que un analista forense no pueda o sepa detectar. ¿Como era la frase…?, todo contacto deja un rastro, ¿no?. En este caso el mérito es localizar ese rastro de manipulación. Hoy no os voy a hablar de esos “lugares” recónditos en los que poder detectar una manipulación de una base de datos de Whatsapp, porque: “haberlos haylos, o caso é encontralos”, os voy a hablar de otra potente fuente de información que tiene Whatsapp, que desde mi punto de vista no siempre se explota suficientemente, y esta no es otra que los LOGS, que Whatsapp genera diariamente.

Lógicamente, el “core” de un análisis forense de Whatsapp, se deberá centrar en las distintas bases de datos SQLite en las que se van almacenando todas las conversaciones de Whatsapp. Pero a veces esto no es suficiente, ya sea porque estas bases de datos no registran lo que estamos buscamos, o porque se han eliminado y ya no podemos disponer de ellas. Así que en el artículo de hoy, voy a tratar de desmenuzar y exprimir el fichero LOG de Whatsapp (El Registro Central de nuestro Whatsapp) que se almacena en la ruta por defecto: “/com.whatsapp/files/Logs/whatsapp.log” de nuestros teléfonos móviles Android, así podréis ver toda la información que en un momento dado podemos obtener de este fichero tan desconocido en algunos casos.

 

1.) Números de teléfono registrados en Whatsapp: Como seguro que ya sabéis, Whatsapp, solamente permite iniciar sesión con un solo número de teléfono al mismo tiempo en un único dispositivo móvil, es decir, por regla general no se puede tener vinculados en Whatsapp dos números de teléfono en el mismo dispositivo móvil, del mismo modo, que tampoco se puede tener el mismo número de teléfono, vinculado al mismo tiempo en dos dispositivos distintos (siempre y cuando no sea con la versión web). Pero esto no implica, que en un mismo teléfono móvil, no se pueda usar Whatsapp con diferentes números de teléfono en distintos momentos, es decir, registramos un número, lo usamos, desconectamos ese número y registramos otro distinto. Quizás, que alguien en un momento dado vincule a su teléfono móvil, el número de otra persona (con, o sin su consentimiento), puede ser indicador de muchas cosas, buenas y malas. ¿Pero, como lo podemos detectar?, tan fácil, como irnos a nuestro: “whatsapp.log” y buscar la cadena “register/phone/cc”. Con esta búsqueda no solo encontraremos los números de teléfonos que se han vinculado a la aplicación de Whatsapp, si no que podremos determina la fecha y la hora a la que se realizaron estas vinculaciones. En la siguiente imagen podéis ver como el mismo número de teléfono se vincula cuatro veces distintas en fechas muy dispares, y entre medias, se registra otro número distinto que comienza por 62XXX. Esto no es lo habitual, ocurre en este caso, porque se trata de uno de los dispositivos que tengo para realizar este tipo de pruebas y el número de teléfono asociado lo utilizo con otras cuentas. Un usuario normal, no debería tener mas de un “Inicio de Sesión” en todo el log, y si los tiene, será porqué vinculó o desvinculó a propósito el número de teléfono en cuestión.

Fig.1 Verde: Fecha. Azul: String. Magenta: Teléfono registrado en Whatsapp.

 

2.) Determinar si un teléfono se encontraba encendido en un momento dado: Como dije anteriormente, en ciertos casos a alguien se le puede ocurrir tratar de manipular un dato dentro de un smartphone por el motivo que sea, esta alteración puede ser mas o menos sencilla de realizar, lo que si que no es para nada sencillo, es lograr realizar esta manipulación sin que nadie la pueda detectar. Por ejemplo, imaginemos que yo ayer a las 2:00 de la madrugada cuando estaba en el Summer Boot Camp de Incibe en León, hago algo que no debo con mi teléfono móvil, y como soy muy listo, se me ocurre modificar el LOG de mi teléfono, en el que se registran los encendidos y apagados del terminal, para que parezca que mi teléfono a las 2:00 de la mañana estaba apagado. Sin embargo, llega un analista forense competente, analiza mi dispositivo, y descubre que aunque el LOG de funcionamiento de mi teléfono dice que se apagó a las 00:30 horas y hasta las 08:00 horas no se volvió a encender, el log de funcionamiento de Whatsapp, con el string “msgstore/backup” registra la copia de seguridad automática de la base de datos de conversaciones msgstore.db a un fichero cifrado tipo .db.crypt12, nombrado con la fecha de creación. Quedando registrada esta acción en el log de Whatsapp, como se muestra en la siguiente imagen (además la fecha de creación del fichero .db.crypt12 será a las 2:00 de la madrugada). Como podéis ver, las mentiras suelen tener la patas muy cortas, además, con el número de aplicaciones que existen hoy en día instaladas en un solo dispositivo móvil, es muy difícil realizar una alteración en un de ellas, y que este alteración no quede registrada en otra aplicación o en otro lugar del teléfono móvil.

Fig.2 Verde: Fecha. Rojo: Backup creado a la 2:00 horas.

 

3.) Contactos bloqueados: Poco hay que explicar sobre esto, cansinos hay en todos lados, y en algún momento dado tendremos que bloquear un número de teléfono para que no nos moleste a través de Whatsapp, ya sea por publicidad que no están enviando o por otro tipo de comportamientos que rozan lo ilícito o incluso lo llegan a sobrepasar. En ciertos casos puede ser necesario que el análisis forense, determine los contactos que ha bloqueado una cuenta de Whatsapp, por ejemplo, alguien que dice que otra persona la amenazó por un mensaje de Whatsapp el día X, y después resulta que la supuesta victima ya había bloqueado en Whatsapp al presunto acosador días antes, por lo tanto, no ha podido recibir ese mensaje con la amenaza (Si alguien dice que pudo haber realizado la amenaza a través de un grupo creado ad-hoc, solo tiene que leer el siguiente punto 😉 ) ¿Cómo podemos confirmar este dato?. Whatsapp, periódicamente registra los número de teléfono que el usuario ha bloqueado en su cuenta, quedando registrado esta información en el citado LOG con la cadena “blocklist” siguiente manera:

Fig.3 Verde: Fecha. Rojo: Número de teléfono bloqueado.

 

4.) Grupos de Whatsapp: De todos es bien sabido la existencia de estos grupos en Whatsapp. Un dato interesante, es que estos grupos también quedan registrados en log de la aplicación con la cadena “GroupInfo“. En este ítem se registran todos los números de teléfono de los participantes e incluso si alguno de ellos o todos, son administradores del grupo. Información muy importante en ciertos momentos de un análisis informático.

Fig.4 Magenta: Nombre del grupo. Rojo: Número de teléfono del integrante del grupo y si es “admin”.

 

5.) Estados de los usuarios: Un dato que también puede resultar relevante, es el estado o frase personal que los distintos contactos van poniendo en sus cuentas, esta información también se registra en el log de Whatsapp, OJO, no solo se registra el estado del dueño del teléfono, si no que se registra el estado de todos los contactos que el usuario tiene guardados en su agenda de contactos, tan solo es necesario buscar la cadena “contact status“. Sobra decir, que al que se le ocurre escribir barbaridades en su “frase personal” para molestar a otras personas, la barbaridad que ha escrito quedará registrada con número de teléfono incluido en el log de todos los usuarios que tengan a esta persona guardada en su agenda de contactos. A veces pensamos que como la frase personal, está, se cambia y se vuelve a cambiar, puede ser altamente volátil y no se puede saber que frase personal tenía puesta alguien hace una semana, un mes o un año, y nada mas lejos de la realidad, solamente tenemos que ir a cualquier usuario de Whatsapp que tenga a esta persona como contacto, y ya podremos determinar, con fecha y hora, las frases personales que alguien puso en su cuenta. Decir que la fecha realmente se almacena en forma de timestamp en horario epoch (1 de enero de 1970), nada que no se puede solucionar con un conversor online.

Fig.5 Verde: Frase Personal de Whatsapp. Rojo: Fecha en formato epoch. Cian: string a buscar.

 

6.) Conexión mediante datos móviles o WiFi: A veces lo que necesitamos de un teléfono móvil, es saber si en una fecha concreta estuvo conectado a un red WiFi, el motivo por el cual podamos necesitar esto es diverso, cada uno podrá imaginarse el suyo. Cierto es, que en Android tenemos un fichero llamado: “wpa_supplicant.conf” en el que se registran todas las redes WiFi que el teléfono tiene recordadas junto con su contraseña, pero el problema es que este fichero no nos dice cuando ha sido la última vez que se ha conectado a una de estas redes, solamente nos dice, que al menos está guardada en el teléfono. Pero si de nuevo nos vamos al LOG de nuestro whatsapp, y buscamos el string “WIFI” (en mayúsculas), podremos determinar si en una fecha concreta Whatsapp estaba operando a través de una red WiFi, o lo que es lo mismo, si el teléfono móvil analizado estaba conectado a un red WiFI.

Fig.6 Verde: Tipo de red.

 

7.) Registro de cargas de batería: Imaginemos que por el motivo que sea, alguien que dijo que estaba por ejemplo de paseo por el monte con su teléfono móvil apagado y sin cobertura, se puede determinar que efectivamente el teléfono en ese momento concreto efectivamente estaba sin cobertura de datos ni WiFi (Solo hay que ver el punto anterior), pero que no estaba apagado, si no que se estaba cargando. ¿Y como podemos demostrar esto?. De nuevo con el LOG de Whatsapp. En este log existe un ítem, bajo la cadena “device/battery” que registra el estado de la batería del teléfono móvil, es decir, como se va cargando o incluso el porcentaje en el que se va descargando la batería de nuestro móvil, como tenemos un porcentaje de batería y una marca de tiempo, se puede determinar el consumo del teléfono móvil, y por tanto, saber si se estaba utilizando de forma intensiva, o también, si se estaba cargando, y si es en medio de un monte, complicado que alguien pueda encontrar un enchufe para cargar su móvil, lógicamente existe la posibilidad de carga a través de medios externos como Power Banks y similares, pero eso ya es otra historia, que contaré otro día a la luz de una hoguera mientras clavadas en un palo, quemamos nubes de gominola y tomamos un café con leche.

Fig. 7 Verde: Fecha. Rojo: Nivel de batería descargándose.

Fig.8 Verde: Fecha. Rojo: Nivel de batería cargándose. Azul: Conectado a la corriente eléctrica.

 

Como veis, un solo ficherito de texto, como puede ser un log de una aplicación como Whatsapp nos puede aportar un sin fin de información (Y si no nos llega con el log, porque se nos queda corto, tenemos un fichero de back-up de ese log, en el que se registran todas las actividades desde el día en el que instalamos el Whatsapp en nuestro teléfono), que bien tratada puede ser una fuente de información muy importante. Toda la tarea de análisis y tratamiento del LOG de Whatsapp, la tuve que hacer a mano, es decir, leer una por una las miles de lineas que tiene este fichero, para buscar y localizar correlaciones que me permitieran establecer la información que nos puede brindar este fichero, por desgracia, esta es una tarea artesanal, como el artesano que poco a poco en un torno le va dando forma un pedazo de arcilla hasta convertirlo en una bonita vasija, el análisis forense tiene exactamente la misma tarea, no existen herramientas que puedan automatizar esta extracción de información, ya que la herramienta la tiene que programar una persona, y es esa persona, la que tiene que descubrir de forma totalmente artesanal estos detalles o datos que se van almacenando en los distintos puntos de un dispositivo electrónico y que en un momento dado, puede ser relevante para un análisis forense. Yo siempre animo, a que no nos quedemos en los resultados que nos dan las herramientas de análisis automatizado de evidencias, si no que, tratemos de profundizar un poco mas en ese tratamiento de evidencias digitales, seguro que lograremos encontrar datos muy interesantes que nos permitan llegar un poco mas lejos en nuestra tarea de análisis.

Si os habéis quedado con ganas de un poco de SQLite, os dejo este artículo que ya escribí hace unos días, en el que cuento como determinar a través de un KEY embebida dentro de la tabla “messages” de la base de datos msgstore.db, si un mensaje ha sido enviado desde la app de Whatsapp o desde la versión web. Enlace al artículo: “¡Yo no he enviado ese Whatsapp!”.

 

Salu2.

Manuel Guerra

Manuel Guerra

Mi nombre es Manuel Guerra. Investigador especializado en: [eCrime] | [Forensic] && [Hacking]. Editor de GLIDER.es

Navegación de la entrada


Comentarios

  • Andreu Adrover

    Gran artículo 🙂

  • Germán Martín

    Un post claro y fácil de seguir. Enhorabuena, no hay muchos blog sobre técnicas forenses y mucho menos en español.

    • Manuel Guerra

      Manuel Guerra

      Gracias, intentaré seguir poniendo artículos así.

      Un saludo.

  • yujed

    Bien interesante: nos damos cuenta que de privacidad ya no se habla y que no solo esta aplicación sino otras tantas que instalamos en nuestro celu saben mas de nosotros que nosotros mismos.

  • Aprendiz

    Buenisimo; leyendo estos artículos me queda claro q acerté al pegarle una patada al móvil hace años.
    Hoy día la privacidad no existe.
    Parace ser q hasta la aspiradora r****a quiere vender los planos de nuestra casa.

    • Manuel Guerra

      Manuel Guerra

      Gracias! La aspiradora cámbiala por un cepillo y recogedor y ya verás como no vende lo planos 😉

      Salu2

  • Andres

    Excelente articulo. Muy interesante. Es interesante leer estos temas.

  • Andrés

    Excelente !!! didáctico y nos demuestra que la privacidad no existe, así como la seguridad 100% no existe. Gracias !!!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puede usar las siguientes etiquetas y atributos HTML:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>