12 марта, 2024 года во Всемирный день борьбы с киберцензурой, команда по борьбе с цензурой Tor Project рада официально объявить о выпуске WebTunnel, нового типа моста Tor, предназначенного для помощи пользователям в регионах с жёсткой цензурой в подключении к сети Tor. WebTunnel, присоединился к нашей коллекции технологий обхода цензуры, разработанных и поддерживаемых The Tor Project.
Разработка различных типов мостов имеет решающее значение для того, чтобы сделать Tor более устойчивым к цензуре и опережать злоумышленников в очень динамичном и постоянно меняющемся ландшафте цензуры. Это особенно верно, поскольку мы переживаем глобальный мегацикл выборов 2024 года, роль технологий обхода цензуры становится решающей в защите свободы интернета.
Что такое WebTunnel и как он работает?
WebTunnel — это устойчивый к цензуре подключаемый транспорт, предназначенный для имитации зашифрованного веб-трафика (HTTPS), вдохновленный HTTPT. Он работает, оборачивая соединение полезной нагрузки в HTTPS-соединение, похожее на WebSocket, которое выглядит для сетевых наблюдателей как обычное соединение HTTPS (WebSocket). Таким образом, для стороннего наблюдателя, не знающего скрытого пути, это выглядит как обычное HTTP-соединение с сервером веб-страницы, создающее впечатление, что пользователь просто просматривает веб-страницы.
На самом деле, WebTunnel настолько похож на обычный веб-трафик, что может сосуществовать с веб-сайтом на одной конечной точке сети, то есть с тем же доменом, IP-адресом и портом. Такое сосуществование позволяет стандартному прокси-серверу обратного трафика перенаправлять как обычный веб-трафик, так и WebTunnel на соответствующие серверы приложений. В результате, когда кто-то пытается зайти на сайт по общему сетевому адресу, он просто воспринимает содержимое этого адреса веб-сайта и не замечает существования секретного моста (WebTunnel).
Сравнение WebTunnel с мостами obfs4.
WebTunnel можно использовать в качестве альтернативы obfs4 для большинства пользователей Tor. В то время как obfs4 и другой полностью зашифрованный трафик нацелены на то, чтобы быть полностью различимыми и неузнаваемыми, подход WebTunnel к имитации известного и типичного веб-трафика делает его более эффективным в сценариях, где существует список разрешенных протоколов и запрещенная по умолчанию сетевая среда.
Рассмотрим механизм цензуры сетевого трафика как машину для сортировки монет, где монеты представляют собой поток трафика. Традиционно такая машина проверяет, подходит ли монета к известной форме, и пропускает ее, если подходит, или отбрасывает, если нет. В случае полностью зашифрованного, неизвестного трафика, как показано в опубликованном исследовании «Как Великий китайский файрвол обнаруживает и блокирует полностью зашифрованный трафик, который не соответствует какой-либо конкретной форме, он будет подвергаться цензуре. В нашей аналогии с монетой, монета не только не должна соответствовать форме какого-либо известного заблокированного протокола, она также должна соответствовать признанной разрешенной форме, иначе она будет отброшена. Трафик obfs4, не совпадающий ни с одним известным разрешенным протоколом или текстовым протоколом, будет отклонен. В отличие от этого, трафик WebTunnel, напоминающий трафик HTTPS, разрешенный протокол, будет проходить.
amnesia@amnesia:~$ sudo apt install golang
amnesia@amnesia:~$ cd ~/Persistent
amnesia@amnesia:~$ git clone https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/webtunnel
amnesia@amnesia:~$ mkdir -p ~/go/pkg/mod/cache/download/gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/goptlib/\@v/
amnesia@amnesia:~$ cd ~/go/pkg/mod/cache/download/gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/goptlib/\@v/
amnesia@amnesia:~$ wget https://proxy.golang.org/gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/goptlib/@v/v1.5.0.zip
amnesia@amnesia:~$ wget https://proxy.golang.org/gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/goptlib/@v/v1.5.0.mod
amnesia@amnesia:~$ cd ~/Persistent/webtunnel/main/client
amnesia@amnesia:~$ go build
amnesia@amnesia:~$ sudo chown root:root client
amnesia@amnesia:~$ sudo cp client /usr/bin/webtunnel-client
amnesia@amnesia:~$ sudo nano /etc/tor/torrc
#Bridge obfs4 IP:port
#ClientTransportPlugin obfs2,obfs3,obfs4,meek_lite exec /usr/bin/obfs4proxy -enableLogging -unsafeLogging -logLevel DEBUG
Bridge webtunnel <IP>:<PORT> <FINGERPRINT> url=<URL> ver=0.0.1 #https://yq5jjvr7drkjrelzhut7kgclfuro65jjlivyzfmxiq2kyv5lickrl4qd.onion/bridges/?transport=webtunnel
ClientTransportPlugin webtunnel exec /usr/bin/webtunnel-client
<Ctrl>+<X>
amnesia@amnesia:~$ sudo nano /etc/apparmor.d/system_tor
/usr/bin/webtunnel-client ix,
<Ctrl>+<X>
amnesia@amnesia:~$ sudo apparmor_parser -r /etc/apparmor.d/system_tor
amnesia@amnesia:~$ sudo systemctl restart tor
⚠ Что бы стартовать с нуля, не подключаясь предварительно к obfs4 из GUI закомментируйте в /etc/tor/torrc строчку
#DisableNetwork 1
Автоматизируем установку соединения по WebTunnel.
После установки соединения по WebTunnel создаём каталог для транспорта и конфигурационных файлов
amnesia@amnesia:~$ sudo mkdir /home/amnesia/Persistent/webtunnel_start
Копируем в этот каталог транспорт и конфигурационные файлы
amnesia@amnesia:~$ sudo cp /usr/bin/webtunnel-client /home/amnesia/Persistent/webtunnel_start/webtunnel-client
amnesia@amnesia:~$ sudo cp /etc/tor/torrc /home/amnesia/Persistent/webtunnel_start/torrc
amnesia@amnesia:~$ sudo cp /etc/apparmor.d/system_tor /home/amnesia/Persistent/webtunnel_start/system_tor
Создаём файл для скрипта
amnesia@amnesia:~$ sudo touch /home/amnesia/Persistent/webtunnel_start/webtunnel_start.sh
Задаём ему права на исполнение для пользователя root
amnesia@amnesia:~$ sudo chmod 700 /home/amnesia/Persistent/webtunnel_start/webtunnel_start.sh
Открываем его в текстовом редакторе
amnesia@amnesia:~$ sudo nano /home/amnesia/Persistent/webtunnel_start/webtunnel_start.sh
Помещаем туда следующий текст:
#!/bin/sh
cp /home/amnesia/Persistent/webtunnel_start/webtunnel-client /usr/bin/webtunnel-client
cp /home/amnesia/Persistent/webtunnel_start/torrc /etc/tor/torrc
cp /home/amnesia/Persistent/webtunnel_start/system_tor /etc/apparmor.d/system_tor
apparmor_parser -r /etc/apparmor.d/system_tor
systemctl restart tor
Сохраняем изменения <Ctrl>+<X> <Y>.
После перезагрузки закрываем окно помощника установки соединения с Tor и запускаем скрипт.
amnesia@amnesia:~$ sudo /home/amnesia/Persistent/webtunnel_start/webtunnel_start.sh
Ожидаем установки соединения с Tor.
Если вы не можете подключиться к Tor и собрать транспорт, так как рабочих мостов obsf4 больше нет…
Подключаетесь к Tor из другой операционной системы, где есть такая возможность. Например из Android c помощью InviZible Pro Эта программа поддерживает соединение с Tor через WebTunnel.
Скачиваете файлы
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/webtunnel/-/archive/main/webtunnel-main.zip
https://proxy.golang.org/gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/goptlib/@v/v1.5.0.zip
Скачиваете образ Debian LiveUSB и записываете на USB накопитель аналогично Tails. Загружаетесь в Debian, подключаетесь к интернету. Переносите в домашний каталог файлы webtunnel-main.zip и v1.5.0.zip
Открываете текстовый редактор. Вставляете в него текст
module gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/goptlib
go 1.11
Сохраняете в домашний каталог с именем v1.5.0.mod.
Открываете терминал. Распаковываете архив webtunnel-main.zip 7z x ~/webtunnel-main.zip
Создаёте каталог
mkdir -p ~/go/pkg/mod/cache/download/gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/goptlib/\@v/
Переносите в него файлы v1.5.0.zip и v1.5.0.mod. Устанавливаете golang sudo apt install golang
Переходите в каталог cd ~/webtunnel-main/main/client
собираете транспорт go build
Переносите файл ~/webtunnel-main/main/client/client в домашний каталог пользователя Tails. Далее делаете описанное выше начиная со строчки
amnesia@amnesia:~$ sudo chown root:root client
.