Тел.: +996550559825, +996700511045, +996312379145

Раскрываем номера пользователей Telegram

image

Последнее время безопасность Telegram (далее – телеграм) все чаще поддается критике и встает вопрос: «действительно ли телеграм хорошо защищен?»

Как и для любого мессенджера – важна его максимальная интеграция со сторонними сервисами. Для примера, телеграм в первую очередь работает с вашей телефонной книгой. Он синхронизирует ваши номера со своей базой и проверяет на наличие регистрации в телеграме. Далее – телеграм предлагает вам свободные сообщения и звонки с вашими потенциальными друзьями. «Удобно» — что еще сказать?

Воспользуемся этой удобностью.

Берем в руки Android. Я взял Samsung A3. Подключаем к ПК. Предварительно экспортируем контакты и получаем файлик с названием vCard.vcf. Следующие 5 минут прочтения этой статьи он будет нашим лучшим другом. Копируем себе на рабочий стол, открываем через текстовый редактор и видим следующую картину:

image

Каждый наш контакт заносится в некий шаблон с началом тега «BEGIN:VCARD» и концом «END:VCARD». Между ними находятся: имя контакта, телефон и фото (если есть) – это основные параметры, которые нам будут нужны.

Что ж, хорошо, но что это нам дает? А то, если мы создадим свою базу по подобному шаблону, то сможем импортировать ее обратно в наш телефон и использовать далее по назначению. Память андроида позволяет сохранять до 20 тысяч контактов. Ищем базу номеров в паблике/покупаем/генерируем сами, исходя из нашего региона, и т.д.

Смысл в том, чтобы собрать базу из 20 тысяч номеров, присвоить им номера и импортировать в наш телефон.

Я просто купил готовую базу для спама, номера которых зарегистрированы в телеграме. На PHP написал скриптик для генерации шаблона «name;number» и создал свой собственный vCard.vcf:

image

И так, мы имеем базу из 20к контактов, имена которых не известны, как и номера. Но мы же с вами собрались за экшеном, поэтому копируем эту базку на флешку нашего андроида, через контакты импортируем данную базу:

image

В итоге, имеем телефонную книгу из 20к контактов. Далее – самое интересное. Мы подрубаем интернет на телефоне. Желательно, Wi-Fi. Запускам клиент телеграма и, О, ЧУДО! «Телега» предлагает нам синхронизацию контактов, так как считает, что у нас якобы появились новые контакты, а, значит, потенциальные друзья! Мы соглашаемся, конечно же. И что делает телега? Телеграм проверяет ваши номера из телефонной книги на регистрацию в своей базе и выдает вам фото контактов, которые зарегистрированы!

И так, мы теперь знаем номер телефона и фото пользователя. Что же нам с этим делать? А делаем мы следующее: экспортируем все наши контакты. Стандартный экспорт контактов из телеграма не поможет, так как он не показывает фото, поэтому мы можем, воспользовавшись API, написать свой скриптик или взять готовый. Я взял готовый с гитхаба «ExportTelegramContacts». В конфиге надо прописать данные своего API, зарегистрировавшись как разработчик. Делается все за минуты.

Запускаем приложение через консоль

image

Авторизуемся и вводим команду на экспорт с фото!

image

Спустя некоторые секунды/минуты получаем файлик с форматом:

image

Абсолютно такой же вид, как и был у нас при генерировании импорта, только добавилось поле «фото». Это аватарка нашего контакта, зашифрованная base64.

То есть, телеграмм «сожрал» нашу базу из 20к номеров и выдал нам все контакты, которые зарегистрированы в системе, попутно привязав к ним реальный аватар пользователя: (фото есть не у всех пользователей).

image


Раз телеграм пробил реальных пользователей на регистрацию, то выдал нам их фото. Таким образом, мы знаем, кому принадлежит данный номер, но по прежнему не знаем логина и реального имени пользователя. Чтобы узнать логин пользователя, нам нужен другой аккаунт в телеграмме, с ранее добавленными пользователями по их логину.

Ну, а потом все повторяется. Экспортируем базу через ExportTelegramContacts и имеем такой же файл формата vcf с данными пользователей (фото, имя, логин).

Затем нам просто нужно сравнить 2 файла и перебрать всех пользователей из первого и второго аккаунтов. Сравнивать мы будем, конечно же, по фото (base64). Соответствующие фото будут означать найденных пользователей, следовательно, мы объединим их фото, логин, номер и имя. Таким образом, мы пробили данные нужных нам пользователей.

Конечно, этот процесс не быстрый и дает мало шансов, но, если нам нужно пробить пару тысяч пользователей, то загружая и выгружая по 20 тысяч пользователей, а затем, сравнив их, можно добиться вполне не плохих результатов.

И так, подведем итоги! Все просто! Имеем 2 телеграм аккаунта. Один нам нужен для импорта номеров, которые будем пробивать. В другой добавим интересующих нас людей. Экспортируем из первого аккаунта все наши контакты, которые определил телеграм, как друзей. Вид экспорта будет: «номер_телефона: фото». Из другого экспортируем те же самые контакты, только вид уже будет: «логин: фото».

Ну, а дальше все просто. Сравниваем два файла и перебираем циклично все контакты, находим те, которые соответствуют фото.

Таким образом, фото из одного списка, которое соответствует фото из друго списка, приравнивается к нашей жертве, и мы узнаем его номер.

Ведь, фото = фото => логин + номер

Наглядный скриптик для полного перебора пользователей: (извиняюсь за красивый код).

image


Подведем итоги!


Процесс 1 цикла поиска занял у меня около 10 минут. За 10 минут я перебрал 20 тысяч номеров. В сутки можно прогнать до нескольких миллионов. Полностью автоматизировать этот процесс не удалось, поэтому работать придется руками, что весьма неудобно. К тому же, не все пользователи ставят фото в свой профиль. Ни с какими лимитами или ограничениями я не столкнулся. В течение нескольких часов тестировал по максимуму. Не смотря на минусы и плюсы сие метода — сама идея, что номер пользователя телеграмма можно раскрыть – имеет место быть.
 
https://habr.com/post/422687/