July 6, 2024

Массовая блокировка VPN. Как с этим бороться и можно ли оставаться анонимным в сети?

Disclaimer: Эта статья носит исключительно развлекательный характер. Весь текст является вымыслом, в нем нет ни слова правды и все это преследует лишь одну цель – поднять настроение, в том числе лично мне.

Приветствую вас, дорогие читатели, сегодня рассмотрим с вами тему анонимности в нашей любимой глобальной паутине под названием интернет.

Напомню вам , что с 1 марта 2024 года в России действует запрет на распространение информации, которая рекламирует или популяризирует средства обхода блокировок в виде VPN-сервисов. И буквально недавно Роскомнадзор добился блокировки 25 приложений VPN-сервисов в App Store.

Развитие тенденции блокировок VPN-сервисов в нынешних реалиях ничего кроме негатива лично у меня не вызывает. Мы сейчас не говорим , про грубое нарушение законодательства , покупку наркотиков в даркнете, взлом различных площадок и т.д. Речь идет про обыденные сервисы для "простых" пользователей.
Представьте ситуацию, что вы хотите оплатить подписку на нетфликс или зайти в инстаграмм. Именно для этого и нужны нам эти "опасные" приложения.
Если так и продолжится , то обычным пользователям нужно будет нормально так заморочиться , чтобы получить доступ к привычным сайтам.

Сейчас думаю многие скажут , что есть такие решения как OpenVPN и WireGuard. Но есть одно "но" ... WireGuard - это протокол, который всеми своими пакетами просто кричит "Смотрите все, смотрите, я - VPN". И это, в принципе, не удивительно, потому что авторы на сайте проекта прямым текстом пишут, что обфускация не входила и не будет входить в их цели и планы.
Аналогично с OpenVPN. Ведь наши братья китайцы научились выявлять и банить на своем великом китайском фаерволе.
1:0 в пользу цензоров.

Хорошо, а что если вместо палевных протоколов мы будем использовать TLS-VPN? Например такие решения как: SSTP, AnyConnect/OpenConnect? Трафик в них ходит внутри TLS, начальная установка соединения производится по HTTP - что должно быть совсем никак неотличимо от обычного подключения к любому обычному сайту.
Согласно статье на сайте microsoft запрос, отправляемый на сервер SSTP, использует HTTP-команду SSTP_DUPLEX_POST. А это значит , что цензор может отправить на наш сервер следующий HTTP-запроc {наш URL}/sra_{BA195980-CD49-458b-9E23-C84EE0ADCD75} и сервер в респонде с радостью сообщит , что он MS SSTP VPN.

AnyConnect/OpenConnect при обращении по / или по /auth ответят очень характерной XML'кой. Избавиться от этого не получится - это определено в протоколах, и именно через эту логику работают VPN-клиенты.
2:0 в пользу цензоров.

Хорошо, мы имеем TLS соединение, но ведь можно поставить реверс-прокси и фильтровать запросы по SNI (server name identification). Все наши подключения с определенным доменом будем отправлять к нам на VPN-сервер, а все остальные - на безобидный сайт с котиками и собачками. Или мы можем даже попробовать спрятаться за какой-нибудь CDN(Content Delivery Network) - не забанят же они весь CDN, правда, и наш трафик из общего трафика ко всей CDN выцепить не смогут, да?

В нынешних версиях TLS поле SNI не шифруется, соответственно цензоры легко его подсмотрят и сделают запрос именно с тем именем домена, что надо.

Но ведь есть расширение Encrypted Client Hello (ECH, ранее изветсное как eSNI). На него можно не рассчитывать: во-первых, оно находится еще в состоянии Draft и неизвестно когда будет принято и повсеместно использоваться, а во-вторых, цензоры могут взять и просто-напросто заблокировать все соединения TLSv1.3 с ECH, как это сделали в Китае.
3:0 в пользу цензоров.

Хорошо, допустим у нас что-то более редкое и незаметное. Казалось бы, все хорошо?
Тут стоит вспомнить про "пакет Яровой"? Тот самый, который требует, чтобы интернет-сервисы сохраняли все метаданные сессий, а интернет-провайдеры так вообще записывали дампы трафика своих абонентов?
Некоторые люди смеялись надо цензорами - мол "Ну и тупые же они, что им дадут гигабайты зашифрованных данных, которые они все равно не расшифруют?"

А вот что...

Пользуетесь вы, допустим, своим туннельчиком, смотрите всякие там запрещенные сайты. А потом - клик! - и случайно заходите через свой туннель на какой-нибудь отечественный сайт или сервис, замеченный в сотрудничестве с государством - условные там VK/Mail.ru/Яндекс или еще что-нибудь. Или на каком-нибудь безобидном сайте попадается виджет, баннер или счетчик от них же. Или кто-нибудь в комментарии вбросит ссылку на какой-нибудь сайт-honeypot, косящий под новостной ресурс, и вы на нее нажмете.

И вот тут произойдет самое интересное. Что внутри TLS, что внутри SSH, что внутри OpenVPN+xor, данные передаются в зашифрованном виде, и их не расшифровать. Но вот "внешняя форма" (размеры пакетов и тайминги между ними) у зашифрованных данных точно такая же, как и у нешифрованных. Цензоры видят, что от абонента к какому-то неизвестному серверу и обратно ходит трафик, а поток со стороны какого-нибудь подконтрольного сервиса видит, что с того же IP-адреса, что у "неизвестного сервера", туда прилетают какие-то запросы и улетают ответы, и - вот интересно - размеры пакетов и временные моменты практически полностью совпадают. Что весьма характерно говорит о том, что у нас тут прокси, возможно VPN, Андрюха, по коням!

И да, если вы поступите мудрее и у вашего сервера будет два IP-адреса, один на вход, а другой на выход, то сопоставить ваш "вход" и "выход" по адресам не получится, но по "форме" переданных данных, хоть и ощутимо сложнее, но при желании по прежнему можно.
4:0 в пользу цензоров.

Подводя итог , можно сказать что обход блокировок - это постоянная борьба щита и меча, и одновременно игра в кошки-мышки: иногда ты ешь медведя, иногда медведь ест тебя иногда ты догоняющий, иногда догоняемый.

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

Всем мира, любви и добра. See you soon.