Aprende cómo descifrar los mensajes de WhatsApp para Android sin la clave de cifrado

Desde el principio, al menos en los sistemas operativos Android, la base de datos de WhatsApp que se almacena en el dispositivo se ha mantenido cifrada, para evitar que alguien fácilmente pudiera llevarse los mensajes de las conversaciones con solo acceder a la base de datos. En iPhone no ha funcionado de la igual manera, y se ha mantenido sin cifrar durante muchas versiones.

Figura 1: Aprende cómo descifrar los mensajes de WhatsApp para Android sin la clave de cifrado

Sistemáticamente, versión tras versión de WhatsApp en Android se ha ido mirando la forma en la que un analista forense podría descifrar el contenido de una base de datos con las conversaciones. Por aquí hemos visto cómo hacerlo con las bases de datos en formato cyrpt4 o más adelante crypt5, utilizadas por WhatsApp para Android. En este artículo de hoy voy a explicar cómo es posible que alguien que tenga acceso a un dispositivo puede descifrar los backups de WhastApp en Android sin necesidad de su clave.

Los Backups de WhatsApp

WhatsApp tiene como de costumbre generar automáticamente una copia de seguridad cada día, esta guarda tu historial de chats en la memoria de tu teléfono o en una tarjeta de memoria, dependiendo de la configuración del usuario, estas sirven para en un momento dado poder acceder a todas las conversaciones.

Figura 2: Copias de seguridad de esta semana de Agosto de 2017

Para ello se crea un archivo con el formato msgstore-AAAA-MM-DD.1.db.crypt12 que está cifrado mediante una clave que se genera en el dispositivo cada vez que instalamos WhatsApp, por lo que solo podremos utilizar esa clave para descifrar todas las copias de seguridad de la base de datos o bakups, cifrados con ella.

Chat de la víctima con una persona

Este es el proceso mediante el que se puede conseguir acceder a la conversación de un chat desde las copias diarias de WhatsApp para Andorid si se tiene acceso al terminal móvil. Ya se explicó en un artículo hace tiempo como se puede utilizar Metasploit para controlar un terminal Android, y es lo que se va a usar para hacer too el proceso.

Figura 3: Conversación de WhatsApp a la que se quiere acceder

Primero vamos a crear un payload con msfvenom desde nuestro Kali Linux para crear un backdoor en el dispositivo de la víctima. Como se explicó en el artículo de Robar WhatsApp de Android con Metasploit, lo que vamos a utilizar es un APK malicioso creado con msfvenom para que cuando la víctima la ejecute en el terminal, podamos recibir una sesión de Meterpreter en nuestro Metasploit.

Figura 4: Creación del apk maliciosa con msfvenom que hacer Reverse TCP Shell

Ahora vamos a utilizar Metasploit Framework, configuramos Metasploit con nuestros datos para poder escuchar la petición del payload, esta cuando se ejecute en el dispositivo aparecerá la sesión.

Figura 5: Se pone a la escucha el listener de Metasploit para recibir la sesión TCP

Figura 6: Cuando la víctima ejecuta el APK de msfvenom, ya tenemos acceso al terminal Android

Una vez dentro del dispositivo de la víctima, vamos a ir al directorio de WhatsApp en Android. Yo, por defecto, lo tengo ubicado en la sdcard. Aquí se pueden ver las copias de seguridad de las bases de datos de WhatsApp para Android, junto a la que está en uso ahora mismo que corresponde a “msgstore.db.crypt12“.

Figura 7: Bases de datos de WhatsApp para Android

Una vez que accedemos a la base de datos de WhatsApp y tenemos acceso al dispositivo del objetivo, nos queda descifrarla. Si el dispositivo objetivo tiene permisos root – es decir, está rooteado -, nos podemos saltar todo este paso hasta donde explico como obtener la clave privada, ya que no sería necesario hacer un robo de la cuenta, y bastaría con usar WhatsApp Viewer con la clave privada y la base de datos. Un dispositivo con permisos de root permite que el usuario pueda tener acceso administrativo del sistema en el dispositivo y esto hace que sea mas vulnerable a ataques de malware y ejecución de exploits.

Pero vamos a suponer que no podemos acceder a la key, y lo que vamos a hacer es generar una nueva copia de seguridad de la base de datos de WhatsApp en otro dispositivo con los mismos chats, aprovechando la información que los servidores de WhatsApp tienen de los dispositivos. Es decir, ellos pueden descifrar las bases de datos sin tener la clave privada del dispositivo. Ellos guardan esas claves por “usabilidad“, lo que permite que se migren las bases de datos de un dispositivo a otro sin necesidad de que se tenga la clave de cifrado. Vamos a verlo.

Descifrar la base de datos de WhatsApp para Android

Para hacer este proceso utilizaremos un segundo dispositivo en el que instalaremos WhatsApp para Android. En mi caso utilizaré un emulador de Android cual tiene permisos de root para luego importar la copia de seguridad que nos traemos vía Metasploit desde el dispositivo  Ahora, pasamos la base de datos de WhatsApp que nos hemos traído al dispositivo Android en el emulador, dentro de la carpeta Databases, de la carpeta WhatsApp. Si no aparece se crea.

Figura 8: Copiando la base de datos en el emulador

Ahora abrimos WhatsApp para Android en el emulador e introducimos el numero de teléfono del objetivo para hacer el proceso de registro. Esto hará que le llegue un mensaje de confirmación al terminal del objetivo, que en este momento está controlado por Metasploit. Este es el proceso de registro normal de WhatsApp cuando se conecta la cuenta en un nuevo dispositivo.

Figura 9: Registrando WhatsApp para Android en el emulador

Necesitamos el código de verificación SMS de registro, así que volvemos a la sesión que tenemos de Metasploit, descargamos los mensajes SMS y lo abrimos con un editor de texto. Yo utilizaré nano.

Figura 10: Accediendo a los SMS del terminal objetivo

Ya tenemos el código de verificación. Ahora solo queda restaurar. Eso sí, si el objetivo hubiera configurado una proceso de Verificación en Dos pasos en WhatsApp, ahora no podríamos seguir, así que si tienes WhatsApp, piénsate en configurarte esta protección cuanto antes.

Figura 11: Código de registro de WhatsApp accedido

Una vez terminado de restaurar, esperamos a que nos salgan los chats de WhatsApp para Android esta conexión, que seguirá activa hasta que el objetivo vuelva a verificar su cuenta en su terminal, ya que allí no podrá usarlo. Además, todos los contactos recibirán una alerta de que la clave privada de WhatsApp de este contacto ha cambiando, así que no es un proceso precisamente silencioso.

Figura 12: Restaurando la base de datos de WhatsApp en el emulador

Ya tenemos las conversaciones, que han sido importadas desde la base de datos de WhatsApp, pero ahora las queremos importar para guardarlas. Esto es porque los servidores de WhtasApp guardan información para hacer este proceso, y lo hemos utilizado para descifrar la base de datos sin necesidad de tener las claves de cifrado del dispositivo del objetivo.

Figura 13: Conversaciones importadas desde el dispositivo

Esto es importante, ya que quiere decir que WhatsApp guarda en los servidores información suficiente como para descifrar cualquier base de datos de cualquier terminal sin importar si la clave está disponible o no, lo que abre la puerta a Analistas Forenses para acceder a más datos teniendo la base de datos y la SIM.

Exportando las conversaciones con WhatsApp Viewer

Vamos ahora a hacer una copia de seguridad con WhatApp para cifrar de nuevo esas conversaciones, pero con la clave que se ha generado al instalar WhatsApp en el emulador. Esto nos permitirá tener acceso a la base de datos nueva y a la clave de cifrado que se ha generado en el emulador.

Figura 14: Generando copia de seguridad de la base de datos de WhatsApp

Ahora, localizamos la clave que está en este dispositivo, y que se encuentra en “/data/data/com.whatsapp/files” además de acceder a  la nueva copia de seguridad de la base de datos de mensajes de WhatsApp que hemos creado.

Figura 15: Base de datos creada con la copia de seguridad en el emulador

Figura 16: Clave creada por WhatsApp para este dispositivo.
Se necesita ser root para acceder a ella.

Muy bien. Ya está todo lo que necesitamos para poder descifrarla. Una base de datos de WhatsApp cifrada y la clave de cifrado utilizada. Ya solo nos queda abrir la base de datos con WhatsApp Viewer.

Figura 17: Se le pasa la base de datos y la key a WhatsApp Viewer

Esto generará una base de datos la cual la volveremos abrir con WhatsApp Viewer, y nos permitirá acceder a las conversaciones, también estas se podrán exportar a otro tipo de archivos.

Figura 18: Toda la base de datos queda descifrada y disponible para exportar

Como se ha visto aquí, debido a que WhatsApp permite descifrar bases de datos generadas y cifradas en el dispositivo A en un nuevo dispositivo B sin tener la clave de cifrado del dispositivo B, hemos podido sacar una base de datos de un WhatsApp para Android sin rootear y descifrarla con la información de los propios servidores de WhatsApp.

Figura 19: Cómo descifrar base de datos de WhatsApp para Android sin la clave de cifrado

Para seguir el proceso paso a paso, he hecho este pequeño vídeo acelerado que recoge todos y cada uno de los comandos que hay que hacer para replicar este proceso. Por último, te recomiendo que leas el artículo de Proteger tu WhatsApp a prueba de balas, que ayudaría a evitar que este proceso tuviera éxito, si tienes configurado correctamente todas las medidas de protección, ya que esto podría ser utilizado por criminales para espiar WhatsApp.

Un saludo,

Autor:  Eryos.


Source: El lado del mal




No hay comentarios


Puedes dejar el primero : )



Deja un comentario

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