Рассуждения об анонимности Telegram длятся довольно долго. Многие считают что это мессенджер спецслужб, и сливает все и всем. Но почему тогда ни один человек не готов втоптать репутацию мессенджера в грязь с доказательствами? Проведите фактчекинг – найдите весомые доказательства сотрудничества Telegram, и опубликуйте их, но как мы видим на примере тех же “Важных историй” – таких доказательств попросту нет, зато есть ложь и манипуляция. 


Впрочем, несотрудничество Telegram по моему мнению уже стало привычкой для всех. Сотрудники учатся доставать информацию другими способами через лазейки самого мессенджера, или строить что-то поверх него.


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


Этап регистрации на котором все уже идет не так.


При регистрации в мессенджере вам нужно ввести номер. Уже неанонимное решение. Но вспомним 2013 год, Telegram строится как альтернатива WhatsApp – как проекту набирать популярность? Признайте, что найти контакты по номеру в разы удобнее чем по каким-то идентификаторам, которыми еще нужно обменяться, такой мессенджер с идентификаторами никогда бы не достиг такой популярности как Telegram. 


На этапе регистрации происходят ключевые моменты – кто-то считает что Telegram собирает imei, кто-то что звонки. По факту весь код открыт и с ним можно ознакомиться, ничего такого не собирается. Далее вам нужно получить SMS, которая на самом деле для telegram не бесплатная. Архитектура мессенджера почти сразу начала привлекать спамеров – поэтому сотни миллионов аккаунтов находятся за ботами, каждый из которых привязан к номеру на который произошла активация, которая стоила Telegram денег. 


Telegram добавил возможность регистрации только через официальные приложения с поддержкой SafetyNet или какого-то другого механизма который использует Google для доказательства подлинности – исключения составляют +888 номера, но об этом позднее. 


Вы получаете sms, хочу напомнить что в России от Telegram sms перестали приходить к некоторым операторам, про Signal таких новостей не припомню – это вообще беспрецедентный случай.


После получения sms вы проходите этап регистрации. Скорее всего если у вас ip сомнительного качества, например Tor, вас тут же забанят (даже если ваша sim в том же устройстве) исключения составляют +888 номера. На этапе регистрации вас, вероятно, уже связали с номером – через ботофермы.


Про ботофермы – я предполагаю что есть несколько типов: просто собирающие номера у открытых пользователей и собирающих регистрации (закрытые). Как это работает – каждый пользователь Telegram может скрыть свой номер при поиске, в этом моменте номер связать с аккаунтом возможности нет (только сделать проверку привязки, если он вас добавил в контакты), можно только подтвердлить наличие регистрации в Telegram (пробуете сменить номер вашего аккаунта на искомый – если выкинет ошибку, значит человек зарегистрирован, даже если аккаунт скрыт), поиск по несуществующему номеру как и по скрытом кстати вернет лишь что номер не в Telegram, что в итоге можно опровергнуть если копнуть глубже.


Доказать парсинговые ботофермы можно уже сейчас – зайдите на известный форум-маркет с продажей аккаунтов и посмотрите на самые дешевые – у них будут тысячи импортированных контактов (некоторые сбрасывают). 


В Telegram есть метод который позволяет узнать сколько человек импортировало незарегистрированный номер в Telegram. Когда пользователь удаляет импортированный контакт с сервера – этот счетчик понижается. Сейчас по несколько аккаунтов импортировало почти каждый номер, сами оцените масштаб парсинга – чуть подробнее об этом написано здесь: https://habr.com/en/articles/721512/


До 2024 года, когда вы регистрировались, всем приходило уведомление, о вашей регистрации, теперь это можно отключить при регистрации через iPhone, анонимности это вам к сожалению не прибавит и вот почему:


Само по себе импортирование номера означает что когда появится аккаунт с этим номером – он будет у вас в “книжке” – списке контактов. Поэтому что включена у вас эта опция, что нет, вы все равно будете в списке контактов парсеров. Более того, рассматрим простой вариант – предположим, вы зарегистрировались абсолютно анонимно, вашего номера нет ни у кого в связке с вашим контактом, вы выставили максимальные настройки приватности по номеру. Вы меняете номер и все равно появляетесь в списке контактов у людей (и или ботоферм). 


Процесс регистрации успешно пройден, вы уже оставили свой номер телефона


Теперь рассмотрим вашу дальнейшую модель поведения – как вы будете взаимодействовать с самим Telegram? 


По ID нельзя найти пользователя, можно только по id + access hash которые получаются при нахождении, например, сообщения пользователя, или получении его в списке участников, и т. п. Точно могу сказать, что на этапе регистрации ваш id + access hash уже могли записать навечно. Если у вас есть номер аккаунта, вы можете поделиться контактом, который будет работать вечно, даже если человек скрыл или сменил свой номер (а ваш номер есть у ботоферм).


Так вот, что вы будете делать? Писать только ботам? Большинство из них на конструкторах по типу livegram, которые наверняка собирают логи. Вступать в каналы? Но списки участников видны администраторам, а в администраторах каналов чтобы бороться с накруткой часто находятся боты, которые собирают списки участников и продают их. Вступите в чаты? Но многие проекты активно собирают информацию с чатов, вы не можете удалить сервисное сообщение о вашем вступлении, это должен сделать администратор (кто-то делает это ботами, кто-то нет). Списки участников чата тоже видны если их не скрыли администраторы (а среди них опять же боты которые собирают подробную информацию). Эту информацию также продают. Забавно видеть сообщения людей, у которых на границе находят сообщения в публичных чатах или их подписки в чатах из-за они думают что Telegram сливает все. 


И наконец переходим к самому интересному – написанию в ЛС. И вы, наверное, думаете что здесь никто ничего точно не узнает. И вы снова ошиблись. Ради удобства “продвинутые” пользователи готовы на многое – устанавливать особые клиенты, запускать особых бизнес ботов. Естественное желание читать удаленные сообщения, видеть то что пользователь желает скрыть взяло свое – пользователи устанавливают обфусцированный клиент в котором есть возможность удобно смотреть удаленные сообщения и делать много чего еще. Чтобы получить апдейты клиент (как минимум desktop, open-source) – отправляет запрос на получение идентификаторов на сторонний сервер. Отлично, операторы связи теперь знают наверняка что этот клиент пользуется таким клиентом, и что у него можно посмотреть переписку (все сохраняется дополнительно в локальную базу данных).


Но этот клиент не худшее решение. Есть еще swiftgram и telega. Первый является opensource, единственный клиент с нормальным продвинутым функционалом на iOS который есть в App Store. При этом собирает ваш ip и fingerprint при обращении к серверу. 


Смотрите Swiftgram/SGConfig/Sources/File.swift в репозитории https://github.com/Swiftgram/Telegram-iOS/ и смотрите где это используется


Telega вообще сохраняет ваш номер телефона при авторизации и кучу других метаданных к себе на сервер, откровенно шпионский проект, подобных куча в Иране.


Бизнес боты – удобное решение для управления ЛС, только вот боты получают все метаданные с текстом сообщений. Это решение может быть надежным если вы сами хостите такого бота, и то будет упираться в безопасность кода и безопасность хостинга. А использование сторонних ботов для сохранения сообщений попросту сольет ваше лс этому разработчику или хостингу. Достаточно будет найти разработчика и принудить к сотрудничеству. 


Так вот, даже если вы не используете ничего из вышеперечисленного, ваши собеседники могут. И что, будете вы у каждого спрашивать в каких клиентах он залогинен, а не сохраняет ли он ваши сообщения?


Ура, все ваши собеседники используют оригинальные клиенты, не используют бизнес боты, нигде не потеряли свои сессии, что дальше? 


А далее мы сталкиваемся с неповоротливостью протокола шифрования mtproto и тем на что telegram не может особо повлиять. auth_key_id – прикрепляется в начало каждого пакета. Исключение – Telegram Web. По auth_key_id и размеру пакета можно отслеживать использование аккаунта поверх различных сетей, отслеживать число аккаунтов. auth_key_id пользователя А отправляет изображение, и пользователь Б со своим auth_key_id скачивает – уже можно связывать их между собой, это зависит все от оборудования перехвата и хранения. Почитайте про СОРМ и PRISM, они способны на это. 


Далее идет различие в клиентах. Клиенты пишут разработчики, обычные люди. Кто-то успевает сделать функционал, кто-то нет, а ошибки совершают все. Паттерны клиентов можно выявлять, это может быть разный порядок версий протокола при звонках, потому что клиенты иногда используют разные библиотеки для звонков. Это может быть библиотека сжатия изображений, которая оставит свои следы https://github.com/kukuruzka165/materialgram/commit/7bdec9d94c5409fa7abe4a13f10b14dc77b1940e


Это также могут быть серверные ошибки, или особенности, такие как утечка порядка ваших сообщений, утечка вашего id при создании стикерпака, ранее была утечка вашего id при создании приватной ссылки, ранее была утечка вашего id при выгрузке файлов, сохраняется список чатов их которых вы вышли.


Недавно я писал пост про утечку вашего ip при загрузке обложки с itunes, когда это впервые публично упомянули, серверные разработчики сделали проксирующий метод, но Android клиент, например, так и не перешел на его использование (с Android клиентом вообще все не так просто в плане разработки).


Сотрудничество


После ареста Павла Дурова во Франции произошли интересные изменения в платформе. Telegram стал гораздо охотнее выдавать ip и номера пользователей, из-за чего появилась такая услуга на теневом рынке. Самих примеров выдачи я не видел, зато знаю что раньше из Telegram можно было запросить экспорт всех ip, и было видно ip сессий, а теперь нет.


Многие забыли, но анонимные номера теперь сложно так просто купить – после ареста ввели KYC на Fragment для покупки, и хотя есть обходные решения по типу Tonnel, Telegram скорее всего вынудили сделать это. 


Напоминаю, что Telegram убрал функцию поиска рядом людей и групп – также после ареста во Франции. 


Возможно есть другие детали сотрудничества, неизвестные нам. 


Итоги


Нельзя сделать идеальный анонимный мессенджер. Всегда можно допустить ошибки, некоторые решения компромиссные. Я разговаривал с одним из разработчиков Telegram, и сложно было что-то сказать против того, что связи номеров при регистрации повышают находимость, а не найдешь контакт здесь – пойдешь писать в WhatsApp. И сложно что-то сказать против того что разработчики попросту не подумали об импорте анонимных номеров, чему я верю. Telegram построил интересную архитектуру, я охотно верю что переписки не выдаются, хотя сегодня я вспомнил интересную особенность и напишу об этом в канале. 


Автор статьи: @chekist42