April 9, 2022

Что такое антифрод и с чем его едят?

Part 3

Shadowsocks

Shadowsocks использует технику, называемую «проксифицированием», которая используется для обхода цензуры. Обычно проксфициирование включает перенаправление трафика через альтернативный сервер.Shadowsocks стал неотъемлемым инструментом для доступа к ограниченному контенту в таких странах со строгой цензурой, как Китай.

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

Достоинства Shadowsocks:

  • Легкость настройки сервера: ниже я покажу, что стандартный конфиг — это всего 5 строчек, и не нужно возни с сертификатами. Ну правда, не банковскую сеть же делаем.
  • Легкость настройки клиента. Клиенты есть под всё, не побоюсь громкого слова. Конфиг клиента — это те же 5 строчек.
  • Клиенту для работы не нужны права админа. Мало того, его можно установить из pip. То есть любой программист сможет подключиться с работы.
  • Легко настраивать доступ на уровне отдельных программ. В браузере, с помощью дополнений типа FoxyProxy/OmegaSwitchy так вообще — на уровне отдельных адресов по сложным правилам. При использовании VPN такого можно добиться только поднимая локальные прокси на каждом клиенте.
  • В отличие от VPN, который на большинстве систем реализован через виртуальную сетевую карту, клиент Shadowsocks при обрыве связи никуда не девается. Так что ваш трафик не пойдёт сам по себе незащищённым путём. Кроме того, даже если упадёт само приложение Shadowsocks, программы не будут обращаться напрямую, если только не настроены это делать. При использовании VPN приходится реализовывать kill-switch, а они, особенно под Винду, ненадёжные и с побочными эффектами.
  • По сравнению с SSH туннелем — большая пропускная способность, поддерживает тысячи клиентов с кучей соединений от каждого. SSH туннель под, например, торрентами, ощутимо грустит; кроме того, мелкие неровности сети заметно снижают его скорость. Shadowsocks-у пофиг.
  • Гоняет меньше технической инфы по соединениям, что благоприятно для батарейки мобильных устройств.
  • Есть экзотические версии серверов, написанные в виде библиотек для разных языков. То есть можно добавить сервер в свою программу для шифрования доступа своим клиентам.
  • Графическая настройка клиентов. Можно сделать QR код, при сканировании которого клиенты мобильников и видны настраиваются сами. Один клиент под винду настроили, код сгенерировали, на 20 мобильников раскидали за минуту. Можно на сайт выложить, или на стенку повесить.

Недостатки Shadowsocks:

  • В отличие от OpenVPN, не проходил официального аудита. Так-то его просматривала куча народу, благо код открытый и маленький, но официально — нет.
  • Не разделяет пользователей. Можно научить слушать на нескольких портах с разными паролями, но на одном порту — один пароль. Знание пароля не позволяет (в теории) слушать другого абонента того же порта.
  • Не умеет пробрасывать порт в обратную сторону. То есть все как за NAT сидят. Придётся воспользоваться SSH туннелем, если можно.
  • Клиент для Андроида держит аж два(!) неубираемых сообщения. Если их не скрыть, это очень мешает.
  • Есть пара упёртых программ под Винду, которые не лезут в Shadowsocks, как их не настраивай. Увы, автор программы может написать открытие соединения так, чтобы игнорировать настройки прокси, и так иногда делают, когда проверяют лицензии на софт. Ниже напишу хитрый трюк, как эти программы распознать.
  • Latency соединения выше, чем у OpenVPN. Не сильно, и гамать можно, но всё же.
  • Не умеет сжимать трафик архиватором. В век HTTPS это не важно, а вот для, скажем, несжатых текстовых файлов и настоящих образов Убунты — разница есть.
  • Документацию писали китайцы, на китайском английском, с кучей пропущенных пунктов и взаимных противоречий.

Данная технология даёт большую фору конфигам OVPN, поскольку сама внутри себя обеспечивает шифрование трафика, а соответственно его безопасность.

Для создания подойдёт любой, даже самый дешёвый сервер. Важно отметить, что для анонимности нужно выбирать сервера с возможностью оплаты в криптовалюте и производить настройку с использованием уже защищеного трафика. Например, вы можете воспользоваться услугами ProtonVPN для первичного подключения и настройки, а потом использовать уже сам Shadowsocks.

OVPN

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

По сути ваш личный кирпичик из конструктора для создания собственного VPN.

VPN, как вы знаете это Virtual Private Network. Вот только в настоящее время слово "private" можно спокойно вычеркнуть и навсегда забыть. Практически все VPN сервисы независимо от страны регистрации выдают или того хуже продают данные пользователей. Это "немного" противоречит заявляемой всеми приватности и анонимности. Если ваша цель достичь настоящей анонимности, то использовать следует только собственноручно созданные конфигурации OVPN.

Но даже их создание требует от вас соблюдения ряда некоторых правил:

  1. Использовать для создания только те сервера, которые можно приобрести анонимно, то есть за криптовалюту.
  2. Отключать логирование, чтобы на сервере не сохранялось данных откуда и кто подключался к нему.
  3. Создавать цепочку из нескольких серверов, каждый из которых должен находится в разных странах и принадлежать различным хостинг-провайдерам. Это усложнит выявления Ip адреса конечного провайдера.
  4. Подключаться с своим OVPN используя proxy, для еще большего усложнения цепочки.

OVPN сервер распространяется в виде исходного кода или готовых к установке скомпилированных пакетов для различных операционных систем. В качестве библиотеки обеспечивающей шифрование используется OpenSSL.

Основные механизмы и возможности

  • Сертификатная аутентификация
    Про неё написано огромное количество документации. Суть проста. Создаётся свой центр сертификации, который выпускает пользовательские сертификаты. С помощью центра сертификации обеспечивается контроль за подключением пользователей к OpenVPN серверу. При окончании времени действия сертификата или его отзыве, доступ пользователя блокируется. Приватные ключи с установленным на них паролем, выпускаемые совместно с сертификатом обеспечивают безопасность от несанкционированного подключения к внутренним ресурсам.
  • Приватные point-to-point ключи
    С точки зрения подключения к ресурсам компании только одного пользователя/сервера, используется схема с приватными ключами. На одном из хостов генерируется ключ, который является общим для сервера и клиента.

Во всех случаях подключения для безопасности "рукопожатия" handshake между клиентом и сервером используется протокол Diffie-Hellmann.

  • Внешняя аутентификация пользователей
    Для упрощения контроля за подключением пользователей, вместо схемы со своим PKI, можно использовать схему с внешней аутентификацией пользователей по логину/паролю. Данная схема удобна для аутентификации пользователей скажем по доменному логину/паролю. Для подключения к серверу в конфигурационный файл клиента добавляется сертификат сервера и ключ подписи передаваемых пакетов HARDENING OPENVPN SECURITY.
  • RAM
    Для повышения безопасности можно использовать подключаемые модули обеспечивающие проверку логина/пароля во внешних системах. Самым распространённым методом является системный PAM(Pluggable Authentication Modules).
  • Маршрутизация
    Основной задачей сервера является обеспечение доступа удалённых пользователей/серверов к внутренним ресурсам, сервер позволяет определять статическую маршрутизацию от клиентов к серверу и от сервера к клиентам. С точки зрения доступа клиентов к внутренним ресурсам, сервер при помощи протокола DHCP и директив "route" или "push route" позволяет передать клиенту маршруты внутренних сетей. Для оповещения самого сервера об удалённых сетях на стороне клиента используется "client config dir" (ccd), механизм позволяющий описать при помощи директивы "iroute" список внутренних сетей клиента, которые должны попасть в таблицу маршрутизации сервера для транзита в них трафика.

Дополнительные возможности OpenVPN

Рассмотрим дополнительные возможности OpenVPN, о которых может кто-то и слышал, но в реальности не видел или не использовал.

  • Безопасность сетей/Packet Filtering
    OpenVPN маршрутизирует трафик, у него есть два штатных взаимоисключающих друг друга режима работы. Первый режим это маршрутизация внутри OpenVPN сервера, второй режим это межинтерфейсная ядерная маршрутизация. В первом случае за коммутацию и фильтрацию пакетов между клиентами/сетями отвечает сам OpenVPN, во втором любой поддерживаемый на хосте системный пакетный фильтр(pf, iptables, etc).Мало кто знает, что OpenVPN имеет встроенный пакетный фильтр, который позволяет разрешить или изолировать соединения между пользователями и сетями.Да, да. Вы правильно прочитали. OpenVPN имеет свой собственный встроенный пакетный фильтр. Возможность фильтрации трафика была реализована еще в далёком 2010 году.Пакетный фильтр OpenVPN управляется либо через management-interface, либо через подключаемые к OpenVPN плагины.Управление правилами трафика происходит через файл. Формат файла прост.
  • Расширенная PAM аутентификация
    Под расширенной PAM аутентификацией подразумевается изменение логики работы проверки логина и пароля пользователя. Достигается это либо установкой соответствующих плагинов для OpenVPN, обеспечивающих чтение и проверку данных во внешних источниках, либо подключением в систему библиотек позволяющих скриптовать любую логику.
  • "Отложенная" аутентификация
    Сервер OpenVPN поддерживает так называемую "отложенную" аутентификацию. "Отложенная" аутентификация используется в случаях, когда сервис аутентификации не может обслужить запрос проверки логина/пароля в реальном режиме времени.
  • Плагины OpenVPN
    Это отдельная параллельная вселенная, про которую может быть и знают, но из-за некоторой запутанности не умеют или боятся использовать. Да действительно, написание функционального плагина для OpenVPN требует программирования на C со всеми вытекающими.

Как это работает ?

При инициализации плагина в OpenVPN, плагин возвращает масочный список всех функций, которые может обслужить. При наступлении очередной фазы подключения или внутреннего события, OpenVPN вызывает соответствующие функции из плагина. Плагин преобразует переменное окружение и параметры переданные функции в структуру, инициализирует python и передаёт структуру в соответствующую процедуру python модуля. Процедура возвращает плагину один из трёх ответов (0 — Success, 1 — Error, 2 — Deferred). Ответ транформируется и возвращается OpenVPN.

Обратите внимание, что все вызовы модуля являются "stateless", это означает, что процедуры не помнят и не знают, что происходило ранее в других вызовах. Ориентироваться можно только на переменное окружение передаваемое плагину из OpenVPN.

Внутри python модуля вы можете реализовать любую логику, подключая нужные библиотеки и ресурсы. Если вы не уверены в скорости выполнения проверок, то используйте "отложенные" подтверждения.

Используя группировку пользователей подключаемых к сервису, через pf_file можно довольно тонко настроить сетевое взаимодействие между пользователями и другими ресурсами. В свою очередь подключив плагин на мониторинг, всегда можно будет через management интерфейс OpenVPN управлять сессиями клиентов.

Во время тестирования проекта был разработан механизм генерации паролей, аналогичный jwt токенам, но имеющим меньший размер.

Суть проста. Токен содержит в себе идентификатор клиента и срок окончания доступа. Для подписи токена используется HMAC_SHA1 с закрытым ключом. После подписи токена, текстовое содержимое ксорится подписью и конвертится в base64. Таким образом получается "запечатывание" токена. "Запечатанный" токен используется в качестве пароля пользователя. При несанкционированном изменении блока с данными, поломается xor, если поломается xor, значит поломается проверка подписи. Без закрытого ключа подпись изменить не получится.

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

Сфера применения OVPN очень велика. Начиная от бытового использования, например подключиться к домашней сети Wi-Fi находясь все дома или получения доступа к заблокированным ресурсам, заканчивая использованием для создания новой сетевой личности и повышения своей сетевой безопасности.

Так же очень часто VPN используется для :

  • Защита корпоративной информации. Например, у вас в офисе проложена локальная сеть, надежно защищенная от проникновения извне. Но вот вы едете в командировку и вам нужно подключиться к рабочему компьютеру — например, корпоративному хранилищу файлов, чтобы посмотреть какие-то документы. Чтобы доказать службе безопасности, что в сеть входите именно вы, а не похититель коммерческой тайны, на вашем личном компьютере нужно настроить VPN-соединение с корпоративной локальной сетью. Об этом можно попросить системного администратора или службу безопасности компании.
  • Создание сети между филиалами. К примеру, у вашей фирмы головной офис в Москве, а филиалы — в Самаре, Новосибирске и Владивостоке. Как создать между офисами защищенную локальную сеть? Здесь в дело тоже вступает VPN-сервер и клиенты на компьютерах сотрудников в разных городах.

Этот вариант использования добавляет уязвимости вашей корпоративной сети. Злоумышленник может получить доступ взломав ваш сервер и служба безопасности примет его за одного из юзеров, тем самым предоставит доступ к файлам которые находятся внутри вашей сети. Для того, чтобы это не произошло необходимо устанавливать криптостойкие пароли, которые сложно взломать методом брутфорса.

Этот вариант использования добавляет уязвимости вашей корпоративной сети. Злоумышленник может получить доступ взломав ваш сервер и служба безопасности примет его за одного из юзеров, тем самым предоставит доступ к файлам которые находятся внутри вашей сети. Для того, чтобы это не произошло необходимо устанавливать криптостойкие пароли, которые сложно взломать методом брутфорса.

Прокси

Прокси-сервер — это промежуточное средство связи в компьютерной сети. Он перенаправляет через свой адрес запросы клиента (например, на вызов веб-сайта или на загрузку файла) на соответствующий принимающий сервер, не связывая напрямую целевой сервер и пользователя.

Клиентский компьютер имеет настройку (конкретной программы или операционной системы), в соответствии с которой все сетевые соединения по некоторому протоколу совершаются не на IP-адрес сервера , выделяемый из DNS-имени ресурса или напрямую заданный, а на IP-адрес (и другой порт) прокси-сервера.

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

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

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

Прокси-серверы являются самым популярным способом выхода в Интернет из локальных сетей предприятий и организаций. Этому способствуют следующие обстоятельства:

  • основной используемый в Интернете протокол — HTTP, в стандарте которого описана поддержка работы через прокси;
  • поддержка прокси большинством браузеров и операционных систем;
  • контроль доступа и учёт трафика по пользователям;
  • фильтрация трафика (интеграция прокси с антивирусами);
  • прокси-сервер — может работать с минимальными правами на любой ОС с поддержкой сети (стека TCP/IP);
  • многие приложения, использующие собственные специализированные протоколы, могут использовать HTTP как альтернативный транспорт или SOCKS-прокси как универсальный прокси, подходящий для практически любого протокола;
  • отсутствие доступа в Интернет по другим (нестандартным) протоколам может повысить безопасность в корпоративной сети.

Сферы и виды

Сферы использования прокси обширны. От обхода блокировок поисковых систем при парсинге до создания новых сетевых личностей. Чаще всего она используются для:

  • обеспечение доступа компьютеров локальной сети к сети Интернет;
  • кэширование данных: если часто происходят обращения к одним и тем же внешним ресурсам для снижения нагрузки на канал во внешнюю сеть и ускорения получения клиентом запрошенной информации;
  • сжатие данных: прокси-сервер загружает информацию из Интернета и передаёт информацию конечному пользователю в сжатом виде для экономии внешнего сетевого трафика клиента или внутреннего — организации, в которой установлен прокси-сервер;
  • защита локальной сети от внешнего доступа: например, можно настроить прокси-сервер так, что локальные компьютеры будут обращаться к внешним ресурсам только через него, а внешние компьютеры не смогут обращаться к локальным вообще (они «видят» только прокси-сервер);
  • ограничение доступа из локальной сети к внешней: например, можно запрещать доступ к определённым веб-сайтам, ограничивать использование интернета каким-то локальным пользователям, устанавливать квоты на трафик или полосу пропускания, фильтровать рекламу и вирусы;
  • анонимизация доступа к различным ресурсам: прокси-сервер может скрывать сведения об источнике запроса или пользователе. В таком случае целевой сервер видит лишь информацию о прокси-сервере, например IP, но не имеет возможности определить истинный источник запроса; существуют также искажающие прокси-серверы, которые передают целевому серверу ложную информацию об истинном пользователе;
  • обход ограничений доступа: используется, например, пользователями стран, где доступ к некоторым ресурсам ограничен законодательно и фильтруется. 

Прокси - серверы бывают разных видов:

  • HTTP прокси - работает по протоколу http и выполняет функцию кэширования. Цепочку из HTTP прокси можно построить только в случае, если они поддерживают метод connect.
  • HTTPS прокси - поддерживают HTTP 1.1, которая имеет две спецификации RFC 2616 и устаревший RFC 2068. Все эти подтипы имеют одну и ту же возможность - они могут работать с методом connect. Различие состоит исключительно в настройках программ прокси-серверов.
  • FTP прокси -работает по протоколу ftp и предназначен для анонимного управления сервером
  • SOCKS, всем известный и повсеместно используемый.
    Имеет 2 спецификации socks4 и socks5.Четверка работает по протоколу TCP - это сетевой протокол, который «заточен» под соединение. Иными словами, прежде, чем начать обмен данными, данному протоколу требуется установить соединение между двумя хостами. Данный протокол имеет высокую надежность, поскольку позволяет не терять данные при передаче, запрашивает подтверждения о получении от принимающей стороны и в случае необходимости отправляет данные повторно. При этом отправляемые пакеты данных сохраняют порядок отправки, то есть можно сказать, что передача данных упорядочена. Минусом данного протокола является относительно низкая скорость передачи данных, за счет того что выполнение надежной и упорядоченной передачи занимает больше времени, чем в альтернативном протоколе UDP.
    UDP -для передачи данных ему не обязательно устанавливать соединение между отправителем и получателем. Информация передается без предварительной проверки готовности принимающей стороны. Это делает протокол менее надежным – при передаче некоторые фрагменты данных могут теряться. Кроме того, упорядоченность данных не соблюдается – возможен непоследовательный прием данных получателем. Зато скорость передачи данных по данному транспортному протоколу будет более высокой. SOCKS5 поддерживает оба протокола и удаленный DNS-запрос. Socks является действительно анонимным и одним из лучших способ оставаться анонимным в Сети.

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

@geroficer

https://t.me/havefuncrypto

https://t.me/havefuncrypto

https://t.me/havefuncrypto

Part 2