lunes, 18 de junio de 2012

[Hack] Desencriptar y obtener datos de WhatsApp

Hace un tiempo escribí como obtener los mensajes de WhatsApp a partir de su base de datos. Tiempo después whatsapp corrigió esta vulnerabilidad encriptando los datos. Los archivos que se generan se guardaban en la tarjeta de memoria del celular, en la carpeta Whtasapp/Databases con extension .crypt


Leyendo unos paper, me topé con uno muy interesante sobre un análisis a las base de datos de whatsapp.
En el explican que a través de un análisis de entropia, entre otras cosas. Descubrieron que whatsapp encripta todas las bases de datos con un algoritmo AES, pero siempre usando la misma key.
Este es un algoritmo de clave simétrica, es decir que utiliza una misma clave tanto para encriptar como para desencriptar. Que utiliza un sistema de cifrado por bloque.
Si bien cuando se crean programas de este tipo, utilizan ofuscación de código, añadiendo código basura y desordenando el código para evitar ser crackeados. Este grupo que se encargó de hacer el análisis a whatsapp, pudieron extraer la key 346a23652a46392b4d73257c67317e352e3372482177652c.

¿Como utilizo esta clave?
Pues es realmente sencillo, utilizando algún lenguaje de programación. Después de pelear bastante con java, con los buffers de lectura del archivo y la clase cipher. Me di cuenta que era muy ineficiente, por lo que decidí hacerlo en solo unas lineas con Pytho. Se lee el archivo como binario, se desencripta y se guarda.


from Crypto.Cipher import AES

print "WhatsApp Decrypter by Gonzac Studios"
print "Visite: http://gonzac-studios.blogspot.com"
print ""
f = open("msgstore.db.crypt", 'rb')
key = "346a23652a46392b4d73257c67317e352e3372482177652c"
key = key.decode('hex')
cipher = AES.new(key,1)
decoded = cipher.decrypt(f.read())
output = open('msg.db',"wb")
output.write(decoded)
output.close()
print "***fin del proceso***"

-----------------------------------------------------------------------------------
Para que no tengan que instalar nada, lo compilé y pueden descargarlo de
http://www.mediafire.com/?7bcbi22t7g6iuxd (Eliminado por el host)

http://cl.ly/MakU (WhatsAppDecryp & WhatsAppLogExtractor)

ACTUALIZACION  06/01/14:
http://cl.ly/0Y3h422X0w39 (WhatsAppDecryp & WhatsAppLogExtractor v2)

La forma de usarlo no requiere mayor conocimiento.
1)Copian la carpeta "WhatsAppDecrypt" al disco. Y en esa carpeta copian la base de datos. "msgstore.db.crypt"
*Si la base de datos es "msgstore-FECHA-db.crypt" sólo cambian el nombre a "msgstore.db.crypt"
2)Abren la consola de windows y se posicionan en la carpeta WhatsAppDecrypt.
3)Ejecutan el WhatsAppDecrypt y se generará un archivo llamado "msg.db"














4)Ahora con el plugin para firefox SQLite Manager u otro administrador de base de datos sqlite y abren el archivo.



















-----------------------------------------------------------------------------------
ACTUALIZACIÓN: (25/07/12)

RECUPERACIÓN:
Muchos preguntaron si se podían recuperar algunas conversaciones borradas. Según estuve probando todo depende de como se haya efectuado el borrado. Si se borraron antes de la hora en que se hace el buckup, si los archivos fueron reemplazados etc.
Yo hice una prueba con el recuperador de archivos que viene con TuneUp y me dio buenos resultados.

-Ponemos msg como termino de busqueda.

-Nos apareceran todas las base de datos que fueron eliminadas alguna vez.

Descarga:(Contraseña tuneup)
-TuneUp 2009 Link1 o Link2
-TuneUp 2011 (No lo he probado)



-----------------------------------------------------------------------------------
ACTUALIZACIÓN: (22/01/13)


Debido a la falta de claridad con que se leen los mensajes desde el SQLite Manager. Y la difícil interpretación, acabo de programar un lector de base de datos (desencriptadas) Que agrupa los mensajes por conversaciones a un determinado usuario y traduce las fechas a un formato legible. Almacenando todo en un archivo de texto:
1-Copiar el archivo msg.db generado por el WhatsAppDecrypt a la carpeta del WhatsAppLogExtractor.
2-Ejecutar el WhatsAppLogExtractor.jar . Se generará un archivo de texto llamado fichero.txt.
3-Abrir el fichero generado.

Descarga: -WhatsAppLogExtractor


ACTUALIZACIÓN: (06/01/14)

WhatsApp hizo unos cambios en la forma de almacenar los datos,  acá la nueva versión del WhatsAppLogExtractor.

Descarga: WhatsAppLogExtractor v2
-----------------------------------------------------------------------------------
ACTUALIZACIÓN: (10/07/13)


Con el fin de automatizar el envio de la base de datos msgstore, programé una aplicacion para android. Mas informacion de SpyAndroidFtp en:

http://gonzac-studios.blogspot.com.ar/2013/07/spyandroidftp-backup-diario-de-tus.html

 
-----------------------------------------------------------------------
Ahora ya sabes!, Ten cuidado a quien prestas el celular, o la aplicaciones que instalas.