jueves, 29 de marzo de 2012

[Hack] Obtener mensajes de WhatsApp

Hace poco me compré un celular para reemplazar mi palm treo 650 que paso a otra vida, traté de buscar uno que me permitiera tener las mismas ventajas que mi palm y que esté a un buen precio. Lo que mas me interesaba era la instalacion de aplicaciones y wifi, que hoy en dia cualquier smartphone posee. El SO por conveniencia era el Android, así que con mi Motorola XT720 en mis manos comencé a instalar y probar diferentes aplicaciones.
Algo que me llamó mucha la atención fue que, antes de descargar una aplicación nos piden aceptar una serie de condiciones que la aplicación en concreto puede realizar en nuestro equipo, ejemplo:
Herramientas del sistema: -Impedir que el teléfono entre en modo de suspención, leer archivos del registro, reiniciar otras aplicaciones etc.
Comunicación de red: -En el caso que haya, acceso a internet, crear conexiones. etc
Almacenamiento: -Leer, Modificar y eliminar contenido de la tarjeta.
Llamadas de teléfono: -Leer la identidad y el estado del teléfono.
Y Así un largo etc, todo depende de la aplicación a instalar.

Una aplicación que me pareció muy util fue Android Terminal Emulator, como sabía que Android era un kernel modificado de linux creí que resultaría bastante útil.
Luego decidí instalar WhatsApp, esa aplicación tan popular para experimentar un poco. Una vez instalado, comencé a probarlo y me surgió una duda:
¿Será posible acceder a las conversaciones?
Para esto hay que ver como se almacena los datos, al parecer WhatsApp crea una pequeña base de datos que almacena en el Sistema Operativo. El tipo de base de datos es local, por lo que utiliza SQLite. Como ya había hecho varias aplicaciones antes en Java y C# con este tipo de base de datos, no me resultaba nada de otro mundo.
Para los que no saben, SQLite es un pseudomotor de base de datos, esto porque no se necesita de un servidor y presenta una mejor forma de almacenar datos locales de una aplicación que hagamos.
En el caso de WhatsApp utiliza dos archivos msgstore.db y wa.db. El primero para los mensajes y el otro para los contactos.
Ahora con la aplicación Android Terminal Emulator solo hay que buscar y transferir estos archivos, que no son mas que comandos de linux.

Primero ejecutamos su para tener permisos de superusuarios, después find -name msgstore.db para saber la ruta exacta donde se encontraba. cd sdcard desde el directorio raíz para entrar a la tarjeta de memoria y copiamos el archivos con cp ruta msg.db.
Lo demás solo lo puse para mostrar los datos del directorio.

Ahora con la base de datos en la memoria, conectamos el teléfono móvil al PC.


Para poder ver el contenido de la base de datos simplemente voy a utilizar un complemento de FireFox que ya tenía instalado. El SQLite Manager lo pueden descargar entrando a Herramientas/Complementos y buscarlo o directamente de https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/ .
Una vez instalado, abriendo FireFox en el menú Herramientas vamos a SQLite Manager

Y se nos abrirá otra ventana en la que solo tenemos que abrir y buscar el archivo que guardamos. Haciendo click en la tabla "Messages" aparecerá la lista con los mensajes, los destinatarios e incluso en algunos casos en que se utilice, la posición geográfica.


Como ven, hay que tener mucho cuidado con las aplicaciones que se utilizan. No vaya a ser que alguien esté viendo tus conversaciones.
----------------------------------------
Actualización (22/04/12):  La ultima actualización de whatsapp encripta la base de datos, para mayor seguridad. Por lo que, si se descargó recientemente whatsapp o se tiene la opción de actualización activada es probable que no se pueda abrir la base de datos. Estaré investigando sobre el tema. 
Actualizacion (18/06/12): Para base de datos encriptadas vean la siguiente entrada ;)
http://gonzac-studios.blogspot.com.ar/2012/06/hack-desencriptar-y-obtener-datos-de.html



-----------------------------------------------------------------------------------
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

-----------------------------------------------------------------------------------
ACTUALIZACIÓN: (20/05/14)

WhatsApp hizo unos cambios en la forma de encriptar los datos, acá la 
nueva version del WhatsAppDecryp para archivos crypt5

http://gonzac-studios.blogspot.com.ar/2014/04/hack-crypt5-la-nueva-seguridad-de.html

jueves, 15 de marzo de 2012

[Hack] Cuidado!, alguien puede estar viendo tus SMS online.

Un poco impactante el titulo, pero no es nada mas raro de lo que se viene hablando en artículos anteriores. Poder interseptar un sms de forma real se requiere de un gran conocimiento, para poder construir un falso punto de acceso, desencriptar los datos etc. Como se demostró en la Defcon del año 2010. Para suerte de los usuarios las empresas utilizan sistemas bastantes confiables, pero se olvidan de la seguridad en otros como voy a mostrar, los sms online.

Gran parte de las empresas nos dan la opción de poder mandar sms de forma gratuita online, si no contamos con crédito en nuestro teléfono móvil.
(Click en las imágenes para ampliar)


Ejemplo de la pagina de claro


Ejemplo de la pagina de personal


Ejemplo de la pagina de movistar

Como pueden ver en las imágenes no es mas que un simple formulario. Como no se trata del acceso de una contraseña, no pusieron empeño en cifrar los datos. Y estos viajan en texto limpio.
En primer lugar es necesario encontrarse en la misma red, por lo que hay que tener cuidado cuando nos conectamos en redes publicas. Una vez conectado a la red, un atacante hace un envenenamiento arp a una maquina en particular o al acces point, y utilizando la técnica de man in the middle comienza a capturar todo el trafico. (Todos estos pasos no los voy a explicar, si quieren pueden leer el articulo "las paginas juegan con nuestros datos") A diferencia de capturar las contraseñas, después del envenenamiento arp utilizo el Wireshark que permite capturar todos los paquetes y guardarlos en formato *.pcap.


Una vez almacenado los datos, para visualizarlos de una forma mas amigable utilizo el NetworkMiner. Solo hay que cargar el archivo pcap e ir a la pestaña Parameters para leer los mensajes y los números.

Captura del NetworMiner 1-mensaje de personal 2-mensaje de claro 3-mensaje de movistar

Ahora ya saben, tengan cuidado con lo que mandan y desde donde. ;)