domingo, agosto 27, 2017

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.

27 comentarios:

  1. como harias para ejectuar payload.apk en el terminal?

    ResponderEliminar
  2. Digamos que la victima deberia instalarse un apk para lo que además debera tener habilitada la opcion de permitir origenes desconocidos.

    ResponderEliminar
  3. ppkapo he ahi la parte mas complicada entonces.

    ResponderEliminar
  4. Si uno consigue el archivo crypt12 y lo logro enviar por mail o lo q sea...teniendo ese archivo se puede abrir normalmente?

    ResponderEliminar
  5. Sin la "KEY" es imposible de desifrar, la key se genera y es unica en cada terminal que se instale whatsapp....
    Ahora, bien, no se que pasaria si alguien se le ocurre hacer "algo" con python...no se algun programilla que intente romper por fuerza bruta o que genere "keys" de forma aleatoria o...como dice el tuto algun sms sniff. porque el mayor problema radica ahi, en conseguir la key, otra puede ser que se intente verificar (como muestra el video) el nro de whatsapp de la victima en otro dispositivo y ahi si tendriamos que snifear el sms de autenthication, conseguir la base de datos es relativamente sencillo, se puede incluso "bajar" desde google drive si es que uno se puede hacer de las crendenciales de la victima, (esto lo probe y me funciono), usando el programa whatsapp-gd-extract y python, pero nunca pude hacerme de la key, lo que si pude fue hacerme de fotos y notas de audio. en fin es tun tema muuuy interesante

    ResponderEliminar
    Respuestas
    1. Me podrias explicar como bajar de drive,si puedes a mi correo??

      Eliminar
  6. Yo no sé mucho de informática pero necesito urgentemente una conversación para presentarla como prueba.
    Ya no sé que hacer más ... Alguien me podría ayudar ???

    ResponderEliminar
  7. Muy buen artículo, lo explicas genial. No me extraña que se pueda instalar whatsapp gratis si se pueden hacer todas estas cosas de espiar, desencriptar mensajes, etc...

    ResponderEliminar
  8. No se de info así que se me complicó

    ResponderEliminar
  9. como puedo acceder a la key si el dispositivo no me permite rootearlo?

    ResponderEliminar
  10. Esto sirve para ver mensajes borrados?

    ResponderEliminar
  11. Buenas!! Podrías ayudarme a obtener la key? Es para recuperar conversaciones de mi antiguo teléfono Samsung s7. Gracias

    ResponderEliminar
  12. Tengo una conversacion encriptada la tengo Alguien me la puede decodificar???

    ResponderEliminar
  13. En serio se puede hacer todo eso? Ya no se si descargar whatsapp o seguir usando Telegram.

    ResponderEliminar
    Respuestas
    1. Telegram, no es diferente a WhatsApp, quizás mas seguridad pero un buen atacante podrá hacerse con tu cuenta de telegram, no es complicado lo he echo, pero en fin tomar las medidas seguridad necesarias aria la red más segura

      Eliminar
  14. Hola quien me puede ayudar a desencriptar, es de un teléfono que se me perdió..
    Gracias.

    ResponderEliminar
  15. Muy interesante.
    Precisamente buscaba sobre los Mensajes encriptados, como funcionan, pero ahora tengo muchas mas cosas que investigar al respecto jaja

    ResponderEliminar
  16. alguien me puede decir si tambien puedo descifrar una base de datos de un telefono que ya no tengo. unicamente tengo los archivos mgstore y quiero abrirlos pero no se si se pueda sin la key del telefono anterior. o como puedo hacer. es muy urgente ayudenme.

    ResponderEliminar
  17. Muy buen artículo. Justamente buscaba saber si hay vulnerabilidades y en efecto eso parece. Yo recomiendo la versión plus y actualizar siempre.

    ResponderEliminar
  18. Gracias por compartir, es muy interesante. También puede instalar otras aplicaciones atractivas de forma gratuita en https://tulidescargar.com/

    ResponderEliminar
  19. Nesesito ayuda nosé nada de informática pero nesesito ber unas conversaciones ,tengo el número de tel. La dirección mac,y el IP k puedo ASER con eso

    ResponderEliminar
  20. Necesito ayuda. Mi whatsapp fue bloqueado pero necesito recuperar las conversaciones. No soy usuario root. Tengo los databases pero no puedo obtener la key

    ResponderEliminar
  21. Hola a todos,
    Yo no soy informático. Me gusta, si claro. Siempre he sido autodidacta. El lenguaje en el que más avance, fue visual basic. Obsoleto hoy. Bueno al lio.
    Mi experiencia ha sido el que obtener el key no es nada complicado (claro está que todas mis pruebas son con MI móvil). Obtener las db vía usb no tiene complicación obviamente.
    Instalas whatsapp en nox, al whatsapp de tu móvil le quitas los permisos de sms y no tienes más que leer el que te llega y escribirlo en nox.
    Hasta aquí bien.
    Pero claro, me gusta trastear y no he conseguido hacerlo del modo que propones.
    Corro Linux en VirtualBox 64 (actualizado). Para empezar no me deja instalar las Guest. Asigno una IP fija a la máquina de Linux en mi rango casero. Desde otros pc´s obtengo respuesta ping de la maquina Linux y al contrario también. De otros pcs en casa así como de mi móvil.
    Primera cuestión: La ip que escribimos para crear el apk (msfvenom -p) es la de la maquina Linux?
    Segunda: La ip LHOST después de msfconsole es la del tfno. o cual?

    He de decir que he probado múltiples combinaciones y nada. Como no consigo instalar las guest, no tengo carpeta compartida luego me envío la apk por dropbox y la instalo en mi móvil.
    Seguro que son cuestiones de nivel 0, pero por algo se empieza.
    Gracias de antemano.

    ResponderEliminar
  22. Hola como se hace para sacar de tu teléfono al intruso que revisa wsap?

    ResponderEliminar