Download as pdf
Download as pdf
You are on page 1of 12

Dokumentacja projektu

Anonimowy dostęp do usługi webowej

Łukasz Sędek
L.Sedek@stud.elka.pw.edu.pl

Paweł Ciemski
P.Ciemski@stud.elka.pw.edu.pl

31 maja 2010
1 Motywacja

• Istniejące serwery proxy mogą zbierać informacje na temat ruchu w sieci i wykorzystywać
je do celów komercyjnych

• Zastosowanie jednego serwera proxy przy dzisiejszych zagrożeniach nie jest wystarczające.

• Sieci mixujące[1] (MIXNET, TOR, CROWDS) wymagają kosztownej infrastruktury, żeby


zapewnić dobrej jakości połączenie.

2 Założenia projektowe

Celem nadrzędnym projektu jest utworzenie mechanizmów zapewniających anonimowość dostę-


pu do usługi webowej (tj. usług www). Anonimowość jest rozumiana jako anonimowość osoby[1]
i ma na celu chronienie tożsamości sieciowej (adres IP, lokalizacja) osoby przeglądającej zasoby
stron www. Pozostałe cele:

• Przeciwdziałanie atakom polegającym na analizie ruchu

• Wykorzystanie idei serwera pośredniczącego

• Uzyskanie szybkiego dostępu - brak odczuwalnej różnicy szybkości połączenia w porówna-


niu do połączenia bezpośredniego,

• Prostota - minimalny wkład użytkownia do połączenia z ”anonimowym Internetem”,

• Maksymalne wykorzystanie istniejącyh rozwiazań, unikanie tworzenia własnych protoko-


łów.

3 Zastosowane metody, techniki i architektury

3.1 Ogólny zarys

W projekcie zastosowano trójstronnny mechanizm przekazywania treści. Użytkownik chcący


przeglądać treści sieci www musi swoją przegladarkę skonfigurować tak, aby łączyła się z uru-
chomionym Proxy Chooser. Zadaniem Proxy Chooser’a jest wybranie z listy zaufanych serwerów
proxy losowo jednego i utworzenie połączenia z nim. Zadaniem tego programu jest utworzenie

1
tunelu pomiędzy siecią lokalną a serwerem pośredniczącym. Każdy serwer z listy jest anonimi-
zyjący, tzn. ukrywa (zmienia adres źródłowy w nagłówku) rzeczywisty adres odbiorcy i zamienia
go na własny. Dodatkowo, jeżeli użytkownik zechce zwiększyć poziom bezpieczeństwa przekazy-
wanych treści w ramach projektu został uruchomiony serwer www z usługą ASProxy[3]

System składa się z:

• Programu Proxy Chooser

• Serwera proxy HTTP

• Serwera web z wdrożoną usługą ASProxy, tzw. anonimizer

3.2 Architektura Proxy Chooser

3.2.1 Zasada działania

Program ma na celu selekcje serwerów proxy i stworzenie takich mechanizmów, aby osoba trzecia
nie mogła ustalić prawdziwej tożsamości użytkownika na podstawie statystyk i analizie ruchu
sieciowego serwerów pośredniczących.
Działanie Proxy Chooser oparte jest na mechanizmie gniazd sieciowych. Aby mogła zadziałać
komunikacja duplexowa (w stronę serwera i w stronę przeglądarki) program posiada jeden Soc-
ketServer i dwa gniazdka (Socket) dla strumienia wychodzącego i wchodzącego.
Proxy Chooser jest prostym programem napisanym przy pomocy języka JAVA.

2
Procedura działania programu

1. Wczytanie z pliku adresów URL z bazą adresów serwerów Proxy

2. Wybranie przez użytkownika bazy z adresami

3. Wylosowanie serwera proxy

4. Połączenie

Domyślne ustawienia:

• Nazwa pliku z listą baz danych serwerów proxy: lista.txt

• Nazwa pliku z wykorzystywanymi adresami proxy: proxy.txt

• Port wewnętrzny Socketu: 80

3.2.2 Instrukcja obsługi

Poniżej znajduje się interfejs poprawnie uchomionego programu (skrypt ProxyChooser.bat lub
java -jar proxy2.jar)

Zalecamy korzystanie z pozycji numer ”0” (lista.txt), ponieważ jest to nasza baza serwerów. W
przeciwnym przypadku mogą być problemy z połączeniem się z serwerem (publiczne listy ser-
werów proxy zawierają nieaktywne serwery).
Poniżej znajduje się przykład prawidłowo skonfigurowanej przeglądarki (Mozilla Firefox 3), aby

3
mogła łączyć się za pomocą naszego rozwiązania. W przypadku Mozilli należy wejść w Narzę-
dzia, opcje, później w zakładkę zaawansowane i w zakładce Sieć wybrać ustawienia. Na ekranie
powinno się pojawić okienko jak poniżej

Serwer proxy HTTP - adres komputera na którym jest uruchomiony program Proxy Chooser.
W przypadku gdy Proxy Chooser jest uruchomione na tym samym komputerze co przeglądarka
można użyć localhost lub 127.0.0.1

W przypadku innych przeglądarek (np. Internet Explorer) należy skonfigurować opcje inter-
netowe.

3.3 Anonimowy Proxy

Anonimowy serwer proxy pozwala ukryć swój adres IP, a także informacje o sobie, jak również
o swoich zainteresowaniach. Poza tym, anonimowy serwer proxy może pomóc w wielu przypad-

4
kach na przykład, gdy właściciel strony internetowej wprowadził ograniczenia na użytkowników
z niektórych krajów, miast, regionów geograficznych lub nawet ograniczenia dla wybranych za-
kresów adresów IP
W projekcie użyto istniejących proxy, które zostały specjalnie wyselekcjonowane pod kątem
oferowanej anonimowości. Braliśmy pod uwagę tylko tzw. high-anonymous klasy Elite. Użycie
takich serwerów jest małowydajne, ale w zamian użytkownik korzystający z takiego rozwiązania
nie wysyła żadnej informacji o tym, że korzysta z takiego rozwiązania.

3.4 Architektura serwera http://ciemsedoins.somee.com

Drugim pośrednikiem w naszej kaskadzie serwerów pośredniczących jest serwer OINSProxy. Jest
to serwer web tzw. anonimizer bazujący na open source’owym projekcie o nazwie ASProxy[3].
Strona domowa tego projektu znajduje się pod adresem: http://www.asproxy.sourceforge.net/
Usunęliśmy możliwość wybierania opcji ASProxy (wszystkie dostępne opcje Proxy zostały
ustawione ręcznie (na stałe) bez możliwości zmiany przez użytkownika). Są to między innymi
ustawienia dotyczące kompresji obrazków, blokowania skryptów javascript, wyświetlania adresu
URL obiektu (obrazka bądź linku) będącego częścią przeglądanej strony WWW. Dodatkowo na
głównym panelu, poniżej paska wyszukiwania umieściliśmy adres IP klienta przed skorzystaniem
z OINSProxy.

Panel OINSProxy (w pole tekstowe wpisujemy adres docelowej strony WWW, natomiast poniżej
podany jest adres IP klienta przed skorzystaniem z OINSProxy)
W polu tekstowym po wpisaniu adresu strony, jej adres jest kodowany algorytmem base64 przy
pomocy niżej zdefiniowanego klucza. Używany klucz:
abcdefghijkml012345nopqrstuvwxyz6789ABCDEFGHIJKLMNOPQRSTUVWXYZ+/=
Więcej informacji o algorytmie base64 można znaleźć w RFC 4648[2].

3.4.1 Instrukcja obsługi

OINSProxy jest platformą webową, więc żeby skorzystać z jej funkcjonalności należy (po uprzed-
nim uruchomieniu Proxy chooser’a) przez przeglądarkę internetową wpisać adres serwisu tj.
http://ciemsedoins.somee.com/ . Wówczas pojawi się na górze pasek tak jak na rysunku w pod-

5
punkcie wyżej. Tam należy wpisywać adres docelowy wybranego zasobu sieci WWW.

4 Testy

4.1 Wydajność

Do testowania wydajności przeprowadziliśmy serię testów ściągania pliku o rozmiarze 1 MB przy


łączu 1Mb/s.
Rozwiązanie bezpośrednie Jeden serwer proxy proxy + OINSProxy OINSProxy
1 MB 11 s 14 s 16 s 13 s
Widzimy, że wraz z dokładaniem liczby stosowanych pośredników zwiększa się czas odpo-
wiedzi. W przypadku serwera OINSProxy czas ten jest stały. Natomiast z powodu korzystania
z losowego proxy czas ten jest zmienny i zależy od konkretnego przypadku.

4.2 Anonimowość

4.2.1 WHOIS

Za pomocą serwisu http://ping.eu wykonaliśmy polecenie WHOIS


Poniżej listning WHOIS dla kaskady dwóch Serwerów

OrgName : Network O p e r a t i o n s Center I n c .


OrgID : NOC
Address : PO Box 591
City : Scranton
StateProv : PA
PostalCode : 18501 −0591
Country : US

R e f e r r a l S e r v e r : r w h o i s : // r w h o i s . h o s t n o c . n e t : 4 3 2 1 /

NetRange : 66.96.192.0 − 66.96.255.255


CIDR : 66.96.192.0/18
NetName : NOC

6
NetHandle : NET−66−96−192−0−1
Parent : NET−66−0−0−0−0
NetType : Direct Allocation
NameServer : NS1 .HOSTNOC.NET
NameServer : NS2 .HOSTNOC.NET
Comment : ADDRESSES WITHIN THIS BLOCK ARE NON−PORTABLE
RegDate : 2001−04−04
Updated : 2003−08−08

RTechHandle : SMA4−ARIN
RTechName : Arcus , S . Matthew
RTechPhone : +1−570−343−8551
RTechEmail : nic ( at ) hostnoc . net

OrgTechHandle : SMA4−ARIN
OrgTechName : Arcus , S . Matthew
OrgTechPhone : +1−570−343−8551
OrgTechEmail : nic ( at ) hostnoc . net

# ARIN WHOIS database , l a s t updated 2010−05−29 2 0 : 0 0


# Enter ? f o r a d d i t i o n a l h i n t s on s e a r c h i n g ARIN ’ s WHOIS d a t a b a s e .
#
# ARIN WHOIS data and s e r v i c e s a r e s u b j e c t t o t h e Terms o f Use
# a v a i l a b l e a t h t t p s : / /www. a r i n . n e t / w h o i s t o u . html

Jak łatwo wywnioskować dane te dotyczą serwera pośredniczącego OINSProxy. Żaden z pa-
ramterów nie dotyczy naszego hosta.

4.2.2 ProxyJudge

Drugą metodą sprawdzenia anonimowości było przetestowanie połączenia za pomocą tzw. Pro-
xyJudge. Ich zadaniem jest wykrywanie czy połączenie odbywa się za pomocą serwerów pośred-

7
niczących. Użyty skrypt został napisany przez nas i dostepny jest pod adresem
http://home.elka.pw.edu.pl/ lsedek/index.php?view=httptest

Serwer 1 - Proxy anonimowe


Serwer 2 - http://ciemsedoins.somee.com - anonimizer
Serwer 1+Serwer 2 = kaskada Serwera 1 + Serwera 2

Bezpośrednio 1 1+2
HTTP VIA - - -
HTTP X FORWARDER FOR - - -
REMOTE ADDR 83.31.120.63 201.255.216.158 66.96.210.17
REMOTE HOST cls63.neoplus.adsl.tpnet.pl 201-255-216-158.mrse.com.ar
Wartości zmiennych środowiskowych są takie same jak w przypadku, gdy serwer proxy nie
jest w ogóle używany (z tą zmianą że IP serwera proxy jest użyte IP klienta).
Rodzaj Proxy określa stopień ukrywania zmiennych środowiskowych. Musimy jednak pamię-
tać, że znajdujące się tu adresy są dostarczane nie przez nasz serwer, a przez proxy, co daje
możliwość dowolnej manipulacji danymi. Dlatego w kwestiach bezpieczeństwa nie powinniśmy
w ogóle polegać na tym polu
Zmienna HTTP VIA i HTTP X FORWARDER FOR wskazuje parametry węzła pośredni-
czącego. Jak widać testy wypadły pozytywnie, ponieważ w każdym teście powyższe zmienne są
puste.

5 Osiągnięcia, zagrożenia, niepowodzenia

5.1 Osiągnięcia

• Uzyskanie wyższego poziomu anonimowości.

• Wszystkie popularne metody (WHOIS, traceroute, ProxyJudge) nie wskazują naszej toż-
samości sieciowej możemy uznać za jednoznaczny sukces.

• Dzięki zastosowaniu dwóch serwerów anonimizujących zwiększyliśmy szanse, że zapropo-


nowane rozwiązanie skuteczniej chroni naszą anonimowość.

8
• Prostota - użytkownik jedynie uczy się interfejsu prostego programu konsolowego

5.2 Zagrożenia

• Ciągła aktualizacja i weryfikacja listy pośredników proxy.txt.

• Możliwość analizowania ruchu sieciowego na odcinku komputer-proxy (lokalny sprzęt sie-


ciowy)

• Nie możemy mieć całkowitej pewności czy dane nie są przez usługodawcę gromadzone ani
wykorzystywane (nie możemy bezgranicznie ufać żadnej stronie).

5.3 Niepowodzenia

• Należy jednak pamiętać że używając serwera Proxy można ukryć przed serwerem WWW
jedynie IP klienta. Wszystkie pozostałe informacje o kliencie (m.in. wersja przeglądarki)
są wykrywalne.

• Uzyskaliśmy satysfakcjonujący poziom anonimowości kosztem jakości połączenia. Trzy wę-


zły wprowadzają znaczące opóźnienie.

• Nie można polegać na isteniących bazach serwerów proxy. Podczas korzystania z publicz-
nych baz wielokrotnie zmuszeni byliśmy do kilkukrotnego łączenia się. Takie listy nie wery-
fikują swoich zasobów często, więc zawierają rekordy o wyłączonych hostach. Użytkownik
musi sam stworzyć sobie listę i wyselekcjonować te pozycje które zapewnią mu satysfak-
cjonującą jakość połączenia.

6 Podsumowanie

Udało nam się osiągnąć postawione cele projektowe. Osiągneliśmy anonimowość Intenercie przy
względnie małym opóźnieniu przy przeglądaniu stron WWW w stosunku do bezpośredniego
korzystania z zasobów Intenertu. Oczywiście istnieją powszechnie znane rozwiązania zapewnia-
jące znaczenie wyższy stopień anonimowości (stosowanie sieci serwerów proxy) jednakże równie
ważnym czynnikiem są występujące opóźnienia, które mogą skutecznie zniechęcić od stosowania
danego rozwiązania.

9
Przyjęte przez nas rozwiąznie ma zalety, ale i poważne wady. Niewątpliwą zaletą naszego roz-
wiązania jest zastosowanie kaskady serwerów proxy. Nie obciążamy zaufaniem jedynie jednego
serwera pośredniczącego. Stosując dwa serwery Proxy, w tym pierwszy serwer proxy losowany z
listy (nie będącym stałym punktem pośredniczącym w naszym dostępie do korzystania z usług
webowych), utrudanimy znacząco analizę ruchu. Natomiast drugi serwer w naszej kaskadzie
serwerów proxy (OINSProxy) jest serwerem zaufanym. Dzięki temu że mamy wgląd o imple-
mentacji tegoż serwera, mamy też pewność, że nie prowadzi on żadnych statystyk bez naszej
wiedzy (czego nie możemy być pewni w przypadku korzystania z anonimowego serwera Proxy -
o którym nic nie wiemy).

Kolejną zaletą naszego rozwiązania jest fakt, że nasz OINSProxy blokuje m.in. ciasteczka
(cookies) pochodzące od serwera docelowego a także skrypty w języku JavaSript. Co stanowi
niewątpliwe ograniczenie zbioru elementów, jakie mogą być pobierane. Rozwiązania bazujące na
języku JavaScript mogą stanowić bardzo poważne zagrożenie funkcjonowania całego systemu.
Możliwe i łatwe jest przeprowadzenie za ich pomocą skutecznych ataków, całkowicie kompromi-
tujących system serwera pośredniczącego[1].
Jak to zostało przedstawione w testach, zabiegaliśmy o ukrycie wszelkich danych o kliencie przed
serwerem docelowym. Jednak nie ma możliwości ukrycia danych o m.in. wersji przeglądarki wy-
korzystywanej przez użytkownika.

Poważną wadą naszego rozwiązania jest brak szyfrowania danych przesyłanych między klien-
tem a pierwszym serwerem proxy. Proxy, które nie korzysta z szyfrowania (np. SSL) nie zabezpie-
cza klienta przed ujawnieniem transmitowanych danych przed lokalnym ISP bądź osobą trzecią
- podsłuchującą czy analizującą ruch. Dzięki analizie ruchu na lokalnej bramie można w łatwy
sposób wyfiltrować dane wpisane w formularzach stron WWW. Dobrym rozwiązaniem mogło
by być zestawienie szyfrowanego połączenia SSL (tunelu VPN) między klientem a pierwszym
serwerem proxy. Kolejnym aspektem poprawiającym anonimowość mogło by być szyfrowanie
przekazu między zaproponowanym przez nas systemem a serwerem docelowym[4]

kody serwera OINSProxy i Proxy Chooser’a znajdują się również na stronie


http://home.elka.pw.edu.pl/ lsedek/index.php?view=oins

10
Literatura

[1] Krzysztof Szczypiorski Igor Margasiński. Enigma 2003 - krajowa konferencja zastosowań
kryptografii. In VAST - metoda zapewnienia wszechstronnej anonimowości dla użytkowników
systemu WWW. Politechnika Warszawska, maj 2003.

[2] S. Josefsson. Rfc 4648. Technical report, IETF, 2006.

[3] Mozilla MPL 1.1 license. Asproxy site. http://asproxy.sourceforge.net.

[4] Igor Margasiński. Zapewnienie anonimowości pzy przeglądaniu stron www.

11

You might also like