Привет, Хабр! На днях всех нас потрясла (очень неожиданная!) весть о блокировке Telegram. Благо, рыцари из «открытого» клиента для обхода блокировок снова о себе напомнили.

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

Разбираем недавние новые находки в исходном коде клиента!

Немного лирики

На фоне новых «притоков» пользователей в клиент, они заявили о расширении своей прокси-инфраструктуры. Пока мы изучали материалы, оказалось, что Telega настолько стартап и настолько открыты, что заимели себе целую ASN с адресами из пула, близко расположенными к адресам VK.

Новый механизм «проксирования»

Большинство скриншотов взято у исследователя

Правда очень похожий на MITM, почему-то

В клиенте обнаружили функционал (неизвестно правда, используется ли он сейчас), в котором обрабатывается сценарий использования полноценных клонов DC-серверов Telegram вместо привычных SOCKS/MTProto прокси.

Более того, похоже, что используются подобные прокси сервера для любых DC: от 1 до 5.

А что в этом плохого-то?

То, что в случае, когда клиент использовал именно механизм проксирования через MTProto, все сообщения и данные были и оставались зашифрованными оригинальным ключем, и по сути худшее, что могло утечь с вашей стороны - это IP адрес. В случае, когда используется полноценный клон DC, можно просматривать вообще всю информацию. По сути, это та самая история с «ключами шифрования» и Дуровым из 2018 года)

Более того, в клиенте нашли и публичный RSA-ключ, которым Telega подменяет оригинальным и которым подписываются данные:

-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAum9pZNEIWVt6jQUm/qcP4na0RgWHfSls/TJwxYQTsruNyuVgdrBu
y7gbNcObgnxmjxohwRjkNCOASwfYOD5yZ0UUqlg+iK84cmS8HdSublM/Bvf4huqN
7RZ0GXQ8nGCZQFQ67ZqXS5R/4XNUmoj5kmhHOl7OU4ow3DXdjM3JEmvaVtacGoMW
BT2s1JtTt3bXVJmarBxt3g8yn+lmAs7aCZkVj0cdocHT7jOyPaCtvSC+pGThr7qA
aDEWl2q8Z4fH1hYF3xrm4vxraJq4fFIbuBLceMKfHsI7ahL4KLF/tYNNZzbfaE5s
4Z2HPiEI+78hAdxCWAnQd9Efj2Dbc6OM2wIDAQAB
-----END RSA PUBLIC KEY-----

(источник)

Пока мало известно о подмене ответов от DC Telega относительно оригинального клиента, заменяются в них как минимум параметры о настройках подключения к DC (dcOptions).

Отключения «секретных чатов»

Помимо MiTM, в коде обнаружились и другие странные функции. Например, возможность со стороны сервера отключать Perfect Forward Secrecy. Функционал этот позволял со стороны клиента убеждаться в полноценности и безопасности проходящий сообщений, даже если ключи безопасности утекли.

В официальном клиенте Telegram, значение этого флага PFS_ENABLED всегда константное. В «телеге» же авторы решили, что будет очень удобно, если этот флаг можно будет отключить в любой момент, а значение об этом флаге прилетает теперь со стороны сервера.

Также они добавили функцию для проверки этого режима, isPfsEnabled.

В нашем телеграм мы пишем о блокировках в России

Отключения секретных чатов

Исследователи также обнаружили, что в клиенте есть новая функция-обработчик, позволяющая проверять и принимать «секретные чаты». Как вы уже догадались, при помощи флажка с сервера, с вашего клиента в любой момент могут отключить эту возможность (или сэмулировать, будто бы чат - и правда секретный (?))

1 апреля телеграм ПОЛНОСТЬЮ заблокируют. РКН похоже не шутит.

И день дурака здесь не причем