lunes, 19 de septiembre de 2011

Cómo conseguir la IP de tus contactos de Windows Live Messenger


Una de las cosas que siempre me preguntan es como puedo saber las IP de las personas con las que hablo en el Windows Messenger, y si andas por la red solo encontraras lo clásico mándale un archivo y verifica las conexiones salientes y bla bla ahora eso es algo aburrido ya que no ciempre hay el pretexto para enviar una imagen y más a personas que no conoces, así que de todo esto le eche un poco de tiempo a investigar y a querer hacer un artículo ya que he descubierto muchas cosas, pero creo que me quedaría corto a la tan muy buena explicación que encontró en el Blog de Thor, si el mismo creador de la FOCA, así que hare un copy & paste de su post, pero sin duda los invito a visitar su blog http://el-blog-de-thor.blogspot.com/ ya que es uno de los mejores blog en español hay les dejo el artículo.
Lo primero que debemos saber es cómo funciona Messenger por encima. La autenticación la realiza conectándose a los servidores de Microsoft vía SSL. Una vez autenticado todas las conversaciones pasan por los servidores de Microsoft sin ningún tipo de cifrado (así que cuidado con utilizar Messenger en redes inseguras).
Un tema aparte es como se envían entre los contactos ficheros, imágenes, avatares y emoticonos. Para ello Messenger utiliza un protocolo p2p. Así que cuando un contacto solicita por ejemplo nuestro avatar se inicia una negociación entre nosotros y el contacto para ver cómo es posible realizar la conexión. En este punto ambas partes se intercambian las IPs internas y externas, puertos, tipo de conexión, si usamos NAT, UPnP, etc…
En este punto a donde podemos aprovecharnos para saber la IP del otro contacto.
Con netstat

La opción más fácil es utilizar netstat para monitorizar las conexiones y ver las nuevas conexiones que realiza el proceso del Messenger. Vamos a ello. Todo desde la consola.

El proceso encargado de las comunicaciones de Messenger es wlcomm.exe. Así que obtenemos su PID:
tasklist | find "wlcomm.exe"
Ahora con el PID podemos filtrar la salida de netstat para quedarnos solo con las conexiones que realiza dicho proceso(requiere permisos de administrador):
netstat -nabo | find "PID_ENCONTRADO"
Ahora en este punto iniciamos una conversación con el contacto del que nos interesa saber la IP y le enviamos un emoticono personalizado, para no levantar sospechas lo mejor es un emoticono transparente o blanco. Se iniciará la negociación entre los dos clientes y se iniciará la conexión. Volvemos a lanzar el comando anterior y veremos una nueva conexión de nuestro contacto.

Con Wireshark
Vamos a filtrar los paquetes obtenidos por Wireshark para quedarnos con aquellos donde se realiza la negociación entre dos contactos. De ahí cogeremos la IP externa y las internas.
Wireshark ofrece el filtro “msnms” para quedarnos con los paquetes del procolo de Messenger.

Mirando paquete a paquete en uno de ellos encontraremos algo así:

frame[0:] contains 73:74:72:6f:50:64:6e:41:73:72:64:64:41:6c:61:6e:72:65:74:78:45:34:76:50:49:3a:20:36:34:37:33:3a:31:39:2e:35:30:31:2e:39:34:2e:35:38:0d:0a or frame[0:] contains 73:72:64:64:41:2d:6c:61:6e:72:65:74:78:45:34:76:50:49
Con mi programa (El de Thor) “GetMSNIPs”
Usando Wireshark con el filtro se pueden obtener las IPs de una manera bastante cómoda. Pero me apetecía hacerlo un poco más sencillo y ya de paso programar algo usando WinPcap.
El resultado es este programa que ahora expongo, le he llamado GetMSNIPs, me encantan los nombres originales. No pongo el código aquí que son 300 líneas.
GetMSNIPs: Source y binario.
Una captura de cómo funciona:
Modo de uso:

    Si no tiene instalado WinPcap, instálelo!.
Arranque “GetMSNIPs” y seleccione la interfaz con la que se conecta a internet.
Inicie Windows Live Messenger y cámbiese de avatar, utilice uno que no haya usado antes (así sus contactos no lo tendrán y se iniciará una conexión P2P para su envío).
Espere un tiempo ó inicie conversaciones con sus contactos para forzar a que carguen su avatar y capturar así su IP.
Así que ya sabéis, si usáis Windows Live Messenger estas diciendo a tus contactos tu dirección IP. No es un gran problema, pero está bien saberlo.
/* FIN */
Solo me queda agradecer a Thor por esta entrada jaja e invitarlos a ver su publicación para que agradezcan y pregunten el man siempre responde.

3 comentarios:

  1. Esta buena La info, y el blog de thor esta tambien interesante. Lo de saber la ip de las personas con quienes chateas es una duda que muchos tienen. Brabazo man. Nos vemos.

    ResponderEliminar
  2. no me funciona el metedo con wincap y GetMSNips hise de todo y se queda en :
    listening on Microsoft.... =/

    ResponderEliminar