Интернет-цензура и обход блокировок: расслабляться некогда


Граб13 мин

Посмотреть оригинал

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

Часто на Хабре в темах, посвященных блокировке ресурсов, встречаются забавные высказывания типа «Я настроил TLS-VPN, теперь они будут смотреть что хотят и цензоры не будут блокировать мой VPN», «Я использую SSH-туннель, так что все все в порядке, не запретят все SSH целиком», и тому подобное. Что ж, давайте проанализируем опыт других стран и подумаем, как оно может быть на самом деле.

0

Итак, допустим, мы купили у какого-то сервиса, или, как подкованные пользователи, установили в персональное облако/VPS и настроили себе VPN-сервер. Допустим, это популярный WireGuard или OpenVPN. Знаешь что? WireGuard — такой красивый протокол, который просто кричит «Смотрите всем, смотрите, я VPN» со всеми своими пакетами. И это, в принципе, неудивительно, ведь авторы на сайте проекта прямо пишут, что обфускация не входила и не будет входить в их цели и планы.

Соответственно, на оборудовании DPI (он же ТГПУ) при небольшом желании протокол WireGuard обнаруживается и блокируется на раз-два. IPSec/L2TP - аналогично. С OpenVPN то же самое — это, наверное, самый первый протокол, который китайцы научились идентифицировать и банить на своем «Великом китайском брандмауэре» (GFW). Мы пиздец.

1

Ладно, допустим, мы сделали выводы, и вместо совсем бледных протоколов решили использовать TLS-VPN, типа SSTP, AnyConnect/OpenConnect или SoftEther — трафик в них идет внутри TLS, начальное соединение устанавливается по HTTP — который должен быть совершенно неотличим от обычного подключения к любому обычному сайту. Как сказать...

В случае с MS SSTP цензоры, желая узнать, что вы делаете, просто сделают запрос на ваш сервер с URL/sra_{BA195980-CD49-458b-9E23-C84EE0ADCD75}/ с HTTP-методомSSTP_DUPLEX_POST , как описанов стандартном протоколе , и сервер с радостью подтвердит в ответ, что это действительно MS SSTP VPN.

SoftetherVPN в ответ на запрос GET с/vpnsvc/connect.cgi путь, приложение/октет-поток введите и 'VPNCONNECT полезная нагрузка вернет код 200 и предсказуемый двоичный объект с историей о том, кто он такой.

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

2

Понятно, что мы будем умнее, а так как TLS у нас все-таки есть, то давайте перед VPN-сервером ставим обратный прокси (например, haproxy) и разрешаем все через SNI (идентификацию имени сервера): соединения с конкретным доменом в запросе будут отправлены на VPN сервер, а все остальные - на безобидный сайт с котиками. Можно даже попытаться спрятаться за какой-нибудь CDN — всю CDN не забанят, правда, и выделить наш трафик из общего трафика на всю CDN не получится, верно?

Однако есть одно «но». В текущих версиях TLS поле SNI не зашифровано, поэтому цензоры могут легко его подсмотреть и сделать запрос с точно правильным доменным именем. На расширение Encrypted Client Hello (ECH), ранее известное как eSNI, рассчитывать не приходится: во-первых, оно до сих порв состоянии «Черновик» и неизвестно, когда он будет принят и широко распространен, а во-вторых, цензоры могут взять его и просто заблокировать все соединения TLSv1.3 с ECH,как это сделали в Китае . Индейцам шерифа все равно. Мы пиздец.

3

Шутки в сторону, мы полны решимости. Например, мы пропатчили сервер OpenConnect, чтобы он принимал соединения только со специальным словом в URL (к счастью, клиенты AnyConnect/OpenConnect это позволяют), а всем остальным выдавал правдоподобную заглушку. Или настройте обязательную аутентификацию с помощью клиентских сертификатов.

Или подключаем тяжелую артиллерию от китайских товарищей, которые собаку съели при обходе завалов. Shadowsocks (Outline) исчезает, потому что его версии до 2022 годауязвимы для повторных атак и даже активного зондирования , но V2Ray/Рентгеновский с плагином VMess и VLess поверх Websockets или gRPC, илиТроян-GFW это то, что вам нужно. Они работают по TLS, могут делить один и тот же порт с веб-сервером HTTPS, а не зная заветной секретной строки, которую невозможно подслушать извне, обнаружить наличие туннеля и подключиться к нему, казалось бы, невозможно, так что все отлично?

Давай подумаем. Каждый клиент TLS при подключении передает на сервер определенный набор параметров: поддерживаемые версии TLS, поддерживаемые наборы шифров, поддерживаемые расширения, эллиптические кривые и их форматы. Каждая библиотека имеет свой набор, и его варианты можно анализировать. Это называетсяОтпечатки пальцев ClientHello . Отпечаток библиотеки OpenSSL отличается от отпечатка библиотеки GnuTLS. Отпечаток библиотеки Go TLS отличается от отпечатка браузера Firefox.

А когда частые и длительные подключения к определенному сайту фиксируются с вашего адреса клиентом с библиотекой GnuTLS (которая не используется ни в одном популярном браузере, но используется в VPN-клиенте OpenConnect), либо с мобильного телефона через мобильный оператор, какой-то клиент подключается к Go (на котором написан V2Ray), нам пиздец. Такое обнаружение, например, осуществляетсяв Китае иТуркменистан .

4

ХОРОШО. Допустим, мы пересобрали наш клиент V2Ray не со стандартным TLS, а сUTLS , которые могут маскироваться под популярные браузеры. Или они дажевзяли исходники самого популярного браузера, выдрали весь код сетевого стека и написали на его основе свой прокси-клиент , чтобы быть совершенно неотличимым от обычного браузерного TLS. Либо они решили пойти по пути маскировки под другие протоколы вроде SSH, либо взялиOpenVPN с патчем XOR . Или какой-нибудь ККП/истерия замаскированный под DTLS.

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

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

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

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

5

Это не так уж и плохо. Мы настроили доступ на основе правил для нашего туннеля. А именно, мы будем ходить по нему только там, где это необходимо, а когда это необходимо — а во всех остальных случаях пусть сумки бегут сразу через обычное интернет-соединение. Правда, добавлять каждый раз новый ресурс в список - очередной геморрой, особенно когда держишь прокси/ВПН не только для себя, но и, например, для пожилых родителей, живущих далеко, которым, например, хочется читать всякие иноагентов - но это, собственно, мелочи, справимся.

Допустим, мы все еще используем туннель SSH. Правда, работать он будет, скорее всего, недолго. Почему? Потому что это все об одних и тех же схемах трафика. И нет, не надо ничего нигде записывать и мучительно сравнивать. Шаблоны трафика ssh-as-console, ssh-as-ftp и ssh-as-proxy сильно различаются и легко обнаруживаются должным образом обученной нейронной сетью. Поэтому китайцы ииранцы уже давно обнаруживаю всякое такое "неправильное" использование SSH и урезание скорости соединения до черепашьей, что в терминале еще можно работать, но практически не серфить.

Ну или, допустим, вы все-таки пользуетесь туннелем what-over-TLS, с учетом всего приведенного в этой статье. Но проблема в том, что все сказанное в предыдущем пункте относится и к нему, а именно к TLS-inside-TLSобнаруживается сторонним наблюдателем с помощью эвристики и машинного обучения, которые еще можно дополнительно обучить на самых популярных сайтах. Мы все еще пиздец.

6

ХОРОШО. Мы добавили случайное заполнение в наш секретный туннель — «добавляя» какой-то мусор случайной длины в конец пакета, чтобы сбить с толку наблюдателей. Либо намеренно разбиваем пакеты на мелкие кусочки (и получаем проблемы с MTU, ох, придется потом старательно перестраивать). Или, наоборот, когда у нас есть TLS-соединение с каким-то сервером внутри туннеля, мыначать отправлять эти пакеты как есть без дополнительного уровня шифрования , тем самым выглядя со стороны на все сто процентов как обычный TLS без двойного дна (хотя придется еще потратить несколько итераций на доведение протокола до ума изакрытие очень тонких и очень неочевидных уязвимостей реализации ). Казалось бы, хэппи-энд, нас больше не трахают?

И тут начинается все самое интересное. А именно, рано или поздно в вопросах выявления туннелей и завалов, особенно с развитием технологий их обхода (ведь мы еще не коснулись стеганографии и многих других интересных вещей), начинает нарастать то, что называется побочным ущербом - ущербом которое возникло случайно во время нападения на намеченную цель. Например, какинсайдеры говорят и подтверждают сообщения с полей, китайцы научились обнаруживать упомянутое выше обнаружение tls-inside-tls,даже со случайным заполнением, примерно40% точность . Понятно, что с такой точностью возможны и ложные срабатывания, но когда проблемы индейцев волновали шерифа?

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

Когда Роскомнадзор пытался заблокировать Telegram, они добавляли в список запрета целые подсети и хостинги, таким образомбанить кучу невинных сайтов и сервисов - и ничего за это не получили. В Иране из-за популярности вышеупомянутого браузероподобного прокси-клиентавообще тупо запретили Отпечатки пальцев Chrome TLS подключаются к популярным облачным сервисам. В Китае,они массово попадают под раздачу CDN , чьими услугами пользуются безобидные и невинные сайты и сервисы.В Туркменистане заблокирована почти треть (!) всех существующих в мире IP-адресов и подсетей таким образом, потому что как только цензоры обнаружат хотя бы один VPN или прокси, в бан отправляется целый диапазон адресов рядом с ним или даже вся AS.

Вы, наверное, спросите, а как быть с юридическими лицами, которые тоже используют VPN для работы, или чьи услуги могут случайно попасть под раздачу? Этот вопрос легко решается занесением в белый список: если юридическому лицу нужен VPN-сервер, или если вам нужно защитить какой-либо из ваших сервисов от случайной блокировки, то вы должны обязать их заранее сообщить в соответствующие отделы о необходимых адресах и протоколах, чтобы что вносят в нужный список - именно такие просьбы Роскомнадзорнаправляется через ЦБ в банки , думать о чем-то плохом, и механизм таких списковуже существует .

И, конечно же, совершенно последующим продолжением этого будет «все, что не разрешено, запрещено». В Российской Федерации ужезакон о запрете VPN и анонимайзеров с целью обхода блокировки.Запрет на использование несертифицированных средств шифрования -слишком . Ужесточение и расширение сфер их применения и многократное ужесточение наказаний за такие «нарушения» — дело нехитрое. В Китае вежливые ребята пришли в гости к разработчикам пресловутых ShadowSocks и GoAgent иделал им предложения, от которых они не могли отказаться .Подано дел в Иране в связи с использованием VPN для доступа к запрещенным сайтам. Механизм информирования властей о неблагонадежных соседях был прекрасно отработан еще в прошлом веке в СССР. У государств есть монополия на насилие, помните. Нас опять трахнули?

4294967295

Почему это все?

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

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

Если у вас сейчас есть прокси или VPN, и он работает — не расслабляйтесь: вы всего на полшага впереди своих недоброжелателей. Можно, конечно, посидеть тихо и подумать: «Да они там все дураки и криворукие обезьяны и ничего сложного не делают и реально работают», но, как говорится, надейся на лучшее, а готовься к худшему. Всегда имеет смысл изучить опыт тех же китайских коллег и присмотреться к более труднообнаруживаемым и более устойчивым к цензуре разработкам. Чем на большее количество шагов вы опередите цензоров, тем больше времени у вас останется, чтобы адаптироваться к изменившейся ситуации. Если вы разработчик и разбираетесь в сетевых протоколах и технологиях, вы можете присоединиться к одному из существующих проектов, помочь с разработкой и обдумать новые идеи. Люди во всем мире будут вам благодарны.

Интересно и полезно в этом плане будетNet4People ,Никакая мысль не является преступлением ,обсуждения в проекте XTLS (большая часть на китайском, но английский автопереводчик работает хорошо),отчет GFW . Если кто-то знает еще хорошие ресурсы и сообщества по этой теме — пишите в комментариях.

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

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


Коментарі

Популярні дописи з цього блогу

Як видалити троян Conteban з вашої системи

INFERNUM1488 :: Trojan Win32 Conteban A Ml — | что это и как бороться?