martes, 22 de abril de 2014

INFORMATICA FORENSE WHATSAPP ANDROID


 LA INSEGURIDAD DE WHATSAPP ANDROID

Estos del Whatsapp son la ostia. Con los últimos cambios para dotar a la base de datos de mayor "seguridad" (/sdcard/WhatsApp/Databases/msgstore.db.crypt). Han agregado para encriptar el fichero la cadena del email del usuario. Si antes se descifraba con un comando de ssl:                                                                                                                                  
openssl enc -d -aes-192-ecb -in msgstore-1.db.crypt -out msgstore.db.sqlite -K 346a23652a46392b4d73257c67317e352e3372482177652c. 

Ahora se hace con un script en python liberado por
Alejandro Ramos (@aramosf). Teniendo la base de datos cifrada y el usuario de Gmail utilizado en el dispositivo Android se puede obtener las conversaciones descifradas y listas.
python pwncrypt5.py msgstore.db.crypt5 grbnz0@gmail.com > msgstore.sdb 

___________________________________________________________________________________
Codigo del script de python:
___________________________________________________________________________________
#!/usr/bin/python             
"""
48bits presents:
8===============================================D~~~
WhatsApp msgstore crypt5 decryptor by grbnz0 and nullsub
8===============================================D~~~

"""
                                                                                                                                                                                  
import sys
import hashlib
import StringIO
from M2Crypto import EVP

key = bytearray([141, 75, 21, 92, 201, 255, 129, 229, 203, 246, 250,
   120, 25, 54, 106, 62, 198, 33, 166, 86, 65, 108, 215, 147])
iv = bytearray([0x1E,0x39,0xF3,0x69,0xE9,0xD,0xB3,0x3A,0xA7,0x3B,0x44,
   0x2B,0xBB,0xB6,0xB0,0xB9])

def decrypt(db,acc):
  fh = file(db,'rb')
  edb = fh.read()
  fh.close()
  m = hashlib.md5()
  m.update(acc)
  md5 = bytearray(m.digest())
  for i in xrange(24): key[i] ^= md5[i&0xF]
  cipher = EVP.Cipher('aes_192_cbc', key=key, iv=iv, op=0)
  sys.stdout.write(cipher.update(edb))
  sys.stdout.write(cipher.final())

if __name__ == '__main__':
  if len(sys.argv) != 3:
    print 'usage %s <db> <accountname> > decrypted.db' % sys.argv[0]
  else:
    decrypt(sys.argv[1],sys.argv[2])

_____________________________________________________________________________________________________________________

No solo se tiene acceso a las bases de datos sin ningún problema si no que al usar SQLITE, se pueden recuperar cualquier dato borrado de la base de datos.

Info obtenida de: http://www.securitybydefault.com/2014/03/descifrando-msgstoredbcrypt5-la-nueva.html
Script python: https://github.com/aramosf/pwncrypt5/blob/master/pwncrypt5.py


No hay comentarios:

Publicar un comentario