Whatsapp: Razonando una duda razonable.

En este nuevo artículo de GLIDER.es os quiero hablar de algo que últimamente está siendo muy recurrente en medios de comunicación, y no es otra cosa que la posibilidad de manipular una conversación de Whatsapp y como este hecho, puede hacer que este sistema de mensajería no sea válido en un procedimiento judicial, todo ello según las noticias publicadas en distintos medios de comunicación. En este artículo trataré desde un punto de vista eminentemente técnico, sin sensacionalismos, explicar si realmente es tan fácil como parece, llegar a manipular una conversación de Whatsapp.

Fig.1 Uso de Whatsapp en un procedimiento judicial.

En primer lugar será preciso aclarar en qué consiste una eventual manipulación de Whatsapp, como ya he ido explicando en otros artículos, Whatsapp almacena muchísima información sobre el usuario: desde las veces que carga la batería a lo largo del día, si se conecta a WiFi o no, posiciones GPS, personas con las que más habla, histórico de los diferentes status, proveedor de servicios que utiliza… y así un sinfín de información más. Entonces, supuestamente esta manipulación se podría hacer contra cualquiera de estas bases de datos que nuestra app de mensajería instantánea almacena día a día. Aunque me imagino, que cuando a alguien se le habla de manipular un Whatsapp, lo primero que piensa es en alterar una conversación mantenida a través de esta app. Si tenemos en cuenta que a priori, lo más importante de una aplicación de mensajería es precisamente eso, los mensajes, me voy a centrar en explicar únicamente como se pueden manipular las conversaciones de Whatsapp.

Fig 2. Lo verdaderamente importante es un tratamiento adecuado de la evidencia.

Tanto en sistemas Android como iOS (Apple), Whatsapp almacena todas las conversaciones que un usuario realiza en una carpeta interna del sistema, más concretamente en una base de datos SQLite llamada “msgstore.db”. Aquí ya tenemos el primer problema para realizar la tan ansiada manipulación de conversaciones, tenemos que llegar a acceder a esta base de datos interna. Pero lo que no nos cuentan en muchos artículos que hablan precisamente de esto (y si lo comentan, no le dan la relevancia suficiente), de manipular conversaciones de Whatsapp, es que no es para nada sencillo poder llegar a esta base de datos, por ejemplo, en sistemas Android, al estar en una parte interna de la memoria del teléfono, no se puede acceder a la misma si no es mediante el usuario ROOT (super-administrador), y por suerte o por desgracia, cada vez son menos los Smartphone que vienen con el usuario “root” habilitado por defecto, esto quiere decir que: “no root, no glory”. En teléfonos iPhone ocurre algo parecido, por defecto no se puede acceder a la base de datos interna del teléfono. Por ejemplo, en mi teléfono, un Huawei P9 con Android 7 que no tiene habilitado el usuario root, en el que yo soy el dueño del teléfono y le puedo instalar las aplicaciones que yo quiera, no puedo acceder al fichero “msgstore.db” y por lo tanto, no puedo manipular ninguna base de datos. En esa probabilidad que comentaba al principio ya nos estamos «quitando de encima» muchos teléfonos. Todos aquellos a los que no se pueda acceder como root, tampoco se puede manipular su base de datos de Whatsapp. Algunos estaréis pensando en técnicas como Whatsapp Downgrade, que permite “engañar” al sistema Android para instalar en el teléfono una versión concreta de Whatsapp (mas antigua) que permitía realizar un back-up de las conversaciones, pero OJO!, Whatsapp Downgrade permite extraer las conversaciones, no volver a inyectarlas dentro del teléfono para cambiar una conversación. Además, en los nuevos sistemas Android, esta técnica ya no es válida.

Fig.3 Permisos especiales de acceso a los directorios de Whatsapp

Ya partimos de la base, que a priorí a un móvil no rooteado, no se le podrá dar el cambiazo de la base de datos “original” por la “fake”. La maldad que se no puede ocurrir, es extraer la tarjeta SIM del móvil al que le queremos manipular la base de datos, introducirla en un móvil rooteado y a través del BackUp crifrado de la base de datos (el cual si es accesible), realizar la manipulación. – ¿Qué puede salir mal?. – Mal no saldrá nada. El problema que dentro del directorio “files” de Whatsapp, existe un fichero de “log” en el que queda registrado todas estas estratagemas de ahora quito una tarjeta, ahora meto una base de datos cifrada que no es la del móvil, ahora restauro un par de cosas… En resumen: efectivamente hemos realizado la manipulación de una conversación de Whatsapp, pero también hemos dejado en el fichero “log” un rastro cuanto menos llamativo de la manipulación, o lo que es lo mismo, que esta manipulación es detectable. También se nos puede ocurrir la maldad de alterar el log de Whatsapp para que la modificación no sea detectable, el problema, es que Whatsapp es muy “chivato” y no solo almacena en un único sitio la información, si no que la replica y la almacena en varios sitios de varias formas distintas, sitios y formas, que tampoco vienen al caso comentar ahora 😉

Fig. 4 Distintas bases de datos con las que opera Whatsapp.

Pero vale, pongamos que mi móvil está rooteado y sí he podido acceder a la memoria interna del teléfono para cambiar la base de datos original, por otra base de datos con una conversaciones manipulada. Si en un futuro se realiza una extracción forense de las conversaciones de ese teléfono, parecerá que efectivamente la conversación falsa es la real. Pero si entendemos un poco como funciona este tipo de base de datos, veremos que no es tan sencillo no dejar ningún rastro de esta manipulación. – ¿Cómo era aquella frase que tanto me gusta? – “Todo contacto deja un rastro”. Whatsapp no va a ser menos. Si nos sumergimos en la tabla “messages” de la base de datos “msgstore.db”, veremos que la primera de todas la columnas llamada “id” registra con un valor secuencial cada una de las conversaciones mantenidas a través de Whatsapp. Como se ve en la siguiente imagen, todos los mensajes aparecen de forma correlativa ordenados por la fecha de creación (columna de la izquierda llamada «id»).

Fig. 5 A la izquierda el número de fila vs. ID de la tabla Messages 

Un símil con el que me gusta explicar esto, es el de las libretas del colegio. No sé a vosotros, pero a mi cuando era pequeño, los profesores me numeraban todas las hojas de mi libreta, así, si algún día me portaba mal en clase (cosa que nunca ocurrió) el profesor mandaba una nota en la libreta para que mis padres la vieran (con el consiguiente castigo), claro, si no fuera por qué todas las hojas van numeras de forma secuencial, yo podría tener la mala idea de arrancar la hoja en la que el profesor dejó la nota para mis padres, así mis padres nunca la verían y sería el delito perfecto. Pero no, las hojas de la libreta iban numeras, de la misma manera que los mensajes de Whatsapp van numerados, lo que hace que el delito perfecto, ya no sea tan perfecto.

Es cierto, que aún nos queda la posibilidad de cambiar el contenido de una única conversación, por ejemplo un “si” por un “no” un “thumb up” por un “thumb down” o un alago por un insulto, siempre en la misma fecha y entre las mismas personas. Lo que de nuevo nos vuelve a complicar la tarea de poder alterar cualquier conversación, ya que no podemos por ejemplo coger un mensaje entre Juanita y Pepito, y cambiar a Pepito por Paco, y simular que es Paco quien ha hablado con Juanita diciéndole cosas que no debía, teóricamente si, lo podemos hacer, pero de nuevo aparece en escena nuestro gran amigo Edmon Locard (El del contacto y el rastro), y resulta que Whatsapp almacena en mas de un sitio el número de mensajes que una persona ha mantenido con otra, y claro, si Paco aparece que ha tenido 5 conversaciones con Juanita, y resulta que nosotros en la tabla «messages» estamos viendo 10 conversaciones entre ambos, significará que alguien ha tenido a bien realizar esta manipulación, además, si luego vemos que Pepito tiene contabilizadas 20 conversaciones con Juanita, pero en la correspondiente columna solamente podemos contar 15 , ya hemos encontrado dónde está la manipulación. Sin olvidar que para poder hacer esto, he tenido que ser root en el teléfono, si no, ni eso se podría llegar a hacer. Por otra lado, es conveniente recordar que una comunicación, al menos se tiene que dar entre dos personas, o lo que es lo mismo, entre dos teléfonos, por lo que siempre nos quedará la posibilidad de analizar el otro lado de la comunicación y cotejar ambas bases de datos para así determinar la compatibilidad entre las mismas.

En resumen, la base de datos SQLite en la que Whatsapp almacena las conversaciones se puede llegar a manipular, siempre en unas condiciones muy, muy concretas, nunca para cualquier teléfono y mucho menos para inyectar un gran número de conversaciones manipuladas. Además, aún encontrando un teléfono en el que se pueda realizar está alteración, el simple hecho de realizarla dejará una serie de rastros en otras bases de datos que podrán delatar esta manipulación, o al menos ser un indicador de que esta ha podido existir. ¿A que ya no veis tan sencillo la manipulación de Whatsapp?.

Me gustaría ir terminando este artículo con el extracto de una conversación que hace unos días mantuve con Jose Selvi y Josep Albors, sobre el tema de la anulación de una prueba por la creación de la famosa duda razonable en el juzgador. Precisamente Selvi lo explicó con un símil muy didáctico, venía a decir algo tal que así: El caso de una persona acusada de haber cometido un asesinato por la localización de un rastro de su ADN en la escena del crimen, la defensa podría insinuar que otra persona podía haber entrado al laboratorio de análisis de ADN y cambiar la muestra de ADN de un desconocido por la de su defendido para acusarlo, todo ello sin aportar ninguna otra prueba, solamente manifestando la posibilidad de que esto hubiera podido ocurri. El mero hecho (corregidme si me equivoco) de aludir que una prueba ha podido ser manipulada sin aportar ningún otro dato fehaciente que confirme esta manipulación, no debería ser tenida en cuenta. De la misma manera, el que alguien diga que una conversación de Whatsapp, extraída y analizada de forma correcta ha podido ser manipulada sin aportar ninguna otra prueba sobre esta manipulación, tampoco se debería tener en cuenta. Si no me creéis, os dejo un extracto del libro “Claves de Investigación de Redes Sociales” de Silvia Barrera, en la que os explica esto mismo de una forma un poco distinta y mucho mas clara, es decir, ni cuando de cadenas de custodia se trata o de validez de un prueba, la mera sospecha de su manipulación o contaminación puede ser motivo suficiente para su anulabilidad.

Fig. 9 Extracto libro Claves de Investigación de Redes Sociales

En este artículo no he hablado de otros métodos de manipulación, como el uso de capturas de pantalla impresas en papel o aplicaciones como Whatsapp Fake, ya que ni un método ni el otro, interactúa de ninguna de las maneras con las bases de datos reales de Whatsapp. Lo que significa que no puede existir manipulación de Whatsapp, al ni tan siquiera interferir con el Whatsapp real. Por ejemplo, Whatsapp Fake es una app que nada tiene que ver con Whatsapp, son dos aplicaciones completamente distintas, con bases de datos distintas y sin posibilidad de que una interfiera en la otra, Whatsapp Fake sencillamente se vale de lo que se ve a simple vista en la pantalla de un teléfono móvil, pero no de lo qué realmente está almacenado en las bases de datos del Whatsapp real. Si se nos da un caso sospechoso en el que lo que se nos están mostrando puede ser un Whatsapp Fake, solamente tendremos que tratar de retroceder en la ventana de la aplicación que estamos viendo y tratar de enviar un nuevo mensaje a cualquier otro contacto, al momento nos daremos cuenta que se trata de Whatsapp Fake y no del Whatsapp real, ya que Whatsapp Fake solamente deja «crear» conversaciones como si de un editor de texto se tratase, pero no puede llegar a operar con el Whatsapp real, por lo tanto no podrás enviar un mensaje.

A partir de ahora cuando veáis una noticia de esas que dicen: «Cualquier Whatsapp, se puede manipular sin dejar rastro«, acordaos de este artículo. Como ya he comentando, efectivamente la posibilidad existe, pero solo para teléfonos concretos, con unas configuraciones que últimamente no son nada habituales y en todo caso, esta manipulación si dejará un rastro en el resto de bases de datos y Logs del dispositivo. Es decir, la idea de que por regla general cualquier Whatsapp se puede manipular, desde mi punto de vista técnico es errónea, lo correcto sería decir que por regla general un Whatsapp no se puede manipular. Además, también hay que tener en cuenta que no sería la primera vez que alguien presenta una denuncia falsa con pruebas manipuladas y al ser demostrada la falsedad de las pruebas, se acaba deduciendo testimonio y el denunciante que presentó falsamente unas pruebas con la intención de incriminar a otra persona, acabe condenado.

Salu2.

¿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.

Manuel Guerra

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

Navegación de la entrada


Comentarios

  • Raul

    WooW. He tenido tiempo de poderte leer un poco. A la noche sigo. Salu2.

  • Jimmy Olano

    Con respecto a SQLite es cierto lo del correlativo INCLUSO en la mayoría de las bases de datos SIEMPRE el motor de la base de datos crea un campo numérico autoincremental de uno en uno, así que la secuencia numérica permite detectar si se han borrado líneas.

    Cuando me ha tocado borrar registros en tablas así (¡ea, no me juzguéis mal, yo hacker más no cracker, cuando programo he debido hacerlo porque he confundido el ambiente de prueba con el de «producción», es decir, la he líado gorda) lo que hago es «sacar» a los usuarios, crear una tabla nueva con idéntica estructura y pasar todos los registros excepto los que agregué por error, luego borro la tabla original y renombro la nueva, así mantengo la secuencia numérica de los registros.

    Sin contar que no la puedo hacer unilateralmente (debo tener acceso exclusivo a la base de datos) hay otro detalle: el motor de las bases de datos a su vez llevan un registro de la creación y borrado de las tablas, de paso SQLite crea montones de archivos para las diversas tablas y al borrar una tabla estos archivos persisten hasta tanto se le aplique el comando «aspiradora»:
    https://www.sqlite.org/lang_vacuum.html
    Así que siempre queda rastro de la manipulación, ¡siempre!

  • Revista Online Occam's Razor

    Me pasó exactamente lo mismo cuando leí ciertas cosas en la prensa hace algunos días… lo de escribir un artículo sobre el tema me refiero. Ahora ya no es necesario 🙂

    Sin embargo creo que cabe una posibilidad, corrígeme si me equivoco. En principio, especialmente con teléfonos con versiones viejas de Android que tienen unas cuantas vulnerabilidades, sería posible acceder al teléfono remotamente (o engañar al usuario para instalar un troyano) y conseguir root incluso cuando el teléfono no haya sido rooteado, plantar una puerta trasera y manipular la base de datos de la aplicación, tranquilamente.

    Habría muchas más pistas que borrar y habría que hacerlo en todos los teléfonos que hayan recibido el mensaje… No creo que sea viable en la práctica, pero teóricamente… sería posible?

    Excelente artículo como siempre.

    • Manuel Guerra

      Hola, lo que comentas si es posible, pero desde mi punto de vista, bastante complicado de poder llevar a cabo. Cuanto más poder hacerlo sin dejar ningún tipo de rastro. Inyectar un app de forma remota, que pueda elevar privilegios, que se pueda controlar desde otro lugar, que pueda adquirir y modificar información… no es tan sencillo como parece, sin hablar de todos los rastros que dejaría.

      Un saludo

  • Luis

    Pasa como con el ADN, que aparezca tu ADN en la escena de un delito no quiere decir que tú seas el culpable, ni tan siquiera que hayas estado allí. Es algo que mi profesor de medicina forense decía que tenía tensas discusiones con algunos jueces. Yo solo puedo confirmar que este ADN es de esta persona, y que este ADN apareció allí, pero nada más.

    Lo mismo pasa con una conversación de JUASAP, yo solo puedo confirmar que esa conversación ha existido. Pero no puedo confirmar que el sujeto A, dueño del móvil X es la persona que la haya escrito. Igual que no puedo asociar una IP con una persona.
    Por ejemplo hay mucha gente que no tiene bloqueado su móvil y lo deja encima de la mesa, se va al baño, otra persona lo puede usar, enviar los mensajes, borrar para que no lo vea, y listo. Y esa persona puede estar compinchada con la receptora. Es algo que tengo visto hacer entre adolescentes.
    Los jueces a veces tienen que hilar muy fino, ya que no es oro todo lo que reluce.

  • Jesus Estrada

    Gracias por estos artículos tan chulos y por tu tiempo.
    Saludos.
    @jestrada1978

  • dani

    Hola buenas, interesantisimo asunto.

    Tendré un juicio, espero que dentro de poco, y en el whatssap de » mi » iphone tengo lo que espero sean mis pruebas exculpatorias.

    Escribo «mi» iphone, etrecomillado por que la linea telefonica estaba a nombre de mi expareja, que es la acusadora y quien ha dado de baja la linea…. aunque el washapp sigue funcionando perfectamente… todabía.

    Me pregunto que pasos he de seguir para asegurarme de que no se perderán lo mensajes y podré utilizarlos como prueba, y si con un nuevo numero de teléfono podré usar el mismo whatsapp o tendré que vincularlo a otra cuenta de google?

Deja una respuesta

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>