Professional Documents
Culture Documents
Dokumentacja OINS
Dokumentacja OINS
Ł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.
2 Założenia projektowe
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]
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
4. Połączenie
Domyślne ustawienia:
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.
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.
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].
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ść
4.2 Anonimowość
4.2.1 WHOIS
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 /
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
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
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.1 Osiągnięcia
• Wszystkie popularne metody (WHOIS, traceroute, ProxyJudge) nie wskazują naszej toż-
samości sieciowej możemy uznać za jednoznaczny sukces.
8
• Prostota - użytkownik jedynie uczy się interfejsu prostego programu konsolowego
5.2 Zagrożenia
• 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.
• 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]
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.
11