jueves, 5 de noviembre de 2015

Modificando la base de datos de Whatsapp sin dejar rastro

Cuando hablamos de whatsapp, hablamos de uno de los servicios de mensajería online más utilizados en el mundo, pero no por ello es el mejor en cuanto a protección y privacidad se refiere. Tal y como se mostraba hace foco en una investigación realizada por la organización Electronic Frontier Foundation (EFF), dedicada a defender los derechos de los usuarios en Internet, hace unos meses lanzaba su informe anual sobre las empresas del sector tecnológico en el que realiza un ranking en función de cuánto protegen las compañías los datos frente a los gobiernos.  

De echo el que sea uno de los servicios preferidos por los usuarios, hace que sea una las vías preferidas por los ciberdelincuentes para realizar sus fechorías, comó nos muestran los amigos de ESET en este artículo. Lo cierto es que desde hace poco parece que los responsables de seguridad se están poniendo las pilas, y están aplicando varias medidas de seguridad tanto para las comunicaciones como para los historiales de chat que se guardan en el teléfono, aunque según parece estas medidas no son del todo eficaces. 

Hace unas semanas varios peritos informáticos consiguieron identificar y explotar un fallo de seguridad de la aplicación, concretamente en la versión 2.12.250 ejecutada sobre dos sistemas Android 5.x y 4.4.x, y que nos permite modificar la base de datos de WhatsApp para modificar mensajes sin que nadie se percate de la modificación. 

WhatsApp utiliza para las conversaciones el software de bases de datos SQLite. En su totalidad 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. Dado que el backup de los datos está “protegido”, de momento solo vamos a centrarnos en la base de datos original, la que utiliza el propio cliente de mensajería en tiempo real.


1. Descargar la base de datos de conversaciones de WhatsApp al PC

Lo primero que debemos hacer para poder modificar una conversación de whatsapp es tener permisos de root en el dispositivo. Cuando hayamos activado los permisos conectamos el smartphone a nuestro pc, y a través de la herramienta de desarrollo adb ejecutamos los siguientes comandos:

adb devices (nos mostrará los dispositivos conectados, muy útil para saber si todo funciona correctamente)

adb shell (nos abrirá un terminal para controlar el smartphone)


A continuación ejecutamos el comando “su” para darle permisos como superusuario al dispositivo.
Después nos situamos sobre la ruta de la base de datos de WhatsApp tecleando en el terminal :

cd /data/data/com.whatsapp/databases


Ahora ejecutamos el comando ls -la para que nos muestre 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 guarda automáticamente (y sin cifrar) cada vez que recibimos o enviamos un mensaje.

Una vez encontrado 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 descargará a nuestro PC, a la misma ruta donde tenemos el binario de adb copiado. Ya podeemos empezar a modificar los mensajes que nosotros queramos.


2. 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 solo en estas dos:
  • messages 
  • messages_fts_content


Lo primero que tendremos que 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 todos los cambios que queremos, pulsamos sobre el botón “commit” para que estos se apliquen y se realicen los cambios 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 sería recomendable para dificultar aún más el poder saber que la tabla ha sido modificada correctamente. Ya tenemos todo listo. Ahora sólo nos queda volver a copiar la tabla a nuestro teléfono.

Una vez que hemos realizado los cambios anteriores solo nos quedaría subir la base de datos 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 todavía hay un pequeño problema que debemos solucionar: 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 y comprobar que los mensajes se han modificado correctamente. A simple vista es totalmente imposible saber si un mensaje es original o ha sido modificado y siguiendo un análisis forense tampoco sería posible saberlo ya que los cambios realizados no han dejado rastro ni en la base de datos ni en nuestro smartphone.


Según la finalidad que decidamos darle 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. 

No hay comentarios:

Publicar un comentario