Исследователи из Мэрилендского университета в рамках проекта предприняли попытку создания для автоматизации определения методов, применяемых для цензурирования доступа к контенту. Вручную пытаться перебрать возможные бреши систем глубокого инспектирования пакетов (DPI) достаточно трудный и долгий процесс, в Geneva попытались использовать для оценки особенностей DPI, определения ошибок в реализации и выработки оптимальной стратегии обхода блокировки на стороне клиента. Код проекта на языке Python.
Применяемое для блокировки DPI-оборудование имеет свои , позволяющие скрыть обращение к запрещённому ресурсу или избежать блокировки. Например, в простейшем случае при организации блокировки через подстановку фиктивного ответа (применяется пассивными DPI) достаточно на стороне клиента фиктивный ответ, отправленный DPI. В случае применения активного DPI можно попытаться скрыть сам факт обращения к заблокированному сайту, немного видоизменив параметры HTTP-запроса (например, добавив лишний пробел после «GET»), разделив на несколько пакетов данные согласования TLS-соединения или выполнив атаки TCB Teardown и TCB Desync. Суть упомянутых атак в отправке клиентом вначале фиктивного пакета с данными или флагами RST/ACK, который не получит целевой хост, но поймает DPI, примет на его основе решение и не станет анализировать идущий следом пакет с реальным запросом (например, в фиктивном первом пакете можно указать другой SNI, а для скрытия этого пакета от целевого хоста можно выставить низкий TTL, а также некорректную контрольную сумму, флаги или номер последовательности TCP).
Gjenevë выработать рабочий метод обхода DPI, используя четыре базовые примитива для манипуляции с сетевыми пакетами — отбрасывание, изменение заголовков, дублирование и фрагментация. Для подбора оптимальной стратегии применяется генетический алгоритм, моделирующий процессы, сходные с естественным отбором, через случайное комбинирование различных вариантов манипуляций с пакетами. В конечном счёте, на выходе примитивы комбинируются в «дерево действий», определяющее алгоритм обхода DPI.
Работа Geneva успешно опробована для обхода методов цензурирования, применяемых в Китае, Индии и Казахстане, в том числе при помощи Geneva было выявлено несколько новых брешей, о которых не было известно до этого. При этом Geneva эффективен только для обхода блокировок на основе DPI, при блокировании по IP-адресам он бесполезен и без VPN не обойтись. В ходе экспериментов несколько десятков типовых стратегий обхода DPI, которые можно протестировать сразу без проведения полного анализа, например:
python3 engine.py —server-port 80 —strategy «[TCP:flags:PA]-duplicate(tamper{TCP:dataofs:replace:10} tamper{TCP:chksum:corrupt},),)-|» —log debug
2020-01-24 20:54:41 DEBUG:[ENGINE] Engine created with strategy \/ (ID bm3kdw3r) to port 80
2020-01-24 20:54:41 DEBUG:[ENGINE] Configuring iptables rules
2020-01-24 20:54:41 DEBUG:[ENGINE] iptables -A OUTPUT -p tcp —sport 80 -j NFQUEUE —queue-num 1
2020-01-24 20:54:41 DEBUG:[ENGINE] iptables -A INPUT -p tcp —dport 80 -j NFQUEUE —queue-num 2
2020-01-24 20:54:41 DEBUG:[ENGINE] iptables -A OUTPUT -p udp —sport 80 -j NFQUEUE —queue-num 1
2020-01-24 20:54:41 DEBUG:[ENGINE] iptables -A INPUT -p udp —dport 80 -j NFQUEUE —queue-num 2
Burimi: opennet.ru
