Когда выходной узел Tor вовсе не выходной

Реальны ли выходные узлы?

Вы знаете, что существуют списки выходных узлов и списки IP-адресов, на которых они работают. Но это не означает, что трафик на самом деле должен уходить с того же адреса. Есть несколько способов, чтобы перенаправить трафик с одного узла на другой узел, или рекламировать не на 100% правильный адрес. Так как этого довольно просто достичь, мы проверим, сколько узлов это делают.

Метод

Мы проверили все выходные узлы из каталога через 4 сервиса по определению IP-адреса. В случае если адрес не совпадал с адресом в каталоге, проверка повторялась на следующий день. Цепочка Tor содержала только сторожевой узел и исследуемый выходной узел. Проверялись только два порта (80, 443).

Для достижения подобной схемы и предотвращения автоматического обновления, пришлось изменить некоторые параметры. Например установить очень долгое время простоя (MaxCircuitDirtiness) и запретить создание новых цепочек автоматически (__DisablePredictedCircuits). Испытания проводились с помощью curl и socks.
Для проверки использовались ipify, whatismyipaddress, wtfismyip, myexternalip.

Результаты

Из 858 проверяемых при первом запуске узлов, 43 возвращали адреса отличные от рекламируемых в каталоге. 40 из них были активны на следующий день и показывали тот же результат. Насколько можно понять, они не перехватывали и не изменяли передаваемый трафик.

Есть три основных способов скрыть адрес в этом случае.

Постоянные редиректы
Некоторые узлы либо перенапрявляли весь свой трафик на соседний адрес, либо работали в какой-то многоузловой конфигурации, где несколько узлов совместно использовали один пул адресов. Как правило, в одном сетевом блоке. Например, узел 213.61.149.125 посылал трафик через 213.61.149.100.

VPN
Ряд выходных узлов перенаправляли исходящий трафик на различные сервера VPN.

Туннель обратно в Tor
Было несколько узлов, которые направляли трафик обратно в сеть Tor. То есть, строилась стандартная цепочка узлов и трафик трафик перенаправлялся на случайные узлы сети.

Это важно?

Тот факт, что ~20 % выходных узлов используют другой адрес, вместо объявленного, важно в некоторых случаях. Главным образом это важно для тех, кто использует публичные списки узлов, для того, чтобы блокировать Tor. Они должны знать, что не могут доверять официальным источникам. Потому что невозможно создать абсолютно полный список выходных узлов.
Также это важно для тех, кто выбирает выходные узлы по географическому признаку. Даже надежные узлы могут изменять маршрут.
Но для функционирования сети это не имеет значения. Подобные узлы легко обнаружить и исключить. Они, как правило, имеют низкую пропускную способность и приоритет в использовании.

Дополнительно

Многие спрашивают как создать цепочку из двух узлов. Вот пример с использованием библиотеки stem.