Rozwiązania
Człowiek w środku czyli „trzymaj pakiety przy sobie”
42
marzec 2009
Rozwiązania
Człowiek w środku czyli „trzymaj pakiety przy sobie”
43
www.lpmagazine.org
lin
ux
@
so
ftw
ar
e.
co
m
.p
l
Człowiek w środku czyli
„trzymaj pakiety przy sobie”
Zwykło się mówić, że złudne poczucie bezpieczeństwa jest gorsze od braku zabezpieczeń. Może się
wydawać, że wyposażenie komputera w zaporę sieciową jest wystarczającym sposobem ochrony.
Okazuje się jednak, że informacje wysyłane do sieci są narażone na przechwycenie przez pośrednika,
o którym nie mamy pojęcia.
Robert Multan
P
od koniec lat 90. minionego wieku jedną z popular-
nych metod dostępu do Internetu było podłączenie
się do jednej z amatorskich, osiedlowych sieci. By-
ły one najczęściej budowane w oparciu o koncentra-
tory (popularne Huby) – urządzenia niezbyt inteligentne. Kiedy
wysłana przez komputer ramka sieciowa trafiała do koncentrato-
ra, była rozsyłana do wszystkich użytkowników sieci bez wzglę-
du na adresata. Z punktu widzenia osoby, która chciałaby pod-
słuchiwać transmisję, sytuacja była niemal idealna. Po pierwsze,
jedyną operacją wymaganą do tego, aby cały ruch sieciowy tra-
fiał również do naszego komputera było przełączenie karty sie-
ciowej w tryb Promiscious (patrz Ramka). Po drugie, podsłuchi-
wanie odbywało się w pełni pasywnie; brak ingerencji w cudze
systemy uniemożliwiał ofiarom wykrycie ataku.
Jednak z początkiem XXI wieku koncentratory zaczęły
być stopniowo wypierane przez przełączniki sieciowe (Swit-
che) – urządzenia bardziej zaawansowane, zdradzające pew-
ne oznaki inteligencji. Najistotniejsza zmiana polegała na
przechowywaniu w pamięci tablicy skojarzeń pomiędzy ad-
resem MAC, a fizycznym portem urządzenia. Dzięki temu
otrzymywane ramki sieciowe były przesyłane tylko do hosta,
do którego były adresowane. Wydawać by się mogło, że taki
schemat działania wyklucza ewentualne próby podsłuchiwa-
nia, ale to niestety tylko teoria. W praktyce metod podsłuchi-
wania jest co najmniej kilka. Bez względu na to czy będzie to
np.: podszywanie się pod inny komputer czy zdalne modyfi-
kowanie tablicy ARP, zawsze istnieje metoda aby wykryć ta-
kie działanie, bądź się przed nim zabezpieczyć.
W tym artykule przedstawię kilka popularnych metod
podsłuchiwanie transmisji w sieciach Ethernet oraz garść
sposobów na to jak nie dać się podsłuchać.
Narzędzia
Ettercap jest narzędziem oficjalnie służącym do przeprowa-
dzania diagnostyki sieci. Oficjalnie – ponieważ poza funk-
cjami takimi jak skanowanie s\w poszukiwaniu hostów, czy
określanie systemu operacyjnego zainstalowanego na zdal-
nym komputerze, pozwala również na podsłuchiwanie trans-
misji oraz przeprowadzanie ataków typu MITM. Do wybo-
ru mamy interfejs pseudo-graficzny bazujący na bibliotekach
ncurses oraz okienkowy oparty na GTK+. Aplikacja współ-
pracuje nie tylko z systemem Linux. Korzystać z niej mo-
gą również użytkownicy systemów z rodziny Windows, Ma-
cOS X oraz BSD.
Rozwiązania
Człowiek w środku czyli „trzymaj pakiety przy sobie”
42
marzec 2009
Rozwiązania
Człowiek w środku czyli „trzymaj pakiety przy sobie”
43
www.lpmagazine.org
Wireshark (dawniej Ethereal) jest darmo-
wym analizatorem ruchu sieciowego wyposa-
żonego w funkcję sniffingu (podsłuchiwania
transmisji innych hostów). Funkcjonalnością
program jest zbliżony do aplikacji tcpdump,
jednak ze względu na zaawansowane możli-
wości filtrowania i sortowania oraz wygodny
graficzny interfejs jest znacznie wygodniejszy
w użyciu. Dzięki aplikacji Wireshark możemy
uzyskać informacje o wszystkich pakietach wy-
syłanych i odbieranych przez nasz komputer w
bardzo przystępnej formie. Standardowa kom-
pilacja programu wymaga zainstalowanych w
systemie bibliotek GTK+, jednak dostępne są
wersje bez interfejsu graficznego.
Arpwatch to prosty program służący do
monitorowania i logowania zmian zawarto-
ści tablicy skojarzeń MAC/IP karty sieciowej.
Odpowiednio skonfigurowany powiadomi nas
emailem (w poprzednich wersjach była możli-
wość zmiany adresu, na który zostanie wysłany
raport, jednak w wersji 2.1a15 takiej możliwo-
ści nie ma) o wszystkich podejrzanych zmia-
nach wprowadzanych do tablicy ARP.
IPGuard jest wyspecjalizowanym narzę-
dziem służącym do zabezpieczania się przed
atakami typu ARP Spoofing. Do poprawnego
działania potrzebuje zdefiniowanej w pliku tek-
stowym statycznej tablicy ARP.
Atak typu DHCP Spoofing
Podsłuchiwanie transmisji metodą DHCP Spo-
ofing ma bardzo prostą mechanikę działania.
W większości sieci Ethernet za automatyczną
konfigurację hostów w sieci odpowiada serwer
DHCP, zwyczajowo zainstalowany na kompute-
rze, który spełnia rolę bramy sieciowej. Trzonem
idei tego typu ataku jest podszycie się pod bra-
mę sieciową, kierując w efekcie cały ruch ofia-
ry przez komputer osoby atakującej. Żeby atak
miał szansę powodzenia, atakujący musi wysłać
swoją odpowiedź na żądanie konfiguracji połą-
czenia szybciej niż prawdziwy serwer DHCP.
Przewagę w tym wyścigu atakujący uzyskuje
poprzez niesprawdzanie czy przydzielany ofie-
rze adres IP jest już w użyciu. Poniżej przedsta-
wię metodę ataku z użyciem programu ettercap.
Do korzystania z programu będziemy po-
trzebowali praw roota. Uruchamiając aplika-
cję musimy zdecydować się na wybór interfej-
su użytkownika. Do wyboru ncurses (opcja -C)
i GTK+ (-G). Artykuł był pisany na podstawie
wersji konsolowej, jednak rozkład poszczegól-
nych opcji w menu jest niemal identyczny w
obu interfejsach. Po uruchomieniu programu
wybieramy pozycję Sniff / Unified sniffing i
wybieramy odpowiedni interfejs.
Następnie odnajdujemy opcję Mitm /
DHCP Spoofing. Teraz należy wpisać informa-
cje, które będą przekazywane przez fikcyjny ser-
wer DHCP: zakres adresów IP, maska podsieci
oraz adres serwera DNS oddzielając je znakami
/, np.: 10.0.0.5-80,82/255.255.255.0/10.0.0.1 (w
przypadku interfejsu GTK odpowiednie warto-
ści wpisujemy w kolejne pola). Podając pierw-
szy parametr trzeba pamiętać o dwóch rzeczach;
po pierwsze pula adresów IP musi należeć do
podsieci, do której podłączony jest komputer, a
po drugie należy unikać podawania adresów IP,
które są aktualnie w użyciu (unikniemy w ten
sposób konfliktu typu flip-flop). Maska podsie-
ci powinna być taka sama jak w przypadku sieci,
do której jesteśmy podłączeni. Aby ofiara pod-
czas ataku zachowała dostęp do internetu, należy
jeszcze podać adres IP sprawnego serwera DNS
(w przeciwnym razie ofiara straci możliwość ko-
munikacji z serwerem nazw, co w konsekwen-
cji prowadzić będzie do odcięcia od większości
usług sieciowych). Po zatwierdzeniu wpisanych
danych wybieramy z menu pozycję Start / Start
sniffing i czekamy do momentu upłynięcia cza-
su dzierżawy adresu przyznanego komputero-
wi ofiary. Jeżeli wszystko przebiegnie po naszej
myśli, u dołu ekranu pokaże się komunikat za-
wierający adres MAC ofiary oraz przyznany jej
adres IP. Teraz wystarczy już tylko wybrać z me-
nu pozycję View / Connections i będziemy mie-
li wgląd we wszystkie aktywne połączenia ofia-
ry. Zaznaczając interesujące nas połączenie i na-
ciskając klawisz [Enter] wywołamy podgląd po-
łączenia. Po lewej stronie ekranu widoczne są
wszystkie dane wychodzące, a po prawej przy-
chodzące. Zaznaczone na liście połączenia TCP
możemy zerwać naciskając klawisz [K].
Wykrywanie takiej formy ataków jest nie-
zwykle proste. W zasadzie nawet nie potrzebuje-
my do tego żadnych dodatkowych narzędzi poza
systemowymi. Powszechnie wiadomo, że bramy
internetowe wykazują nikłą tendencję do zmia-
ny swojego adresu IP, więc jedyne co wystarczy
do wykrycia takiego ataku jest sprawdzenie ak-
tualnego adresu bramy internetowej wydając po-
lecenie
route | grep default
. Jeżeli wyświe-
tlony adres IP różni się od tego należącego do
bramy internetowej naszego dostawcy internetu
Listing 1.
Prosty skrypt wykrywający konflikt adresów MAC
#!/bin/bash;
#w poniższej linii poniżej definiujemy używany przez nas interfejs;
INTERFEJS
=
"eth1"
;
ADRES_BRAMY
=
`
route
|
grep
$
INTERFEJS
|
grep
default
|
awk
-
F
" "
'
{
$
2
}
'`
;
MAC_BRAMY
=
`
arp
-
i
$
INTERFEJS
|
grep
$
ADRES_BRAMY
|
awk
-
F
" "
'
{
$
3
}
'`
;
SPRAWDZ
=
`
arp
-
i
$
INTERFEJS
|
grep
-
v
$
ADRES_BRAMY
|
grep
$
MAC_BRAMY
`
;
PODEJRZANY
=
`
echo
$
SPRAWDZ
|
awk
-
F
" "
'
{
$
3
}
'`
;
if
[
-
n
"$SPRAWDZ"
];
then
;
echo
-
e
"Wykryto zdublowany adres MAC bramy
\n
Czas zdarzenia:
`date`
\n
Podejrzany; MAC: $PODEJRZANY"
|
root
-
s
"Alarm"
;
fi
.
Rysunek 1.
Ettercap z interfejsem pseudograficznym. Wszystkie połączenia podane jak na talerzu
44
marzec 2009
Rozwiązania
Człowiek w środku czyli „trzymaj pakiety przy sobie”
45
www.lpmagazine.org
Rozwiązania
Człowiek w środku czyli „trzymaj pakiety przy sobie”
(a tym najczęściej jest pierwszy dostępny adres
w ramach podsieci) oznacza to, że najprawdopo-
dobniej ktoś przechwytuje nasze pakiety.
Przed tego typu atakami najłatwiej zabez-
pieczyć się rezygnując z usług serwera DHCP
i konfigurując połączenie ręcznie. Na wszelki
wypadek warto wszelkie informacje dotyczą-
ce konfiguracji połączenia uzyskać od swoje-
go dostawcy internetu.
ARP Poisoning
według Ettercapa
Ta metoda ataku ma nieco bardziej złożoną
mechanikę działania. Agresor wysyła do sie-
ci spreparowane odpowiedzi na zapytania ARP
(które faktycznie nie zostały wysłane) zawiera-
jące fałszywe skojarzenia IP<->MAC. Efektem
tej operacji jest zatrucie tablic ARP. W syste-
mie ofiary modyfikowany jest wpis dotyczący
bramy internetowej. W miejsce oryginalnego
adresu fizycznego podstawiany jest MAC ata-
kującego. Podobna operacja jest wykonywa-
na na tablicy ARP bramy sieciowej, w której w
miejscu adresu MAC ofiary trafia adres agre-
sora, dzięki czemu możliwe jest przeprowadze-
nie ataku typu Man in The Middle. Aby mieć
pewność, że fałszywe wpisy w tablicach ARP
nie wrócą do oryginalnego stanu, spreparowa-
ne odpowiedzi ARP wysyłane są cyklicznie w
pewnych odstępach czasu.
Przykładowy atak tą metodą jest jak zwy-
kle bardzo prosty do wykonania przy pomocy
programu ettercap. Startujemy program pole-
ceniem
ettercap
(pamiętając o wybraniu in-
terfejsu). Po jego załadowaniu się wybieramy
pozycję Sniff / Unified sniffing i wpisujemy na-
zwę interfejsu, którego używamy do połącze-
nia. Przed wykonaniem ataku możemy jeszcze
wybrać hosty, które będą naszymi ofiarami, od-
najdując w menu pozycję Targets / Select tar-
gets (możemy tu podawać pojedyncze adresy
IP, bądź całe zakresy, np.: 192.168.0.1-32,35).
Następnym krokiem jest zbudowanie listy ho-
stów przez wybranie pozycji Hosts / Scan for
hosts. Teraz pozostaje już rozpoczęcie samego
ataku; w tym celu wybieramy z menu pozycję
Mitm / ARP Poisoning. Jedną z opcji, które mo-
żemy wybrać, jest atak jednokierunkowy (para-
metr
oneway
) – przydatny w sytuacji, w której
przykładowo nie chcemy manipulować tablicą
ARP bramy internetowej (ta forma ataku wy-
maga podania dwóch celów, których transmisję
między sobą chcemy przechwycić; można to
zrobić korzystając z menu targets. Po zatwier-
dzeniu parametrów ataku należy już tylko wy-
brać z menu pozycję Start / Start sniffing i ko-
rzystając z podglądu połączeń (View / Connec-
tions) będziemy mieli wgląd w cały ruch siecio-
wy generowany przez system ofiary.
Taki rodzaj ataku również nie jest trudny do
wykrycia, chociaż niekoniecznie bez pomocy
dodatkowych narzędzi. Wydając polecenie arp
możemy zobaczyć jak wygląda aktualna tablica
arp karty sieciowej (korzystając z parametru
-i
możemy wybrać interfejs, np.:
arp -i wlan0
).
Jeżeli na liście będą znajdowały się dwie pozy-
cje o identycznym adresie mac, będzie to mogło
oznaczać dwie rzeczy. Jeżeli jednym ze zdublo-
wanych adresów IP będzie ten należący do na-
szej bramy internetowej, będzie to ewidentny sy-
gnał, że ktoś próbuje się pod nią podszyć. Jeśli
zaś żaden z podwójnych adresów nie należy do
bramy bądź nie jest naszym własnym adresem,
ARP (Address Resolution Protocol) – protokół stosowany w sieciach Ethernet, umożliwia-
jący uzyskanie adresu MAC danego hosta w sytuacji, kiedy znamy jego adres IP. W pew-
nym uproszczeniu działanie protokołu ARP wygląda następująco. Host, który chce uzy-
skać adres MAC komputera wysyła na adres rozgłoszeniowy sieci zapytanie kto ma adres
IP 10.0.1.3? (pakiet ARP request). Następnie komputer posiadający dany IP wysyła odpo-
wiedź 10.0.1.3 ma adres 00:00:13:34:fb:b3 (ARP reply).
Protokół ARP
DHCP (Dynamic Host Configuration Protocol) – protokół stosowany do automatycznej konfi-
guracji hostów w sieciach Ethernet. Komputer, który podłącza się do sieci, wysyła najpierw ko-
munikat rozgłoszeniowy w celu zlokalizowania serwerów DHCP jednocześnie prosząc o kon-
figurację połączenia. Następnie serwer przesyła dane takie jak: adres IP hosta i bramy siecio-
wej, maskę podsieci, czy adresy serwerów DNS. Każdy przydział adresu ma pewien czas ży-
cia (tzw.: czas dzierżawy), po którego upływie system wysyła prośbę o jej odnowienie.
Protokół DHCP
Rysunek 2.
Ettercap z interfejsem GTK. Wszystko co udało się dowiedzieć o hoście w sieci
W uchwalonej 24. października 2008r. przez Sejm RP ustawie nowelizującej Kodeks Kar-
ny znalazła się definicja sniffingu jako naruszenia tajemnicy komunikacji (§ 3 art 267 K.k.).
„Kto w celu uzyskania informacji, do której nie jest uprawniony, zakłada lub posługuje się
urządzeniem podsłuchowym, wizualnym albo innym urządzeniem lub oprogramowaniem
podlega grzywnie, karze ograniczenia wolności albo pozbawienia wolności do lat 2.”.
Nota prawna
44
marzec 2009
Rozwiązania
Człowiek w środku czyli „trzymaj pakiety przy sobie”
45
www.lpmagazine.org
Rozwiązania
Człowiek w środku czyli „trzymaj pakiety przy sobie”
raczej nie ma się o co martwić. Może to być spo-
wodowane zmianą adresu MAC któregoś z ho-
stów i nie odświeżenia tablicy ARP. Z pomocą
prostego skryptu dodanego do harmonogramu
zadań możemy wysłać powiadomienie, kiedy
zostanie wykryty konflikt adresów MAC.
Jako że niekoniecznie najprostsze rozwią-
zania są najlepsze, programiści stworzyli wy-
specjalizowane programy służące zabezpie-
czaniu się przed tego rodzaju atakami. Jed-
nym z nich jest program ARPwatch. Aplika-
cja ta – działając w oparciu o bibliotekę libpcap
– służy do monitorowania sieci. Program zapi-
suje w logach systemowych wszystkie zmiany
w tablicy adresów hostów, pozwalając nie tylko
na wykrycie ataków ARP Poisoning, ale rów-
nież na konflikty typu flip-flop. W razie podej-
rzenia potencjalnie szkodliwego działania któ-
regoś z komputerów w sieci, aplikacja wysy-
ła również email na adres administratora lokal-
nej maszyny.
Kolejną metodą zabezpieczania się przed
tego rodzaju atakami jest zdefiniowanie sta-
tycznej tablicy ARP, dzięki czemu system nie
będzie wrażliwy na pakiety ARP replay, które
wykorzystuje się w tej metodzie. Można to zro-
bić podając w kolejnych wierszach pliku /etc/
ethers adresy MAC i oddzielona spacją adresy
IP, a następnie wydając polecenie
arp -f
. Jed-
nak ten sposób, poza wzrostem poziomu bez-
pieczeństwa, ma swoje wady. Jeżeli w naszej
sieci komunikujemy się jedynie z Internetem
poprzez bramę sieciową, będziemy musieli po-
siadać tylko jej adresy MAC i IP. Jeżeli jednak
będziemy nawiązywać bezpośrednią komuni-
kację z dużą liczbą użytkowników sieci, to aby
mieć pewność, że nikt nie podszywa się pod in-
nego hosta, musielibyśmy zdefiniować tablicę
ARP zawierającą adresy wszystkich systemów
podłączonych do sieci.
Lepszą metodą na wykorzystanie pliku sta-
tycznej tablicy ARP jest skorzystanie z progra-
mu ipguard. Zakładając poprawność danych
zawartych w pliku /etc/ethers, uruchamiając
go poleceniem
ipguard -e /etc/ethers -m
00:11:22:33:44:55
nie tylko zabezpieczymy
się przed atakami typu ARP Spoofing. W mo-
mencie wykrycia pary adresów nie należącej
do zdefiniowanej tablicy wyśle do atakującego
spreparowaną odpowiedź ARP, która zmodyfi-
kuje tablicę hostów agresora zmieniając w niej
adres MAC naszego komputera na fałszywy (tu
– 00:11:22:33:44:55), w praktyce pozbawia-
jąc go możliwości komunikacji z naszym sys-
temem. Dodatkowo wszystkie wykonywane
przez program operacje zostaną zapisane w lo-
gach systemowych (konkretnie w pliku
/var/
log/ipguard_<nazwa_interfejsu>.log
). In-
formacje o hostach podłączonych do naszej sie-
ci i ich adresach MAC (przydatne przy budo-
waniu pliku /etc/ethers) można uzyskać agre-
sywnie (wysyłając zapytania ARP dotyczące
każdego adresu podsieci) korzystając z pro-
gramu ettercap wybierając Sniff / Unified Snif-
fing, a następnie Hosts / Scan for hosts. Istnie-
je również metoda pasywna – wydając polece-
nie
ipguard -r -b 100 -f ~/tablica
zbie-
rzemy ostatnie 100 niewystępujących w pliku
/etc/ethers par adresów uzyskanych z odebra-
nych pakietów ARP. Nie mamy jednak żadnej
gwarancji, że w momencie pobierania adresów
hostów nikt nie będzie przeprowadzał któregoś
z ataków typu Man in the Middle – co może
wpłynąć negatywnie na jakość tablicy.
Szczerze zachęcam wszystkich zaintereso-
wanych do zagłębienia się w temat tego typu
zagrożeń. Polecam przeprowadzenie testowe-
go ataku np.: na komputer znajomego (natural-
nie uprzedzając go wcześniej!) z działającym w
tle programem Wireshark, a następnie dokładne
przeanalizowanie mechaniki ataku. Przydatnym
narzędziem jest tak zwany Szwajcarski Scyzoryk
ARP (ARP Swiss Knife – arp-sk), dzięki któremu
możemy wysyłać dowolnie skonfigurowane pa-
kiety ARP pozwalając na jeszcze lepsze zgłębie-
nie zasad funkcjonowania ataków tego typu. Bar-
dzo pomocny jest tutaj również Wireshark – da-
jący możliwość filtrowania pakietów według sto-
sowanego protokołu, czy adresu docelowego.
Jest to 48bitowy fizyczny adres karty sieciowej w sieci Ethernet. W teorii unikalny w skali
światowej, w praktyce większość sterowników umożliwia jego zmianę. Komunikacja w sie-
ciach Ethernet odbywa się właśnie w oparciu o adresy MAC.
Adres MAC
Tryb pracy karty sieciowej, w którym akceptowane są wszystkie pakiety które pojawią się
na łączu danych bez względu na ich docelowy adres MAC. W normalnym trybie pakiety ta-
kie są odrzucane.
tryb Promiscious
W atakach typu Man In The Middle w sieciach Ethernet osoba atakująca jest umiejsco-
wiona pomiędzy systemem ofiary a lokalną bramą w taki sposób, aby agresor był w sta-
nie przechwytywać cały ruch sieciowy ofiary. Wszystkie pakiety wysyłane przez zaatako-
wanego hosta trafiają do atakującego, który następnie przekazuje je na ich oryginalny ad-
res przeznaczenia. W identyczny sposób realizowana jest komunikacja w przeciwną stro-
nę. Jeżeli połączenia ofiary nie były szyfrowane, agresor bez problemu może z nich wycią-
gnąć dane takie jak: przesyłane loginy, hasła, czy emaile.
MITM
Wyobraźmy sobie sytuację, w której komputer A i komputer B mają ten sam adres IP. Host
A chce rozpocząć komunikację z komputerem C, w związku z czym wysyła zapytanie ARP,
aby uzyskać adres jego MAC. Do tablicy ARP hosta C trafia MAC komputera A. B również
nawiązuje transmisję z C, jednak w tablicach ARP dla jednego adresu IP jest miejsce tylko
na jeden adres MAC, więc C zastępuje adres A adresem B tracąc możliwość komunikacji
z pierwszym komputerem. Co gorsza część pakietów, które miały trafić do A, mogą zostać
wysłane na adres drugiego komputera.
Konflikt typu flip-flop
• http://ettercap.sourceforge.net/ – strona domowa programu Ettercap;
• http://www.wireshark.org/ – witryna narzędzia Wireshark;
• http://www-nrg.ee.lbl.gov/ – strona narzędzia arpwatch.
W Sieci