Tienda Wifi

Tienda Wifi
CiudadWireless es la tienda Wifi recomendada por elhacker.NET

Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon Modificación de mensajes manipulando la base de datos de WhatsApp


Demostración de como es posible falsificar mensajes de WhatsApp de tal forma que la manipulación podría perfectamente pasar inadvertida para un perito informático que realizase una investigación forense sobre el terminal móvil.





WhatsApp es la aplicación de mensajería instantánea más utilizada del mundo. Más de setecientos millones de usuarios en todo el planeta (la décima parte de toda la Humanidad), la utiliza para intercambiar mensajes de texto y de voz, ficheros de audio y de vídeo, etc. El hecho de que sea una aplicación universalmente utilizada, implica también que muchas personas, involucradas en procesos judiciales, presenten los mensajes de WhatsApp como prueba si quieren demostrar que una conversación, en unos términos concretos, ha tenido lugar entre determinados interlocutores.

Seguidamente, se ha de indicar que la base de datos interna de WhatsApp utiliza SQLite como Sistema Gestor de Base de Datos, por lo que se trata, por tanto, de un sistema relacional. Asimismo, una copia de esta base de datos, se encuentra fácilmente accesible conectando el terminal móvil al ordenador, estando ésta cifrada mediante criptografía simétrica utilizando el algoritmo AES, cuyo funcionamiento puede observarse en el siguiente diagrama.





 Como se puede apreciar, la clave de cifrado y descifrado es la misma. Esto equivale a decir que la misma clave se utiliza para cifrar y para descifrar la base de datos, estando ésta almacenada y accesible en el directorio que utiliza WhatsApp. Sin embargo, la base de datos original, es decir, la que es utilizada por la aplicación para almacenar los mensajes inmediatamente después de ser enviados o recibidos, no está cifrada, sino que se encuentra almacenada en texto claro en uno de los directorios que la aplicación tiene en el sistema operativo. Esta base de datos no es accesible conectando directamente el terminal al ordenador, pero sí lo es una vez el terminal Android ha sido rooteado, es decir, configurado para ser accedido en modo súper-usuario, lo cual es algo muy sencillo de realizar incluso para usuarios no expertos.

Así pues, una vez el móvil ha sido rooteado (para este ejemplo, se usará el Wiko Goa), tener acceso a la base de datos original es una operación muy sencilla. Para ello, usando la utilidad ADB para Windows de las herramientas de desarrollo de Android, es necesario ejecutar los siguientes comandos al objeto de abrir una sesión con el terminal (primeramente es necesario haber instalado correctamente las herramientas de desarrollo de Android y los drivers del dispositivo móvil del cual se desea obtener su base de datos de WhatsApp, así como haber activado el “modo de depuración USB” en el citado terminal Android):

C:\android-sdk-windows\platform-tools>adb devices
C:\android-sdk-windows\platform-tools>adb shell
Una vez se han ejecutado estos dos comandos, la utilidad ADB abre una sesión con el terminal móvil, tal y como se observa en la siguiente imagen.



Es necesario indicar que, como servidor de ADB en el dispositivo móvil, es posible que sea necesario instalar y ejecutar una aplicación como ADB Insecure, más conocido como ADBD, al objeto de que se pueda transferir información entre el móvil y Windows y viceversa. Esto es así debido a que ciertas características de la utilidad ADB de serie no pueden ser utilizadas en versiones estables, es decir, finales, de Android, sino únicamente en versiones de desarrollo.

A continuación, es necesario acceder en modo súper-usuario al terminal, ya que la base de datos original de WhatsApp se encuentra en un directorio que sólo puede ser visualizado con privilegios de administrador. Para ello, es necesario ejecutar el comando “su”, tal y como se aprecia en la siguiente imagen.


Siendo ya súper-usuario, es necesario moverse al directorio en el que se encuentra la base de datos original de WhatsApp, ejecutando el siguiente comando:

# cd /data/data/com.whatsapp/databases

Al ejecutar un listado de los ficheros presentes en dicho directorio, mediante el comando “ls -la”, se aprecian los siguientes archivos:


Como se puede observar, el fichero que interesa es el remarcado en rojo. Ésta es la base de datos original de WhatsApp en la que se almacenan los mensajes inmediatamente después de ser enviados o recibidos. Una vez se ha visualizado el archivo que interesa, es necesario ejecutar el comando “exit” dos veces para volver a Windows, ya que será desde allí desde donde se tomará el archivo de base de datos de WhatsApp.

Ya en Windows, es necesario ejecutar el siguiente comando, al objeto de traer a Windows la base de datos (aunque es necesario, previamente, para disponer de todos los mensajes, incluyendo los enviados y recibidos en último lugar, haber realizado una copia de seguridad de los mensajes desde la propia aplicación WhatsApp, en el menú Ajustes -> Chats y llamadas -> Guardar chats):

C:\android-sdk-windows\platform-tools>adb pull /data/data/com.whatsapp/databases/msgstore.db

La ejecución exitosa del comando presenta la siguiente información en la consola:



La siguiente captura de pantalla del directorio de Windows en el que se encuentra la utilidad ADB, muestra que en dicha carpeta ha sido depositado el fichero “msgstore.db” (seleccionado en la imagen):



ara abrir el mencionado fichero de base de datos, será necesario un cliente de SQLite, habiendo sido seleccionado para este ejemplo el cliente de código abierto SQLiteStudio. Así pues, es necesario abrir el programa y, posteriormente, navegar hasta el menú Database -> Add a database, al objeto de añadir una nueva base de datos, por lo que se deberá buscar y seleccionar el archivo de base de datos que se desea alterar, en este caso “msgstore.db”, localizado en el directorio en el que se encuentra la utilidad ADB. Una vez añadida la base de datos, ésta aparece en SQLiteStudio como se aprecia en la siguiente imagen (remarcada en rojo).


Seguidamente, es necesario conectarse a la base de datos. Para ello, con la base de datos seleccionada, hay que navegar hasta el menú Database -> Connect to the database, de tal forma que el cliente se conecta inmediatamente a la base de datos. Desplegando la base de datos, se puede observar que ésta está conformada por once tablas, tal y como se observa en la siguiente imagen.



De todas estas tablas, las que interesan son las siguientes:
  • messages, que almacena los mensajes enviados y recibidos, así como varias propiedades de los mismos.
  • messages_fts_content, que almacena los mensajes enviados y recibidos sin ninguna propiedad, únicamente con la misma clave primaria que en la tabla messages.

Para modificar un mensaje enviado o recibido es tan sencillo como realizar los siguientes pasos:
En primer lugar, es necesario conocer la clave primaria del mensaje que se desea modificar. Para ello, lo más óptimo es ejecutar una consulta de búsqueda por el patrón del mensaje en el propio cliente de SQLite. Así pues, para modificar el mensaje del ejemplo, se ejecutará la siguiente consulta, que proporcionará todos aquellos mensajes donde aparece la palabra “whatsapp”, de tal forma que pueda tomarse el identificador del mensaje que se desea modificar:

select * from messages where data LIKE “%whatsapp%”;

La ejecución de la consulta se aprecia en la siguiente imagen, en la que únicamente se han devuelto dos registros, debido a que la palabra “whatsapp” sólo aparece dos veces en todos los mensajes (se ha remarcado en rojo, asimismo, el botón del cliente de SQLite con el cual se puede acceder al editor de SQL).



Una vez realizados todos los pasos anteriores, es necesario seleccionar con el botón derecho del ratón la base de datos en SQLiteStudio y ejecutar la opción Disconnect from the database, para acto seguido salir del programa. Posteriormente, se debe copiar la base de datos alterada en el teléfono, sustituyendo la original. Para ello, es necesario ejecutar el siguiente comando en la consola de Windows (como se mencionó anteriormente, la aplicación ADB Insecure debe encontrarse en ejecución en el móvil):

C:\android-sdk-windows\platform-tools>adb push msgstore.db /data/data/com.whatsapp/databases/msgstore.db

ara dejar el menor rastro posible de la manipulación, es necesario modificar tanto el propietario como el grupo del fichero de base de datos, que al haberlo copiado como root, es decir, como súper-usuario, tendrá tanto este propietario como este grupo. Para apreciarlo, se debe navegar hasta el directorio en el que se encuentra la base de datos, ejecutando los siguientes comandos:

C:\android-sdk-windows\platform-tools>adb shell
# su
# cd /data/data/com.whatsapp/databases
# ls –la

Como se puede apreciar dentro del rectángulo remarcado en rojo, el nuevo propietario del fichero “msgstore.db”, es el súper-usuario, así como también el nuevo grupo del fichero es el grupo del súper-usuario. Para revertir esta situación, es necesario ejecutar el siguiente comando:

# chown u0_a88:u0_a88 msgstore.db

Una vez realizado todo el proceso, debe reiniciarse el teléfono móvil y acceder, mediante la utilidad ADB, al directorio en el que se encuentra la base de datos, al objeto de comprobar que las fechas de último acceso de la misma se han actualizado y que no es pòsible determinar si la base de datos ha sido sustituida por una alterada. Para ello, es necesario ejecutar los siguientes comandos:


C:\android-sdk-windows\platform-tools>adb devices
C:\android-sdk-windows\platform-tools>adb shell
# su
# cd /data/data/com.whatsapp/databases
# ls -la
La última modificación de la base de datos es muy similar al resto de fechas de los otros archivos utilzados por WhatsApp, por lo que sería muy difícil dictaminar que la base de datos ha sido manipulada. Para ello, serían necesarias técnicas de file carving, es decir, recuperación de ficheros borrados, las cuales son muy costosas debido a las herramientas hardware y software necesarias y, además, no garantizan el éxito porque las áreas del sistema de ficheros ocupadas por ficheros borrados, son sobrescritas por el sistema operativo en función de las necesidades de éste.

Fuente:
http://peritoinformaticocolegiado.es/vulnerabilidad-en-whatsapp-falsificacion-de-mensajes-manipulando-la-base-de-datos/

2 comentarios :

New Balance 995 dijo...

Interesante, lo voy a probar

Anónimo dijo...

Esto aún se puede hacer después de tantas actualizaciones de seguridad de WhatsApp?

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.