Telegram: Назван способ определения IP-адреса собеседника
Российский программист
«Наш сотрудник Денис Симонов, известный под ником n0a, написал утилиту под определение айпишников контактов в мессенджере. Она анализирует трафик через протокол STUN, который устанавливает соединение между юзерами. В одном из передаваемых им атрибутов лежит публичный айпишник отправителя — его скрипт и ловит», — говорится в сообщении.
«Одним из ключевых атрибутов, передаваемых в сообщениях STUN, является XOR-MAPPED-ADDRESS. Этот атрибут содержит публичный IP-адрес отправителя сообщения. Направление пакета определяет, чей именно IP-адрес содержится в этом атрибуте: если фрейм направлен ко мне, XOR-MAPPED-ADDRESS покажет мой IP, а если он отправлен от меня — то IP моего собеседника», — детализирует уже сам Симонов.
Программист заявил, что ему удалось автоматизировать процесс получения IP-адреса собеседника. Для этого он использовал консольную версию Wireshark — tshark. После запуска скрипта и звонка собеседнику в течении пяти секунд происходит дамп сетевого трафика на сетевом интерфейсе.
«После этого скрипт конвертирует данные в текстовый формат с выделением двух IP из атрибута XOR-MAPPED-ADDRESS, где один из IP принадлежит нашему клиенту», — заключил Симонов.
Подробнее: Рассказываю о том, как мне удалось определить IP адрес своего собеседника в Telegram при помощи аудио вызова в мессенджере. Плюс написал bash-скрипт для автоматизации.
Wireshark и STUN
Недавно передо мной стояла задача определить IP-адрес собеседника в мессенджере Telegram. Для этой цели я использовал инструмент анализа сетевого трафика Wireshark, где и обнаружил трафик протокола STUN.
Одним из ключевых атрибутов, передаваемых в сообщениях STUN, является XOR-MAPPED-ADDRESS. Этот атрибут содержит публичный IP-адрес отправителя сообщения. Направление пакета определяет, чей именно IP-адрес содержится в этом атрибуте: если фрейм направлен ко мне, XOR-MAPPED-ADDRESS покажет мой IP, а если он отправлен от меня – то IP моего собеседника.
Wireshark и протокол STUN
Принцип работы довольно простой. После старта в течении 5 секунд идет дамп сетевого трафика на сетевом интерфейсе, затем конвертируется в текстовый формат с выделением двух IP из атрибута XOR-MAPPED-ADDRESS, где один из IP принадлежит нашему клиенту.
Демонстрация работы скрипта
Сравниваем адреса с нашим публичным адресом и получаем IP адрес удаленного клиента (по пути сравнивая IP на принадлежность к AS Telegram). Бонусом скрипт делает запрос для получения информации об IP адресе, так как не обязательно IP клиента будет принадлежать сотовому оператору. Это может быть и корпоративная сетка тоже.
UPD 2023: Я переписал скрипт на Python, должно работать стабильнее.
PS. Возможна работа на Android смартфонах с termux и root доступом. Без него трафик не захватить. thshark на termux ставиться легко: pkg install root-repo && pkg install tshark.
Проект на github:
Российский программист
Для просмотра ссылки необходимо нажать
Вход или Регистрация
о том, что нашел способ определения IP-адреса собеседника в мессенджере Telegram с помощью аудиозвонка. На исследование, выложенное в открытый доступ еще в июне,
Для просмотра ссылки необходимо нажать
Вход или Регистрация
внимание подписчиков ИБ-компания Т.Hunter.![Speech balloon :speech_balloon: 💬](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f4ac.png)
![Speech balloon :speech_balloon: 💬](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f4ac.png)
Программист заявил, что ему удалось автоматизировать процесс получения IP-адреса собеседника. Для этого он использовал консольную версию Wireshark — tshark. После запуска скрипта и звонка собеседнику в течении пяти секунд происходит дамп сетевого трафика на сетевом интерфейсе.
![Speech balloon :speech_balloon: 💬](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f4ac.png)
Подробнее: Рассказываю о том, как мне удалось определить IP адрес своего собеседника в Telegram при помощи аудио вызова в мессенджере. Плюс написал bash-скрипт для автоматизации.
![tg_get_ip_f.png](https://n0a.pw/content/images/size/w1140/2021/08/tg_get_ip_f.png)
Wireshark и STUN
Недавно передо мной стояла задача определить IP-адрес собеседника в мессенджере Telegram. Для этой цели я использовал инструмент анализа сетевого трафика Wireshark, где и обнаружил трафик протокола STUN.
STUN (Session Traversal Utilities for NAT) – это стандартизированный протокол, предназначенный для помощи устройствам, находящимся за NAT (Network Address Translation), в определении своего внешнего IP-адреса и типа NAT, который используется на их шлюзе. Суть протокола заключается в том, чтобы предоставить возможность устройствам узнать свой публичный IP-адрес и определить, какие порты доступны для исходящих соединений.
Одним из ключевых атрибутов, передаваемых в сообщениях STUN, является XOR-MAPPED-ADDRESS. Этот атрибут содержит публичный IP-адрес отправителя сообщения. Направление пакета определяет, чей именно IP-адрес содержится в этом атрибуте: если фрейм направлен ко мне, XOR-MAPPED-ADDRESS покажет мой IP, а если он отправлен от меня – то IP моего собеседника.
![wireshark_telegram.png](https://n0a.pw/content/images/2021/08/wireshark_telegram.png)
Wireshark и протокол STUN
Автоматизация
Потратив немного времени решил автоматизировать процесс получения IP своего визави в Telegram с помощью консольной версии Wireshark – tshark.Принцип работы довольно простой. После старта в течении 5 секунд идет дамп сетевого трафика на сетевом интерфейсе, затем конвертируется в текстовый формат с выделением двух IP из атрибута XOR-MAPPED-ADDRESS, где один из IP принадлежит нашему клиенту.
![--------------2023-08-28---18.25.45.png](https://n0a.pw/content/images/size/w1600/2023/08/--------------2023-08-28---18.25.45.png)
Демонстрация работы скрипта
Сравниваем адреса с нашим публичным адресом и получаем IP адрес удаленного клиента (по пути сравнивая IP на принадлежность к AS Telegram). Бонусом скрипт делает запрос для получения информации об IP адресе, так как не обязательно IP клиента будет принадлежать сотовому оператору. Это может быть и корпоративная сетка тоже.
Как узнать IP в Telegram?
- Устанавливаем
Для просмотра ссылки необходимо нажать Вход или Регистрациядля Linux или Mac.
- Устанавливаем tshark (sudo apt install tshark или скачиваем Wireshark для macOS. tshark идет в комплекте).
- Запускаем скрипт.
- Звоним тому, чей IP адрес нам интересен.
- Profit! Мы получили IP нашего Telegram собеседника!
- Можно класть трубку.
Установка и запуск на примере Ubuntu 20
Код:
$ sudo apt update
$ sudo apt install -y python3-pip python3-venv tshark
$ git clone https://github.com/n0a/telegram-get-remote-ip
$ cd telegram-get-remote-ip
$ python3 -m venv venv
$ source ./venv/bin/activate
$ sudo pip3 install -r requirements.txt
$ sudo python3 tg_get_ip.py
UPD 2023: Я переписал скрипт на Python, должно работать стабильнее.
PS. Возможна работа на Android смартфонах с termux и root доступом. Без него трафик не захватить. thshark на termux ставиться легко: pkg install root-repo && pkg install tshark.
Проект на github:
Для просмотра ссылки необходимо нажать
Вход или Регистрация
Для просмотра ссылки необходимо нажать
Вход или Регистрация