Espía WhatsApp

Una vez más WhatsApp, y no son pocas las referencias que veo en el blog a esta aplicación.

Esta vez unimos el débil proceso de loggin de los usuarios de WhatsApp con el uso de diferentes APIs de programación que permiten interactuar con el popular servicio.

Como se indica en la página de WhatsAPI, WhatsApp utiliza una versión modificada de XMPP denominada FunXMPP. En el proceso de loggin se utiliza como JabberID el número de teléfono móvil junto con el código de país (en España 34) y como password se utiliza un MD5. En Android se utiliza el IMEI y en iOS MAC address del teléfono para calcular dicho MD5.

WhatsApp nos permite validar si el par numero de móvil y password son correctos mediante una URL. En la imagen inferior se muestra un caso correcto.


Las APIs permiten el envío y recepción de mensajes de WhatsApp desde un ordenador. Algunas además permiten también cambiar la foto del perfil de un usuario, su estado o la última hora de conexión, pero todavía no lo he podido probar estas acciones

Para las demostraciones en vídeo que hice en la NcN utilicé python-whatsapi que provee de un cliente totalmente funcional y un ejemplo claro y sencillo que permite enviar y recibir mensajes.

La suplantación de usuarios te la dan "gratis", puedes empezar a mandar mensajes suplantando a la víctima siempre que tengas su número de teléfono móvil y su IMEI o MAC address.

El flood y el spam ya se habían comentado en este post. Pero si además le sumamos la suplantación se abren nuevos escenarios que pueden dar lugar a Phishing o envío de URLs que traten de ejecutar exploits contra el navegador de la víctima.

Con un poco de maldad y buscando los puntos adecuados en python-whatsapi se consigue espiar a otros usuarios sin que ellos se den cuenta.

Por lo que he podido deducir utilizando python-whatsapi el proceso de envío y recepción de mensajes se siguen los siguientes pasos:

1.El usuario A envía un mensaje a B
2.El usuario A recibe la confirmación de que el mensaje ha llegado al servidor
3.El usuario B recibe una alerta indicando que tiene un mensaje nuevo y notifica al servidor que ha recibido la alerta
4.El usuario B al iniciar el chat con el usuario A descarga los mensajes y envía una orden para borrarlos del servidor.

Modificando el API para que no envíe el ACK de la alerta (punto 3) ni la orden de borrado del mensaje (punto 4) el espía ya esta listo. Además de imprimir los mensajes que recibe la víctima, es posible añadir funcionalidad para guardar las fotos y los vídeos que le envíen al usuario espiado.

Hay que decir que no es del todo perfecto ya que WhatsApp sólo se permite una conexión, es decir, no puedes estar conectado desde el teléfono móvil y el PC al mismo tiempo. Si esto se produce, el último en conectase desconecta al usuario que estaba previamente conectado. Dependiendo de la implementación del API que se este utilizando se puede entrar en una competición por estar loggado. Pero seguro que con más tiempo, se puede llegar a mitigar este problema.

En la NcN no puede hacer una demo en vivo porque WhatsApp actualizó el protocolo de la versión 1.1 a la 1.2 apenas 3 días antes de mi charla. Desde entonces python-whatsapi no se ha actualizado y no funciona, sin embargo el sábado 10 de Noviembre utilicé Yowsup, motor de Wazap, que si esta actualizado y funciona perfectamente.

Fuente: Security by Default

Comentarios

Entradas populares de este blog

El Modelado de Amenazas de Seguridad

¿Como atacar Kerberos?

Trámites a Distancia: Serie de vulnerabilidades permiten el acceso a datos personales de terceros