Многие страны мира начали повсеместно внедрять технологии для слежки за своими гражданами и анализа их поведения. Механизмы вроде DPI ограничивают нашу свободу в Сети. Чтобы вступить в честный бой с этими механизмами, очень важно разобраться, как все устроено внутри.
Еще по теме: Сокрытие данных от провайдера
Провайдеры и DPI
У провайдеров есть две проблемы:
- они обязаны ограничивать доступ к некоторым данным в соответствии с законом;
- ни одна компания не хочет платить лишние деньги за собственное соединение с провайдером уровня выше, которое, очевидно, тарифицируется.
И та и другая проблема решается ограничением отдельных запросов или протоколов, с чем справляется тот самый глубокий анализ пакетов — DPI.
Рядовых пользователей это лишает многих возможностей. Провайдер, например, способен заблокировать или сильно замедлить весь трафик протокола BitTorrent, так что качать торренты станет невозможно. Или, ради дополнительной выгоды, может «отключать» VoIP и Skype для всех пользователей, кроме тех, кто специально оплатил доступ.
DPI способен обнаруживать и пресекать соединения по определенным правилам, а их возможности зависят от производителя оборудования. Единственное, что их объединяет, — DPI работает начиная с транспортного уровня сетевой модели.
Сетевая модель
Компьютерные сети устроены таким образом, чтобы работать над сложными приложениями, не думая о кабелях и битах.
Для этого было определено четыре степени абстракции. Каждый следующий шаг вверх упрощает работу с информацией, которая передается по сети.
- Самый первый уровень связи основан на физических процессах. Он позволяет определять и связывать устройства, работая с аппаратными адресами: это в первую очередь ARP, L2TP и PPP.
- Второй слой, уровень маршрутизации, затрагивает адреса IP и создает логическую связь между узлами IPv4, IPv6 и IPsec. Оба эти уровня — ключевые, они описывают основу, то, как компьютеры могут друг друга найти.
- Третий уровень — транспортный — занимается данными: что передавать и насколько качественно это делать. TCP и UDP — два ключевых протокола, которые занимаются передачей данных на этом уровне, обеспечивают сохранность информации и ее порядок. Благодаря им все соединения строго регулируются.
- Последний, четвертый уровень — прикладной, поэтому его описание очень широко (из-за невообразимо большого количества протоколов), а использование не обязательно, не все приложения это делают. Но если используют, то за дело берутся протоколы HTTP и WebSocket, чтобы вы могли сидеть в интернете, играть в MMORPG и чатиться. Протокол FTP используется в основном для обмена файлами, а POP и IMAP — электронной почтой.Пример инкапсуляции данных через соединение HTTP
Оборудование DPI обычно работает с транспортным уровнем, пакетами TCP и UDP, читая не только заголовки, но и содержимое пакетов.
Анализ пакетов данных
Любой протокол имеет свою четко обозначенную внутреннюю логику, а также специальные сигнатуры, которые позволяют участникам соединения определять, кто и о чем говорит.
HTTP
Давайте разберемся, например, с HTTP — самым популярным протоколом. Отправим запрос на https://spy-soft.net.
1 2 |
GET / HTTP/1.1 Host: spy-soft.net |
Стандартный запрос браузера: он отправляется на IP 178.248.232.27 (адрес сервера сайта, известен всем, так как используется для адресации), запрашивает файл по адресу / на сайте spy-soft.net (директива Host). Ключ к определению трафика HTTP — его характерный заголовок.
- Первые символы до первого пробела — название метода: GET, POST, HEAD — ключевые. Конечно, есть и другие, но эти три занимают более 97% от всех запросов HTTP.
- Символы от второго пробела и до конца строки — версия запроса. Обычно это HTTP/1.1 или HTTP/1.0.
Все эти данные можно использовать, чтобы понять, какой это запрос и куда он идет. А если известен пункт назначения, то можно принять решение о блокировке или, в случае с spy-soft.net, о приоритизации соединения.
Но в современном мире все больше распространяется HTTPS, что же с ним?
Из-за шифрования прочитать содержимое без подготовки невозможно. Есть один способ это сделать — атака Man in the Middle, когда злоумышленник (или провайдер) внедряется в соединение, представляясь пользователю сервером, а серверу — настоящим клиентом.
Но такое требует полного доступа к компьютеру жертвы, так как сертификат (а вместе с ним и ключ), который используется для защиты соединения, подписан, и никто не может его изменить.
В таком случае провайдерам ничего не остается, кроме как блокировать трафик по единственной составляющей — адресу IP, что приводит к блокировке не отдельной страницы (как могло бы быть без HTTPS), а всего ресурса, а если не повезет, то и нескольких других, располагающихся на том же оборудовании.
BitTorrent
Из-за большого объема трафика, который передается через пиринг, провайдеры иногда пытаются ограничить скорость таких передач. Алгоритм передачи данных в пиринговых сетях значительно сложнее по сравнению с алгоритмом HTTP, но разработчики DPI нашли способ идентифицировать и его.
Если разбирать протокол именно сетей BitTorrent, то его можно разложить на несколько отдельных элементов, каждый из которых представляет собой набор относительно легко идентифицируемых соединений. Соединения в µTorrent всегда начинаются либо с файла*.torrent, либо с магнитной ссылки. Внутри заключена информация о файлах в формате Bencode: название файлов, структура папок, схема деления на части и, конечно, так называемые трекеры (announce).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
{ "announce": "http://torrent.ubuntu.com:6969/announce", "announce-list": [ [ "http://torrent.ubuntu.com:6969/announce" ], [ "http://ipv6.torrent.ubuntu.com:6969/announce" ] ], "comment": "Ubuntu CD releases.ubuntu.com", "creation date": 1550184717, "info": { "length": 1996488704, "name": "ubuntu-18.04.2-desktop-amd64.iso", "piece length": 524288, "pieces": 0x5D 0x9D 0xCD 0x4F ... 0x29 0x24 0x57 0xF0, } } |
Это преобразованное в читаемый вид содержимое файла torrent с дистрибутивом Ubuntu 18.04. Самое главное — то, что в нем описаны трекеры — специальные регуляторы. Обычно это просто серверы HTTP, которые знают, кто из других участников сети готов отдавать вам новые данные, а также следят за вашим прогрессом и статусом в системе.
Первым этапом для скачивания торрента будет запрос пиров через HTTP или TCP, который системы DPI способны обнаружить либо по IP, либо по директиве Host в запросе. Кроме этого, в теле запроса обязательно будет Bencode — характерный исключительно для соединений BitTorrent.
Вторым этапом идет обмен рукопожатиями с только что полученными пирами. Для каждого из них специально хранятся четыре параметра: am_choked и peer_choked — запрещена ли передача данных от пира и обратно, am_interested и peer_interested — есть ли у пира или у меня что-то ценное для передачи.
Рукопожатие с пирами, как и запрос к трекеру, заполнено данными (идентификатор клиента, хеши файлов и так далее) с помощью Bencode. Это позволяет облегчить задачу идентификации. Более того, в зависимости от версии протокола и клиента внутри данных может содержаться строка BitTorrent protocol (или другая, характерная для клиента), что еще больше упрощает идентификацию.
Третий этап общения, а именно обмен данными происходит через соединение UDP. Сообщения управляют потоком данных и состояниями choked и interested и, главное, передают сами данные. Часть этих сообщений имеет строго фиксированную длину тела запроса. Это может послужить зацепкой в исследовании трафика оборудованием DPI.
Эти этапы заметны, что позволяет анализирующему оборудованию легко обнаруживать и, соответственно, блокировать и замедлять соединение. Некоторые производители обрубают попытки соединения на корню. Другие же, более смекалистые, подделывают трафик так, что для клиента все выглядит как обычно, но загрузка не идет.
VoIP
Voice over Internet Protocol — важнейшая часть современного общения. Только Skype пользуются 300 миллионов человек в месяц. При помощи этой технологии совершаются звонки в WhatsApp, Telegram, Viber и не только.
Конечно, обстановка в отношениях между VoIP и DPI менее напряженная, так как нет ни строгого регламента взаимодействия двух клиентов, ни общего формата данных, а некоторые приложения так и вовсе шифруют соединение.
На помощь анализатору приходит SIP (Session Initiation Protocol) — протокол, описывающий то, как клиенты начинают, регулируют и заканчивают общение между собой. Внутри описывается несколько параметров, причем в таком же формате, как и HTTP, и благодаря этому легко отслеживается.
1 2 3 4 5 |
INVITE sip:10100@192.46.18.48 SIP/2.0 From: "User 1" <sip:10100@192.46.18.48> To: "User 2" <sip:1201@192.42.20.22> Call-ID: 22a1c6b515ecee@192.46.18.48 Max-Forwards: 10 |
Как и HTTP, SIP имеет собственные трехзначные статусы, которые передаются в открытую, и все это в комплекте позволяет DPI если не с первого, то со второго или третьего пакета данных определить протокол и немедленно предпринять необходимые действия.
Методы защиты от слежки провайдера
В борьбе с DPI важно обмануть сканер, который рассчитан на обычные запросы. Небольшие изменения в структуре запросов помешают его работе.
Лучшим способом ввести анализатор в заблуждение будет полностью зашифровать пакет данных и отправить его на личный, никому не известный сервер в интернете, который расшифрует данные и выполнит запрос. Ровно такую методологию предлагает obfs4proxy.
Изначально придуманный как посредник при передаче данных в сети Tor, obfs4 может также работать в режиме клиента и сервера, позволяя практически любому приложению перенаправить трафик в обфусцированный туннель. С этим отлично справляется, например, OpenVPN, создающий еще и защищенный шифрованием канал данных.
OpenVPN может также изображать легитимный трафик HTTPS, который анализатор DPI сочтет самым обыкновенным.
Этого можно достичь, перенаправив поток VPN через порт 443 вместо стандартного 1194, но это помогает не всегда. Или можно использовать stunnel в качестве туннеля SSL. Тогда шифрование SSL сделает запросы HTTPS практически неотличимыми от пакетов данных туннеля, помогая скрываться от грозного ока DPI.
Можно попытаться и напрямую обмануть анализатор трюками из мира сегментов TCP. Методика разделения длинных пакетов на маленькие для уменьшения потерь использует параметр TCP Window Size, регулирующий поток данных через соединение. Предварительная установка его в значение 2 для каждого пакета разделит последний на два сегмента.
Первый:
1 |
GE |
Второй:
1 2 |
T / HTTP/1.1 Host: www.spy-soft.net |
Ни один из этих пакетов не будет воспринят как валидное соединение HTTP, и поэтому соединение пройдет все фильтры.
Блокировку по адресу сайта (по директиве Host) обойдет и такой запрос:
1 2 |
GET / HTTP/1.1 hOSt:spY-sOft.NET |
Чтобы не пришлось обфусцировать каждый пакет вручную, есть утилита GoodbyeDPI, которая делает эту работу за вас. Она позволяет подобрать наилучшие комбинации изменений, чтобы ваш запрос миновал всевидящее око DPI.
Заключение
Как видите, алгоритмы анализа трафика идут вровень с технологиями обхода. Каждый новый шаг в развитии слежки за трафиком пользователей будет усложнять схему получения доступа к «чистому» интернету. Сообщество активных пользователей стремится сохранить интернет свободным от контроля и цензуры, и благодаря этому мы можем продолжать работать в открытой сети.
Еще по теме: Точка доступа с автоматической анонимизацией трафика через Tor
Спасибо за материал!
Можете ли вы подсказать, даже если я к вам написал письмо и не по адресу. Если вы занимаетесь анонимностью, то можете передать в соответствующие руки эту информацию. Я бы хотел найти программу или расширение в браузер, или дополнение к вашему поисковику. Программа должна выполнять следующее — посещать такие сайты которые мне не интересны например если я не интересуюсь биологией или космосом или вьетнамом каким нибудь, то есть забивать историю посещенных мною сайтов в интернете мусорными посещениями. При безлимитном интернете это вполне возможно, например в спящем режиме. Что бы гугл и другие собиратели статистики запутались в интернет портрете своих клиентов. Получается у этой программы несколько другой подход к анонимности. Она не меняет айпи и не прячется в сетях она выбрасывает мусор для наблюдателей и собирателям информации, создавая дезинформацию для них. Эту идею я ещё не находил воплощенной в каких то программах. Хотя если боевой самолёт летит, то он выбрасывает светящиеся отвлекающие тепловые огни, чтобы в него не могла попапасть ракета. Так же и в программах против преследователей таких как гугл и им подобных надо применить этот же метод. VPN и прокси берут деньги за свои услуги и точно ли они дают анонимность, это не известно мне, а у меня безлимитный интернет и пусть эта программа автоматически гонит мой браузер по фейковым сайтам когда я сплю. Желательно что бы эта программа могла иммитировать похожее поведение на реального человека и подключить к ней искусственный интеллект в дальнейшем, что бы он хорошо иммитировал живого человека. Вообще возможность такого завуалированнго поведения этой программы впоследствии должен противостоять всем фокуса гугла и его помощников. На мой взгляд эта программа должна быть написана с открытым исходным кодом. Ещё один интерес может быть использован программистами открытого кода для посещения их страниц которые они сочтут нужными для раскрутки их сайтов, но это уже на компромисс. Вообще, я считаю, что этот вид дезинформации наблюдателей в комплексе с вашими приёмами дополнит анонимность ещё одним инструментом.
Noisy тебе в помощь.