Тотальный деанон в Telegram
tl;dr: исследую возможности для сопоставления аккаунтов с номерами телефонов в российском сегменте Телеграма.
В мире много людей, которые хотят получить возможность сдеанонить произвольного пользователя. Это могут быть капиталисты не гнушающиеся спама, спецслужбы, мошенники и просто сталкеры. Социальные сервисы пытаются лавировать между желанием привлечь как можно большую аудиторию через импорт контактов и лимитами на доступ к подобной информации. Лавируют по-разному, одни позиционируют себя максимально социальными, другие же больше ценят прайваси. Вторые становятся объектами нападок со стороны сторонников максимальной приватности.
По умолчанию в Telegram, как и в менее приватных мессенджерах, можно добыть аккаунт пользователя, зная его номер. При этом, владелец номера может ограничить эту возможность только для взаимных контактов, для этого есть специальная опция. По умолчанию она выключена, а значит у нас есть полный Telegram беспечных и сознательно публичных ребят. Функция появилась, кажется, из-за слива базы пользователей. Я решил разобраться, во сколько обойдётся создание аналогичной базы, и смогу ли я создать такую.
Я ограничил интересы только российскими пользователями. База номерных диапазонов, как оказалось, публикуется Россвязью, что дополнительно упростило мне задачу, избавив от необходимости скрейпить сайты с подобной информацией. Всего операторам на седьмое сентября раздали почти шестьсот миллионов номеров, а точнее, ровно 598035003.
Я взял несколько сим-карт, `telethon` (Python-модуль с полноценной реализацией MTProto) и попробовал создать такую базу у себя.
Расшаривание контактов и добавление в группу
Помните историю про гонконгский деанон? Бот добавлял пользователей в группу по номеру телефона, тем самым получал аккаунт, привязанный к телефону. В этой же статье журналист ZDNet связался с представителем Telegram. Последний заявил что массовый импорт будет сопряжён с проблемами.
We have suspected that some government-sponsored attackers have exploited this bug and use it to target Hong Kong protesters, in some cases posting immediate dangers to the life of the protestors
Поэтому я решил сначала пошарить контакты. Интерфейс официальных Telegram-клиентов позволяет расшаривать только тех пользователей, чей номер вам так или иначе видно. Однако, `telethon` позволяет расшаривать контакты с произвольным номером. Судя по его API, функция расшаривания — это отправка файла определённого типа. Для предварительной проверки я набросал скрипт, который без лишних вопросов отправил указанный контакт моему основному аккаунту.
Для проверки скриптом, я завёл «чистый» аккаунт (далее Бот), и отправил в ещё один аккаунт (далее Получатель) три номера: Паши, Даши и свой. У всех есть Telegram. Паша расшарил свой телефон вообще всем. Даша добавила в контакты Получателя. Свой номер я добавил дважды: сначала добавив Бота к себе в контакты, потом удалил у себя бота и добавил себя в контакты Боту.

Результат можно интерпретировать по картинке: нормально контакты шарятся исключительно при условии доступности телефона боту. С добавлением в чат всё ещё хуже. Я не могу добавить Ботом даже аккаунты с известным Боту телефоном, если они выключили эту возможность в настройках. Кроме того, Бота могут быстро забанить, если пользователи начнут сообщать о спаме. Так я никого не сдеаноню, самое время забыть об этой идее.
Синхронизация
Синхронизация контактов, как я уже сказал, потенциально влечёт к ограничениям для аккаунта. Но как это выглядит? Я написал ещё один [скрипт](https://github.com/asz/telegram_yellow_pages/blob/main/syncer.py), забирающий из базы случайные номера и добавляющий их в контакты. После этого скрипт парсит контакты, идентификаторы найденых в ростере аккаунтов добавляет обратно в базу, остальных отмечает нулями и удаляет контакты из ростера.
Затем я прогнал 5000 рандомных номеров, по слухам, именно такие лимиты работают в Telegram. В выводе не нашёл ни одного идентификатора, кроме самого Бота. Теперь, чтобы исключить возможные ошибки в коде и обманку Телеграма, добавляю к рандомным номерам вручную номер Даши, отключаю удаление контактов из ростера, уменьшаю объём выборки до 3000 номеров и прогоняю снова. Даши нет ни в ростере, ни в базе. Попытка вручную добавить Дашу намекает, что сработали лимиты Телеграма.

Вроде почти всё хорошо. Чтобы убедиться, я удалил аккаунт и зарегистрировал его заново, уменьшил количество телефонов до 3000 включая Дашу и прогнал скрипт ещё раз. Результат аналогичный. Похоже, что лимиты затрагивают не аккаунт, а номер телефона, с которого синхронизируются контакты. Кажется, всё хорошо, и телеграм действительно обеспечивает разумный уровень защиты от перебора.
Или нет?
В интернете упоминается как минимум два сервиса, которые, якобы просканировали широкий диапазон номеров. Один из них я проверил, работает плохо. Предположим, второй не врёт и им это действительно удалось. Давайте даже предположим, что им не нужно обрабатывать все 600 миллионов номеров и они откуда-то знают 150 миллионов реально активных номеров (чуть больше, чем по одному номеру на душу населения РФ). Сколько будет стоить просканировать всех за полгода, соблюдая все ограничения мессенджера? А за три месяца? А за месяц? А за один день?
Допустим, с одного номера можно сосканировать 5000 контактов в первый день и ещё 100 в каждый последующий. За полгода с каждого номера можно перебрать 23000 контактов (180*100+5000) , для перебора понадобится около 6500 номеров (150000000/23000) . Не так уж много, правда? Если каждая симка обойдётся в 150 рублей (а это дорого!), то расходы на их приобретение составят менее миллиона рублей. Подъёмная сумма даже для малого бизнеса! Для SIM-карт даже много оборудования держать не нужно, залогинился и запускаешь скрипт раз в день.
Но давайте пересчитаем по максимуму. Возьмём весь пул в 600 миллионов номеров и сократим сроки до месяца. Получится, что нужно 75 тысяч SIM-карт, которые обойдутся всего где-то в десять раз дороже (600000000/(5000+30*100)*150=11250000) . Придётся постараться найти столько симок, зато можно сократить их стоимость в такой партии. Потенциально можно использовать сервисы, которые позволяют регистрировать аккаунт от 3.5 рублей за штуку, а самые отбитые могут распространять трояны, чтобы крали SMS. Тогда это будет стоить сильно дешевле. Разработка не кажется сверхсложной, хостинг клиентов также не должен стать большой проблемой. Возможно, придётся использовать множество прокси, но это не точно.
Мне не удалось собрать базу из-за лимитов Telegram и это хорошо. Значит, есть некоторый порог входа для таких действий. Бесполезные скрипты я сложил в гит. Но нет ничего крайне сложного сделать это при наличии некоторых ресурсов. Особенно, если ограничить интересы конкретными регионами, например, в Еврейской АО меньше миллиона номеров в пуле, а в Башкортостане 12.5 миллионов.
Я предложил команде Телеграма информировать пользователя о возможности скрыть телефон. А вам напоминаю, что анонимность в социальных сервисах условна. Если вам не хочется попасть под массовый деанон, скройте свой номер телефона в Telegram для всех, кроме ваших контактов.
Деанонимизация Telegram-Аккаунта
Думаю вы часто сталкиваетесь с ситуацией что нужно найти владельца определенного telegram-аккаунта.
23K открытий
Какие данные мы имеем?
Обычно у нас есть «Стандартный пакет данных» — так я называю био, аватарку, ник, ФИ.
В био мы видим некий канал, при переходе на него мы увидим каналы, чаты, боты которым владеет объект поиска. Теперь мы знаем интересы нашего поиска, если мы в будущем увидим какие то другие аккаунты в которых будут упоминание этих проектов, появятся основание полагать что это человек как то связан с объектом поиска, или это сам объект поиска. Кроме того мы видим что человек которого мы ищем поддерживает Украину, а возможно сам оттуда. После этого гуглим био, возможно этот человек использовал аналогичное био где то еще, советую использовать Яндекс.
Далее прокручивайте страницу до конца, возможно у вас получится что то найти.
Какую информацию о нас хранят телеграм‑боты, чем они опасны и как удалить их из аккаунта? Отвечают эксперты
Какие данные хранят о пользователях телеграм-боты? Как правильно удалить их из своего аккаунта? Как отличить настоящий бот от фейкового? «Медиазона» отвечает на эти вопросы вместе с разработчиком партизанского телеграма и одним из участников объединения «Киберпартизаны».

Что такое телеграм-бот?
Под телеграм-ботом могут иметься в виду как классические боты, которыми мы привыкли пользоваться (например, боты обратной связи), так и юзер-боты. В первом случае телеграм выделяет боты в отдельную сущность наравне с каналами, чатами и пользователями. У таких ботов есть ограничения. Например, они не могут написать вам первыми или добавиться в группу.
Юзер-бот — это пользовательский аккаунт, поведение которого автоматизировано. Например, в комментариях можно увидеть таких ботов, которые что-нибудь рекламируют. При помощи таких ботов силовики могут автоматически собирать информацию из открытых групп. И даже из закрытых, если удастся в них попасть.
Ниже идет разговор про классические боты.
Какую информацию собирают телеграм-боты?
По словам экспертов, после нажатия кнопки Start любой бот может получить доступ к ID пользователя, его имени и фамилии, никнейму, разделу «о себе» и языку, установленному в приложении. Бот автоматически получит доступ к фото профиля, если в настройках конфиденциальности юзер не скрыл его ото всех. Бот не имеет автоматического доступа к номеру телефона пользователя, но может его запросить. Если пользователь разрешит отправку, бот получит доступ к номеру.
Разработчик бота может решить, будет бот сохранять эти данные данные или нет. Если бот сохранит ID пользователя, разработчик сможет получить доступ к этим данным позже, даже если пользователь заблокирует бот. Правда, после блокировки бот не сможет узнать актуальные данные пользователя. То есть если после блокировки пользователь сменит свой никнейм, то бот будет видеть его старую версию.
— Любые сообщения, отправленные в бот, могут быть им сохранены. Даже если пользователь их удалит. Пользователь не может узнать, как бот распоряжается полученной информацией. То есть бот может как удалять полученные сообщения сразу после прочтения, так и хранить их, — объясняют эксперты.
Что такое ID в телеграме?
ID — это набор цифр, по сути номер вашего аккаунта. Изменить его невозможно, даже если пользователь сменит аватарку, имя или никнейм. Опасность в том, что если пользователь оставлял комментарии, потом их удалил и поменял имя и фото в аккаунте, его ID остается тем же, а значит человека можно вычислить.
Если вы хотите поменять ID — удалите старый аккаунт и зарегистрируйте новый.

Как мне отличить фейковый бот от настоящего?
Эксперты советуют писать только в те боты, ссылки на которые размещают официальные телеграм-каналы инициатив (убедитесь, что канал не фейковый) и внимательно проверять названия ботов. Например, есть разница в названиях @OSB_By_Pol и @OSB_By, но сразу ее можно не заметить. В первом случае — старое название настоящего бота организации BYPOL, а во втором — фейковый бот, созданный, судя по всему, силовиками.
— В партизанском телеграме правильный бот помечен галочкой верификации. А фейковые боты мы стараемся помечать значками фейка.
Очень важно перепроверять ссылки на боты. Даже если они были присланы человеком, которому вы доверяете.
Если я перешел по ссылке фейкового бота, значит меня уже сдеанонили?
Переход по ссылке бота в телеграм не означает вообще ничего, если не была нажата кнопка Start. Как только кнопка будет нажата, бот получит информацию о пользователе, о которой мы писали выше.
Если ссылка на бот была оставлена в комментариях, например, канала Nexta, то силовики могут предположить, что человек, запустивший бот (при условии перехода по ссылке и нажатии на кнопку Start), читает этот канал. Если аккаунт человека анонимный (зарегистрирован на иностранный номер, с ненастоящим именем, с соблюдением всех правил безопасности), то сам по себе запуск бота скорее всего не даст силовикам никакой полезной информации.
Есть специальные боты силовиков, которые могут вытянуть больше информации?
Боты не могут вытянуть больше той информации, о которой мы писали выше. То, что существуют боты, которые автоматически получают доступ к геолокации человека или к его личным перепискам — миф. При этом существуют и другие методы сбора информации о пользователе.
1. Силовики могут автоматически собирать информацию из комментариев в каналах и открытых чатах. Для этого существуют специальные «скринеры», которые отслеживают активность пользователя или чата в целом. Собирая такую базу, они могут сопоставлять ID, «утекшие» через фейковые боты, с комментаторами, а также проверять этот уникальный номер в телеграме при задержании.
2. Силовики при задержании могут войти в аккаунт человека через свое устройство. Тогда они получат доступ ко всему профилю, в том числе к вашему архиву, в котором могут храниться сообщения из закрытых чатов, из которых вы уже вышли.
Что делать, если я уже запускал телеграм-боты?
Специалисты по кибербезопасности говорят, что удалить информацию из ботов, если вы с ними контактировали, у вас уже не получится. Можно считать, что она остается там навсегда, как и любая информация, которую мы оставляем в интернете.
Есть два варианта того, как можно себя обезопасить.

Можно полностью уничтожить старый «засвеченный» телеграм-аккаунт, создать новый и пользоваться им. Эксперты рекомендуют создать как минимум два аккаунта: один чистый (чтобы его можно было показать по принуждению и не волноваться) и один «партизанский» (его использовать для непубличных дел, переписок и подписок).
Второй вариант — почистить «хвосты» своего аккаунта, хотя информация об аккаунте в боте все равно сохранится. Тем не менее, инструкция ниже поможет стереть боты, которые вы запускали, из истории поиска и ваших переписок.
Как почистить «хвосты» самостоятельно?
Боты, которыми вы когда-то пользовались, всегда указываются в поиске телеграма (окно вверху приложения). И если ввести в поисковую строку слово bot, то вы увидите всех ботов, которым когда-либо писали. Даже если вы заблокировали бот, то его можно найти по пути «Настройки > Конфиденциальность и безопасность > Заблокированные пользователи». Их же увидят и силовики в случае задержания.
Чтобы удалить всех ботов, сделайте следующее:
- Разблокируйте в черном списке всех ботов.
- Введите слово bot в строке поиска телеграм.
- Выберите бот, который нужно удалить. Нажмите три вертикальные точки и выберите «Очистить историю».
- Снова введите слово bot в строке поиска. Нажмите на тот же самый бот и выберите «Удалить чат».
Подождите сутки, в это время не ищите ботов в строке поиска. Если не получилось, пройдите все шаги еще раз и вновь подождите сутки.
Специалисты по кибербезопасности говорят, что этот вариант — полумера, и никаких гарантий он не дает. При чем на разных устройствах (Windows, macOS, Android и iOS) он работает по-разному. Лучше всего проделывать все эти манипуляции из Web-версии мессенджера или приложения на ПК.
Возможности для массового деанона в Telegram

tl;dr: исследую возможности для сопоставления аккаунтов с номерами телефонов в российском сегменте Телеграма.
В мире много людей, которые хотят получить возможность сдеанонить произвольного пользователя. Это могут быть капиталисты не гнушающиеся спама, спецслужбы, мошенники и просто сталкеры. Социальные сервисы пытаются лавировать между желанием привлечь как можно большую аудиторию через импорт контактов и лимитами на доступ к подобной информации. Лавируют по-разному, одни позиционируют себя максимально социальными, другие же больше ценят прайваси. Вторые становятся объектами нападок со стороны сторонников максимальной приватности.
По умолчанию в Telegram, как и в менее приватных мессенджерах, можно добыть аккаунт пользователя, зная его номер. При этом, владелец номера может ограничить эту возможность только для взаимных контактов, для этого есть специальная опция. По умолчанию она выключена, а значит у нас есть полный Telegram беспечных и сознательно публичных ребят. Функция появилась, кажется, из-за слива базы пользователей. Я решил разобраться, во сколько обойдётся создание аналогичной базы, и смогу ли я создать такую.
Я ограничил интересы только российскими пользователями. База номерных диапазонов, как оказалось, публикуется Россвязью, что дополнительно упростило мне задачу, избавив от необходимости скрейпить сайты с подобной информацией. Всего операторам на седьмое сентября раздали почти шестьсот миллионов номеров, а точнее, ровно 598035003.
Я взял несколько сим-карт, `telethon` (Python-модуль с полноценной реализацией MTProto) и попробовал создать такую базу у себя.
Расшаривание контактов и добавление в группу
Помните историю про гонконгский деанон? Бот добавлял пользователей в группу по номеру телефона, тем самым получал аккаунт, привязанный к телефону. В этой же статье журналист ZDNet связался с представителем Telegram. Последний заявил что массовый импорт будет сопряжён с проблемами.
We have suspected that some government-sponsored attackers have exploited this bug and use it to target Hong Kong protesters, in some cases posting immediate dangers to the life of the protestors
Поэтому я решил сначала пошарить контакты. Интерфейс официальных Telegram-клиентов позволяет расшаривать только тех пользователей, чей номер вам так или иначе видно. Однако, `telethon` позволяет расшаривать контакты с произвольным номером. Судя по его API, функция расшаривания — это отправка файла определённого типа. Для предварительной проверки я набросал скрипт, который без лишних вопросов отправил указанный контакт моему основному аккаунту.
Для проверки скриптом, я завёл «чистый» аккаунт (далее Бот), и отправил в ещё один аккаунт (далее Получатель) три номера: Паши, Даши и свой. У всех есть Telegram. Паша расшарил свой телефон вообще всем. Даша добавила в контакты Получателя. Свой номер я добавил дважды: сначала добавив Бота к себе в контакты, потом удалил у себя бота и добавил себя в контакты Боту.

Результат можно интерпретировать по картинке: нормально контакты шарятся исключительно при условии доступности телефона боту. С добавлением в чат всё ещё хуже. Я не могу добавить Ботом даже аккаунты с известным Боту телефоном, если они выключили эту возможность в настройках. Кроме того, Бота могут быстро забанить, если пользователи начнут сообщать о спаме. Так я никого не сдеаноню, самое время забыть об этой идее.
Синхронизация
Синхронизация контактов, как я уже сказал, потенциально влечёт к ограничениям для аккаунта. Но как это выглядит? Я написал ещё один скрипт, забирающий из базы случайные номера и добавляющий их в контакты. После этого скрипт парсит контакты, идентификаторы найденых в ростере аккаунтов добавляет обратно в базу, остальных отмечает нулями и удаляет контакты из ростера.
Затем я прогнал 5000 рандомных номеров, по слухам, именно такие лимиты работают в Telegram. В выводе не нашёл ни одного идентификатора, кроме самого Бота. Теперь, чтобы исключить возможные ошибки в коде и обманку Телеграма, добавляю к рандомным номерам вручную номер Даши, отключаю удаление контактов из ростера, уменьшаю объём выборки до 3000 номеров и прогоняю снова. Даши нет ни в ростере, ни в базе. Попытка вручную добавить Дашу намекает, что сработали лимиты Телеграма.

Вроде почти всё хорошо. Чтобы убедиться, я удалил аккаунт и зарегистрировал его заново, уменьшил количество телефонов до 3000 включая Дашу и прогнал скрипт ещё раз. Результат аналогичный. Похоже, что лимиты затрагивают не аккаунт, а номер телефона, с которого синхронизируются контакты. Кажется, всё хорошо, и телеграм действительно обеспечивает разумный уровень защиты от перебора.
Или нет?
В интернете упоминается как минимум два сервиса, которые, якобы просканировали широкий диапазон номеров. Один из них я проверил, работает плохо. Предположим, второй не врёт и им это действительно удалось. Давайте даже предположим, что им не нужно обрабатывать все 600 миллионов номеров и они откуда-то знают 150 миллионов реально активных номеров (чуть больше, чем по одному номеру на душу населения РФ). Сколько будет стоить просканировать всех за полгода, соблюдая все ограничения мессенджера? А за три месяца? А за месяц? А за один день?
Допустим, с одного номера можно сосканировать 5000 контактов в первый день и ещё 100 в каждый последующий. За полгода с каждого номера можно перебрать 23000 контактов (180*100+5000) , для перебора понадобится около 6500 номеров (150000000/23000) . Не так уж много, правда? Если каждая симка обойдётся в 150 рублей (а это дорого!), то расходы на их приобретение составят менее миллиона рублей. Подъёмная сумма даже для малого бизнеса! Для SIM-карт даже много оборудования держать не нужно, залогинился и запускаешь скрипт раз в день.
Но давайте пересчитаем по максимуму. Возьмём весь пул в 600 миллионов номеров и сократим сроки до месяца. Получится, что нужно 75 тысяч SIM-карт, которые обойдутся всего где-то в десять раз дороже (600000000/(5000+30*100)*150=11250000) . Придётся постараться найти столько симок, зато можно сократить их стоимость в такой партии. Потенциально можно использовать сервисы, которые позволяют регистрировать аккаунт от 3.5 рублей за штуку, а самые отбитые могут распространять трояны, чтобы крали SMS. Тогда это будет стоить сильно дешевле. Разработка не кажется сверхсложной, хостинг клиентов также не должен стать большой проблемой. Возможно, придётся использовать множество прокси, но это не точно.
Мне не удалось собрать базу из-за лимитов Telegram и это хорошо. Значит, есть некоторый порог входа для таких действий. Бесполезные скрипты я сложил в гит. Но нет ничего крайне сложного сделать это при наличии некоторых ресурсов. Особенно, если ограничить интересы конкретными регионами, например, в Еврейской АО меньше миллиона номеров в пуле, а в Башкортостане 12.5 миллионов.
Я предложил команде Телеграма информировать пользователя о возможности скрыть телефон. А вам напоминаю, что анонимность в социальных сервисах условна. Если вам не хочется попасть под массовый деанон, скройте свой номер телефона в Telegram для всех, кроме ваших контактов.
