[hackpl]_sieci_nie_tak_znowu_lokalne.pdf

(1036 KB) Pobierz
12278066 UNPDF
Sieci nie tak znowu lokalne
Atak
Konrad Malewski
stopień trudności
Szybki przyrost ilości komputerów na świecie powodują, że
zmniejsza się ilość wolnych adresów IP. Najczęściej stosowane
rozwiązanie czyli NAT pomimo swoich zalet, posiada również
wadę. Jest nią brak możliwości tworzenia połączeń pomiędzy
komputerami znajdującymi się w różnych sieciach lokalnych.
z publicznych adresów IP ciągle przy-
bywa. Z raportu ([1]) opublikowanego
w 2002 roku wynikało, że pula publicznych ad-
resów internetowych zostanie wyczerpana do
2005 roku. Rok 2005 minął spokojnie, a pro-
blem adresacji specjalnie nam nie doskwierał.
Nowe raporty przesuwają datę apokalipsy na
lata od około 2010 do 2026. Pomimo tego, że
wg niektórych źródeł w roku 2012 nastąpi już
dei nitywnie koniec świata i problem dostępno-
ści IP zejdzie na drugi plan, ustępując pierw-
szeństwa problemom egzystencjalnym, warto
wiedzieć, że to właśnie rozwój lokalnych sie-
ci komputerowych przyczynił się między inny-
mi do przesunięcia momentu, kiedy nie będzie
można już podłączyć żadnego nowego kompu-
tera do sieci globalnej.
bą konieczność istnienia dwóch komputerów
posiadających zewnętrzne IP – jednego na-
dającego a drugiego odbierającego. Z dru-
giej strony istnieją mechanizmy, które potra-
i ą umożliwić maszynom posiadającym lokal-
ną adresację bezproblemową komunikację z
dowolnym adresem IP. Jednym z takich me-
chanizmów jest właśnie NAT ( Network Ad-
dress Translation ) czyli translacja adresów
Z artykułu dowiesz się...
• Jak działa NAT;
• Jakie są rodzaje NAT i jakie są ich właściwo-
ści;
• Jakie są techniki nawiązywania bezpośrednich
połączeń UDP oraz TCP pomiędzy lokalnymi
sieciami.
Problem IP i jego rozwiązanie
Aby dwa komputery mogły się ze sobą w In-
ternecie skomunikować, muszą posiadać pu-
bliczne adresy IP – głosi powszechnie znana
teza. Jednak nie jest ona do końca prawdzi-
wa. Z jednej strony prawdą jest, że krążące
w Internecie pakiety powinny mieć publiczny
adres źródłowy i docelowy, co pociąga za so-
Co powinieneś wiedzieć...
• Powinieneś znać model ISO/OSI;
• Powinieneś mieć ogólne pojęcie o zasadzie
działania sieci TCP/IP;
• Powinieneś mieć ogólne pojęcie o programo-
waniu gniazd sieciowych.
16
hakin9 Nr 1/2007
www.hakin9.org
G odzina zero. Urządzeń korzystających
12278066.021.png 12278066.022.png 12278066.023.png 12278066.024.png
Sieci nie tak znowu lokalne
INTERNET
Komputer z publicznym
adresem IP
adresu IP lub/i wymagają dedy-
kowanego portu;
• NAT wymaga więcej zasobów
(pamięć, CPU) niż rozwiązanie
oparte wyłącznie na routingu;
• Niektóre protokoły nie działają
dobrze w środowisku z NAT (np.
ftp, ipsec).
Router z NAT
Router z NAT
Istnieje szereg rodzajów NAT:
Sieć lokalna
Sieć lokalna
Komputer z lokalnym
adresem IP
• Jednokierunkowy NAT;
• Dwukierunkowy NAT;
• NAT z translacją portów;
• Dwukrotny NAT.
Komputer z lokalnym
adresem IP
Komputer z lokalnym
adresem IP
Komputer z lokalnym
adresem IP
Różnice pomiędzy poszczególnymi
rodzajami NAT oraz zasadę działa-
nia najlepiej pokazać za pomocą
przykładu. Załóżmy, że w sieci ist-
nieje komputer, który posiada lokalny
adres 192.168.19.100 i jest podłączo-
ny do Internetu przez NAT, którego
adres publiczny to 157.158.181.42.
Co się dzieje, gdy komputer z lo-
kalnym adresem IP chce się po-
łączyć np. z komputerem o adre-
sie 157.158.180.200? W przypadku
NAT-a komputer z lokalnym IP uży-
wa maszyny z usługą NAT jako do-
myślnego routera, więc chcąc na-
wiązać jakąkolwiek komunikację po-
za LAN wyśle do niego pakiety. Przy
przejściu pakietu przez router zosta-
nie zamieniony adres źródłowy pa-
kietu na adres publiczny routera.
Komputer, do którego dotrze pakiet
po zmianie adresu zobaczy połącze-
nie nie z adresu 192.168.19.100, ale
z 157.158.181.42.
Jednokierunkowy NAT charak-
teryzuje się tym, że komputer z po-
za sieci lokalnej nie może nawią-
zać połączenia do wewnątrz LAN.
Rysunek 1. Uproszczony model sieci
sieciowych. NAT nie jest jedynym
mechanizmem tego typu. Do umoż-
liwienia surfowania można na przy-
kład użyć serwerów proxy czy też
wykorzystać protokół RSIP. Roz-
wiązania alternatywne często są
wykorzystywane w miejscach, w
których ten, kto udostępnia Internet
chce mieć pełniejszą kontrolę nad
przesyłanymi danymi.
• Stosując NAT w i rmie łatwo zmie-
nić dostawcę internetowego;
• NAT automatycznie tworzy swo-
jego rodzaju i rewall, który nie po-
zwala na niekontrolowane łącze-
nie się komputerów z internetu z
tymi w sieci lokalnej;
• NAT nie wymaga specjalnej kon-
i guracji aplikacji na komputerach
klientów.
Translacja adresów
NAT jest obecnie jednym z najczę-
ściej stosowanych mechanizmów
służących do udostępniania połą-
czenia internetowego w sieciach lo-
kalnych. Jest to mechanizm spraw-
dzony, dość dobrze przetestowa-
ny i zrealizowany lepiej lub gorzej w
szerokiej gammie routerów sprzęto-
wych. Istnieją oczywiście darmo-
we implementacje programowe NAT
– natd czy iptables. Stosowanie te-
go rozwiązania posiada następują-
ce cechy:
Niestety oprócz licznych zalet uży-
wając NAT warto pamiętać również
o jego niedostatkach:
• Stosowanie NAT przy dużej licz-
bie komputerów i jednym adresie
powoduje najrozmaitsze proble-
my, które niekoniecznie wskazu-
ją na konkretną przyczynę;
• Aby działać poprawnie, niektó-
re usługi wymagają publicznego
Komputer A
IP: 192.168.19.100
Komputer R1
IP: 157.158.181.42
Komputer C
IP: 157.158.180.200
• NAT oszczędza pule adresów
– wiele komputerów może posia-
dać jeden adres publiczny, pod
którym będą widoczne;
• Udostępnianie Internetu dodatko-
wym maszynom wymaga jedynie
przekoni gurowania routera. Nie
istnieje potrzeba dokupywania
dodatkowych adresów u ISP;
Src: 192.168.19.100
Src port: 3000
Src: 157.158.180.200
Src port: 5000
Src: 157.158.181.42
Src port: 3000
Src: 157.158.180.200
Src port: 5000
Src: 157.158.181.42
Src port: 5000
Src: 157.158.180.100
Src port: 5000
Rysunek 2. Zasada działania NAT pokazana na przykładzie NAT
jednokierunkowego
www.hakin9.org
hakin9 Nr 1/2007
17
12278066.001.png 12278066.002.png 12278066.003.png
atak
Komputer A
IP: 192.168.19.100
Komputer R1
IP: 157.158.181.42
Komputer C
IP: 157.158.180.200
go? NAT powinien jak najmniej in-
gerować w zawartość przepływa-
jących pakietów, ale w tej sytuacji
nieingerowanie spowoduje, że po
translacji połączenia staną się nie-
rozróżnialne od siebie (oba używa-
łyby portu X jako źródłowego). Je-
żeli NAT wykryje taką sytuację, to
dokona translacji portu i w przy-
padku drugiego połączenia NAT
oprócz adresu IP zmieni również
port źródłowy.
Skoro istnieje możliwość zamiany
adresu i portu źródłowego, to nic nie
stoi na przeszkodzie, aby zamieniać
również adres docelowy. Zamienia-
nie adresu docelowego ma sens mię-
dzy innymi w sytuacji, w której chce-
my połączyć dwie sieci, których ad-
resy nakładają się. Jeśli chcielibyśmy
umożliwić komunikację pomiędzy ty-
mi dwoma sieciami to albo musieliby-
śmy zmienić adresy w jednej z nich,
albo zastosować podwójny NAT na ro-
uterach, zamieniając adresy sieci tak,
aby się nie nakładały.
Istnieją podziały NAT ze względu
na inne kryteria, jednakże na chwilę
obecną poprzestaniemy na tym po-
Src: 192.168.19.100
Src port: 3000
Src: 157.158.180.200
Src port: 5000
Src: 157.158.181.42
Src port: 3000
Src: 157.158.180.200
Src port: 5000
Src: 157.158.181.42
Src port: 5000
Src: 157.158.180.200
Src port: 5000
Src: 192.168.19.100
Src port: 5000
Src: 157.158.180.200
Src port: 5000
Rysunek 3. Zasada działania dwukierunkowego NAT
Wszystkie próby nawiązania połą-
czenia do routera są przetwarzane
jako próby połączenia z samą ma-
szyną routera.
Taką funkcjonalność umożliwia
dwukierunkowy NAT. Jeśli kompu-
ter 157.158.180.200 wyśle pakiet do
157.158.181.42, to router zamieni ad-
res docelowy na ten z sieci lokalnej.
Komputer lokalny zarejestruje połą-
czenie z adresu 157.158.180.200.
Autorzy poszczególnych imple-
mentacji NAT starają się, by pakie-
ty przechodzące przez router były
modyi kowane w jak najmniejszym
stopniu. I tak np., jeżeli klient NAT
w sieci lokalnej próbuje ustanowić
połączenie zewnętrzne i używa do
tego celu portu źródłowego X, to
NAT będzie starał się użyć portu
źródłowego X po translacji adresu
IP. Aby zrozumieć zasadność ist-
nienia NAT z translacją portów na-
leży rozważyć następujący przypa-
dek: co się stanie jeśli dwóch klien-
tów będzie próbowało otworzyć po-
łączenie zewnętrzne i będą uży-
wać tego samego portu źródłowe-
Komputer A
IP: 192.168.19.100
Komputer A'
IP: 192.168.19.101
Komputer R1
IP: 157.158.181.42
Komputer C
IP: 157.158.180.200
Scr: 192,168.19.100
Src port: 3000
Dst: 157,158.19.200
Dsc port: 5000
Scr: 157.158.181.42
Src port: 3000
Dst: 157.158.180.200
Dst port: 5000
Scr: 192.168.19.101
Src port: 3000
Dst: 157,158.19.200
Dst port: 5000
Scr: 157.158.181.42
Src port: 3000
Dst: 157.158.180.200
Dst port: 5000
Rysunek 4. NAT z translacją portów
Komputer A
IP: 192.168.19.100
Komputer R1
IP: 157.158.181.42
Komputer S'
IP: 157.158.191.236
Src: 157.158.180.200
Src port: 5000
Src: 157.158.180.200
Src port: 5000
Src: 157.158.181.42
Src port: 3000
Src: 157.158.180.200
Src port: 5000
Rysunek 5. Podwójny NAT
dziale.
18
hakin9 Nr 1/2007
www.hakin9.org
12278066.004.png 12278066.005.png 12278066.006.png 12278066.007.png 12278066.008.png 12278066.009.png 12278066.010.png 12278066.011.png 12278066.012.png 12278066.013.png
 
Sieci nie tak znowu lokalne
Problem bezpośrednich
połączeń
Obecność maszyny pośredniczącej
w wymianie pakietów oraz lokalna
adresacja znacząco komplikuje kla-
syczny schemat nawiązywania po-
łączeń pomiędzy komputerami znaj-
dującymi się w różnych sieciach lo-
kalnych. Większość NAT używa-
nych obecnie to NAT z translacją
portów. O ile nie ma większych pro-
blemów z nawiązaniem sesji kom-
putera w LAN z serwerem posiada-
jącym publiczne IP, o tyle wszystkie
żądania połączeń z sieci zewnętrz-
nej zostaną odrzucone przez router
łączący komputer z Internetem. Na-
wet jeśli mamy dostęp do koni gura-
cji routera i zastosujemy przekiero-
wanie portu do sieci lokalnej, to i tak
nie rozwiązuje to wszystkich pro-
blemów, ponieważ można przekie-
rować port jedynie do jednego ad-
resu. Czasami przekierowanie jed-
nego portu może być idealnym roz-
wiązaniem, ale co w przypadku kie-
dy administrator naszej lokalnej sie-
ci nie ma ochoty zmieniać koni gu-
racji routera, a w dodatku docelo-
wa maszyna również znajduje się
za NAT. Z pomocą przychodzą nam
różne techniki, przy użyciu których
możemy ustanowić bezpośrednie
połączenia i nie będziemy musie-
li zawracać głowy naszemu admi-
nistratorowi.
Rozwinięciem tego pomysłu, się-
gającego jeszcze czasów Napste-
ra, jest przesyłanie danych poprzez
pośrednika sieciowego, który posia-
dałby publiczny adres IP. Klienci, za-
miast łączyć się bezpośrednio ze so-
bą, łączą się z serwerem, który two-
rzy tunel łączący dwie sieci.
Pomysł ten nosi nazwę TURN
(skrót ang. Traversal Using Relay
NAT ). Rozwiązanie to jest dość uni-
wersalne, a na dodatek bardzo sku-
teczne (Rysunek 7). Posiada jednak
pewne wady, a mianowicie wymaga
dedykowanego serwera pośredni-
czącego oraz protokołu wymiany da-
nych oraz informacji sterujących tu-
nelem. To ostatnie wymusza istnie-
nie warstwy pośredniej, z którą ko-
munikowałaby się aplikacja chcąca
przesłać dane. Jeżeli rozwiązanie
to miałoby zostać wykorzystane na
większą skalę np. gdyby na jego ba-
zie chcieć świadczyć usługi jako uni-
wersalny pośrednik sieciowy, to na-
leży się liczyć również z problemami
natury prawnej.
między komputerami A i B użyjemy
VPN o nazwie VTUN. VTUN umoż-
liwia stworzenie na komputerze za
NAT wirtualnego interfejsu sieciowe-
go, który połączy go z drugim kom-
puterem. Od strony routera łączą-
cego A z internetem tunel widoczny
jest jako jedno połączenie A z kom-
puterem C. Dodatkowo VTUN umoż-
liwia szyfrowanie przesyłanych da-
nych. Alternatywnym rozwiązaniem
i poniekąd uważanym za bezpiecz-
niejsze jest OpenVPN, który dostęp-
ny jest nawet na platformę Windows.
Jednak ze względu na prostotę kon-
i guracji w tym przykładzie zostanie
użyty VTUN. Po pomyślnej instalacji
VTUN, należy skoni gurować usługę
pracującą na maszynie serwera (w
tym przykładzie niech będzie to ma-
szyna C), oraz na maszynach klien-
tach (A i B).
Na maszynie C plik koni guracyj-
ny powinien zawierać:
Plik koni guracyjny na hoście A
jest stworzony analogicznie do hosta
B. Różnią się wyłącznie nazwą sek-
cji (hosta zamiast hostb) oraz adre-
sem IP tunelu (10.1.0.2). Większość
opcji w pliku koni guracyjnym jest sa-
mo komentująca się. Obszerną do-
kumentację jest domyślny plik koni -
guracyjny dostarczony wraz z opro-
gramowaniem. Znaleźć tam moż-
na dokładny opis każdego z para-
metrów.
Zestawiamy VPN
Dla własnej potrzeby możemy jed-
nak w bardzo szybki sposób zesta-
wić tunel takiego typu. W najprost-
szym przypadku musimy jedynie
posiadać uprawnienia administra-
tora na maszynie z publicznym ad-
resem IP. Do stworzenia tunelu po-
Prosty sposób na P2P
Jeśli jeden z komputerów posiada
publiczny adres IP, to problem po-
łączenia w jedną stronę praktycz-
nie nie istnieje. Komputer z publicz-
nym adresem IP jest osiągalny bez-
pośrednio, więc połączyć się z nim
można tak samo, jak z każdym in-
nym w Internecie. Połączenie w dru-
gą stronę sprawia już więcej proble-
mu. Aby je umożliwić należy odwró-
cić schemat połączenia. A mianowi-
cie komputer z publicznym IP mu-
si zażądać połączenia od kompu-
tera zza NAT. Skoro nie może zro-
bić tego bezpośrednio, to musi ist-
nieć komputer pośredniczący, po-
przez który do maszyny za NAT zo-
stanie przesłane żądanie połączenia
(Rysunek 6).
C
Żądanie połączenia
INTERNET
R1
B
Połączenie
A
Rysunek 6. Schemat odwróconego połączenia
www.hakin9.org
hakin9 Nr 1/2007
19
12278066.014.png 12278066.015.png 12278066.016.png 12278066.017.png
atak
Mając już przygotowane pliki
koni guracyjne uruchamiamy serwer
VTUN na kompuerze C:
Natomiast hosta C uczymy przeka-
zywania pakietów oraz żądań ARP
i tego gdzie znajdują się sieci lokal-
ne A i B.
Po wykonaniu powyższego zbio-
ru komend tunel powinien już dzia-
łać. Wysyłanie pakietów ping ko-
mendą ping 192.168.18.200 wywoła-
ną na hoście A powinno spowodo-
wać przyjście pakietów ICMP Echo
Reply z hosta B.
Niektóre programy (na przykład
nmap ) nie respektują parametru src
polecenia ip i używają adresu IP in-
terfejsu, przez który wychodzą pakie-
ty. Pakiety dochodzące do drugiego
końca tunelu mają adres źródłowy in-
terfejsu tunelującego czyli w naszym
przypadku pakiety docierające z A
do B mają adres 10.1.0.2. Aby host
B umiał odpowiedzieć na taki pakiet,
trzeba skoni gurować mu dodatkową
ścieżkę routingu do sieci hosta A.
Sytuacja nie jest tak prosta, jeśli
nie mamy uprawnień administratora
na hoście C. Jednak i w tym przy-
padku można zestawić tunel. Do te-
go celu użyjemy dodatkowo tunelo-
wania SSH. Host B połączy się z ho-
stem C przekierowując swój lokalny
port 5000 na port 5000 hosta C:
C
vtund -s -f vtun-srv.conf
oraz na komputerze A:
vtund -f vtun-hosta.conf -p hosta
157.158.180.200
Kanał
komunikacyjny
INTERNET
i na koniec na komputerze B:
vtund -f vtun-hostb.conf -p hostb
157.158.180.200
R1
R2
Jeśli wszystko poszło dobrze, to ser-
wer C powinien posiadać dwa dodat-
kowe interfejsy – tap0 łączący C z A
oraz tap1 łączący C z B.
Teraz wystarczy ustawić regu-
ły routingu pozwalające na komuni-
kację A z B oraz włączyć przekazy-
wanie pakietów pomiędzy interfejsa-
mi tap0 i tap1 na hoście C. Routing
na A i B możemy ustawić na dwa
sposoby. Można do tego celu użyć
standardowej komendy route, lub też
bardziej zaawansowane ip z pakietu
iproute . Zaletą używania polecenia
ip jest możliwość ustawienia adre-
su źródłowego, który będzie używa-
ny do osiągnięcia danej sieci. Na ho-
ście A wywołujemy:
A
B
Rysunek 7. Zasada działania
protokołu TURN
właściwości NAT-a. Jest to ponie-
kąd ich zaletą, gdyż mamy pewność,
że z dużym prawdopodobieństwem,
w każdym przypadku uda nam się
nawiązać połączenie. Techniki, któ-
re polegają na wykorzystaniu zacho-
wania NAT są o wiele ciekawsze, ale
nie dają tej pewności.
Drugie podejście
Jedną z takich technik jest STUN
( Simple Traversal of User Datagram
Protocol (UDP) Through Network
Address Translators (NATs)). Jak
można wywnioskować z nazwy, spo-
sób na przebijanie NAT dotyczy wy-
łącznie protokołu UDP. Jednak, jak
zostanie pokazane poniżej, technikę
tę da się również zastosować wobec
protokołu TCP.
Załóżmy, że komputery A i B
chcą wysyłać do siebie bezpośred-
nio datagramy. Aby to osiągnąć łą-
czą się z serwerem pośredniczącym
C. Przyjmijmy, że sieć komputera A
to 192.168.19.0/24 a sieć kompute-
ra B to 192.168.18.0/24. Komputery
A i B posiadają adresy w swoich sie-
ciach kolejno 100 i 200.
Interfejsy publiczne routerów R1 i
R2 to 157.158.181.42 i 157.158.180.235,
a komputer pośredniczący posiada
adres 157.158.180.200.
Gdy komputer A wysyła pakiet
UDP do komputera C poprzez router
R1 , to router zapamiętuje, że taka sy-
ssh -f -N -L5000:localhost:5000 uzytkow
nikB@157.158.180.200
ip route add 192.168.18.0/24 dev
tap1 src 192.168.19.100
Następnie host A wykona połącze-
nie, jednakże przekierowując zdalny
port 5000 na swój lokalny:
Na hoście B:
ip route add 192.168.19.0/24 dev
tap1 src 192.168.18.200
ssh -f -N -R5000:localhost:5000 uzytkow
nikA@157.158.180.200
Listing 1. Host C
Teraz wystarczy skoni gurować
VTUN jako serwer na hoście A i użyć
VTUN w trybie klienta na hoście B.
Host B łącząc się na adres localhost:
5000 łączy się do serwera VTUN
działającego w drugiej sieci lokalnej.
Warto przy tym wiedzieć, że ssh za-
pewnia dodatkową ochronę przesy-
łanych danych. De facto w tym roz-
wiązaniu mamy podwójną ochronę.
Pierwszą zapewnia sam mechanizm
VTUN , drugą SSH . Jednak bycie pa-
ranoikiem czasami popłaca.
Przedstawione wyżej techniki
nie wykorzystywały specyi cznych
echo "1" > / proc / sys / net / ipv4 / conf
/ tap1 / forwarding
echo "1" > / proc / sys / net / ipv4 / conf
/ tap0 / forwarding
echo "1" > / proc / sys / net / ipv4 / conf
/ tap1 / proxy_arp
echo "1" > / proc / sys / net / ipv4 / conf
/ tap0 / proxy_arp
ip route add 192.168 . 19.0 / 24
dev tap0
ip route add 192.168 . 18.0 / 24
dev tap1
20
hakin9 Nr 1/2007
www.hakin9.org
12278066.018.png 12278066.019.png 12278066.020.png
Zgłoś jeśli naruszono regulamin