jueves, 28 de enero de 2021

Obtener IP de un contacto mediante una llamada en Telegram

 Denis Simonov publicó (original en ruso)  publicó recientemente un artículo demostrando cómo a través de una llamada de Telegram es posible interceptar la dirección IP del interlocutor, necesitando únicamente 5 segundos de llamada para determinarla.



Para acelerar el proceso de explotación, Denis ha creado un repositorio de GitHub con un script en Bash. Además han publicado un artículo en español explicando el proceso paso por paso. 


$ wget https://raw.githubusercontent.com/n0a/telegram-get-remote-ip/main/tg_get_ip.sh 

$ chmod +x tg_get_ip.sh

$ sudo ./tg_get_ip.sh

Para proteger la privacidad de los usuarios de Telegram, la opción Peer-to-peer (P2P) en las llamadas de Telegram está activada por defecto sólo para “Mis contactos”. Los usuarios pueden aplicar más restricciones en este aspecto yendo a Ajustes de Telegram > Privacidad y seguridad > Llamadas.

Así puedes seleccionar si usas P2P con todos, tus contactos o con nadie.
Si la opción está configurada para “Mis contactos”, quiere decir que las personas que no estén en tus contactos no usarán el modo P2P.

Primero tenemos que saber que Telegram, al hacer las llamadas, usa un protocolo llamado stun.
Es un protocolo de red que permite a clientes NAT encontrar su dirección IP pública. Se suele usar en VoIP.


Ataque paso a paso

  • Lanzamos Wireshark en la interfaz por donde tengamos conexión a Internet
  • Llamamos a nuestra víctima (es necesario que coja la llamada para que el ataque funcione)
  • Una vez que nos ha cogido la llamada basta con esperar unos 5 o 10 segundos y ya deberíamos tener suficientes paquetes para averiguar su IP. Aquí podemos parar ya Wireshark o cortar la llamada.
  • En Wireshark filtramos por STUN


  • Nos vamos a encontrar con muchos paquetes, pero hay unos específicos que llevan las direcciones IP reales, tanto tuya como la de tu víctima, estos son los que llevan XOR-XXXXX-ADDRESS o Request user, por lo que podemos filtrar con


stun or stun.att.username or stun.att.ipv4-xord or stun.att.ipv4

  • Podemos ir examinando los paquetes mirando las direcciones IP de cada uno, esto se puede ver examinando el paquete y, en el apartado atributos, buscamos el XOR-XXXX-ADDRESS, o mirando en la dirección destino de los paquetes.


  • 7. Vamos descartando las siguientes IPs:
    a) IP privadas como 192.168.X.X, 10.X.X.X, etc
    b) Nuestra dirección IP pública, que también aparece. Para averiguarla se puede acceder a la siguiente página o, para los fans de la terminal:
 dig +short myip.opendns.com @resolver1.opendns.com

 (Esto sólo funciona sin VPN, ya que dependiendo de la VPN te cambia el resolutor DNS y tal vez no puedas acceder); otra opción por terminal es: curl -skL icanhazip.com
  • 8. Una vez llegados a este punto tendremos una lista de posibles direcciones IP, y para terminar de acotar, tendremos que descartar aquellas que pertenezcan a Telegram como tal. Esto se puede ver con la utilidad whois:
    a) Por consola de comandos: whois IP
whois ip

Y vemos que el netname pertenece a Telegram
Podemos filtrar un poco más la consulta por si nos resulta molesto con: 

whois IP | grep netname

 

  1. Una vez filtradas todas las IPs nos deberían quedar una o dos, siendo una de ellas  la de nuestra víctima.    

Fuentes:

https://site.cyberhunteracademy.com/2021/01/obtener-ip-mediante-telegram/

https://blog.segu-info.com.ar/2021/01/vulnerabilidad-en-telegram-permite.html

No hay comentarios:

Publicar un comentario