WhatsApp: modifica la base de datos sin dejar huellas
WhatsApp es sin duda la aplicación de mensajería instantánea más utilizada en todo el mundo. Cada vez las conversaciones que se envían a través de este cliente de mensajería tienen un mayor valor, tanto personal para los usuarios como para piratas informáticos e incluso como pruebas en asuntos legales. Para proteger la seguridad e integridad de estas conversaciones, el equipo de WhatsApp ha aplicado varias medidas de seguridad tanto a las comunicaciones como a los historiales de chat que se guardan en el teléfono, aunque según parece estas medidas no son del todo eficaces.
Peritos informáticos han conseguido identificar y explotar el fallo de seguridad de WhatsApp, concretamente en la versión 2.12.250 ejecutada sobre dos sistemas Android 5.x y 4.4.x, que permite modificar la base de datos de WhatsApp para editar mensajes sin dejar rastro de la modificación.
WhatsApp utiliza para las conversaciones el software de bases de datos SQLite. WhatsApp en total utiliza dos bases de datos diferentes, la original, que se encuentra sin cifrar, y la copia de seguridad, la cual utiliza sistemas de criptografía simétrica junto al algoritmo AES de clave única para el cifrado y el descifrado de la misma. Mientras que la copia de datos está “protegida” y no nos interesa de momento, vamos a centrarnos en la base de datos original, la que utiliza el propio cliente de mensajería en tiempo real.
La base de datos que utiliza WhatsApp para mostrar las conversaciones en tiempo real en el propio cliente de mensajería se guarda en plano, sin cifrar como hemos dicho, aunque sí que se encuentra en un directorio de acceso limitado.
Descargar la base de datos de conversaciones de WhatsApp al PC
Para poder modificar una conversación de WhatsApp lo primero que debemos hacer es tener permisos de root sobre el dispositivo. Una vez con estos permisos habilitados conectamos el smartphone a nuestro ordenador y, a través de la herramienta de desarrollo adb ejecutamos los siguientes comandos:
- adb devices (nos muestra los dispositivos conectados, útil para saber si todo funciona correctamente)
- adb shell (nos abre un terminal para controlar el smartphone)
A continuación ejecutamos el comando “su” para conseguir permisos de superusuario en el dispositivo.
- su
Con estos garantizados nos situamos sobre la ruta de las bases de datos de WhatsApp tecleando en el terminal o shell:
- cd /data/data/com.whatsapp/databases
A continuación ejecutamos el comando ls -la para mostrar una lista con todos los archivos de dicho directorio. Si nos fijamos en esta lista, uno de los archivos se llamará msgstore.db. Este archivo contiene toda la base de datos de conversaciones de WhatsApp que se guardan automáticamente (y sin cifrar) cada vez que recibimos o enviamos un mensaje.
Una vez confirmado que tenemos el archivo de la base de datos en nuestro smartphone debemos copiarlo al ordenador. Para ello escribimos dos veces “exit” en el terminal para salir del shell y volver a Windows y desde allí tecleamos:
- adb pull /data/data/com.whatsapp/databases/msgstore.db
El archivo se descarga a nuestro PC, a la misma ruta donde tenemos el binario de adb copiado. Todo listo. Ya podemos empezar a modificar los mensajes que queramos.
Modificar la base de datos de conversaciones
Una vez tenemos la base de datos en nuestro PC debemos descargarnos la aplicación SQLiteStudio con la que la abriremos y modificaremos. Una vez tengamos el programa lo ejecutamos y cargamos la base de datos desde el menú Database -> Add a database y nos conectamos a ella mediante el menú Database -> Connect to the database.
Una vez conectados a la base de datos veremos todas las tablas de la misma, aunque debemos centrarnos en dos:
- messages
- messages_fts_content
Lo primero que debemos hacer es identificar la clave privada del mensaje. Para ello lanzamos una consulta a la base de datos con el siguiente comando:
- select * from messages where data LIKE “%mensaje%”; (sustituyendo mensaje por el contenido que queremos buscar)
Apuntamos en un papel o documento la clave privada del mensaje, o valor de la columna ID, para igualar los cambios en las dos tablas anteriores. A continuación, en la columna “data” de la table “messages” cambiamos el valor del mensaje que hemos enviado por el nuevo que queremos establecer.
Una vez realizados los cambios que queremos pulsamos sobre el botón “commit” para que estos se apliquen y cambien en la base de datos.
La mitad del proceso ya está hecho. Ahora abrimos la tabla messages_fts_content y en el buscador introducimos la clave privada, o ID, que hemos anotado antes. Veremos una nueva fila con el contenido del mensaje, que aún no ha sido cambiado como el de la primera tabla.
Lo seleccionamos y modificamos de igual forma, pero manteniendo el estilo original de la tabla:
- Todo el texto en minúsculas.
- Las palabras separadas por tres espacios.
- Los signos de puntuación separados de la palabra anterior por un espacio.
Aunque este paso no es obligatorio es recomendable para dificultar aún más el poder saber que la tabla ha sido modificada. Ya tenemos todo listo. Ahora sólo nos queda volver a copiar la tabla a nuestro móvil.
Copiar al teléfono la base de datos modificada de conversaciones de WhatsApp
Una vez que hemos realizado los cambios anteriores en la base de datos es hora de subirla de nuevo al smartphone. Para ello abrimos de nuevo una ventana de MS-DOS y tecleamos:
- adb push msgstore.db /data/data/com.whatsapp/databases/msgstore.db
La base de datos se ha subido correctamente a nuestro dispositivo, aunque hay un pequeño problema: los permisos.
Al haber subido una base de datos como usuario adb con permisos de superusuario, el propietario y el grupo de este archivo ahora es “root”. Si queremos borrar todo rastro de haber modificado dicha conversación tenemos que teclear en nuestro terminal:
- adb shell
- su
- cd /data/data/com.whatsapp/databases
- ls –la
- chown u0_a88:u0_a88 msgstore.db
Todo listo. Ya podemos abrir nuestro WhatsApp de nuevo y ver cómo los mensajes que hemos enviado y recibido son diferentes. A simple vista es totalmente imposible saber si un mensaje es original o ha sido modificado y siguiendo un análisis forense tampoco es posible saberlo ya que los cambios no han dejado rastro ni en la base de datos ni en nuestro smartphone.
Según la finalidad que vayamos a dar a esto debemos tener en cuenta que es posible que estemos cometiendo un delito (por ejemplo para presentarlo como pruebas legales) y que siempre hay formas de detectar el engaño (por ejemplo mediante el análisis físico de los chips de memoria, quienes podrían demostrar que hay otro archivo “mstorage.db” que ha sido eliminado previamente.
Fuente: redeszone.net