3 nov 2014

Descifrando bases de datos WhatsApp cifradas con Crypt7

Buenas a todos, son ya muchos los artículos que llevamos publicados sobre WhatsApp, y no paramos de trastear con esta interesante herramienta. Hoy queríamos explicaros paso a paso el proceso seguido para extraer por ADB y descifrar bases de datos de WhatsApp cifradas mediante Crypt7, el último sistema y más complejo utilizado por las últimas versiones de la herramienta.

Lo primero que debemos hacer es desplegar ADB en nuestro equipo, como ya explicamos hace varios meses en este artículo http://www.flu-project.com/2013/04/herramientas-forense-para-ser-un-buen_7.html.

El siguiente paso será conectar el dispositivo móvil a nuestro ordenador mediante ADB con el fin de traernos el archivo /data/data/com.whatsapp/files/key. Por ejemplo lo podemos copiar a la tarjeta SD:
$adb shell
$su
$cp /data/data/com.whatsapp/files/key /sdcard
$exit
$exit
A continuación nos lo traeremos al equipo:
$adb pull /sdcard/key
De este archivo nos interesará extraer la clave AES y el vector de inicialización utilizados con el fin de cifrar los datos: Clave AES de 256 bits 
$hexdump –e '2/1 "%02x"' key | cut –b 253-316
Mismo paso para extraer el vector de iniciación, de 128 bits 
$hexdump –e '2/1 "%02x"' key | cut –b 221-252
Antes de descifrar tendremos que quitar la cabecera de 67 bytes del archivo crypt7. 
$ dd if=msgstore.db.crypt7 of=msgstore.db.crypt7.nohdr ibs=67 skip=1
Y con openssl descifraremos el archivo crypt7 y lo replicaremos en un archivo SQLite para revisarlo con nuestro visor preferido:
$ openssl enc -aes-256-cbc -d -nosalt -nopad -bufsize 16384 -in msgstore.db.crypt7.nohdr -K $key -iv $iv > msgstore.db
$key y $iv serán la clave y el vector de inicialización previamente extraídos

Y si todo ha ido bien, podremos abrir el fichero de base de datos resultante con alguna herramienta como SQLite Browser o Whastapp Foresincs, de la que ya os hemos hablado anteriormente en Flu Project.


5 comentarios:

  1. Aunque las alternativas no son tan seguras como quieren hacer ver, desde luego Whatsapp es un juguetito con el que se pueden hacer pruebas de todo tipo. ¡Post muy interesante! :)

    ResponderEliminar
  2. Hola tengo un problema, una vez dentro de la shell de adb, ejecuto el comando su, y me dice que no lo encuentra. Ayuda por favor. GRacias

    ResponderEliminar
  3. me dice esto:
    root@BServer:/# $hexdump –e '2/1 "%02x"' key | cut –b 253-316
    cut: you must specify a list of bytes, characters, or fields
    Try 'cut --help' for more information.
    –e: command not found

    ResponderEliminar
  4. hola, alguien puede explicarme el porqué de: -bufsize 16384. Gracias

    ResponderEliminar