Устанавливаем и используем Shadowsocks для обхода DPI.

Устанавливаем и используем Shadowsocks для обхода DPI.

Social Engineering

В наши дни, когда всякие нехорошие элементы так и норовят влезть в ваш трафик и как-то там напакостить, стало модным шифрование трафика.

Начинание это благое и полезное, вот только делают его зачастую избыточно. Если шифрование трафика до доверенного сервера, типа своего VPS, — ваша единственная цель, то OpenVPN для такой цели слишком наворочен. Его долго настраивать, легко обнаружить, а главное — есть подводные камни, не зная которых можно получить такую ситуацию, что VPN стоит, а трафик идёт в обход. Всё это потому, что OpenVPN задумывался больше как средство доступа к маленькой сети через Интернет, а не для доступа ко всему Интернету. 

И вот тут шикарный подарок нам сделал братский народ Китая. C 2012 года они пилят бесплатный открытый проект Shadowsocks. Это пара из программ для сервера и клиента, работающих по следующему принципу: клиент изображает из себя сервер SOCKS5 прокси, получает входящие соединения, шифрует их, транслирует на сервер и там выпускает в интернет. То есть, принцип работы похож на SSH туннель, но имеет массу достоинств и пару недостатков по сравнению с ним. 

Достоинства 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 это не важно, а вот для, скажем, несжатых текстовых файлов и настоящих образов Убунты — разница есть.
  • Документацию писали китайцы, на китайском английском, с кучей пропущенных пунктов и взаимных противоречий.

Обход DPI.

Как известно с 1 ноября вступает в силу закон о "суверенном Рунете". Уже сейчас в Тюмени идёт тестирование сразу у всех крупных провайдеров нового оборудования. Что будет после 1 ноября - никто не знает. Либо нас ждёт тотальный Чебурнет по типу северо-корейской модели, либо что-то нечто Великого Китайского Файрвола. Если что-то и произойдёт, то второй вариант нам предпочтительнее. К счастью для обхода Великого Китайского Файрвола в том же Китае была разработана программа Shadowsocks. Это программа, которая ставится на сервер для работы в качестве шифрующего прокси-сервера. На компьютеры и мобильники ставится клиент Shadowsocks, благодаря которому все передаваемые данные будут надёжно зашифрованы. Но плюс ко всему, эта программа может работать также и Obfs-proxy, который замаскирует ваш трафик под HTTP или TLS. Сейчас я покажу как нам её установить и настроить.

Для начала нам понадобится VPS. Существует куча простеньких серверов с оплатой 10$ в год. Гугл вам в помощь. Я арендовал небольшой сервер на базе Debian GNU/Linux 10 (buster), с виртуализацией KVM и RAM 1 GB. Этого вполне достаточно. Итак, получаем доступ у хостера через root, открываем терминал и подключаемся через ssh к серверу:

ssh root@123.123.123.123

Где 123.123.123.123 - это IP-адрес вашего сервера, который вам пришлёт хостер по емейлу вместе с паролем для доступа через root. После вводим пароль root. После обновляем систему:

apt update && apt upgrade

Теперь нам надо установить пакет shadowsocks-libev:

apt install shadowsocks-libev

После этого нам надо отредактировать конфигурационный файл который находится по пути /etc/shadowsocks-libev/config.json:

nano /etc/shadowsocks-libev/config.json

Открываем и прописываем:

{
    "server":["123.123.123.123"],
    "mode":"tcp_and_udp",
    "server_port":443,
    "password":"7777",
    "timeout":60,
    "method":"chacha20-ietf-poly1305",
    "plugin":"obfs-server",
    "plugin_opts":"obfs=tls;failover=204.79.197.200:80"
}

Немного проясню за пункты:

"server":["123.123.123.123"] - сюда вы вписываете IP'шник вашего сервака;

"mode":"tcp_and_udp" - это протоколы соединения;

"server_port":443 - это порт TLS, через который будет идти трафик;

"password":"7777" - сюда вписываете любой пароль;

"method":"chacha20-ietf-poly1305" - это алгоритм шифрования за авторством Daniel J. Bernstein, разрабатываемый Гуглом для внутренних нужд. Хорош для устройств, не умеющих аппаратный AES, а это совсем дешёвые мобильники и прочие умные утюги; и для параноиков, боящихся закладок в процессоре;

"plugin":"obfs-server" - это плагин obfs-proxy, который и будет маскировать наш трафик под TLS.

failover=204.79.197.200:80 - здесь IP сервиса bing.com, DPI будет видеть именно его безобидный трафик.

Теперь нам надо установить пакет simple-obfs:

apt install simple-obfs

Затем нужно разрешить прослушивать серверу ss-server порты <1024 без запуска из-под root, нужно выполнить следующую команду:

setcap 'cap_net_bind_service=+ep' /usr/bin/ss-server

Ну и наконец перезапустить shadowsocks:

systemctl restart shadowsocks-libev.service

На этом настройка серверной части закончена. Теперь перейдём к настройке клиентской части. Также устанавливаем на свою основную машину пакеты shadowsocks-libev и simple-obfs. Создаём конфигурационный файл shsocks-obfs-tls.json:

nano ~/shsocks-obfs-tls.json

И вписываем следующее:

{
    "server":"123.123.123.123",
    "server_port":443,
    "local_port":996,
    "password":"7777",
    "timeout":60,
    "method":"chacha20-ietf-poly1305",
    "plugin":"obfs-local",
    "plugin_opts":"obfs=tls;obfs-host=www.bing.com"
}

Ну с IP'шником тут всё понятно, вписываем IP'шник сервака;

"local_port":996 - это локальный порт, через который и будет идти подключение;

"plugin":"obfs-local" - заметьте, на серваке мы прописывали obfs-server. Этот же плагин для клиентского соединения. Теперь запускаем клиент:

ss-local -c ~/shsocks-obfs-tls.json

Если всё нормально, то у вас должно начаться соединение и появятся такие строки в терминале:

2019-10-24 10:35:55 INFO: plugin "obfs-local" enabled
 2019-10-24 10:35:55 INFO: initializing ciphers... chacha20-ietf-poly1305
 2019-10-24 10:35:55 INFO: listening at 127.0.0.1:996
 2019-10-24 10:35:55 [simple-obfs] INFO: obfuscating enabled
 2019-10-24 10:35:55 [simple-obfs] INFO: obfuscating hostname: www.bing.com
 2019-10-24 10:35:55 [simple-obfs] INFO: tcp port reuse enabled
 2019-10-24 10:35:55 [simple-obfs] INFO: listening at 127.0.0.1:38393

Ну и проверить соединение, можно через любимую Телегу. Открываем Настройки -> Продвинутые настройки -> Сеть и прокси и вписываем как на скрине:

Как видно на первом скрине - стоит статус "подключён". Тоже самое можно проделать и с браузером Firefox, используя плагин FoxyProxy Standart, вбив туда те же параметры, что и в Телегу.

На этом всё, всем удачи!

Social Engineering - Канал посвященный психологии, социальной инженерии, профайлингу, НЛП, Хакингу, Анонимности и безопасности в сети интернет, Даркнету и все что с ним связано. Добро пожаловать ;-)

S.E.Book - Литература социального инженера.

@Social_Engineering_bot - Бот обратной связи.

  1. Комбайн для фишинга. Как Evilginx 2 используют для кражи аккаунтов.
  2. Эрозия информации в OSINT.
  3. Trojanizer. Обзор инструмента.
  4. OSINT. Собираем информацию о сайте.
  5. Выборочное шифрование трафика в Linux.
  6. OSINT. Собираем информацию по Email.

Report Page