Обфускация трафика что это
Обфускация как метод защиты программного обеспечения
Или то, почему вы не можете издать свою улучшенную версию Counter Strike и уехать жить на Гавайи.
О чём речь?
Красивый пример из Википедии кода, прошедшего обфускацию.
Далее в программе
Как это должно работать?
Состояние дел сейчас
Зачем это нужно?
Так же, алгоритмы обфускации активно используются не только для затруднения анализа кода, но и для уменьшения размера программного кода, что, в свою очередь, активно используется при разработке различных веб-сервисов и баз данных.
Как это должно работать?
Как понятно из вышесказанного, методы обфускации должны усложнить код, преобразовав его таким образом, чтобы скрыть от третьих лиц логику его работы.
Как это работает
Большинство методов обфускации преобразуют следующие аспектов кода:
• Данные: делают элементы кода похожими на то, чем они не являются
• Поток кода: выставляют исполняемую логику программы абсурдной или даже недетерминированной
• Структура формата: применяют различное форматирование данных, переименование идентификаторов, удаление комментариев кода и т.д.
Инструменты обфускации могут работать как с source или байт кодом, так и с бинарным, однако обфускация двоичных файлов сложнее, и должна варьироваться в зависимости от архитектуры системы.
При обфускации кода, важно правильно оценить, какие части когда можно эффективно запутать. Следует избегать обфускации кода, критичного относительно производительности.
Методы
1. Преобразование данных
Одним из наиболее важных элементов обфускации является преобразование данных, используемых программой, в иную форму, оказывающее минимальное виляние на производительность кода, но значительно усложняющее хакерам возможность обратного инжинирнга.
По ссылке можно ознакомится с интересными примерами использования двоичной формы записи чисел для усложнения читабельности кода, а так же изменений формы хранения данных и замены значений различными тождественными им выражениями.
2. Обфускация потока управления кодом
Обфускация потока управления может быть выполнена путем изменения порядка операторов выполнения программы. Изменение графа управления путем вставки произвольных инструкций перехода и преобразования древовидных условных конструкций в плоские операторы переключения, как показано на следующей диаграмме.
3. Обфускация адресов
Данный метод изменяет структура хранения данных, так чтобы усложнить их использование. Например алгоритм, может выбирать случайными адреса данных в памяти, а также относительные расстояния между различными элементами данных. Данный подход примечателен тем, что даже если злоумышленник и сможет «декодировать» данные, используемые приложением на каком-то конкретном устройстве, то на других устройствах он всё равно не сможет воспроизвести свой успех.
4. Регулярное обновление кода
Этот метод предотвращает атаки, регулярно выпуская обновления обфусцированного программного обеспечения. Своевременные замены частей существующего программного обеспечения новыми обфусцированными экземплярами, могут вынудить злоумышленника отказаться от существующего результата обратного анализа, так как усилия по взлому кода в таком случае могут превысить получаемую от этого ценность.
5. Обфускация инструкций ассемблера
Преобразование и изменение ассемблерного когда также может затруднить процесс обратного инжиниринга. Одним из таких методов является использование перекрывающихся инструкций (jump-in-a-middle), в результате чего дизассемблер может произвести неправильный вывод. Ассемблерный код также может быть усилен против проникновения за счёт включения бесполезных управляющих операторов и прочего мусорного кода.
6. Обфускация отладочной информации
Отладочную информацию можно использовать для обратного проектирования программы, поэтому важно блокировать несанкционированный доступ к данным отладки. Инструменты обфускации достигают этого, изменяя номера строк и имена файлов в отладочных данных или полностью удаляя из программы отладочную информацию.
Заключение
Я не стал описывать историю развития различных подходов к обфускации, так как на мой взгляд, она неплохо отражена в уже существующей на Хабре статье.
Данная статья была написана в 2015 году, и мне не удалось найти в интернете существенного количества статей и иных материалов на тему моего поста, накопившихся за это время. На мой взгляд, в наш век всё большую популярность приобретает разработка всевозможных веб приложений, которые мало нуждаются в обфускации в качестве метода защиты информации. Однако как раз таки сжатие исходного кода программ, при помощи методов обфускации в таких приложениях зачастую оказывается полезным.
В заключение, хотел бы добавить, что при использовании методов обфускации не следует пренебрегать и прочими методами защиты вашего кода, ведь обфускация далеко не серебряная пуля в вопросе защиты программ от взлома.
Ссылки и источники
[3] Barak B., Goldreich O., Impagliazzo R., Rudich S., Sahai A., Vadhan S. and Yang K. «On the (im) possibility of obfuscating programs.» CRYPTO 2001.
Опыт маскировки OpenVPN-туннеля с помощью obfsproxy
Примечание: приведённая в статье информация во многом устарела, и предназначена скорее для общего ознакомления. Сейчас можно попробовать использовать утилиты вроде ptproxy для создания туннеля с помощью любого актуального pluggable transport для Tor.
Преамбула
В связи с наметившимися тенденциями решил я обфусцировать свой скромный OpenVPN-туннель, просто чтобы набить руку — мало ли пригодится…
Дано: дешевая VPS с белым IP, работающая под Ubuntu Trusty Server Edition и служащая OpenVPN сервером.
Требуется: по-возможности скрыть OpenVPN туннель, желательно без изобретения велосипедов.
obfsproxy
По окончании установки убедитесь, что используется версия obfsproxy с поддержкой scramblesuit:
Из man obfsproxy можно почерпнуть следующее
Сам VPN-сервер можно либо спрятать за obfsproxy полностью (заставив слушать 127.0.0.1), либо оставить его на внешнем сетевом интерфейсе на случай отказа obfsproxy. Я выбрал второй вариант как более надежный.
Таким образом, для запуска obfsproxy на серверной стороне достаточно выполнить что-то вроде:
где 1.2.3.4 — внешний IP хоста, 1800 — порт, который слушает OpenVPN, 81 — порт, который будет слушать obfsproxy.
Серьезным недостатком является неумение obfsproxy запускаться в режиме демона, но это можно обойти.
Запуск на клиенте практически идентичен серверу:
где 1.2.3.4:81 — адрес, который слушает obfsproxy-сервер, 127.0.0.1:81 — адрес, который слушает клиент.
Настройка OpenVPN
Важно: OpenVPN должен использовать протокол TCP.
Если мы используем режим client, то просто заменяем адрес удаленного сервера в конфигурационном файле openvpn на адрес локального obfsproxy:
Для работы в режиме socks настраиваем OpenVPN немножко по-другому:
Учитывая необходимость заменять адрес OpenVPN-сервера на адрес obfsproxy-сервера, я не вижу особой пользы от режима прокси — приложения, в которых адреса подключения зашиты намертво, так все равно не запроксируешь.
Если openvpn-трафик блокируется лишь иногда (например, только в рабочей сети), можно использовать следующий прием. В файле конфигурации OpenVPN запишем следующее:
OpenVPN будет пытаться задействовать каждую секцию поочередно, пока не произведет успешное подключение.
Что касается запуска obfsproxy, к сожалению, сам OpenVPN не поддерживает pre-connect скрипты (запуск команды перед попыткой подключения). Вы можете попытаться установить один из неофициальных патчей, запускать obfsproxy вручную, либо воспользоваться одним из следующих методов.
openvpn-gui для Windows
obfsproxy как сервис
Если OpenVPN запускается как сервис, то имеет смысл организовать запуск obfsproxy таким же образом.
Создать сервис можно утилитой srvany от MS или какой-либо альтернативной утилитой, вроде NSSM. Вопрос запуска приложения как службы Windows выходит за рамки статьи, так что я просто укажу, что такой подход позволит задавать зависимости от и для других сервисов, тем самым гарантируя что obfsproxy будет доступен в момент запуска OpenVPN.
Этот подход можно совместить с предыдущим, используя bat-файл, запускаемый openvpn-gui, для запуска созданного сервиса командой net start.
Влияние на скорость
Последняя проверка проводилась 7 февраля 2016 посредством старого доброго speedtest.net, используя один и тот же сервер в Лондоне (OpenVPN-сервер хостится в Латвии, клиент — в европейской части России) с клиентской машины под Windows 7. Измерения производились в десятикратной повторности. Из результатов следует, что как минимум в моем случае значительного влияния на скорость obfsproxy не оказывает. Так что, если до вашего VPN-сервера хороший канал, то хуже не будет.
Режим | Ping, ms | Download, MB/s | Upload, MB/s | |
---|---|---|---|---|
direct | среднее | 56 | 20,18 | 21,03 |
коэфф. вариации | 3,6% | 0,6% | 1,2% | |
openvpn | среднее | 56 | 20,21 | 21,29 |
коэфф. вариации | 2,3% | 1,0% | 1,0% | |
openvpn+obfsproxy | среднее | 55 | 20,24 | 21,15 |
коэфф. вариации | 4,0% | 0,73% | 1,34% |
Запуск obfs-proxy как init.d сервиса
# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=»/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin»
DESC=«obfsproxy wrapper for openvpn»
NAME=obfs-openvpn
DAEMON=»/usr/local/bin/obfsproxy»
OBFSPROXY_KEYFILE=»/etc/obfsproxy-openvpn.key»
SERVER_IP=. # = 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions
Объяснение VPN обфускации
Некоторые правительства, интернет-провайдеры и сетевые администраторы стремятся обнаруживать (и часто блокируют) трафик VPN по разным причинам. VPN обфускация относится к маскирование VPN-трафика таким образом, что его нелегко идентифицировать как таковой. Смежные термины в литературе VPN-провайдеров включают «obfsproxy-серверы», «обфускацию трафика», «скрытую VPN» и «технологию маскировки». Но что они на самом деле означают?
В этом посте мы поможем вам разобраться в этой запутанной терминологии. Мы обсуждаем, что такое запутывание и зачем оно вам нужно. Мы также объясняем различные методы, используемые для обфускации трафика, и рекомендуем несколько VPN, которые делают это очень хорошо.
Что такое VPN обфускация?
Словарное определение «обфускации»:
действие создания чего-то неясного, неясного или неразборчивого
Обфускация VPN маскирует VPN-трафик так, что он больше не выглядит как VPN-трафик. Таким образом, он может быть скрыт от любого, кто пытается его обнаружить. Методы запутывания не изменяют сам трафик, а создают маску, которая скрывает узнаваемые шаблоны.
OpenVPN является протокол по умолчанию, используемый большинством VPN. Он защищает данные путем шифрования, но также добавляет отличительную подпись. Некоторые методы обнаружения, в частности расширенная глубокая проверка пакетов (обсуждается ниже), могут обнаружить эту подпись.
Существуют различные методы, чтобы скрыть трафик VPN, но обычно они включают добавление уровня шифрования, который маскирует трафик как обычный трафик. Мы обсудим это ниже, но сначала посмотрим, зачем нам нужно маскировать VPN-трафик..
Зачем вам VPN обфускация?
Существует несколько основных причин, по которым вам может потребоваться скрыть тот факт, что вы используете VPN:
Давайте посмотрим на это более подробно:
1. Обойти государственную цензуру
В некоторых странах, таких как Китай, Египет, Иран, Северная Корея и Пакистан, правительство жестко ограничивает доступ к Интернету. Они часто блокируют избранные сайты назначения, останавливая трафик, который направляется на эти сайты. Например, в Китае «Великий брандмауэр» включает в себя различные способы предотвращения доступа пользователей к заблокированным сайтам и приложениям, таким как Facebook, WhatsApp и Twitter..
Чтобы обойти эти блоки, многие пользователи используют VPN. При подключении к VPN трафик пользователя зашифрован, поэтому его содержимое невозможно прочитать. VPN также отправляет трафик через вторичный сервер, поэтому проверка трафика выявляет, что он направляется на VPN-сервер, а не на запрещенный веб-сайт назначения.
Конечно, правительство Китая осознало тот факт, что люди используют VPN для обхода блоков. В ответ они попытка заблокировать трафик VPN. Это можно сделать несколькими способами. Например, если VPN-сервер известен правительству, он может просто заблокировать трафик, идущий на этот сервер. Это часто случается, даже с топовыми VPN, поэтому поставщики должны оставаться на своих местах и быть готовыми отправлять трафик через разные серверы, которые не известны правительству..
Другой метод, используемый для блокировки VPN-трафика, заключается в блокировке порта, через который обычно проходит трафик OpenVPN (порт 1194). Отправка трафика OpenVPN через другой порт иногда может обойти этот тип блокировки.
Более продвинутые методы блокировки включают в себя определение характера самого трафика. Deep Packet Inspection (DPI) может обнаружить уникальную подпись OpenVPN. Если VPN-трафик обнаружен, он блокируется. Вот тут-то и происходит запутывание. Путем маскировки трафика VPN как-то еще, некоторым VPN удается обойти расширенные методы DPI.
2. Уклоняться от сетевых блоков
Если вы используете VPN в своем офисе или школе для обхода блоков, это может не всегда работать. Некоторые сетевые администраторы используют методы для обнаружения VPN-трафика. Обфускация поможет обойти эти меры обнаружения и обходить блоки как обычно.
3. Улучшение конфиденциальности и анонимности
Большинство методов запутывания служат дополнительным уровнем безопасности, конфиденциальности и анонимности ваших данных. С дополнительный уровень шифрования, любому шпиону трудно обнаружить, что вы используете VPN. Это включает в себя вашего интернет-провайдера, государственные учреждения и киберпреступников.
Если вы просто заботитесь о безопасности и хотите держать хакеров в покое, или вы журналист или активист, ищущий дополнительную конфиденциальность в Интернете, запутывание может помочь.
4. Предотвращение дросселирования провайдера
Многие интернет-провайдеры ограничивают скорость вашего интернета, если видят, что вы транслируете, скачиваете или посещаете определенные сайты. VPN должна предотвратить это, поскольку ваш провайдер больше не может видеть содержимое или назначение вашего трафика..
Однако ваш интернет-провайдер может обнаружить, что вы используете VPN, и некоторые пользователи сообщают, что их интернет-провайдеры ограничивают трафик VPN. Хотя более вероятно, что замедление происходит из-за самой VPN (шифрование замедляет соединения), вполне вероятно, что некоторые интернет-провайдеры могут беспорядочно ограничивать трафик VPN. Если это так, то запутывание должно помочь предотвратить эту практику.
Смотрите также: Как перестать регулировать интернет-провайдера с помощью VPN
Как работает VPN-обфускация?
Читая о функциях различных VPN, вы можете встретить термины, связанные с маскировкой VPN. Есть много «модных слов», связанных с этой темой, но многие из них означают примерно одно и то же. Некоторыми примерами являются «скрытый VPN» или «скрытый режим», «технология маскировки» и «запутанные серверы». Все это означает, что VPN использует какой-то способ запутывания, чтобы замаскировать ваш трафик когда вы используете соответствующие настройки. Некоторые провайдеры придумали новые названия для своих методов запутывания, например, «Режим NoBorders» Surfshark и «Протокол Chameleon» VyprVPN.
Так что же они на самом деле делают с вашим VPN-трафиком? Ниже приведены некоторые методы, которые VPN-провайдеры могут использовать для обфускации. Обратите внимание, что для работы любого вида запутывания необходимо настроить клиент и сервер для его использования. Например, для работы Obfsproxy необходимо настроить приложение VPN и сервер..
Obfsproxy
Obfsproxy является подпроектом проекта Tor (отвечает за анонимный браузер Tor). Он был создан в ответ на блокировку трафика Tor в некоторых странах, например в Китае. Он запутывает трафик Tor, так что он больше не распознается. Хотя Obfsproxy был разработан для использования с Tor, его также можно использовать с OpenVPN.
Obfsproxy запускает различные подключаемые транспорты, которые по-разному работают, чтобы скрыть трафик OpenVPN. используемый сменный транспорт зависит от типа блока это обходится. В настоящее время наиболее распространенным подключаемым транспортом, используемым для трафика OpenVPN, является obfs4, который работает путем скремблирования трафика, чтобы он выглядел, по сути, как ничто..
Stunnel
OpenVPN XOR схватка
OpenVPN XOR scramble использует XOR-шифр для маскировки трафика OpenVPN. Это простой шифр, который предполагает замену значения каждого бита данных другим значением. Этого достаточно, чтобы некоторые методы DPI могли больше не обнаруживать подпись OpenVPN. Тем не менее, простота XOR означает, что он не всегда эффективен против правительственных блоков.
Стоит отметить, что XOR приобрел известность как популярный инструмент, используемый разработчиками вредоносных программ, чтобы скрыть свой код от обнаружения..
Лучшие VPN, предлагающие обфускацию
Хотя многие VPN утверждают, что предлагают превосходные методы запутывания, многие из них не работают, чтобы обойти государственные блоки. А из тех, кто работает, качество услуг значительно различается с точки зрения таких факторов, как скорость, безопасность и поддержка. Ниже представлен список лучших VPN на рынке, которые предлагают запутывание.
Лучшие VPN с обфускацией:
Для получения информации о том, как настроить ваши настройки в этих приложениях VPN для включения обфускации, вы можете прочитать нашу статью о том, как сделать вашу VPN необнаружимой и обойти блокировку.
SBC+VPN+Tor+obfsproxy в кармане
В этой статье будет рассказано об одном из вариантов получения переносного решения с Tor, VPN и обфускацией, к которому можно подключить свои мобильные устройства, ПК или ноутбук.
Постановка задачи: получить одноплатный компьютер, который можно подключить к своему ноутбуку/ПК/мобильному устройству и который будет заворачивать трафик сначала в VPN, затем в Tor, обфусцировать с помощью obfs-proxy и отправлять на удаленный VPN-сервер.
1) Одноплатный компьютер. В моем случае это Raspberry Pi модель B+;
2) ОС Raspbian. Для данной статьи использовалась Raspbian Jessie, билд от 18-03-2016;
3) Карта памяти (Micro SD);
4) Картридер;
5) Беспроводной адаптер или переходник ethernet to usb;
6) Удаленный OpenVPN сервер.
1) eth-eth
2) wlan-eth
3) wlan-wlan
4) eth-wlan
1. SBC — одноплатный компьютер;
2. CR — устройство, через которое осуществляется доступ в Интернет. Устройство не обязательно может быть подключено напрямую в порт SBC;
3. PC — какой-либо компьютер (или мобильное устройство) подключаемое к SBC;
4. VPN-server — целевой VPN сервер;
5. Входной интерфейс — физический интерфейс, куда поступает клиентский трафик;
6. Выходной интерфейс — физический интерфейс, с которого трафик уходит в Интернет.
В статье рассматривается случай, когда параметры для линка в интернет приходят по DHCP или задаются статически. Для случаев с получением параметров для линка по L2TP, PPPoE или иных ситуаций настройка будет отличаться. Также будем считать, что для удобной работы VPN-сервер выступает как DNS-relay.
Установка системы и подключение
На официальном сайте Rasbian присутствуют очень подробные инструкции для записи образа для Linux, Mac OS и Windows, поэтому я не буду описывать процесс записи образа ОС на карту памяти, чтобы не загромождать статью. По своим наблюдением могу сказать, что лучше брать карту от 16 Гб, чтобы избежать в будущем проблем с нехваткой памяти.
С подключением к плате после записи образа и включения может быть несколько вариантов:
1) Если у вас есть специальный экран/монитор/телевизор c поддержкой hdmi, то достаточно его подключить по hdmi;
2) Если экрана нет, но параметры на физический интерфейс приходят по DHCP, то можно просканировать сеть nmap-ом с другого компьютера и подключиться по ssh. Пользователь pi, пароль raspberry;
3) Если нет DHCP, то можно отредактировать файл /etc/network/interfaces и прописать туда адреса вручную.
Форвардинг трафика
Для того, чтобы трафик пересылался с одного интерфейса на другой, необходимо, чтобы был включен соответствующий параметр ядра Linux. Это можно сделать с помощью команды:
Для проверки можно использовать команду:
Она должна вернуть «1».
iptables
Для того, чтобы упростить маршрутизацию трафика, включим маскардинг для туннельного интерфейса с помощью iptables:
Вместо этого можно было бы прописать статические маршруты и статический адрес для клиента. Или использовать ccd.
Установка пакетов
Обновить репозитории и получить обновления:
Установка из репозиториев:
Если вы хотите схему с точкой доступа, то помимо этого установим hostapd и DHCP-cервер:
Вместо isc-dhcp-server вполне может быть использован любой другой. В репозиториях часто содержаться не самые последние версии, поэтому можно собрать пакеты из исходников, но если вам нужно получить быстрое решение, то подойдет и установка из репозитория.
Настройка сетевого подключения
Данный вариант является самым простым. На физическом интерфейсе Raspberry Pi, к которому подключается ПК, достаточно настроить статический адрес. На ПК также задать параметры вручную. Также можно настроить isc-dhcp-server, чтобы он выдавал параметры. На клиентской машине на Linux для первоначальной настройки достаточно выполнить команды:
А в файл /etc/resolv.conf добавить запись:
В данной схеме входным интерфейсом будет беспроводной интерфейс, работающий в режиме точки доступа. Вместо режима полноценной точки доступа можно настроить режим Ad-hoc.
Для организации wi-fi точки доступа с DHCP я использовал связку hostapd и isc-dhcp-server, но не обязательно использовать именно эту связку. На хабре есть несколько очень подробных статей по настройке различных вариантов в Linux. Ссылки я привел в источниках.
Привожу пример своих настроек:
Сразу стоит оговориться, что у некоторых могут возникнуть проблемы с драйверами и работой беспроводной карточки в режиме точки доступа. Лучше поинтересоваться такими вещами заранее. У меня была такая проблема для одной из моих карт при работе вместе с hostapd из репозитория. Проблема решилась патчем hostapd.
Часть с настройкой входного интерфейса ничем не отличается от предыдущей схемы. Выходной интерфейс необходимо подключить к точке доступа. Пример подключения с использованием утилиты nmcli:
Настройка входного интерфейса происходит как в схеме eth-eth, выходного — как в wlan-wlan.
Tor + obfsproxy
Для маскировки Tor трафика будем использовать obfsproxy.
Привожу пример настройки Tor:
Данные для подключения к серверам obfsproxy можно взять здесь.
OpenVPN
Для организации VPN будем использовать OpenVPN через TCP и в режиме L3 (tap-интерфейс). Используется TCP, поскольку Tor работает только TCP-трафиком. В сам же VPN-туннель можно пускать любой трафик. Для того, чтобы направить VPN трафик в Tor, будем «проксировать» весь VPN-трафик через Tor. OpenVPN поддерживает такую возможность.
Привожу пример настройки клиентской части OpenVPN с подробными комментариями:
По настройке сервера есть достаточно много инструкций в интернете. Ссылки я привел в «источниках» в конце статьи. Ключевым в настройке является совпадение параметров и наличие в конфиге сервера строчки «push «redirect-gateway def»». Она необходима, чтобы на клиенте установился маршрут по-умолчанию для проходящего трафика, который указывает на VPN сервер.
Тестирование
Для теста правильности работы пустим ping от подключенного ПК до tun-интерфейса VPN-сервера, будем снимать трафик с помощью tcpdump и анализировать в Wireshark для наглядности.
1) ICMP-запрос приходит на входной интерфейс Raspberry Pi.
Стоит обратить внимание на идентификаторы BE, LE и временную метку. Далее они нужны будут для того, чтобы опознать ICMP-запрос на стороне сервера.
2) ICMP-пакет прошёл процедуру обработки в OpenVPN и направился на порт 9050, который «слушается» Tor. Снимок трафика происходит на loopback интерфейсе Raspberry Pi.
3) Пакет выходит из Raspberry Pi и направляется на один из узлов сети Tor с серверной частью obfsproxy:
4) И снимок трафика уже на туннельном интерфейсе VPN-сервера. Тут же можно заметить, что сервер послал ответ.
Идентификаторы BE, LE и временная метка совпадают с теми, которые были в отправленном пакете.
5) На этом скриншоте представлен пакет, выходящий с VPN-сервера, в котором содержиться ICMP-reply.
Также я произвел тестирование пропускной способности этого решения с помощью iperf для TCP и UDP трафика до сервера. Тестирование проводилось с использованием Raspberry Pi model B+ и ОС Raspbian в домашней сети, так что цифры для других одноплатных компьютеров с другими ОС или другой сетевой средой могут отличаться.
— связка Tor + VPN+ obfsproxy
— только VPN
— чистый канал
Заключение
Потенциальные подводные камни:
1) Синхронизация времени. Поскольку tor выполняет криптооперации с проверкой временных меток, то время должно быть синхронизировано. К сожалению, время нужно будет синхронизировать каждый раз после выключения платы.
2) Размер mtu. DF-бит в отправляемых пакетах может привести к тому, что трафик будет «резаться», если где-то по пути запрещена фрагментация пакетов, а значение mtu меньше вашего.
3) Использование VPN throught Tor и obfsproxy не панацея от всего.
Если вы найдете или уже сталкивались с каким-то иными проблемами, то пиши в комментариях — я добавлю в статью.