Cómo espiar WhatsApp desde su teléfono Android o iPhone con mitmproxy
Si desea utilizar otras herramientas o escribir aplicaciones web que enviar o recibir mensajes de WhatsApp (por ejemplo WhatsAPI ), usted tiene que encontrar una manera de olfatear la contraseña WhatsApp desde su teléfono inteligente.
Hasta hace poco, esta contraseña era sólo un hash MD5 de su IMEI (o dirección MAC), pero eso ha cambiado cuando fue descubierto.
Desde entonces, el servidor de WhatsApp asigna una contraseña para cada dispositivo / cuenta a primeros registros.
Este tutorial muestra cómo capturar la contraseña de su cuenta de WhatsApp utilizando el protocolo SSL / TLS mitmproxy de proxy.
Una vez que tenga esta contraseña, se puede utilizar para comunicarse con los servidores de WhatsApp directamente o a través de un marco. Esta es la primera parte de una de dos partes tutorial. La segunda parte muestra cómo enviar y recibir mensajes de WhatsApp a través de PHP .
Tenga en cuenta: solamente Linux tutorial!
Tenga en cuenta que este es un tutorial es para los usuarios de Linux. Utiliza el / SSL de proxy TLS mitmproxy para capturar la conexión segura entre el teléfono y los servidores de WhatsApp. Todas las cosas que ha hecho con mitmproxy en este tutorial es básicamente lo que hace MissVenom para usuarios de Windows. En el proximo tutorial les enseñare como utilizar MissVenom en windows por ahora continuemos con linux.Cómo funciona
Este tutorial usa un ataque man-in-the-middle para interceptar la comunicación entre el teléfono y los servidores de WhatsApp.Para ello, hay que redirigir todo el tráfico desde el teléfono a la máquina que ejecuta Linux mitmproxy (cambiando puerta de enlace predeterminada de su teléfono).
Mitmproxy, una aplicación de man-in-the-middle representación mostrará entonces todos HTTP de su teléfono (S) de petición / respuesta. Mientras mitmproxy se está ejecutando, este caso es necesario para limpiar todos los datos de usuario de WhatsApp desde su teléfono y configurarlo como si fuera un nuevo usuario, por lo que se puede oler en la conversación de su teléfono y los servidores de WhatsApp mientras que la cuenta de WhatsApp la contraseña se intercambia.
No se preocupe. Suena más complicado de lo que es y su WhatsApp sólo se verá el mismo después. Aquí está paso a paso:
- Configurar y ejecutar mitmproxy y preparar el teléfono (como se describe en este tutorial )
- Deja de WhatsApp y limpie los datos de usuario de WhatsApp
- WhatsApp abierta y volver a configurar su cuenta
- Olfatear la contraseña mediante el control de la (S) de tráfico HTTP
Más información sobre mitmproxy
El tutorial no incluye una gran cantidad de información acerca de cómo configurar mitmproxy y lo que realmente hace. Si desea más información, por favor, echa un vistazo a mi blog anterior acerca de cómo utilizar mitmproxy en general, o por supuesto, ir a la página web mitmproxy y leer el manual.Vamos a hacerlo!
Los pasos siguientes corresponden al corto paso a paso por encima. Dado que no tengo un iPhone, las pantallas de WhatsApp son de la versión de Android, pero debería funcionar igualmente en un iPhone.Configurar y ejecutar mitmproxy y preparar su teléfono
Lo primero que necesita para configurar mitmproxy como se describe en el capítulo 2 de como utilizar mitmproxy . En pocas palabras, este tutorial se muestra cómo habilitar el reenvío IP, configurar iptables para redirigir todo el tráfico del puerto 80 y 443 de 8080, así como la forma de instalar y ejecutar mitmproxy.Tenga en cuenta: Las explicaciones sobre este paso se reducen al mínimo. Salida del poste sobre mitmproxy para leer más.
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8080
apt-get install python-pyasn1 python-flask python-urwid
pip install mitmproxy
mitmproxy -T --host
En el teléfono, es necesario instalar el certificado CA mitmproxy:
Y luego cambiar su puerta de entrada estándar:
Para instalar mitmproxy y proxydroid. La primera de ellas como bien indica su nombre, se trata de un proxy con capacidades de realizar ataques mitm. Es muy similar a Burp o ZAP, pero para línea de comandos.
Está escrita en python y permite modificar tráfico automáticamente mediante scripts. La segunda es una aplicación que instalaremos en nuestro móvil y que añadirá reglas en el firewall para redirigir todo el tráfico HTTP/S hacia mitmproxy.
Para montar nuestro laboratorio, primero deberemos instalar en nuestra máquina mitmproxy. En Debian/Ubuntu se puede hacer con:
# apt-get install python-pip # pip install mitmproxy
Una vez instalado, iniciamos mitmproxy para que nos genere la CA. Los certificados los podemos encontrar en /home/usuario/.mitmproxy/.
En nuestro caso, nos interesa el archivo mitmproxy-ca-cert.cer que tendremos que copiar a nuestro dispositivo Android en la carpeta /sdcard/Downloads/. Una vez copiado el certificado en la memoria del teléfono, ya lo tenemos casi hecho. Para instalarlo en Android 4 (En otras versiones no debe diferir mucho) hay que ir a Ajustes -> Seguridad -> Instalar desde almac dispositivo.
Nos aparecerá un popup con los datos y a partir de este momento podremos ver el certificado en el apartado Credenciales de confianza
Hecho esto, cuando mitmproxy genere los certificados para cada sitio, la CA que acabamos de instalar le garantizará al móvil que son confiables y podremos descifrar el tráfico.
Ahora solo nos queda redirigir todo el tráfico hacia nuestra máquina para analizar ese tráfico cómodamente.
Para ello, utilizaremos proxydroid (necesitamos ser root), y lo configuraremos mínimamente con la dirección IP donde está corriendo el mitmproxy, el puerto y el tipo de proxy:
Si usted ha hecho todo correctamente, usted debería ser capaz de ver todo el tráfico que el teléfono envía, como esto:
Cerrar WhatsApp y datos de usuario clara
WhatsApp sólo se negocia una nueva contraseña con el servidor cuando por primera vez se comunica con ella. Si ya tiene WhatsApp en marcha y funcionando en su dispositivo iPhone o Android, lo que necesita para limpiar los datos del usuario, de modo que WhatsApp puede negociar una nueva contraseña - que luego se puede olfatear usando mitmproxy.El borrado de los datos de usuario existentes es muy simple. Sólo tienes que ir a Ajustes, el Administrador de aplicaciones y vaya a WhatsApp. En la pantalla de WhatsApp, haga clic en "Forzar detención" y luego "Borrar datos".
Tenga en cuenta que de acuerdo con el comentario de ADTC , WhatsApp no copia de seguridad de los mensajes en sus servidores, pero en el dispositivo local a las 4 am cada noche. Todavía no he doble comprobado esto, pero yo sólo quería estar seguro de que puede haber perdido algunos mensajes antiguos.
Sniff contraseña WhatsApp y restaurar los datos de usuario
Después de limpiar todos los datos de usuario de WhatsApp, es como si usted acaba de comprar un teléfono nuevo o restablecer el sistema operativo de su teléfono inteligente.La próxima vez que abra WhatsApp, tiene que volver a conectarse a su cuenta de WhatsApp y el intercambio de una nueva contraseña de inicio de sesión. Teniendo en cuenta que ahora tiene un rastreador en su lugar y puede capturar toda la comunicación del teléfono, sólo tiene que leer la contraseña fuera del aire.
Asegúrese de que mitmproxy se está ejecutando. Después, simplemente abrir WhatsApp y siga las pantallas:
Examinar los resultados mitmproxy
Si todo ha ido según lo planeado, ahora debería ver un par de peticiones al dominio v.whatsapp.net - especialmente algo como esto:- https://v.whatsapp.net:443/v2/exist?cc=49&in=<<your entrada >> y ...
- https://v.whatsapp.net:443/v2/code?cc=49&in=<<your entrada >> y ...
- https://v.whatsapp.net:443/v2/register?cc=49&in=<<your entrada >> y ...
Puede encontrar su contraseña de la cuenta de WhatsApp en el último de esos tres solicitudes (https://v.whatsapp.net:443/v2/register?...). Use las teclas de flecha para acceder a esta entrada y pulse la tecla INTRO. A continuación, pulse TAB para pasar al resumen 'Respuesta'. Y ahí está - una respuesta JSON del servidor de WhatsApp como una respuesta a la solicitud de registro,. Su nombre de usuario WhatsApp se indica mediante la tecla "entrada", la contraseña de la tecla "PW".
Copiar la contraseña y guardar la conversación con el servidor mediante el uso de WhatsApp de mitmproxy función de ahorro: Volver a la pantalla principal pulsando q, y luego presionar s e introduzca un nombre de archivo (por ejemplo /home/user/WhatsApp-password.mitmproxy). Más tarde, puede cargar esta conversación con.
Utilice la contraseña en los scripts
Entonces, ¿cuál es la buena contraseña para? Se puede utilizar esta contraseña en scripts o aplicaciones de Internet para enviar y recibir mensajes de WhatsApp. Yo uso el marco PHP WhatsAPI para recibir notificaciones de mi servidor y HTPC. A partir de ahora, sólo lo uso para recibir alertas y advertencias de mi servicio de monitorización ( Nagios ) y recibir notificaciones de mis guiones de descarga de podcast.Lo que esto no se puede hacer
Un comentario adicional a lo que este método no logra: Por desgracia, el método descrito anteriormente no permite leer o modificar los mensajes de WhatsApp se envían desde su teléfono o recibidos por el teléfono. La aplicación WhatsApp sólo realiza tareas administrativas a través de HTTPS (tales como cambios de estado o el inicio de sesión). No obstante, enviar o recibir mensajes a través de HTTPS.En su lugar, WhatsApp utiliza un derivado del Jabber / XMPP protocolo para comunicarse. Se comunica en el puerto 5222
Desde la Actualización (julio de 2013): WhatsApp no utiliza TLS / SSL en el puerto 5222 como he dicho anteriormente injustamente. En su lugar, utiliza su propio protocolo propietario para intercambiar y cifrar mensajes.
Eso hace que huele en la conexión un poco más complicado, ya que simplemente escuchar a la toma no es suficiente.
Mientras que los mensajes de WhatsApp individuales ( "nodos") pueden ser extraídos utilizando tcpdump (Proveedores: tcpdump -i eth0 -vs -X 'puerto 5222'), los resultados son bastante decepcionantes en un primer momento:
El mensaje real comienza justo después de la cabecera TCP, por lo que en este ejemplo después de 52 bytes (8000 5e54 18d1 a86c 8e70 ...).
Cada mensaje puede contener varios nodos, cada uno de los cuales tiene un nombre de etiqueta, y puede tener atributos y contenido (datos) - al igual que en XML.
Sin embargo, debido XML es hablador, WhatsApp codifica los nombres de etiqueta una atributos con un diccionario, por lo que ciertos números corresponden a ciertas etiquetas.
El fragmento anterior es una representación codificada y encriptada de los siguientes Etiquetas XML:
<message from = "49xxxxxxxx@s.whatsapp.net" id = "1375004720-28" type = "chat" t = "1375034628" >
<notify xmlns = "urn:xmpp:whatsapp" name = "Philipp Heckel" > </notify>
<request xmlns = "urn:xmpp:receipts" > </request>
<body> Hi there! </body>
<offline> </offline>
</message>
Los nodos pueden ser cifrada o no cifrada: En un "apretón de manos" inicial con el servidor de WhatsApp, el cliente se autentica utilizando su nombre de usuario y contraseña (véase más arriba). Después de eso, el servidor proporciona un desafío que - en combinación con la contraseña - se utiliza para cifrar el resto de la comunicación. El cifrado real se basa en un sistema de cifrado RC4 con tamaño de clave de 256 bits, y la clave se deriva de la contraseña y el desafío (como una sal) usando PBKDF2 .
Todas estas cosas hacen que sea más complejo para oler los mensajes del hilo. Sin embargo, los chicos de WhatsAPI ya aplicadas con éxito este protocolo, de modo que una gran parte de su código puede ser reutilizado para leer mensajes de WhatsApp de la interfaz de red.
¡Si te gustó y sirvió de mucha ayuda este post , puedes enviar tu donación! a este link
No hay comentarios
Comentarios