UPD от 05.08.2023 - поскольку Microsoft забанил мое облако, все источники можно получить, связавшись со мной любым удобным способом. Все контакты на моей странице в Хабре. UPD от 27.10.2022 - судя по всему, в исходниках что-то обновили и все поломалось. Здесь можно скачать билды, использованные в статье. В Интернете (в том числе и здесь, на хабре) видел достаточно много статей на тему обфускации трафика. Однако, к сожалению, именно практического материала очень мало: он либо подан слишком сумбурно, либо пропущены какие-то шаги, либо сложно повторим. Сейчас я нахожусь в ситуации, когда между мной и остальным интернетом находится непрозрачный прокси-сервер, подменяющий сертификат (и фактически осуществляющий MITM). Эта статья призвана помочь таким же как я (и, возможно, будет полезна в ближайшем будущем, учитывая то, что сейчас делает РосКомНадзор). Давайте сразу оговоримся, что описывать основы основ в этой статье я не буду. Сейчас моя основная цель - более менее систематизировать гайды из сети и помочь людям, имеющим как минимум базовые навыки администрирования Linux поднять свой собственный прокси, трафик до которого будет обфусцироваться. Итак, начнем с первых экспериментов. Что первым приходит в голову, когда мы говорим об обходе цензуры? Скорее всего, вы не задумываясь ответите Tor. И будете правы - действительно, сейчас Tor Browser - швейцарский нож в обходе любых блокировок. Но сейчас нас интересует конкретно то, как он работает с трафиком, а точнее, с помощью каких инструментов его обфусцирует. Самым распространенным (и при этом мощным) инструментом обфускации трафика в Tor является obfs4. Посмотрим, как его развернуть. Безрезультатно перепробовав уйму утилит (ptproxy, ptadapter), потом попытавшись написать свою, мною был обнаружен интересный проект - shapeshift dispatcher. Он представляет собой написанный на go скрипт, универсальный для клиента и сервера. На сервере он перенаправляет получаемый обфусцируемый трафик, деобфусцирует его, и уже "чистый" трафик перенаправляет по указанному адресу.На клиенте - создает сервер на localhost, принимающий "чистый" трафик, обфусцирует его, и, соответственно, передает куда надо. Начнем наши эксперименты. Поскольку бинарники не предоставляются, для дальнейших действий придется собрать их самостоятельно. Благо, на go это делается просто - нужно просто склонировать репозиторий и запустить одну команду. Инструкция, как установить go доступна на их официальном сайте. После установки (или, если он уже установлен), необходимо загрузить репозиторий (командой git clone https://github.com/OperatorFoundation/shapeshifter-dispatcherили загрузив и распаковав ZIP по ссылке https://github.com/OperatorFoundation/shapeshifter-dispatcher/archive/refs/heads/main.zip), перейти в директорию с исходниками и выполнить go build. Все остальное за вас сделают автоматически Синтаксис команды для запуска сервера выглядит так: Во всей этой команде нас интересует только два арумента: orport и bindaddr. Давайте, для примера, запустим ее на сервере. Если вы все сделали правильно, в консоли вы увидите сообщение listening on  127.0.0.1:80(или ваш порт, в зависимости от того, что вы укажете). Теперь, для того, чтобы подключиться с клиента, необходимо узнать данные, которые сгенерировал obfs4proxy. Для этого, останавливаем выполнение сочетанием Ctrl+C и переходим в директорию state (или любую другую, которую вы передали в аргументе state). Там нас будут ждать два файла - obfs4_bridgeline.txt и obfs4_state.json. Нам необходимо открыть превый и из строки вида Bridge obfs4 ........ cert=CERTIFICATE_VALUE iat-mode=0 скопировать значение CERTIFICATE_VALUE. Теперь запустим клиент. Синтаксис выглядит так: В этой команде нужно заменить [IP] на публичный адрес вашего сервера. Для подключения, необходимо создать файл obfs4.json рядом со скриптом или указать путь до него в аргументе optionsFile. Содержимое файла: {"cert": "CERTIFICATE_VALUE","iat-mode": 0}. Если не хотите сохранять файл, можно использовать аргумент -options {} вместо optionsFile. Обращайте внимание на пробелы в JSON - здесь это почему-то критично. Это все, безусловно, прекрасно и красиво, но давайте теперь применим это в реальной ситуации. Для этого, я поднял на сервере PPTP VPN (к примеру, по этому гайду). Теперь, необходимо поменять порты для того, чтобы все работало. Стандартный для PPTP - 1723, его и укажем. Новая команда запуска сервера: клиента: Значения IP и порта можно менять на свои в зависимости от ваших конфигураций или используемых серверов. В завершение первой части: Это мой первый опыт написания подобных материалов, поэтому, буду рад конструктивной критике. Если в статье вы видите ошибку, или хотите ее чем-то дополнить, оставьте комментарий или свяжитесь со мной. Надеюсь, был Вам полезен. Технологий обфускации трафика еще много, поэтому продолжение следует...  Студент, программист, по совместительству сисадмин