Может показаться, что этот вопрос не очень соответствует теме канала и не несет практической пользы.
НО, во первых это интересно, во-вторых связано с работой сети, ну и что это за тестировщик который не хочет узнать как работает тот или иной популярный инструмент?
Пишите в комментариях если не согласны с моим мнением)
GoodbyeDPI — это программа, разработанная для обхода интернет-цензуры, применяемой провайдерами или государственными органами, путём обхода методов DPI (Deep Packet Inspection) — глубокого анализа пакетов. DPI — это технология анализа сетевого трафика на уровне пакетов, которая позволяет провайдерам или государственным организациям ограничивать доступ к определённым ресурсам или замедлять трафик.
- Читайте также: Как работает DPI (замедлитель ютуба)? Как это обойти? (в дзен удалили, читайте в ВК вот здесь или в Телеграмм)
Как работает GoodbyeDPI?
GoodbyeDPI предназначен для обхода таких ограничений и работает за счёт манипуляции заголовками пакетов с целью "обмануть" DPI-системы. Программа использует несколько методов:
1. Фрагментация заголовков пакетов:
Программа разбивает заголовки пакетов на несколько частей. DPI-системы, рассчитывающие на стандартные, правильно сформированные заголовки, могут не распознать такие пакеты и не применят к ним блокировки или замедления.
Как происходит дробление заголовков?
Протоколы, такие как HTTP, передают данные в виде текстовых заголовков и тела запроса. Например, стандартный HTTP-запрос может выглядеть так:
GET / HTTP/1.1\r\n
Host: example.com\r\n
User-Agent: Mozilla/5.0\r\n
Accept: */*\r\n
\r\n
DPI-система ожидает, что весь заголовок будет передан единым куском. Однако, программа GoodbyeDPI может разбить его на части, послав заголовок по частям, например, вот так:
GE
T / HT
TP/1.1\r\nHo
s
t: exam
ple.com\r\n
User-Agent: Moz
illa/5.0\r\n
Accept: */*\r\n
\r\n
2. Подмена флагов TCP:
Программа может изменять флаги TCP (например, флаг FIN или RST), чтобы DPI-системы не корректно интерпретировали установление соединений и не смогли эффективно блокировать трафик.
Как работает изменение флагов в TCP?
В TCP-заголовке есть специальные биты, которые называются "флагами". Они используются для управления состоянием соединения. Например:
- SYN (synchronize) — сигнал для установления соединения.
- ACK (acknowledge) — подтверждение приема данных.
- FIN (finish) — сигнал завершения соединения.
- RST (reset) — принудительный сброс соединения.
Если изменить или подделать эти флаги, можно изменить поведение сетевых устройств, которые анализируют пакеты. Например, можно отправить пакет с флагом RST, чтобы разорвать соединение, или изменить его содержимое, чтобы устройство DPI проигнорировало этот пакет.
Пример того, как может быть изменен или подменен флаг TCP в реальной программе (с использованием библиотеки scapy (Python)):
3. Подмена или удаление заголовков Host и SNI:
Некоторые DPI-системы используют анализ SNI (Server Name Indication) — часть TLS-соединения, которая позволяет узнать, к какому серверу пользователь пытается подключиться. GoodbyeDPI может изменять или удалять эту информацию, что позволяет обойти цензуру, основанную на анализе SNI.
GoodbyeDPI предлагает несколько методов для обхода цензуры, основанной на анализе SNI:
1. Модификация SNI-заголовка
GoodbyeDPI может изменять SNI-заголовок, делая его нечитаемым для DPI-системы, но при этом он остаётся валидным для конечного сервера. Это достигается путём добавления небольших изменений в структуру SNI-заголовка, что может нарушить его распознавание DPI, но не влияет на успешное установление соединения с сервером.
Пример:
- Кодировка или изменение порядка байтов в SNI-заголовке (например, добавление лишних символов или изменение регистров), что мешает DPI-системе правильно прочитать имя домена, но не нарушает процесс установки соединения на стороне сервера.
2. Удаление SNI-заголовка
GoodbyeDPI может полностью удалять SNI-заголовок из TLS-запроса, что делает его невидимым для DPI-системы. Однако этот метод работает только с серверами, которые не требуют наличия SNI для установления соединения (например, те, которые используют только одно доменное имя или поддерживают серверы с общими IP-адресами).
Пример:
- В TLS-запросе просто не передаётся поле SNI, и если сервер не требует его для установления соединения, то запрос будет обработан корректно.
3. Использование неправильного SNI (фальсификация)
GoodbyeDPI может подставить в SNI-заголовок неверное, но валидное доменное имя, чтобы обмануть DPI-систему. Например, вместо реального домена, к которому нужно подключиться, подставляется "безопасный" домен, который не заблокирован. После установки соединения происходит перенаправление на нужный ресурс.
Пример:
- В поле SNI подставляется домен, который не блокируется (например, "example.com"), а затем соединение перенаправляется на нужный сервер.
4. Игнорирование HTTP/HTTPS-запросов:
В некоторых случаях система DPI может просто игнорировать запросы, которые выглядят "неправильными" или "подозрительными". GoodbyeDPI может намеренно искажать заголовки HTTP или HTTPS-запросов, что позволяет пройти мимо контроля.
Примеры методов искажения заголовков в GoodbyeDPI:
4.1 Фрагментация заголовков: Заголовки HTTP-запросов могут быть разбиты на несколько частей (фрагментированы). Это делает анализ более сложным для DPI, так как система может ожидать целостный заголовок, а не его фрагменты.
Пример: Вместо отправки заголовка в одном пакете:
GET / HTTP/1.1
Host: example.com
Запрос может быть разделён на несколько пакетов:
G
ET / HTTP/1.1
Ho
st: example.com
4.2 Добавление лишних пробелов: В HTTP-протоколе пробелы между элементами заголовков обычно не учитываются, однако некоторые системы DPI могут не обрабатывать такие запросы корректно и считать их недопустимыми.
Пример: Вместо:
GET / HTTP/1.1
Host: example.com
GoodbyeDPI может отправить:
GET / HTTP/1.1
Host: example.com
4.3 Изменение регистра символов: HTTP-заголовки в большинстве случаев нечувствительны к регистру, но некоторые системы DPI требуют строго определённый формат. Изменение регистра может привести к тому, что DPI не сможет распознать заголовки.
Пример: Вместо:
GET / HTTP/1.1
Host: example.com
GoodbyeDPI может отправить:
get / http/1.1
host: example.com
4.4 Отправка "недопустимых" заголовков: GoodbyeDPI может добавлять в запрос заголовки, которые не имеют смысла, но при этом не нарушают работу сервера. DPI может не ожидать таких заголовков и поэтому "проглядеть" запрос.
Пример:
GET / HTTP/1.1
Host: example.com
X-Fake-Header: unexpected_value
4.5 Модификация заголовка Host: DPI может использовать заголовок Host, чтобы определить, какой сайт запрашивается и применить фильтрацию на его основе. GoodbyeDPI может изменить этот заголовок таким образом, чтобы обмануть DPI.
Пример: Вместо:
Host: example.com
Можно отправить:
Host: exa\x00mple.com
Здесь в строку вставляется нулевой байт (\x00), который может привести к тому, что DPI не сможет корректно обработать этот заголовок.
5. Комбинация методов:
Программа может комбинировать несколько методов обхода в зависимости от того, как настроена система DPI у провайдера. Это позволяет гибко обходить различные типы ограничений.
Применение программы:
GoodbyeDPI обычно используют для обхода цензуры и получения доступа к интернет ресурсам, которые ограничены по скорости или вообще заблокированы на какой-то территории. Программа работает на уровне операционной системы и требует прав администратора для изменения сетевых пакетов.
Альтернативы GoodbyeDPI:
- Simple-DPI-Bypass: Это скрипт, который также использует методы фрагментации пакетов и модификации заголовков для обхода DPI. Он работает на Ubuntu и других дистрибутивах Linux.
- doh-client: Это инструмент для обхода блокировок через DNS over HTTPS (DoH). DNS over HTTPS шифрует DNS-запросы, что затрудняет их анализ и блокировку.
Технические ограничения и риски:
1. Зависимость от провайдера:
Успешность работы программы зависит от конкретных методов DPI, используемых вашим интернет-провайдером. В некоторых случаях провайдеры могут обновить системы DPI, что сделает GoodbyeDPI менее эффективной.
2. Не универсальность:
Программа эффективна против некоторых методов блокировки, но не всех. Например, она может быть неэффективна против более сложных методов фильтрации, таких как полное блокирование IP-адресов или использование продвинутых систем DPI.
3. Возможные юридические последствия:
В некоторых странах использование таких программ может быть незаконным, так как оно может нарушать местные законы о цензуре и контроле за интернетом. Пользователи должны быть осведомлены о возможных юридических последствиях.
Есть ли опасность для пользователя в использовании GoodbyeDPI?
Использование GoodbyeDPI, как и любой другой программы для обхода интернет-ограничений, может представлять определённые риски и опасности для пользователя. Вот основные аспекты, которые стоит учитывать:
1. Правовые риски
- Нарушение местного законодательства: В некоторых странах использование программ для обхода цензуры, таких как GoodbyeDPI, может быть незаконным. Например, в некоторых странах существуют строгие законы, касающиеся обхода интернет-блокировок. Нарушение этих законов может привести к штрафам, блокировке доступа к интернету или даже уголовной ответственности.
- Ответственность за действия в сети: Если вы используете GoodbyeDPI для обхода блокировок и совершаете действия, которые нарушают законы (например, посещаете запрещённые ресурсы), это также может привести к юридическим последствиям.
2. Безопасность данных
- Изменение сетевых пакетов: Программа изменяет сетевые пакеты для обхода DPI, что может потенциально повлиять на стабильность соединений. В редких случаях это может привести к непредсказуемому поведению некоторых приложений или нарушению их работы.
- Отсутствие шифрования: GoodbyeDPI не обеспечивает шифрование вашего трафика (в отличие от VPN или Tor). Это значит, что ваш интернет-провайдер всё ещё может видеть, какие сайты вы посещаете, даже если ему не удаётся заблокировать доступ к ним. Если вы стремитесь скрыть свою активность в интернете, вам может понадобиться дополнительно использовать VPN или другие инструменты для защиты конфиденциальности.
3. Технические риски
- Нестабильность соединения: В некоторых случаях, при использовании GoodbyeDPI, ваше интернет-соединение может стать менее стабильным. Это связано с тем, что программа вмешивается в работу сетевых протоколов, что может приводить к ошибкам при передаче данных или разрывам соединений.
- Поддержка и обновления: GoodbyeDPI — это open-source проект, и его дальнейшая поддержка зависит от сообщества разработчиков. Если разработка программы будет прекращена или не будет обновляться в ответ на изменения в системах DPI у провайдеров, программа может стать неэффективной.
4. Маскировка не всегда эффективна
- Неполный обход блокировок: GoodbyeDPI может не работать против всех видов блокировок. Например, если провайдер блокирует доступ к сайтам по IP-адресам или использует более сложные методы фильтрации, программа может быть неэффективной.
- Анализ активности: Даже если GoodbyeDPI успешно обходит блокировки, провайдер может анализировать общие параметры вашей интернет-активности, такие как объём трафика или частота запросов, и заподозрить использование инструментов обхода.
5. Риски для конфиденциальности
- Провайдер может заподозрить обход: Хотя GoodbyeDPI и обходит блокировки, провайдер может заподозрить, что вы используете инструменты для обхода цензуры, по характеру сетевого трафика. Если это обнаружено, ваш провайдер может принять меры: от предупреждений до отключения вашего подключения к интернету. В странах с жёсткой цензурой это может привести к обращению в правоохранительные органы.
Как снизить риски при использовании GoodbyeDPI?
1. Используйте VPN в сочетании с GoodbyeDPI: Это обеспечит шифрование вашего трафика и дополнительную защиту. VPN маскирует вашу активность, и провайдер не сможет легко определить, какие сайты вы посещаете.
2. Узнайте о местных законах: Перед использованием таких инструментов, как GoodbyeDPI, ознакомьтесь с законодательством вашей страны касательно обхода интернет-цензуры. Это поможет вам избежать юридических последствий.
3. Следите за обновлениями программы: Технологии DPI постоянно развиваются. Обновления программы могут помочь поддерживать её эффективность против новых методов блокировки.
4. Осторожно используйте в публичных сетях: В общественных или корпоративных сетях использование таких инструментов может быть замечено администраторами сети, что может повлечь за собой санкции.
Раз вы прочитали эту статью, скорее всего вам будет интересен весь раздел про Анонимность в сети.
Если Вам интересно, что еще можно найти на канале QA Helper, прочитайте статью: Вместо оглавления. Что вы найдете на канале QA Helper - справочник тестировщика?
Не забудьте подписаться на канал, чтобы не пропустить полезную информацию: QA Helper - справочник тестировщика
Пишите в комментариях какой пункт было бы интересно рассмотреть более подробно.
Обязательно прочитайте: Что должен знать и уметь тестировщик
Также будет интересно почитать: Вопросы которые задают на собеседовании тестировщикам