Как устроены блокировки в интернете: обзор современных методов на реальном примере
Группа индийских ученых опубликовала обзор современных методов интернет-блокировок, вводимых государственными органами, на примере собственной страны. Они изучили механизмы, которые применяют интернет-провайдеры для ограничения доступа к запрещенной информации, оценили их точность и возможности по обходу таких блоков. Мы представляем вашему вниманию главные тезисы этой работы.
Вводные данные
В последние годы исследователи из разных стран провели множество исследований методов блокировок, которые применяют в считающихся «несвободными» странах — например, в Китае или Иране. Однако даже демократические государства, вроде Индии, в последние годы развернули масштабную инфраструктуру для осуществления цензуры в интернете.
В ходе исследования ученые составили список из 1200 потенциально заблокированных в стране сайтов. Данные собирали из открытых источников, вроде Citizen Lab или Herdict. Затем, был организован доступ в интернет с помощью девяти наиболее популярных интернет-провайдеров.
Для определения факта цензуры и блокировки сайта изначально использовался инструмент OONI.
OONI vs собственный скрипт для поиска блокировок
Изначально исследователи собирались использовать популярный инструмент обнаружения цензуры под названием OONI. Однако уже в ходе эксперимента выяснилось, что он дает много ложных срабатываний — ручная проверка полученных результатов выявляла много неточностей.
Низкое качество определения цензуры может быть связано с устаревшими механизмами работы OONI. Так при обнаружении фильтрации DNS инструмент сравнивает IP-адресс заданного хоста, возвращаемый Google DNS (он считается неподцензурным), с IP-адресом, назначенным сайту интернет-провайдером.
Если адреса не совпадают, то OONI сигнализирует о наличии блокировки. Однако в реалиях современного интернета разные IP-адреса ни о чем не говорят и, например, могут быть свидетельством использования CDN-сетей.
Таким образом, исследователям пришлось написать собственные скрипты для выявления блокировок. Ниже — обзор популярных способов блокировки контента в интернете и анализ их эффективности в современных условиях.
Как осуществляют блокировки или что такое middleboxes
Анализ показал, что во всех случаях блокировок различного типа, они осуществляются с помощью внедренных сетевых элементов. Исследователи назвали их middleboxes — они перехватывают пользовательский трафик, анализируют его, и в случае, если обнаруживают попытку соединения с запрещенным сайтом, встраивают в трафик специальные пакеты.
Для обнаружения middleboxes исследователи разработали собственный метод Iterative Network Tracing (INT), который использует принципы утилиты traceroute. Его суть сводится к отправке веб-запросов к заблокированным сайтом с увеличением значений TTL в IP-заголовках.
Механизм middlebox для перехвата данных
Блокировки DNS
Процесс разрешения DNS — это главный шаг на пути к получению доступа к любому веб-сайту. Введенный пользователем URL сначала разрешается в связанный IP-адрес. При использовании блокировки DNS цензоры всегда вмешиваются именно на этом шаге — подконтрольный резолвер возвращает пользователю неверный IP-адрес, в итоге сайт просто не открывается (DNS poisoning).
Еще один способ блокировки — использование инъекций DNS — в этом случаей middlebox между клиентом и резолвером перехватывает DNS-запрос и отправляет собственный ответ, содержащий некорректный IP-адрес.
Для выявления блокировок DNS со стороны интернет-провайдеров, исследователи использовали TOR с выходными нодами в странах без цензуры — если с помощью него сайт открывается, а с помощью простого подключения через провайдера — нет, то имеет место факт блокировки.
После выявления сайтов, заблокированных по DNS, исследователи определяли способ блокировки.
Метод итеративной сетевой трассировки: клиент отправляет специальные запросы (DNS/HTTP GET), содержащий заблокированный сайт и постоянно увеличивающееся TTL
Фильтрация пакетов TCP/IP
Блокировки с помощью фильтрации по заголовкам пакетов считаются популярным способом интернет-цензуры. В интернете можно найти немало исследований, авторы которых пытаются выявить именно такой способ блокировки сайтов.
В реальности же проблема в том, что такой способ легко перепутать с обычными системными сбоями, приводящими к затруднениям в работе сети и снижению ее пропускной способности. В отличие от блокировок по HTTP, при фильтрации TCP/IP пользователь не получает никаких оповещений о том, что нужный ему сайт заблокирован — он просто не открывается. Провести валидацию и отделить случаи блокировок от обычных сбоев и ошибок в работе сети очень трудно.
Тем не менее, исследователи попытались это сделать. Для этого использовалась процедура хендшейка. handshake-пакеты туннелировались через Tor с выходными нодами в странах без цензуры. В случае сайтов, с которыми удалось установить соединение с помощью Tor, процедура хендшейка осуществлялась еще пять раз подряд с задержкой в примерно две секунды. Если каждая из попыток оказывалась неудачной, с высокой долей вероятности речь шла о преднамеренной фильтрации.
В итоге для всех протестированных интернет-провайдеров такой метод блокировки не был обнаружен.
HTTP-фильтрация
Зато в случае пяти из девяти провайдеров была обнаружена фильтрация HTTP. Этот метод подразумевает анализ содержимого HTTP-пакетов. Осуществить его можно с помощью тех самых промежуточных сетевых элементов (middleboxes).
Для выявления HTTP-фильтрации исследователи создали Tor-контуры, оканчивающиеся в странах без интернет цензуры. Затем они сравнивали контент, полученный в ответ на запросы к заблокированным сайтам, совершенные внутри страны и с помощью Tor.
Одной из первых задач было выявление момента, в котором происходит блокировка. К примеру, в случае некоторых провайдеров, после отправки запроса HTTP GET, в ответ приходил ответ HTTP 200 OK с установленным битом TCP FIN с уведомлением о блокировке — именно он заставляет браузер клиента прервать соединение с целевым сайтом. Однако после этого также приходил и пакет от сайта. В таких случаях было непонятно, что стало триггером блокировки — запрос клиента, или ответ сайта.
Выяснить это удалось с помощью простой манипуляции: в заголовке пакета HTTP в GET-запросе поле Host заменяли на HOST. Этого оказывалось достаточно, для того, чтобы заблокированный сайт начал открываться. Это доказывает, что цензоры проверяют лишь запросы клиента, а не ответы сервера.
Заключение: все ли провайдеры осуществляют блокировки
Зачастую блокировки сайтов конкретные интернет-провайдеры осуществляют не сами, а надеются в этом плане на провайдеров, управляющих «соседними» сетями. В рассмотренном эксперименте несколько поставщиков интернет-услуг ни разу не были замечены в использовании собственных блокировок, но при этом заблокированные в стране сайты у их пользователей могли точно также не открываться.