logo

«Ответка» Telegram на попытки его заблокировать

Опубликовано: 14.08.2019 в 10:22

Автор:

Категории: Новости

На просторах Telegram бушует война за место под солнцем. Все попытки заблокировать этот мессенджер пока разработчики благополучно подавляют. Начиналось с простой блокировки IP адресов, из-за чего Telegram поначалу просто их менял. Компания создавала Socks прокси, которые по причине отсутствия шифрования в протоколе позволяли быстро обнаружить мессенджер и заблокировать. Аналогичная ситуация была с MTProto Proxy, когда из-за характерности пакетов DPI определял, что это Telegram. MTProto протокол создавался со случайно длиной, однако с вероятностью менее 100% DPI все-таки улавливал мессенджер.

Fake TLS

В числе последних разработок защиты — Fake TLS, когда Telegram выдает себя за обычный трафик. В этой разработке применим принцип стенографии, когда факт передачи данных скрывается.

В чем смысл новой разработки?

Привлекать к себе меньше внимания. Сегодня в основном весь трафик это TLS (https). Этот протокол выдает следующую информацию для DPI и вашего провайдера:

  1. Ваш IP.
  2. IP сервера.
  3. Домен подключения (URL виден не будет).

Разработчики вовсе хотят убрать видимость домена, чтобы параллельно с IP отображался только туннель с шифрами и неизвестными данными. И в таком случае, если выглядеть, как TLS (https), вопросов будет меньше всего.

Запуск продукта

Новейший протокол превращает MTProto в обычный HTTPS, где осуществляется передача ложного домена. Когда протокол MTProto будет принят, потребность в Fake-TLS отпадает. После этого трафик начинает проходить по классическому MTProto со случайно длинной.

Где можно тестировать и какие клиенты поддерживают?

На сегодняшний день два прокси-сервера поддерживают эту технологию:

  1. Python github.com/alexbers/mtprotoproxy
  2. Erlang github.com/seriyps/mtproto_proxy/tree/fake-tls

На данный момент меню Fake-TLS остается в стадии эксперимента. Потому параллельно стоит применять Альфа- и Бета-версии ПО.

В этом режиме можно уже работать на Android, а также бета-версиях Telegram iOS и Telegram Desktop.

Что нужно, чтобы начать пользоваться разработкой?

  1. Если взять один из прокси, например, Python, для начала нужно установить Proxy по ссылке: git clone https://github.com/alexbers/mtprotoproxy.git; cd mtprotoproxy
  2. Для запуска понадобится следующая команда: python3 mtprotoproxy.py
  3. В консоли появляется ключ experimental с данными: tg: tg://proxy?server=8.8.8.8&port=443&secret=7gAAAAAAAAAAAAAAAAAAAABnb29nbGUuY29t (experimental)
  4. После введения данных в клиенте, новый режим вступает в силу.

Как этот механизм выглядит изнутри?

Вышеуказанные прокси-серверы на данный момент закреплены к домену Google.com. Это значит, что DPI или ваш провайдер увидит на фоне вашего IP HTTPS коннект, который относится к Google.com. То есть данные коннектятся до вашего IP, при этом в заголовке появиться домен Google.com. Позднее будут подключены и другие домены.

Преимущества Fake TLS

Как ранее говорилось, ваш провайдер не сможет увидеть прокси. А если это будет сервер в облаке с использованием домена Google, даже проанализировать его не получится. Будет вырисовываться картина, будто Google работает по HTTPS/TLS протоколу.

Недостатки разработки

Обращение к прокси через браузер приведет к выдаче ошибки и соединения не будет. Будет считаться, что HTTPS сервер настроен неправильно. Блокировка не произойдет, но сервер может ждать дополнительную информацию, например, личный сертификат.
В ближайшем будущем планируется применение дуэта секрет+домен (фейковый), как поле аутентификации. В итоге обращение к серверу с иным доменом перекинет на обычный сайт, а с доменом, который знаете только вы, — переведет в туннель MTProto. Такая услуга будет открыта, когда запустят заголовок домена с шифром eSNI.

Telegram помимо TLS (https) может воспользоваться WebSocket. Эта разработка скроет
трафик, усложнив его распознание и классификацию.

Вывод

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

Не менее важный шаг – перевод прокси на порт 443 и блокировка подключений без шифров. Второй шаг – установка перед прокси балансировщика, который определяет домен. Тогда при запросе домена, который отличается от того, что вы настроили, будет отображаться стандартный сайт.