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.