jueves, 5 de enero de 2012

WhatsApp al descubierto

Hoy traigo una herramienta para sniffear todo lo que whatsapp manda/recibe en la red creada a partir del estudio realizado por los chicos de securitybydefault(post original)...
Esta herramienta solo sería una idea de no ser gracias a Thor & Yago Jesus, a los cuales agradezco mucho su trabajo y dedicación... :)
















¿Qué es el whatsapp?
Whatsapp es un servicio de mensajería instantánea disponible para cualquier smartphone actual y que usa el protocolo xmpp para la transmisión de datos.

¿Como funciona whatsapp?
Como los chicos de securitybydefault nos comentaban en el otro post, whatsapp tiene como destino el puerto 443(HTTPS) aunque todo viaja bajo texto plano.
Whatsapp usa el protocolo XMPP(una tecnología de comunicación en tiempo real muy potente y utilizada actualmente). Un claro ejemplo del uso de XMPP lo podemos encontrar en el tuenti chat sin ir muy lejos.
Los datos de XMPP son enviados a bin-short.whatsapp.net bajo el puerto 5222.


¿Un momento, seguro que van en texto plano?... Así cualquier desalmado puede leer mis mensajes cuando estoy en una red wifi..

Exacto, todos los datos son enviados bajo texto plano, una vulnerabilidad que fue descubierta hace meses y reportada pero a la que whatsapp no hizo caso.





Pero es bastante incómodo tener que estár atendiendo a 80 paquetes para leer dos mensajes y dos números de teléfono... ¿no hay otra forma más comoda?
Porsupuesto, actualmente estoy desarrollando WhatsAppSniffer(que nombre más original) que muestra en consola todas las conversaciones, identificadores y demás que pasan por la red cuando se está usando whatsapp.

He decidido programarlo usando winpcap(aunque no sería posible de no ser gracias a Thor) y he usado como lenguaje ANSI C.

¿Y donde podría usar esta herramienta? Situémonos... estamos en una biblioteca, wifi público y está llena de personas que por no gastar el ancho de banda de 3G están atendiendo a usar whatsapp en el wifi.. Simplemente arrancaríamos la herramienta y dejaríamos que broten las conversaciones :).. en un aeropuerto, en un bar(así consigues el numero de esa rubia que tanto miras en lugar de atender a la coca-cola)...

¿Pero como usamos WhatsAppSniffer? 
Arranca el programa, selecciona un adaptador que se pueda poner en modo promiscuo introduciendo su número y pulsa enter.
WhatsAppSniffer esperará a que los paquetes comiencen a pasar y los irá mostrando en pantalla con sus respectivos datos.

Nota: En caso de que no logre detectar ningún paquete debes de cerrar la herramienta y previamente forzar el modo monitor de tu tarjeta, yo lo he estado haciendo con cain para ir probando.



















De momento he decidido dejar una versión BETA de WhatsAppSniffer. Todavía hay que ajustar un poco el filtrado de los paquetes, solucionar algún error y hacer que permita enviar mensajes desde el propio sniffer a partir de un userid.


Continuaré desarrollando la herramienta para mejorar el filtrado... realmente no hay un "patrón" de datos en los paquetes que me permita sacar los datos de forma limpia siempre... de modo que necesitaré un poco más de tiempo hasta sacar algo a lo que se pueda llamar Sniffer... :)

Un saludo & feliz año :)
  • Stumble This
  • Fav This With Technorati
  • Añadir a Del.icio.us
  • Digg This
  • Añadir a Facebook
  • Añadir a Yahoo

48 comentarios:

Alberto Gomis dijo...

Tiene buena pinta, yo uso Wireshark para una asignatura de redes de la uni, y se ven fácilmente los paquetes del Messenger por ejemplo. Aunque este programita que has puesto no sólo me captura cosas del Whatsapp, sino que también veo otros mensajes al parecer cifrados y conteniendo palabras de gmail, facebook chat, user agent Mozilla... y un desconcertante "this Certificate constitutes acceptance of the DigiCert CPCS and Relying Party Agreement...". Vamos, que por curiosidad he dejado el programa arrancando unas horas y veo bastantes cosas, aunque estoy conectado directamente al router por el cable de red.

P0is0n dijo...

@Alberto: Muchas gracias por comentar! He puesto el filtrado para el puerto 5222(tcp) que es el que usa whatsapp para xmpp :) Puede que detecte más de lo que debe jajajaj

Un saludo y muchas gracias!

Spectrus dijo...

Muy bueno p0is0n, a ver cuando lo pruebo,un saludo tio, cuidate!

P0is0n dijo...

@Spectrus muchas gracias! Pruébala y nos cuentas ;)

¡Un saludo!

BUHOsec.com dijo...

Excelente !

Gracias !

P0is0n dijo...

@BUHOsec.com: Muchas gracias!

Un saludo :)

$DoC dijo...

Grande hermano!, ya sabes, me encantó :)

P0is0n dijo...

@$DoC: Gracias por el comentario, me alegro de que te guste ;)

Un saludo :p

pcastagnaro dijo...

Muy bueno @P0is0n.

Ya que citas el código fuente, en caso de realizarle alguna mejora, te puedo colaborar?

P0is0n dijo...

@pcastagnaro claro! Cualquier persona puede modificar el código y mejorarlo. :)

Un saludo y gracias por pasarte ;)

Ricardo dijo...

De mucha utilidad, y sí, parece que detecta más cosas de las previstas. Si pudiera extraer todo limpiamente ya sería perfecto. Buen aporte, gracias.

ponchersey dijo...

Muy interesante,

Encima es una muy buena manera de empezar con libpcap...echaré un ojo al código !!

Gracias !

P0is0n dijo...

@Ricardo: Estoy trabajando para solucionar eso ;)
@ponchersey: Sip, una muy buena iniciación a la programación con winpcap :)

Un saludo y muchas gracias!

Anónimo dijo...

Hola P0is0n!!

Soy Newbie o Lammer en todo esto, y al intentar ejecutar el programa me pide una serie de librerias (wpcap.dll y packet.dll) que he instalado, pero aun asi me sigue dando el siguiente error.

"No se encuentra el punto de entrada del procedimiento PacketGetReadEvent en la biblioteca de vínculos diámicos packet.dll"

Me puedes ayudar?

dex dijo...

Cuando llegue a casa lo probaré.
Tiene muy buena pinta.

¿Nos podrías decir algo de la seguridad o carencia de ella de Whatsupp cuando está conectado a redes 3G?

Gracias!

P0is0n dijo...

@Anónimo: Newbie, que lammer es otra cosa! Te recomiendo instalar winpcap y reiniciar el ordenador antes de usar el Sniffer.
Link WinpCap(windows): WinPCap+DLLs Download
Gracias por comentar!

@dex:Sip, en la semana si puedo dejaré algún artículo pero te adelanto que en una red 3g el sniffer no va a funcionar... sinó sería un caos... ;)

Un saludo y muchísimas gracias a todos!

dex dijo...

@P0is0n, entiendo que el sniffer no funcione en 3G, sino sería la leche.

Estaremos atentos, pues.

bravus dijo...

wow poi recien veo esto se ve interesante esta tool la vajo y pruebo aver

P0is0n dijo...

@dex: En 3g pondría al descubierto un par de conversaciones... seguramente las que estén en la misma antena que tu y eso depende de la distancia y tal... Pero imposible me parece a mi... ;)

@bravus: Gracias bravus!

Un saludo a todos y gracias otra vez!

Anónimo dijo...

@dex @P0is0n lo del 3g no es posible, independientemente de que estés en la misma celda. A menos que hayas conseguido romper el cifrado claro... :)

Nak dijo...

Hola, he estado trasteando con WireShark directamente (sin usar tu aplicación) y con varios que tenemos WhatsApp. Lo curioso es que el tráfico que capturo es de sólo algunos móviles y no de todos. Parece que en algunos casos el envío se hace a otra ip+puerto y no se ve en WireShark. En otros sí que se ve claramente que es tráfico Jabber y el contenido de los mensajes enviados. Las versiones de WhatsApp son las mismas. ¿Sabes algo?

P0is0n dijo...

@Anónimo: Imposible como dije antes... ;)
@Nak: Es posible que usen más de un puerto, estate atento y si ves algún puerto a mayores del 5222 me avisas para reprogramar la herramienta... :p

Cosas peores tiene WhatsApp que no cuenta... guarda conversaciones y contactos en una db sqllite y guarda una captura de pantalla de la última conversación... :O

Un saludo chicos y otra vez, gracias!

Anónimo dijo...

Muy interesante, aunque selecciono el adaptador y no filtra nada de tráfico (y eso que lo genero). Al tener instalado winpcap debería estar la tarjeta de red en modo promiscuo.... What a pity! :___(

Anónimo dijo...

Si que funciona pero sale el texto Codificado. Revisa tus tarjetas de red.

Seritx dijo...

A espiar a la novia se ha dicho!! xD Muy bueno puason!

O_o dijo...

FAKE Muestra texto codificado

Anónimo dijo...

Hola, ¿alguien sabe como detectar los adaptadores en wine? El programa se ejecuta pero no me sale ninguna tarjeta de red.

Muchas gracias!

P0is0n dijo...

No es Fake... WhatsApp envia al principio de conexión texto codificado en b64... si lo descodificas no hay nada legible... :O
El programa está limpio, si no crees en su fiabilidad puedes bajar el código fuente y compilarlo tu mismo... :p

Un saludo!

P0is0n dijo...

Hola Anónimo, ¿Qué tal? Bueno, una vez instalado winpcap debes reiniciar el ordenador para que te detecte la tarjeta de red. Puede ser ese el problema... puedes igual compilarlo para linux cambiando algun lstrlen a strlen y listo ;)

Un saludo y espero que te funcione!

Anónimo dijo...

Muy buenas, una vez introducido el número de tarjeta se cierra solo el terminal. ¿Sabes que podría ser? Gracias

Alex dijo...

Gran herramienta, pero he llegado tarde con el cierre de Megaupload... no te importaría volver a subir el archivo a otro servidor que esté aún operativo y que el FBI no haya cerrado? Gracias por vuestro trabajo y por hacernos reir con la seguridad de webs ;)

P0is0n dijo...

@Anónimo: ¿En que S.O lo estás utilizando? Gracias por comentar!
@Alex: ¡Resubido para que disfrutes! Gracias por las críticas tan positivas :)

Un saludo ;)

Anónimo dijo...

Buenas, que tal?
recibo mensajes codificados, pone en uno por ejemplo:

Mobile-OS:3tjF

(el movil es htc con windows phone)

Sandman dijo...

Si, yo solo he conseguido que el programa me lea esa "mierda cifrada" y nada más...lo he dejado horas pero el unico resultado es Mobile-OS:3tjFfsfghettetukjfh5trfgd

Seguramente haga algo mal.

Felicidades Poison!

Ino dijo...

Puf, no consigo compilar en ubuntu, me pide la lib de windows.h
:-(
Voy a seguir intentandolo.
Gracias por el aporte.

Vivilia dijo...

Hola, estamos en la búsqueda de expertos en tecnología para redacción de contenidos. Te invitamos a que te des de alta en nuestro sitio en www.vivilia.com. Gracias.

Anónimo dijo...

P0is0n. Me interesaria ponerme en contacto contigo. ¿Podrías facilitarme un correo de contacto?

Un saludo

P0is0n dijo...

@Anónimo: Puedes ponerte en contacto conmigo:
-A través de p0is0n@seginformatica.net enviando un mail.
-A través de @p0is0nseginf en twitter.

Un saludo, estaré atento!

Anónimo dijo...

Solo para plataformas Microsoft, no?

Anónimo dijo...

Un blog cojonududo y muy interesante.
Sigue así
Un saludo

Anónimo dijo...

perdon, me equivoque al teclear *cojonudo

Anónimo dijo...

[stile@stile ~]$ gcc -o whatsapp main.c
main.c:3:21: fatal error: windows.h: No such file or directory
compilation terminated.

Muy bien, muy útil.

P0is0n dijo...

@Anónimo2: Elimina el include a windows.h y sustituye todas las funciones de WinAPI (lstrlen, lstrcat) por su equivalente en string.h (strlen,strcat) :)

Un saludo!

Anónimo dijo...

Para hacer pruebas funcionaria bajo una red wifi propia! O debe ser publica?

P0is0n dijo...

@Anónimo: Funcionaría en ambas redes... sin embargo tengo que volver a sniffear todo porque creo que puedo hacerlo mucho más limpio }:T

Saludos!

Anónimo dijo...

hola amigo poseidon como puedo arrancar esto en wincap o como le hago paso por paso porfis

alterax dijo...

Hola ¿Cómo averiguo el número de la tarjeta? Salu2

Anónimo dijo...

Increible! Voy a probarlo....gracias y sigue con el blog que esta wapisimo xD

Publicar un comentario en la entrada