W sieci Tor bardzo ważnym elementem są węzły wyjściowe, przez które odbywa się komunikacja z siecią publiczną. Niestety spośród ok. tysiąca węzłów co najmniej 25 podsłuchuje lub manipuluje danymi korzystających z nich internautów.
Ataki na ruch przechodzący przez węzły wyjściowe sieci Tor nie są niczym nowym – już w 2007 jeden z badaczy przechwycił w ten sposób ponad setkę loginów i haseł do kont pocztowych używanych przez dyplomatów wielu krajów. Dotychczasowe próby badania uczciwości węzłów wyjściowych skupiały się z reguły na protokołach poczty elektronicznej, tymczasem większość ruchu w sieci Tor stanowią połączenia z serwerami WWW. Szwedzcy badacze postanowili rozwiązać ten problem.
Czemu węzły wyjściowe są takie ważne
Sieć Tor zapewnia anonimowość swoim użytkownikom dzięki szyfrowaniu połączeń oraz przesyłaniu ruchu przez kilka serwerów pośredniczących. Ma jednak istotny słaby punkt – ruch użytkownika, który chce odwiedzić serwer w sieci publicznej, musi zostać odszyfrowany w momencie opuszczania ostatniego węzła Tor. Oczywiście połączenie do serwera może być nadal szyfrowane (np. SSL czy SSH), jednak jest wtedy podatne na ataki typu MiTM, przeprowadzane przez operatora serwera wyjściowego. Dobrze widać to na poniższym rysunku.
Jeśli dodamy do tego fakt, że węzły sieci Tor prowadzone są przez administratorów, którzy najczęściej wolą pozostać anonimowi i każdy może postawić swój węzeł, a wszystkich węzłów wyjściowych jest jedynie ok. 1000, widzimy, że ryzyko trafienia na nieuczciwego operatora może być dość wysokie. Co prawda użytkownicy sieci zgłaszają wykryte „złe węzły”, jednak przez ostatnie kilka lat znaleźli ich niewiele. Szwedzcy badacze zbudowali i wykorzystali narzędzia, pozwalające lepiej identyfikować węzły przeprowadzające ataki na swoich użytkowników.
Narzędzie badawcze
Przez 4 miesiące, od września 2013 do stycznia 2014, Szwedzi kilka razy w tygodniu skanowali wszystkie węzły wyjściowe Tora. Szukali dowodów na ataki takie jak zatruwanie rekordów DNS, MiTM na HTTPS czy prosty sslstrip. Stworzyli w tym celu modularne narzędzie exitmap (z publicznie dostępnym kodem źródłowym), którego zadaniem jest tworzenie nowych połączeń w sieci Tor i ich wykorzystywanie do prowokowania podsłuchujących poprzez zestawianie sesji z zewnętrznymi serwerami, znajdującymi się pod kontrolą naukowców. Aby nie obciążać swoimi testami sieci i przyspieszyć działanie skanera, badacze zestawiali połączenia jedynie przez 2 węzły, z których pierwszy – wejściowy – był kontrolowany przez nich, a węzły wyjściowe były wybierane losowo z dostępnej puli. Korzystając z dwóch zamiast trzech węzłów rezygnowali w części z anonimowości, którą zapewnia Tor, jednak nie wpływało to negatywnie na przebieg eksperymentu.
Program badaczy składał się z kilku modułów testowych. Pierwszy z nich sprawdzał, czy węzeł wyjściowy nie manipuluje ruchem SSL. W tym celu pobierał z serwera docelowego certyfikat X.509 i porównywał jego sygnaturę z prawidłową, zapisaną w kodzie programu. W ten sposób wykrywał podmianę certyfikatu przez węzeł wyjściowy. Przy okazji, by nie budzić podejrzeń, udawał przeglądanie strony docelowej przez użytkownika. Drugi moduł wykrywa prosty atak sslstrip. Atak ten polega na podmianie wszystkich linków HTTPS w pobieranych plikach HTML na linki HTTP, wymuszając korzystanie ze zwykłego HTTP przez użytkownika. Moduł zatem pobierał plik HTML po HTTP, zawierający linki HTTPS i sprawdzał, czy zostały one w locie podmienione na HTTP. Moduł trzeci badał ataki na sesje SSH polegające na podmianie certyfikatu serwera, a moduł czwarty sprawdzał, czy odpowiedzi serwerów DNS zgadzały się z faktycznymi danymi szukanych domen.
Wyniki skanowania
Badacze odnieśli spory sukces, ponieważ zidentyfikowali 25 niebezpiecznych lub źle skonfigurowanych węzłów wyjściowych. Wśród nich:
- 18 węzłów prowadziło ataki MiTM na HTTPS, podstawiając swój certyfikat
- 5 węzłów prowadziło ataki na protokół SSH
- 1 węzeł wstrzykiwał (niegroźny w trakcie testów) kod HTML do przesyłanych stron
- 2 węzły stosowały sslstrip
- 3 węzły blokowały niektóre witryny (prawdopodobnie zachowanie to związane jest z cenzurą połączeń w Turcji i w Chinach).
Łączna liczba węzłów przekracza 25, ponieważ niektóre z nich prowadziły więcej niż 1 atak. Co bardzo ciekawe, 19 z 25 wykrytych złośliwych węzłów prawdopodobnie prowadzonych jest przez jedną organizację/użytkownika. Sugeruje to ta sama stosowana wersja Tora (używana tylko przez 2 inne z 1000 węzłów), wszystkie oprócz jednego znajdują się w Rosji w bardzo podobnych zakresach adresacji oraz wszystkie korzystają z bardzo podobnych własnych certyfikatów. Co ciekawe, nie atakowały one wszystkich połączeń HTTPS, a jedynie między 12 a 60% wszystkich prób łączności, a przez pewien czas atakowały tylko połączenia z serwerami Facebooka.
Kod wstrzykiwany przez jeden z węzłów do stron HTML wyglądał tak:
<br> <img src="https://111.251.157.184/pics.cgi" width="1" height="1">
a wczytanie obrazka dawało w odpowiedzi
<HTML> <HEAD> <TITLE>No Title</TITLE> </HEAD> <BODY> </BODY> </HTML>
Skutki dla użytkowników
Wykryte przez badaczy złośliwe węzły zostały odpowiednio oznaczone jako niezaufane, przez co mechanizmy wybierania ścieżki przesyłania ruchu w sieci Tor powinny je omijać. Część serwerów wkrótce po ich oflagowaniu zniknęła, lecz pewnie w ich miejscu pojawiły się nowe. Na szczęście wszystkie wykryte ataki na sesje HTTPS były bez trudu wykrywane przez przeglądarki – certyfikaty używane przez atakujących nie należały do zaufanych.
Badacze zaproponowali dodatkową wtyczkę, wspomagająca wykrywanie i raportowanie złośliwych węzłów sieci. Oprócz tego każdy użytkownik może pobrać opracowany przez nich skaner i samemu polować na nieuczciwych operatorów węzłów wyjściowych. Jest zatem nadzieja, że w przyszłości prowadzenie tego typu ataków stanie się znacznie trudniejsze i będzie dużo skuteczniej wykrywane. Zasady bezpiecznego korzystania w sieci Tor pozostają bez zmian – nie należy za jej pomocą przesyłać żadnych ważnych informacji otwartym tekstem.
Aby zablokować wszystkie podejrzane rosyjskie węzły sieci Tor w oparciu o używane przez nie zakresy adresacji IP wystarczy do pliku torrc dopisać:
ExcludeExitNodes {ru}, 64.22.111.168/29, 121.54.175.51/32, 111.240.0.0/12, 89.128.56.73/32, 117.18.118.136/32, 178.211.39.0/24, 24.84.118.132/32 StrictNodes 1
Zainteresowanym tematem polecamy lekturę całej pracy Szwedów.
Komentarze
Czasami mam wrażenie, że w Pythonie pisze każdy człowiek chodzący po tej ziemi.;F
Ale {ru} wykluczy prawie wszystkie rosyjskie jeśli się nie mylę. To chyba nie byłoby pożądane.
Do wykrywania ataków mitm w przeglądarkach dobry jest dodatek Certificate Patrol :)
Z dodatkami do np FF może się zdarzyć tak że w pewnym momencie będą posiadały dodatkowe funkcje po updejcie które mogą być związane z ciemną stroną mocy :P
To prawda. Ale bez dodatków jest źle :)
Ja pie… e az strach .Siec tor polaczona z proxy i vpn .potrafi zdzialac cuda.Ja nie mam super komputera i LTE.tylko nowego noteboka i orange free sarry nie pociagne
Co do wezlow bylo wiadomo od 7 juz lat po co pisac o tym samym w kolko 2 sprawa kazdy moze zalozyc server i sprawdzac wezly wyjsciowe, sam sam tor jest niczym chyba ze kozysta sie tylko z serverow tora ,chociaz nie wieze zeby nie bylo troche serverow tora w posiadaniu fbi czu cbs
Turcja, Honk Kong, Estonia. Cóż :)
Odnośnie tego adresu: http://111.251.157.184/pics.cgi
Może być tak, że zwraca inną treść przy określonych http refererach. Z tego co zrozumiałem badanie nie obejmowało sprawdzenia takiego działania.
Ten wpis jest zły, wyklucza całą Rosję, powinny być podane same IP bez tego wpisu ru w nawiasach.
Biorąc pod uwagę fakt, że atakujący korzystał głównie z adresów rosyjskich i może je w każdej chwili zmienić, ma sens blokowanie całego kraju.
Głupotą jest banowanie całej Rosji to jest za wielki kraj, tym bardziej, że tor i tak co kilka minut zmienia połączenie, lepiej jak każdy po trochu podsłucha, bo i tak podsłuchują, ale mają tylko strzępy, gorszą sytuacją jest jak całą transmisje podsłucha ze wszystkim UE, lub USA, które ze sobą współpracują, z Rosją gorzej współpraca im wychodzi.