BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH Spis treści 2 Spis treści Wstęp 4 Rozdział I – Problem bezpieczeństwa 1. Zagrożenia w sieci Internet 5 2. Kim jest haker? 9 3. Klasy zabezpieczeń 11 Rozdział II – Podstawy Internetu 1. Protokół TCP/IP 15 Rozdział III – Ataki na systemy komputerowe 1. Rodzaje ataków 22 2. Ataki pasywne 27 2.1. Social engineering 27 2.2. Hasła 29 2.3. Skanowanie 38 2.4. Sniffing 48 3. Ataki aktywne 52 3.1. Spoofing 52 3.2. Hijacking 54 3.3. Konie trojańskie 58 3.4. Ataki typu DOS 61 3.5. Ataki typu Buffer Overflow 78 4. Tylne drzwi 80 Rozdział IV – Rodzaje zabezpieczeń 1. Firewall 87 2. Tripwire 95
109
Embed
Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Spis treści
2
Spis treści
Wstęp 4
Rozdział I – Problem bezpieczeństwa
1. Zagrożenia w sieci Internet 5
2. Kim jest haker? 9
3. Klasy zabezpieczeń 11
Rozdział II – Podstawy Internetu
1. Protokół TCP/IP 15
Rozdział III – Ataki na systemy komputerowe
1. Rodzaje ataków 22
2. Ataki pasywne 27
2.1. Social engineering 27
2.2. Hasła 29
2.3. Skanowanie 38
2.4. Sniffing 48
3. Ataki aktywne 52
3.1. Spoofing 52
3.2. Hijacking 54
3.3. Konie trojańskie 58
3.4. Ataki typu DOS 61
3.5. Ataki typu Buffer Overflow 78
4. Tylne drzwi 80
Rozdział IV – Rodzaje zabezpieczeń
1. Firewall 87
2. Tripwire 95
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Spis treści
3
3. Kerberos 102
Zakończenie 106
Bibliografia 107
Spis tabel i rysunków 110
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Wstęp
4
Wstęp
W ostatnich latach obserwuje się dynamiczny rozwój Internetu. Z powodu
możliwości jakie daje z dnia na dzień przybywa podłączanych komputerów oraz
wzrasta ilość jego użytkowników. Coraz więcej osób korzysta z niego w pracy
zawodowej i coraz więcej firm prowadzi dzięki niemu interesy. Internet powoli
staje się nieodłącznym elementem naszego życia. Zrobienie zakupów nie łączy się
już jednoznacznie z pójściem do sklepu, a przeczytanie gazety z koniecznością jej
kupna. Wzrost znaczenia Internetu pociąga za sobą zwiększoną ilość informacji
jakie są nim przesyłane. Rośnie także ich znaczenie i niezbędna staje się ich
poufność. Nie ruszając się z domu możemy dokonywać transakcji elektronicznych,
bądź korespondować z ważnymi osobami. Dla niektórych osób takie informacje
mogą się okazać niezwykle cenne. Konieczne jest więc zadbanie o ich
bezpieczeństwo, ponieważ kradzież tych danych staje się powoli nową profesją.
Ma to miejsce głównie ze względów finansowych. Można sobie wyobrazić
znaczenie jakie miałoby pozyskanie cennych informacji przez jedną
z konkurujących ze sobą firm.
Celem mojej pracy jest przedstawienie potencjalnych zagrożeń jakie niesie
ze sobą podłączenie do Internetu. Pokazując różnorodność ataków i metody
ograniczające ich skuteczność, starałem się uzmysłowić użytkownikowi
niebezpieczeństwo, na jakie narażone są jego poufne informacje przesyłane w sieci.
Kolejne rozdziały to podstawowe informacje o protokole TCP/IP będącym
podstawą Internetu oraz rodzaje i typy najczęstszych ataków. Na koniec
przytoczyłem kilka ogólnych metod stosowanych w celu zabezpieczenia systemu
przed ingerencją włamywacza. Zakres przedstawionych zagadnień nie wyczerpuje
dogłębnie tematu pracy, ponieważ codziennie pojawiają się nowe techniki, ale
z pewnością stanowi jego większą część.
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Problem bezpieczeństwa
5
Rozdział I
1. Zagrożenia w sieci Internet
Gdy we wczesnych latach sześćdziesiątych powstawała sieć ARPAnet, nikt
nie przypuszczał, że przyjmie ona kształt dzisiejszego Internetu. Na początku była
to wojskowa sieć Departamentu Obrony USA i była przeznaczona do prowadzenia
prac badawczych nad architekturą otwartych systemów komunikacyjnych.
W roku 1973 oddzielono część cywilną NFSnet i wprowadzono protokół TCP/IP.
Sieć miała służyć przede wszystkim środowisku akademickiemu, jednak w 1991r.
została udostępniona światu i od tego momentu Internet zaczyna się dynamicznie
rozwijać. Z czasem zaczęto go wykorzystywać do celów komercyjnych i stało się
jasne, że niezbędne jest położenie większego niż do tej pory nacisku na kwestie
bezpieczeństwa.
Wraz ze wzrostem ilości komputerów podłączonych do Internetu, nasilać się
będzie fala przestępstw elektronicznych. Jak przewiduje Computer Industry
Almanac Inc. pod koniec roku 2000 liczba podłączonych do Internetu komputerów
wyniesie blisko 600 mln, a użytkowników Internetu będzie aż 327 mln, z czego
w Polsce około 2,1 mln osób1. Stale rozbudowywana sieć i zwiększony w niej ruch
powoduje wzrost zagrożenia bezpieczeństwa naszych danych. W momencie gdy
podłączymy się do sieci Internet, dostęp do nas mają setki tysięcy, albo nawet
miliony ludzi na całym świecie.
1 Prognoza przygotowana przez Credit Suisse First Boston, dostępna za strony Magazynu Value
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Problem bezpieczeństwa
6
1,21,6
2,1
3,8
5,7
7,2
8,5
9,9
1998 1999 2000 2001 2002 2003 2004 2005
Rys. 1. Ilość użytkowników Internetu w Polsce (mln)2
Utrata informacji lub naruszenie jej poufności może być spowodowane:
� awarią sprzętu,
� błędem oprogramowania,
� niedozwoloną ingerencją z zewnątrz lub wewnątrz systemu.
Najczęstszymi sprawcami naruszenia bezpieczeństwa systemów komputerowych
jest mniej lub bardziej wyspecjalizowana grupa użytkowników, zajmująca się
włamaniami do systemów komputerowych. Do tego procederu wykorzystują oni
błędy w oprogramowaniu i konfiguracji systemów komputerowych.
2 Źródło: Credit Suisse First Boston
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Problem bezpieczeństwa
7
Zagrożenia bezpieczeństwa w sieci Internet można podzielić na następujące klasy:
� uzyskanie dostępu do danych transmitowanych przez sieć lub
przechowywanych na dołączonych do sieci komputerach przez osoby
niepowołane,
� uzyskanie dostępu do takich zasobów jak moc obliczeniowa, pamięć
komputerów itp.,
� utrata danych na skutek ingerencji zewnętrznej,
� fałszerstwo danych.
Techniki, jakimi można posłużyć się dla osiągnięcia któregoś z tych celów, opierają
się przede wszystkim na wykorzystaniu:
� wad protokołu TCP/IP i protokołów pokrewnych,
� błędów w oprogramowaniu systemowym,
� błędów administratora lub użytkownika systemu.
Protokół TCP/IP nie zawiera wbudowanych mechanizmów szyfrowania
przesyłanych danych. Umożliwia to przechwytywanie danych zwłaszcza
w przypadku mediów transmisyjnych funkcjonujących na zasadzie magistrali
takich jak Ethernet. Najczęstszym jednak sposobem naruszenia bezpieczeństwa
w sieci jest pozyskanie dostępu do cudzego konta na komputerze pracującym
w systemie wielodostępnym przyłączonym do sieci Internet. Można to osiągnąć
między innymi wykorzystując błędy w oprogramowaniu systemowym. Włamanie
na konto administratora jest szczególnie niebezpiecznym przypadkiem, ponieważ
umożliwia dostęp do danych wszystkich użytkowników danego komputera, a także
ułatwia zatarcie w systemie śladów włamania.
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Problem bezpieczeństwa
8
Usuwanie skutków włamania jest jednym z najtrudniejszych zadań administratora,
głównie ze względu na konieczność upewnienia się, czy nie zostały wprowadzone
społecznego, nazwy marki samochodu, nazwy ulicy przy której mieszkamy,
itp.,
� nie używać haseł składających się z samych cyfr lub samych liter, ponieważ
znacznie to skraca hakerowi czas poszukiwania hasła,
� nie używać słów, które mają znaczenie w naszym lub innym języku,
� nie używać haseł krótszych niż 6 znaków,
� używać haseł złożonych z małych i dużych liter,
� korzystać ze znaków spoza alfabetu, np. cyfr, znaków interpunkcji,
� używać haseł, które łatwo zapamiętać tak, aby nigdzie ich nie zapisywać,
� używać haseł, które można łatwo i szybko wpisać bez patrzenia na
klawiaturę; to będzie utrudnienie dla osób, które podglądają przy logowaniu,
� wybrać jeden lub dwa wersy z wiersza lub poematu i użyć pierwszych liter
z każdego wyrazu, np.: „Litwo, ojczyzno moja, Ty jesteś jak zdrowie”, czyli
LomTjjz,
� naprzemiennie stosować jedną samogłoskę i jedna lub dwie spółgłoski,
w wyniku mamy bezsensowne słowa, które ciężko wymówić, a łatwo
zapamiętać,
� wybrać dwa krótkie słowa i połączyć je ze sobą znakiem interpunkcji,
np. wiatr;szelesci, saga+wino, ktos?brzoza.
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
38
2.3. Skanowanie
Jedną z pierwszych czynności, jakie wykonuje haker, jest test penetracyjny
atakowanego komputera w celu zdobycia informacji dotyczących:
� oferowanych usług TCP, UDP, RPC,
� rodzaju i wersji oprogramowania udostępnionych usług jak i samego
systemu operacyjnego,
� struktury sieci komputerowej.
W pierwszej kolejności wykonuje skanowanie zdalnej maszyny pod kątem
otwartych portów, a następnie próbuje uzyskać informacje o rodzaju i wersji
oprogramowania odpowiedzialnego za obsługę tych portów, a także informacje
o architekturze i systemie operacyjnym.
Większość wykorzystywanych przez hakerów dziur w systemach jest zależna
od oprogramowania zarządzającego daną usługą, bądź nawet od wersji całego
systemu. Posiadając już wszelkie informacje, haker może odwiedzając stronę
internetową z listą dostępnych exploitów, ściągnąć z niej odpowiedni program
i przeprowadzić atak. Skanowanie przeprowadza się techniką siłową (ang. brute
force) poprzez wysyłanie wielu pakietów na różne porty i w zależności od
otrzymanej odpowiedzi lub jej braku, poprzez dedukcję otrzymuje się porty, które
są otwarte. Do skanowania portów wykorzystywane są różne techniki,
w zależności od użytych protokołów, z których korzystają atakowanie serwery.
Wszystkie z nich mają swoje wady i zalety.
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
39
TCP connect() scanning
Jest to podstawowa metoda, polegająca na nawiązywaniu połączenia z każdym
interesującym portem. Jeśli połączenie dojdzie do skutku oznacza to, że dany port
jest otwarty, w przeciwnym wypadku port jest niedostępny. Jedną z korzyści tej
metody jest to, że do jej użycia nie potrzeba specjalnych przywilejów. Drugą zaletą
jest szybkość, ponieważ można nawiązywać połączenia z wieloma portami
równocześnie. Wadą jest oczywiście łatwość wykrycia tej metody, ponieważ logi na
docelowym serwerze pokażą dużą ilość ustanawianych połączeń i listę
komunikatów z błędami. Jeśli na serwerze działają antyskanery, to mogą zamknąć
połączenie.
TCP SYN scanning, half-open scanning
W przeciwieństwie do skanowania połączeniowego, w tej metodzie nie ustanawiane
jest pełne połączenie.
SYN
SYN/ACK
RST
SYN
RST
port otwarty
port zamknięty
skanowanyserwer
komputerhakera
Rys. 7. Metoda skanowania półotwartego – TCP SYN scanning.
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
40
Wysyłany jest pakiet SYN, tak jakby chciano utworzyć połączenie i oczekuje się na
odpowiedź. Jeśli w odpowiedzi serwer zwróci pakiet SYN/ACK to port jest otwarty
i wysyłany jest pakiet RST rezygnujący z połączenia. Jeśli otrzymano RST oznacza
to, że port jest zamknięty.
Korzyścią z tej techniki jest to, że tylko niewiele serwerów zapisuje je do logów.
Niestety, aby móc budować własne pakiety SYN należy posiadać przywileje roota.
TCP FIN scanning, stealth scanning
Niektóre firewalle i filtry pakietów potrafią rozpoznać skanowanie typu SYN.
Istnieją dwie odmiany techniki „stealth scanning”. Pierwsza polega na tym,
że po wysłaniu pakietu FIN, przy porcie zamkniętym zwracany jest pakiet RST.
Jeśli port jest otwarty, to pakiet FIN jest ignorowany. Jest to błąd
w implementacji TCP, dlatego też jej skuteczność nie jest stuprocentowa.
FIN
brak reakcji
FIN
RST
port otwarty*
port zamknięty
skanowanyserwer
komputerhakera
Rys. 8. Metoda skanowania typu „stealth” – TCP FIN scanning.* istnieje tylko prawdopodobieństwo, że port jest otwarty
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
41
W drugim przypadku wysyłany jest pakiet ACK i jeśli TTL otrzymanych pakietów
jest niższy, niż reszta otrzymanych pakietów RST lub rozmiar okna jest większy niż
zero, istnieje duże prawdopodobieństwo, że dany port jest otwarty.
Na potrzeby tej techniki nadal wymagane są przywileje roota do budowania
własnych pakietów IP7.
TCP SYN/FIN fragmentation scanning
Nie jest to nowa metoda, tylko modyfikacja poprzednich technik. W związku
z tym, że niektóre firewalle odrzucają pojedyncze pakiety SYN i FIN, można
próbować je rozdrobnić na mniejsze fragmenty IP rozdzielając nagłówek TCP
na kilka mniejszych części, aby były trudniejsze dla filtrów pakietów. Niestety
niektóre programy mogą mieć trudności z tak małymi pakietami, na niektóre sieci
ta technika działa, a w innych powoduje ich zawieszanie.
TCP reverse ident scanning
Metoda ta polega na nawiązaniu pełnego połączenia TCP i próbie ustalenia, poprzez
protokół ident, właściciela procesu na danym porcie. Jeśli właścicielem jest root,
można próbować ataku na ten właśnie port.
7 Uriel Maimon, Port Scanning without the SYN flag, Phrack Magazine nr 49 art. 15, 1997
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
42
UDP ICMP port unreachable scanning
W związku z tym, że protokół UDP nie jest protokołem połączeniowym, nie można
stosować tych samych technik skanowania, jak dla protokołu TCP.
Przeprowadzenie skanowania UDP jest trudniejsze w realizacji, mimo że sam
protokół jest prostszy. Dzieje się tak dlatego, że otwarte porty nie wysyłają
potwierdzenia w odpowiedzi na żądanie, a porty zamknięte nie wysyłają pakietów
z komunikatem o błędzie.
W protokole UDP obsługa błędów transmisji i retransmisja uszkodzonych lub
zagubionych pakietów spada na aplikacje. Na szczęście większość systemów
zwraca komunikat ICMP_PORT_UNREACH, kiedy wysyłane są pakiety do portu
zamkniętego. W ten sposób można się dowiedzieć, które porty są zamknięte
i poprzez eliminację wykazać, które mogą być otwarte. Technika ta jest stosunkowo
wolna, ponieważ w specyfikacji8 dotyczącej protokołu IP, określony jest pewien
limit wysyłanych komunikatów ICMP w danym przedziale czasowym. Dodatkowo,
aby mieć dostęp do komunikatów ICMP, należy posiadać uprawnienia roota.
Ten rodzaj skaningu ma najczęściej zastosowanie przy szukaniu usług RPC na
portach innych niż wskazywane przez portmapper, albo gdy jest on wyłączony.
Czasami dzięki tej technice możliwe jest ominięcie firewalli9.
8 Network Working Group, Request for Comments: 1812, Requirements for IP Version 4 Routers, 19959 Fyodor, The Art Of Port Scanning, Phrack Magazine nr 51 art. 11, 1997
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
43
RPC scanning
RPC jest usługą pozwalającą uruchamiać programy na odległych maszynach.
W wyniku istnienia pewnych słabych punktów usługi RPC, wiele maszyn jest
podatnych na penetrację. Większość administratorów blokuje więc dostęp do
portmappera (port 111), aby uniemożliwić na dostęp do ich słabych usług RPC.
Jednakże jest możliwe skanowanie portów w poszukiwaniu usług RPC, które
w dodatku nie pozostawia śladów w logach większości systemów.
RPC opiera się na standardzie pytanie – odpowiedź. Klient wysyła inicjujące
zapytanie z numerem interesującego go programu, numer procedury, argumentami
i innymi potrzebnymi parametrami. W odpowiedzi otrzyma to, co zwróci procedura
lub gdy wystąpi błąd informacje dotyczące jego przyczyny. Programy RPC
zbudowane są z różnych procedur. Istnieje jedna procedura 0(), która występuje
zawsze. Jest to procedura, która nie posiada argumentów i nie zwraca żadnych
wartości. W ten sposób można określić, czy dany port obsługuje dany program,
wywołując funkcję ping, lecz najpierw trzeba sprawdzić, które porty UDP są
otwarte. Można tego dokonać właśnie metodą UDP connect(). Najpierw szukamy,
które porty UDP są otwarte, następnie próbujemy zapytać funkcją ping o numer
programu, który nas interesuje. Jeżeli dostaniemy odpowiedź pozytywna, to numer
programu, którego szukamy istnieje na tym porcie10.
10 Halflife, Scanning for RPC Services, Phrack Magazine nr 51 art. 7, 1997
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
44
UDP recvfrom() and write() scanning
Metoda ta polega na wykorzystaniu faktu, że niektóre funkcje systemowe zwracają
inne komunikaty przy próbie połączenia z portem otwartym, a inne
z zamkniętym, np. powtórne użycie funkcji write() do portu zamkniętego zwróci
błąd. Również funkcja recvfrom() zazwyczaj zwraca EATGAIN („Try Again”,
errno 13) jeśli błąd ICMP nie został odebrany oraz ECONNREFUSED
(„Connection refused”, errno 111) gdy został odebrany. Technika ta może być
używana przez użytkowników nie posiadających uprawnień roota.
ICMP echo scanning (ping-sweep)
Dzięki tej technice możemy ustalić pod którymi numerami IP znajdują się
komputery. Jeśli otrzymamy odpowiedź na wysłany pakiet z ustawionymi bitami
72-79 nagłówka na wartość 1 i pierwszym polem obszaru danych ustawionym
na 8 (echo request11), to znaczy, że istnieje komputer pod skanowanym adresem IP.
Tak działa program ping.
FTP bounce attack
Interesującą opcją protokołu FTP (RFC 959)12 jest obsługa połączeń proxy.
Technika ta była skuteczna 15 lat temu, kiedy to specyfikacja RFC została napisana.
Ten słaby punkt protokołu może być użyty do wysyłania praktycznie nie do
11 Network Working Group, Request for Comments: 792, Internet Control Message Protocol, 198112 Network Working Group, Request for Comments: 959, File Transfer Protocol (FTP), 1985
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
45
wyśledzenia wiadomości pocztowych i grup dyskusyjnych, zapełniać dyski,
próbować omijać firewalle oraz być uciążliwym i ciężkim do wytropienia. Możemy
wykorzystać to do skanowania portów TCP poprzez serwer FTP proxy. W ten
sposób możemy połączyć się z serwerami za firewallem i skanować porty, które są
prawdopodobnie zamknięte. Jeśli serwer pozwala na czytanie
i zapisywanie do katalogów, możemy wysłać przypadkowe dane do portów, które
znaleźliśmy otwarte. Metoda ta polega na użyciu komendy PORT w celu
zadeklarowania, że DTP (ang. data transfer process) klienta jest gotów do odbioru
na pewnym porcie. Następnie próbujemy poznać strukturę bieżącego katalogu
poprzez komendę LIST. Jeśli nasz docelowy serwer pracuje na danym porcie,
transfer zakończy się pomyślnie (odpowiedź 150 lub 226). W innym przypadku
otrzymamy komunikat 425 Can't buid data connection: Connection refuse. Wtedy
wydajemy kolejną komendę PORT z kolejnym numerem portu. Korzyścią z tej
metody jest to, że jest trudniejsza do wyśledzenia oraz pozwala omijać firewalle.
Wada natomiast jest jej powolność oraz to, że większość serwerów ma już
wyłączona opcję proxy.
IP.id scanning
Jest to względnie ostatnia metodą skanowania, która pozwala na użycie pakietów ze
sfałszowanym adresem źródłowym. Charakterystyczne dla niej jest wykorzystanie
pośredniego komputera. Wówczas, przewidując pole id w nagłówku IP, można
podszyć się pod pośrednika i skanować docelowy host pod kątem oferowanych
usług. Ważne przy tym jest to, że nie zdradzamy swojego prawdziwego adresu,
ponieważ w logach systemowych skanowanej maszyny pojawia się tylko adres
pośrednika. Należy zwrócić uwagę, że podczas skanowania techniką ip.id komputer
pośredniczący nie może wysyłać żadnych pakietów (zerowy ruch w sieci)
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
46
i jednocześnie skanowana maszyna musi być podatna na SYN scanning.
Przykładowo mamy do czynienia z trzema komputerami:
� host A: komputer hakera – hacker.pl
� host B: komputer pośredniczący w skanowaniu – posrednik.pl
� host C: skanowany komputer – ofiara.pl
SYNpodrobiony
RST
SYN/ACK
port zamkni ty
port otwartyRST
PING
skanowanyserwer
komputerhakera
komputerpośrednik
Rys. 9. Metoda działania skanowania typu IP.id scanning.
W pierwszej kolejności poznaje się sposób numerowania kolejnych pakietów,
ponieważ znając zasadę działania tego algorytmu będziemy w stanie przewidzieć
kolejne numery wysyłanych pakietów. Uzyskamy to wywołując program hping:
$ hping posrednik.pl -r
HPING posrednik.pl (eth0 192.168.1.2): no flags are set, 40 data bytes
60 bytes from 192.168.1.2: flags=RA seq=0 ttl=64 id=41660 win=0 time=1.2 ms
60 bytes from 192.168.1.2: flags=RA seq=1 ttl=64 id=+1 win=0 time=75 ms
60 bytes from 192.168.1.2: flags=RA seq=2 ttl=64 id=+1 win=0 time=91 ms
60 bytes from 192.168.1.2: flags=RA seq=3 ttl=64 id=+1 win=0 time=90 ms
60 bytes from 192.168.1.2: flags=RA seq=4 ttl=64 id=+1 win=0 time=91 ms
60 bytes from 192.168.1.2: flags=RA seq=5 ttl=64 id=+1 win=0 time=87 ms
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
47
Można zauważyć, że pole id nagłówka IP jest zawsze zwiększane o jeden, czyli
komputer posiada charakterystykę, jaką jesteśmy w stanie wykorzystać. Kolejnym
krokiem jest wysłanie do komputera C pakietów SYN na interesujący nas port ze
sfałszowanym adresem źródłowym, określającym B:
$ hping ofiara.pl -a posrednik.pl -S
Podglądając pakiety wychodzące z maszyny B można stwierdzić, czy dany port na
C jest otwarty, czy zamknięty. Jeśli host C odpowie potwierdzeniem ACK oznacza
to, że port jest otwarty, tak więc B odpowie RST, bo przecież nie ustanawiał
połączenia. Zauważymy więc, że host B wysyła pakiety:
$ hping ofiara.pl -a posrednik.pl -S
HPING posrednik.pl (eth0 192.168.1.2): no flags are set, 40 data bytes
60 bytes from 192.168.1.2: flags=RA seq=17 ttl=64 id=+1 win=0 time=96 ms
60 bytes from 192.168.1.2: flags=RA seq=18 ttl=64 id=+1 win=0 time=80 ms
60 bytes from 192.168.1.2: flags=RA seq=19 ttl=64 id=+2 win=0 time=83 ms
60 bytes from 192.168.1.2: flags=RA seq=20 ttl=64 id=+3 win=0 time=94 ms
60 bytes from 192.168.1.2: flags=RA seq=21 ttl=64 id=+1 win=0 time=92 ms
60 bytes from 192.168.1.2: flags=RA seq=22 ttl=64 id=+2 win=0 time=82 ms
Jeśli port jest zamknięty, to C wyśle RST, a B na ten pakiet nie odpowie, czyli nie
będzie wysyłał żadnych pakietów:
$ hping ofiara.pl -a posrednik.pl -S
HPING posrednik.pl (eth0 192.168.1.2): no flags are set, 40 data bytes
60 bytes from 192.168.1.2: flags=RA seq=52 ttl=64 id=+1 win=0 time=85 ms
60 bytes from 192.168.1.2: flags=RA seq=53 ttl=64 id=+1 win=0 time=83 ms
60 bytes from 192.168.1.2: flags=RA seq=54 ttl=64 id=+1 win=0 time=93 ms
60 bytes from 192.168.1.2: flags=RA seq=55 ttl=64 id=+1 win=0 time=74 ms
60 bytes from 192.168.1.2: flags=RA seq=56 ttl=64 id=+1 win=0 time=95 ms
60 bytes from 192.168.1.2: flags=RA seq=57 ttl=64 id=+1 win=0 time=81 ms
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
48
2.4. Sniffing
Sniffing jest techniką polegającą na podsłuchiwaniu pakietów
przepływających w sieci. Każdy komputer podłączony do lokalnej sieci
komputerowej ma swój własny unikalny adres sprzętowy. W sieci, w której
występuje rozgłaszanie (ang. broadcasting), dane są rozsyłane do wszystkich
komputerów, ale odbierają je tylko te do których są zaadresowane. Wykorzystując
fakt, że karty sieciowe w trybie mieszanym (ang. promiscous mode) pozwalają na
odczytywanie pakietów przesyłanych do innych komputerów w sieci, haker może
przechwycić poufne informacje przesyłane poprzez sieć. Programy służące w tym
celu nazywa się snifferami. Zainstalowanie sniffera w jakimś newralgicznym
miejscu sieci, np. na routerze, może doprowadzić do pokonania zabezpieczeń
wszystkich innych stacji roboczych z nim połączonych.
Programy tego typu na ogół przechwytują wszystkie pakiety z danymi. Jeśli
haker nie kradnie danych, to z punktu jego widzenia większość pakietów nie ma dla
niego większego znaczenia, dlatego też ogranicza się przechwytywanie do kilkuset
bajtów z każdego pakietu. Zazwyczaj wystarczy to do poznania nawy użytkownika
i jego hasła.
Sniffery można zainstalować praktycznie na każdej maszynie w sieci,
ale najbardziej interesujące dla hakera są miejsca, gdzie dokonuje się procedur
autoryzacji. Na szczególne niebezpieczeństwo narażone są komputery będące
bramkami między sieciami. Ze względu na umiejscowienie sniffera w sieci
wyróżnić można trzy sytuacje:
� sniffer znajduje się na routerze znajdujący się między siecią lokalną
a Internetem (połączenie nie musi być bezpośrednie), bądź też między
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
49
różnymi sieciami lokalnymi lub rozległymi; ten rodzaj sniffingu jest
najbardziej niebezpieczny,
� sniffer znajduje się na komputerze, z którego inicjowane jest połączenie,
� sniffer działa na komputerze, na który następuje próba logowania
użytkownika13.
W ostatnim czasie dość znacznie udoskonalono technologie w zakresie
bezpieczeństwa systemów komputerowych. Większość systemów operacyjnych
stosuje teraz kryptografię już na poziomie pakietu, tak więc jeżeli haker przechwyci
już jakieś pakiety będą one w postaci zaszyfrowanej. Wykorzystanie tych
zakodowanych informacji jest uwarunkowane dogłębną znajomością kryptografii,
bezpieczeństwa systemów oraz sieci komputerowych i posiadanie zaplecza
technicznego.
Sniffery występują w postaci programów darmowych oraz pakietów
komercyjnych. Te pierwsze są łatwo dostępne, bezpłatne, rozprowadzane głównie
w postaci kodu źródłowego. Drugie są produktami, których cena niejednokrotnie
sięga kilku tysięcy dolarów. Działający sniffer tak obciąża system, na którym jest
zainstalowany, że komercyjne produkty niejednokrotnie są rozwiązaniami
sprzętowo-programowymi, oparte na maszynie zbudowanej
z uwzględnieniem funkcji sieciowej, jaką będzie spełniać. Atutem stosowania
komercyjnych rozwiązań jest oferowany przez firmę pełen serwis, pomoc
techniczna, infolinia, itp. oraz to, że analizują dużą ilość protokołów.
Sniffery mogą się przyczynić do naruszenia bezpieczeństwa sąsiednich sieci
komputerowych bądź stopniowego dostępu do nich. Wymogiem uruchomienia
sniffera na danej maszynie jest posiadanie uprawnień roota, ponieważ możliwość
przestawienia karty sieciowej w tryb mieszany dozwolone jest tylko
13 Andrzej Dudek, Nie tylko wirusy, str. 203-204
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
50
administratorom.
Wykrywanie snifferów w sieci jest zadaniem trudnym, bowiem programy
tego typu działają pasywnie i nie zostawiają żadnych śladów w logach
systemowych. Do znalezienia sniffera na lokalnym komputerze można użyć sum
kontrolnych MD5, oczywiście pod warunkiem, że sam pakiet MD5 został
zainstalowany dostatecznie wcześnie, najlepiej zaraz po instalacji systemu,
a sama baza oryginalnych sum kontrolnych jest fizycznie niedostępna dla hakera
(np. na nośniku MO przechowywanym w bezpiecznym miejscu).
Inaczej sprawa wygląda, gdy haker podpiął się bezpośrednio do medium
transmisyjnego. W tym celu należy sprawdzić każdy centymetr kabla sieciowego,
bądź też zastosować narzędzia służące do mapowania topologii sieci. Użycie
urządzeń typu TDR (Time Domain Reflectometr) mierzącego propagację
i fluktuację fal elektromagnetycznych w medium może pozwolić na wykrycie
nielegalnego podłączenia do naszej sieci. Tylko zapobiegliwy administrator
przyczyni się do minimalizacji szkód powstałych w wyniku działania snifferów.
Sniffery przechwytują pakiety wędrujące po medium transmisyjnym, do
którego są podpięte. W związku z tym, podział sieci na mniejsze podsieci zmniejsza
ilość informacji, które mogą być przechwycone. Sniffery nie potrafią przejść takich
urządzeń jak bridge, switche czy routery. Niestety jest to bardzo kosztowne
rozwiązanie. Idealnym wydaje się więc szyfrowanie danych. Nawet jeśli haker
przechwyci pakiety, to zakodowane informacje w nich zawarte będą dla niego
bezużyteczne. Można tu napotkać problem, czy metoda szyfrowanej komunikacji
jest wspierana przez wszystkie strony biorące w niej udział, ponieważ szyfrowanie
sesji między-platformowych jest zjawiskiem dość rzadkim. Jeśli nie mamy do
dyspozycji szyfrowania sesji, należy korzystać z aplikacji, które oferują silne
dwukierunkowe szyfrowanie danych. Przykładem może być Secure Shell (SSH),
który zastępując standardowego telneta, przy negocjacji połączenia stosuje algorytm
RSA, a po autoryzacji transmisja kodowana jest algorytmem IDEA.
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
51
Sniffery pierwotnie używane były przez administratorów w celu identyfikacji
potencjalnych problemów, jednakże z czasem zostały zaadaptowane przez hakerów,
ponieważ świetnie nadają się do przechwytywania cennych danych.
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
52
3. Ataki aktywne
3.1. Spoofing
Terminem tym określa się podszywanie jednego komputera pod inny,
upoważniony do nawiązywania połączenia. Istnieje wiele różnych odmian
podszywania, jednak najpopularniejsze to IP-spoofing i DNS-spoofing.
IP-spoofing
Metoda ta polega na podsłuchiwaniu przez sniffer połączenia pomiędzy klientem
a serwerem i wyłapywaniu wysyłanych numerów sekwencji. Po znalezieniu
algorytmu jakim są one tworzone haker doprowadza do niestabilności połączenia,
np. poprzez atak SYN Flood na stacje klienta, zmienia numer IP na numer klienta
i przewidując numery sekwencji korzysta z istniejącego połączenia jako
autoryzowany użytkownik.
192.168.1.1192.168.1.2192.168.1.1
serwer
komputerklienta
komputerhakera
Rys. 10. Zasada działania IP-spoofingu.
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
53
DNS-spoofing
Jest to atak na serwer DNS, który posiada bazę danych przechowującą numery IP
dla poszczególnym adresów mnemonicznych. Atak DNS-spoofing polega na
ingerencji w tablicę DNS i modyfikacji poszczególnych wpisów tak, aby klient
zamiast do komputera docelowego kierowany był do komputera hakera.
192.168.1.1
192.168.1.2
stef.pl = 192.168.1.1
stef.pl = 192.168.1.2
stef.plstef.pl
serwer DNS
komputerklienta
komputerhakera
komputerdocelowy
Rys. 11. Zasada działania ataku DNS-spoofing. Modyfikacje przeprowadzone
w serwerze DNS (kolor czerwony) kierują klienta do maszyny hakera.
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
54
3.2. Hijacking
Jednym z najbardziej niebezpiecznych ataków na system komputerowy jest
atak polegający na przechwyceniu sesji w protokole TCP (ang. hijacking). Technika
polega na tym, że haker powoduje przerwanie połączenia zestawionego pomiędzy
klientem a serwerem, następnie podszywa się pod klienta i podsyła serwerowi
własne numery sekwencji. Aby mieć możliwość wglądu w przesyłane pakiety,
konieczne jest korzystanie ze sniffera, co w tym przypadku oznacza, że haker musi
mieć uprawnienia roota na komputerze, z którego przeprowadza atak. Hijacking jest
więc połączeniem dwóch metod: sniffingu i IP-spoofingu.
W celu doprowadzenia do przerwania połączenia TCP należy je wcześniej
rozsynchronizować. Haker wykorzystuje właściwość protokołu TCP polegającą na
tym, że jeśli numery sekwencji pakietu nie zgadzają się z wartościami
oczekiwanymi przez komputer, to komputer go odrzuci i będzie czekać na
poprawnie numerowany. Można tego dokonać za pomocą kilku metod:
� wczesne rozsynchronizowanie
� aktywne rozsynchronizowanie
� rozsynchronizowanie pustymi danymi
Przechwycenie sesji umożliwia hakerowi ominięcie weryfikacji hasła, dzięki czemu
umożliwi mu to bezproblemowe wejście do komputera głównego.
Przechwytywanie w protokole TCP jest dużo większym zagrożeniem niż
podszywanie się pod IP, ponieważ przechwytując już odbywające się połączenie ma
zazwyczaj lepszy dostęp do systemu, niż miałby rozpoczynać je od nowa.
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
55
Wczesne rozsynchronizowanie
Atak wczesnego rozsynchronizowania powoduje przerwanie połączenia między
klientem a serwerem we wczesnej fazie konfiguracji. Haker podglądając pakiety
oczekuje na potwierdzenie zsynchronizowanego połączenia SYN/ACK, wysyłane
przez serwer do klienta podczas drugiej fazy transmisji. Po jego wykryciu wysyła
do serwera pakiet wyzerowania RST, a następnie pakiet zsynchronizowanej
odpowiedzi SYN z takimi samymi parametrami, jak w pakiecie SYN/ACK serwera.
Jednak pakiet hakera ma inny numer sekwencji. Po otrzymaniu pakietu RST serwer
zamyka połączenie, a po otrzymaniu pakietu SYN, otwiera nowe połączenie przez
ten sam port, ale z innym numerem sekwencji. Do prawdziwego klienta serwer
wysyła z powrotem pakiet SYN/ACK, które przechwytuje haker i wysyła do
serwera swój własny pakiet ACK. Serwer przełącza się w tryb połączenia
zsynchronizowanego ESTABLISHED.
Aktywne rozsynchronizowanie
Metoda ta polega na przerwaniu już istniejącego połączenia. Charakteryzuje się
tym, że haker wykorzystując wymagania dotyczące numerów sekwencji protokołu
TCP i modyfikując ramki wymusza rozsynchronizowanie połączenia TCP, tak że
komputery te nie mogą wymieniać danych. Po rozsynchronizowaniu, numer
sekwencji pakietu klienta nigdy nie jest równy poprzednio wysłanemu przez serwer
potwierdzeniu oczekiwanego numeru sekwencji i dlatego serwer nie akceptuje
danych i odrzuca pakiet. Następnie haker, używając swojego komputera
przechwytuje oryginalne pakiety i generuje ich zamienniki akceptowane zarówno
przez klienta, jaki i przez serwer. W związku z tym, że wszystkie transmisje
przechodzą przez komputer hakera, może on modyfikować dowolne dane ze
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
56
strumienia. W ten sposób haker może dodać do oryginalnego żądania klienta
własne. Serwer po otrzymaniu pakietu odpowiada zarówno na polecenia wydane
przez hakera, jak i na polecenia wydane przez prawdziwego klienta. Przed
przekazaniem odpowiedzi serwera do klienta haker może usunąć odpowiedzi na
swoje polecenia tak, aby użytkownik nie spostrzegł jego obecności.
żądanie klienta
odpowiedź klienta
żądanie klientażądanie hakera
odpowiedź klientaodpowiedź hakera
serwerkomputerhakera
komputerklienta
Rys. 12. Dodawanie poleceń hakera do żądań klienta oraz ich usuwanie
w odpowiedzi z serwera.
Rozsynchronizowanie pustymi danymi
Atak tego typu polega na równoczesnym wysyłaniu dużej ilości pustych danych do
serwera i do klienta. Puste dane nie maja wpływu na nic po stronie serwera oprócz
zmiany numeru potwierdzenia
Skutkiem ubocznym ataku rozsynchronizowania jest pojawiająca się
w sieci znaczna ilość retransmisji pakietów ACK. Podczas połączenia TCP prawie
wszystkie puste pakiety z ustawioną flagą ACK oznaczają potwierdzenie odebrania,
ale informują jednocześnie o tym, że zostały odrzucone. Klient nie akceptuje tego
potwierdzenia, ponieważ poprzednio nie wysłał pakietu ze zmodyfikowanym
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
57
zamówieniem, więc tworzy własny pakiet potwierdzenia. Tworzy się pętla, która
może zostać zakończony tylko wtedy, gdy któryś pakiet się zagubi. W praktyce
często traci się pakiet z danymi z powodu zatłoczenia sieci.
Ataki przechwycenia sesji można wykrywać różnymi metodami:
� Wykrywanie stanu rozsynchronizowanego – numery sekwencji na obu
końcach są odczytywane za pomocą czytnika pakietów TCP
i w zależności od numerów sekwencji można określić, czy połączenie jest
w stanie rozsynchronizowanym. Pakiety można czytać tylko przy założeniu,
że numery sekwencji nie są w czasie przesyłania zmieniane przez hakera.
� Wykrywanie nawałnicy potwierdzeń – niektóre statystyki dotyczące ruchu
w lokalnym odcinku sieci w połączeniu TCP podają, że przed atakiem
średnia liczba pakietów potwierdzeń bez danych stanowi to około 50%
wszystkich pakietów, w sieci Fast Ethernet to 30%, natomiast podczas ataku
nawet 300%.
� Obliczanie procentu pakietów – stan połączenia można sprawdzać poprzez
obliczanie procentu pakietów i porównywać go ze stanem normalnym.
Aby zapobiec przechwyceniu po rozsynchronizowaniu należy korzystać
z szyfrowania transmisji na poziomie aplikacji lub stosować kryptograficzną
implementację protokołu TCP. Szyfrowanie strumienia w znaczny sposób ogranicza
zdolność hakera do manipulowania danymi w czasie rzeczywistym.
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
58
3.3. Konie trojańskie
Koń trojański jest programem, który robi więcej, niż oczekuje od niego
użytkownik i te jego dodatkowe właściwości z punktu widzenia użytkownika
są niepożądane. To założenie prowadzi nas do trudności w wykrywaniu koni
trojańskich. (...) Problemem jest porównanie tego co robi program, z tym czego
oczekuje od niego użytkownik, a oczekiwania użytkownika wobec programów
przez niego wykorzystywanych są – na poziomie aplikacji – nieweryfikowalne14.
Takie programy są często stosowane przez hakerów, bo pozwalają na
pokonanie zabezpieczeń systemu omijając procedury autoryzacji. Konie trojańskie
(ang. trojan horses), zwane też trojanami, mogą być zaszyte praktycznie w każdym
programie. Są bardzo trudne do wykrycia, ponieważ zazwyczaj rezydują w plikach
binarnych, a pracując w tle nie ujawniają swojej działalności. Większość dobrze
zaprojektowanych programów tego typu zawiera się w narzędziach, które są
częścią samego systemu. Należy więc być ostrożnym w uruchamianiu programów
ściągniętych z Internetu, nawet jeśli są to programy z oficjalnych stron
producentów. Zdarzały się bowiem przypadki, że hakerzy włamywali się na
serwery firm i zmieniali kody źródłowe programów, które następnie były
kompilowane przez nieświadomych zagrożenia programistów z tej firmy
i rozpowszechniane w sieci. W ten sposób haker może małym wysiłkiem otworzyć
sobie „furtki” do wielu systemów. Przykładem takiego działania może być ostatnie
włamanie do sieci komputerowej Microsoftu, gdzie haker podrzucił trojana QAZ
zamaskowanego jako program notatnik (ang. notepad), który komunikował się
z komputerami w Azji i na południowym Pacyfiku, a po zainfekowaniu innych
14 Dr Alan Salomon, All About Viruses
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
59
komputerów hasła były przesyłane na adres w Sankt Petersburgu15.
Hakerzy często modyfikują istniejące programy i tworzą własne wersje
podmieniając oryginalne. Wykrycie konia trojańskiego nie jest trudne pod
warunkiem, że byliśmy zapobiegliwi. W innym wypadku będzie to bardzo trudne
lub wręcz niemożliwe. Zazwyczaj stosuje się metodę porównania zgodności
obiektów (ang. object reconciliation), polegającą na sprawdzeniu, czy obecny stan
jest zgodny z zapamiętanym. Jedną z najpewniejszych metod jest stosowanie
cyfrowego podpisu dla każdego pliku używając różnych algorytmów. Obecnie
najbardziej popularnym i sprawdzonym jest MD5. Jest to jednokierunkowy
algorytm mieszający, tworzący unikalną 128 bitową sygnaturę dla informacji
wejściowej dowolnej długości. Sensowne jest więc zainstalowanie MD5 zaraz
po instalacji systemu, gdy nie udostępniamy go użytkownikom i nie jesteśmy
podłączeni do sieci.
Konie trojańskie mogą spowodować całkowite zniszczenie systemu.
Część programów jest nastawiona wyłącznie na destrukcje. Zazwyczaj po wykryciu
trojana należy się spodziewać pozostawionych jeszcze kilka ukrytych tylnich wejść.
Aby ustrzec się przed skutkami koni trojańskich należy zachować kilka
podstawowych zasad bezpieczeństwa, które w każdej sytuacji pomogą zwiększyć
bezpieczeństwo naszego systemu:
� zawsze należy zapoznać się z programem przed jego pierwszym
uruchomieniem,
� należy dokładnie przeczytać uruchamiane skrypty i starać się je dokładnie
zrozumieć,
15 Wall Street Journal, 2000
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
60
� warto zapoznać się, w miarę możliwości, z kodem źródłowym, aby poznać
mechanizmu użyte w programie i wiedzieć czego się po nim można
spodziewać,
� nie należy uruchamiać nowych programów z konta roota, mają one wtedy
dostęp do wszystkich zasobów systemu i mogą już na wejściu dokonać
dużych szkód, najlepiej nowe programy testować na komputerze odłączonym
od sieci, tak aby nie mogły udostępnić nikomu żadnych zasobów w jakiś
tajny nieudokumentowany sposób,
� ogólnie zaleca się zachowanie dystansu do programów importowanych
z niepewnych i nieznanych źródeł, i to zarówno do programów źródłowych
jak i skompilowanych plików binarnych.
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
61
3.4. Ataki typu DOS
W ostatnich latach dość często mamy do czynienia z atakami typu DOS
(ang. Denial of Service). W ogólnym znaczeniu metoda ta polega na częściowym
lub całkowitym zablokowaniu dostępu do świadczonych usług. Ten rodzaj ataku
jest łatwy w użyciu i niestety bardzo ciężko chronić przed nim system. Ataki mogą
być zdalne lub lokalne, zarówno na systemy komputerowe jak i na sprzętowe
elementy sieci komputerowych.
Ze względu na jego charakter, można wyróżnić trzy efekty jego działania:
� Designed Outage - wstrzymanie usług, wykorzystuje zjawisko odtwarzania
procesów (ang. processes recovery) większości urządzeń, w szczególności
tych, które mają komendy reset, tymczasowo się wyłączające lub
przekazujące kontrolę innemu procesowi. Wstrzymywanie usług jest
wykonywane przez system w celu zachowania jego niezawodności poprzez
zamykanie połączeń TCP dla danego źródłowego i docelowego adresu
i portu (ang. quad) i odrzucaniu dla nich połączeń przez określony czas.
� Resource Destruction - zniszczenie zasobów, to załamanie poszczególnych
obiektów w strumieniu informacji poprzez sprowadzenie ich do stanu
niestabilnego i nie funkcjonującego prawidłowo. Zniszczenie ma miejsce,
gdy jakiś program spowoduje błąd. Systemy operacyjne są nadzwyczajnie
złożone i nie wszystkie matematyczne możliwości są przewidywalne.
Czasami pewne wejścia do systemu powodują jego upadek. Może to nastąpić
poprzez pakiet z nieprawidłowym rozmiarem lub błędnymi opcjami, których
nie może obsłużyć gniazdko (ang. socket). W rezultacie może nastąpić
zawieszenie gniazdka, a czasem nawet systemu.
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
62
� Resource Exhaustion - wyczerpanie zasobów, to ich przeciążenie w taki
sposób, aby opóźniane informacje nie docierały na czas. Komputery są
maszynami cyfrowymi i ich działanie oparte jest na operacjach
matematycznych, z pewną ograniczeniem do operacji na liczbach
skończonych. Każdy proces, który żąda więcej zasobów (pamięci, procesora,
itp.) niż jest to przewidziane może być zablokowany16.
W pewnych przypadkach atak typu DOS może być częścią innego ataku, maj cego
na celu uzyskanie dostępu do systemu:
� atak bazujący na technice SYN Flood może być początkiem innego ataku
z wykorzystaniem metody IP-spoof,
� niektóre systemowe programy mogą posiadać błąd wewnętrzny podczas
uruchamiania, który może być wykorzystany do zdobycia uprawnień
administratora,
� podczas ataku pomocne może się okazać zawieszenie działalności innych
maszyn w sieci lub uniemożliwienie pewnym osobom na dostęp do systemu,
� czasami możliwe jest uszkodzenie systemu podczas boot’owania
w szczególności rarp-boot. Jeśli znany jest port, na którym maszyna
oczekuje zgłoszenia podczas boot’owania możemy wysłać fałszywe pakiety
i prawie całkowicie przejąć kontrolę nad startem systemu,
� niektóre firewalle w momencie zablokowania przepuszczają wszystkie
pakiety, co może być bardzo pomocne w zdobywaniu niechronionych
systemów17.
16 Coretez Giovanni, Topology of Denial-of-Service, Endeavor Systems Inc. 200017 Hans Husman, Introduction to Denial of Service, 1996
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
63
Atak typu DOS może mieć też przyczyny socjologiczno-ekonomiczne:
� może być częścią zemsty na użytkowniku lub na samym administratorze,
� może być wynikiem działania nieuczciwej konkurencji; potencjalne korzyści
finansowe lub gospodarcze mogą być następstwem zniszczenia systemu
komputerowego innych firm; może mieć ogromne znaczenie
w nadużyciach elektronicznych, które najprawdopodobniej będą miały
miejsce w najbliższych latach,
� czysta ludzka złośliwość.
Celem ataku typu DOS mogą być następujące elementy systemu:
� pamięć wirtualna (ang. swap space),
� tablice jądra (ang. kernel tables),
� pamięć RAM,
� pamięć dyskowa,
� pamięć podręczna (ang. cache),
� demon usług inetd.
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
64
Ataki zdalne
Atak tego typu wykorzystuje wewnętrzne właściwości protokołu IP, w związku
z czym może być przeprowadzony na dowolnej platformie sprzętowej.
Implementacje tego protokołu nie różnią się znacznie między sobą, przez co
pojedynczy schemat ataku może być użyty przeciw różnym systemom
operacyjnym. Często wykorzystuje błędy w jądrze, a także w konkretnych
serwerach.
SYN Flood
W atakach tego typu cały problem tkwi w mechanizmie działania procesu
potrójnego potwierdzania połączenia TCP (ang. three way handshake).
W wyniku powiększania się Internetu, większość połączeń jest daleko
dystansowych, więc pakiety w drodze do miejsca przeznaczenia przechodzą przez
wiele maszyn. Rezultat jest taki, że pakiety te mogą być znacznie opóźnione lub
nawet zgubione. Aby zestawić połączenie na łączach, gdzie występują duże
opóźnienia, serwer musi poczekać na potwierdzający pakiet ACK od klienta. Jeśli
go nie otrzyma, ponowi wysłanie własnego pakietu ACK. Zanim serwer odrzuci
żądanie połączenia, sytuacja ta może się powtórzyć kilkukrotnie, z reguły 5-6 razy.
Za ka dym razem, gdy serwer ponawia wysłanie własnego pakietu ACK, czas jego
oczekiwania na odpowiedź zwiększa się dwukrotnie, tak więc jeśli serwer pozwala
na 6 prób i zaczyna od opóźnienia 3 sek., to zanim odrzuci żądanie będzie czekał na
odpowiedź klienta przez:
3 + 6 + 12 + 24 + 48 + 96 = 189 sek.
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
65
czyli ogólnie:
(2n-1) · k
gdzie n to liczba prób, a k – początkowy czas opóźnienia.
Oto przykładowa droga jaką pokonuje pakiet wysłany poprzez połączenie TPSA
z Częstochowy do hosta matinf.pcz.czest.pl oraz czasy poszczególnych opóźnień
(jest to skrócony wynik komendy traceroute – bez adresów IP)18:
1 * * *
2 pa1.czestochowa.ppp.tpnet.pl 840.056 ms 139.709 ms 129.889 ms
3 do-czest-kop.wct2.katowice.tpnet.pl 179.940 ms 129.740 ms 129.949 ms
4 213.25.12.185 139.811 ms 139.658 ms 139.958 ms
5 do-war-cst4.r1.tpnet.pl 149.982 ms 171.137 ms 158.555 ms
6 do-kraacmm.r1.tpnet.pl 189.888 ms 229.506 ms 500.040 ms
7 do-r1.lodzcen.tpnet.pl 250.363 ms 329.760 ms 460.055 ms
8 z-TPNet-l-e3.lodz.pol34.pl 369.733 ms 249.826 ms 259.896 ms
9 212.191.127.154 279.866 ms 420.326 ms 529.401 ms
10 z-katowic-e1.czestochowa.pol34.pl 1390.029 ms 1159.877 ms 1649.802 ms
11 gw-pcz-pol34.pcz.czest.pl 920.338 ms 309.774 ms 449.916 ms
12 212.87.224.57 369.880 ms 1189.826 ms 1179.922 ms
13 matinf.pcz.czest.pl 369.882 ms 329.811 ms 329.873 ms
Jest to typowe miejsce ataku DOS typu SYN Flood, który polega na wysyłaniu
pakietów SYN do serwera z fałszywym adresem zwrotnym (ang. return address),
który nie istnieje albo należy do maszyny obecnie wyłączonej lub odłączonej od
sieci. Serwer odpowie własnym pakietem ACK i będzie oczekiwał na potwierdzenie
od klienta, które nigdy nie nadejdzie. Wobec tego serwer będzie ponawiał wysłanie
własnego pakietu 5-6 razy, za każdym razem dwukrotnie zwiększając czas
oczekiwania. W rezultacie gniazdko przez jakiś czas zostaje zablokowane.
18 Źródło: opracowanie własne
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
66
Pojedyncze takie przypadki nie są zagrożeniem, natomiast gdy haker wysyła tysiące
takich żądań, problemy mogą być widoczne. Efekt działania takiego ataku jest
uzależniony od stopnia jego nasilenia oraz od słabości samego systemu. Ze względu
na ograniczoną ilość gniazdek obsługiwanych przez system, zablokowanie ich
wszystkich uniemożliwia prawidłowe działanie serwera, ponieważ następuje
zapełnienie kolejki połączeń oczekujących, a co się z tym wiąże blokuje ruch
wychodzący i przychodzący,
czyli dla innych użytkowników maszyna jest niedostępna. Dodatkowo duża ilość
otwartych gniazdek powoduje użycie znacznej ilości pamięci, co uszczupla zasoby
dla uruchomionych programów, a w najgorszym razie, zwłaszcza przy słabszych
systemach, może doprowadzić do ich załamania. Od kiedy zablokowane porty są
z powrotem po paru minutach dostępne, w celu przedłużenia blokady należy atak
podtrzymywać, dopóki serwer się nie zatrzyma, co w tym przypadku i tak trwa do
zresetowania go przez administratora.
Początkowo ten rodzaj ataku uznawany był za niemożliwy do wyśledzenia
z powodu fałszywego adresu zwrotnego, po którym rozpoznawano nadawcę. Haker
mógł dodatkowo utrudniać serwerowi wykrywanie i ignorowanie fałszywych
adresów poprzez ciągłą ich zmianę. Atak typu SYN Flood nie dokonuje zniszczeń
w serwerze ani w danych na nim zawartych. Nie ma też całkowitej ochrony przed
takimi atakami dopóki serwery są przyłączone do Internetu. Dla większości
systemów dostępne są już porady i aktualizacje oprogramowania, które
zmniejszenia ryzyko ataku.
W celu poprawy ochrony systemów należy stosować się do pewnych zaleceń:
� należy zmniejszyć liczbę wysyłanych przez serwer powtórzeń pakietu ACK,
tak aby serwer szybciej zwalniał gniazdka, ale należy przy tym uważać na to,
aby klient w ogóle miał szansę na połączenie
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
67
� należy zwiększyć ilość możliwych połączeń; obsługa każdego gniazdka
zużywa kilkaset bajtów pamięci, tak więc jest możliwa obsługa większej ich
ilości. Oznacza to, że haker nie będzie w stanie tak szybko wysyłać pakietów
SYN, aby w tym samym czasie blokować wszystkie gniazdka
� istnieją propozycje, aby każdy dostawca Internetu (ang. Internet Service
Provider, w skrócie ISP) uniemożliwiał swoim użytkownikom wykonywanie
zdalnych ataków. Jest to możliwe jeśli router będzie zapobiegał wysyłaniu
pakietów, jeśli adres zwrotny nadawcy pakietu nie będzie zgodny z adresem
przydzielonym przez providera temu danemu użytkownikowi19.
Ping of Death
Niektóre systemy nie potrafią sobie poradzić z pakietami, których rozmiar jest
większy niż 65536 bajtów (64kB), w przeciwieństwie do standardowych
64 bajtów. Jest to błąd, który nie występuje tylko w systemach UNIX, ale jest
charakterystyczny dla MacOS, Netware, drukarek sieciowych, routerów, itp.
Poprawki wychodzą dość szybko, szczególnie dla systemu Linux, gdzie łaty
dostępne są już nawet po paru godzinach. Zgodnie ze specyfikacją RFC 791
długość pakietu IP może wynosić maksymalnie 65535 (216-1) oktetów łącznie
z nagłówkiem (standardowo 20 oktetów jeśli nie są zdefiniowane opcje IP). Samo
żądanie ICMP ECHO jest zawarte w pakiecie IP składa się z 8 oktetów informacji
nagłówka ICMP (RFC 792) i znajduje się zaraz po kilku oktetach danych w żądaniu
„ping”.
19 Tom Kermode, Denial of Service Attacks on any Internet Server Through SYN Flooding
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
68
W związku z tym maksymalna dostępna wielkość pola danych to:
65535 - 20 - 8 = 65507 oktetów
Pomimo tego, że datagram IP o rozmiarze większym niż 65507 oktetów nie jest
zgodny ze specyfikacją RFC, jest jednak możliwy do stworzenia przy
wykorzystaniu fragmentacji pakietów. Fragmentacja polega na dzieleniu pakietu na
mniejsze części i wysłanie go do odbiorcy, gdzie zostaje z powrotem poskładany
w całość. Wykorzystując to, że maszyny nie przetwarzają pakietu, dopóki wszystkie
jego fragmenty nie zostaną odebrane, istnieje możliwość na przepełnienie
(ang. buffer overflow) wewnętrznych 16-bitowych zmiennych, co może prowadzić
do zresetowania lub zawieszenia maszyny, czy też do błędów w jądrze systemu
(ang. kernel dumps).
Technika ta nie dotyczy wyłącznie żądania „ping”, ale może być
wykorzystana przez wszystko, co wysyła datagramy IP, tak więc nie tylko ICMP
echo, ale także protokół TCP, UDP i nawet IPX może być użyty do ataku na
podatną maszynę. Jest to poważny problem głównie dlatego, że może być
przeprowadzany z zewnątrz i schemat jego działania jest niezależny od platformy
sprzętowej20.
Smurf
Atak „Smurf” odziedziczył swoją nazwę od exploita i jest stosunkowo nowy
w kategorii sieciowych ataków na hosty. Zasada jego działania polega na wysłaniu
przez napastnika dużej ilości pakietów ICMP echo (ping) na adresy broadcastowe
20 Mike Bremford, It’s the Ping o’Death Page!, 1996
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
69
(ang. broadcast addresses) z podmienionymi adresami źródłowymi na adresy ofiary.
Jeśli router dostarczy pakiet na adres rozgłoszenia IP spowoduje to, że każda
maszyna przyjmie żądanie ICMP echo i na nie odpowie. Aby zobrazować
niebezpieczeństwo ataku należy posłużyć się przykładem.
Zakładając, że napastnik posiada łącze T1, a jego celem jest sieć przełączalna
(ang. switched network) posiadająca 100 komputerów, atakujący wysyła strumień
768kb/s pakietów ping na adres broadcastowy tej sieci. Pakiety ping zostaną
wysłane do każdego z tych 100 komputerów z podmienionym adresem źródłowym
i w rezultacie zostanie stworzone dodatkowe 100 pakietów odpowiedzi, które
zostaną przesłane na adres ofiary strumieniem 76,8Mb/s, co najprawdopodobniej
spowoduje blokadę usług21.
TearDrop
Atak ten wykorzystuje błąd w module fragmentacji IP, gdzie funkcja ip_glue()
nie dokonuje sprawdzania rozmiarów pakietów, choć sprawdza czy nie są za duże.
Funkcja składania fragmentów pakietu w jedną całość działa w pętli kopiując
oczekujące dane z kolejki i umieszcza je w nowo alokowanym buforze.
Gdy pakiety te są zbyt małe, funkcja memcopy() przenosi ciągi bajtów w inne
miejsca niż powinna, co z kolei powoduje zawieszenie, bądź restart systemu.
21 Craig A. Huegen, The lastest in Denial of Service attacks: „Smurfing”, 1997
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
70
Land
Atak tego typu swoją nazwę przejął od narzędzia, które wykorzystuje podatność
niektórych implementacji TCP/IP na pakiety SYN, w których adres źródłowy
i docelowy są identyczne. Przy obecnej technologii protokołu IP nie jest możliwe
wyeliminowanie sfałszowanych pakietów, można jednak zmniejszyć
prawdopodobieństwo użycia ich w sieci poprzez filtrowanie pakietów
wychodzących, które mają adres źródłowy inny niż te z sieci lokalnej22.
Email bombing
Typowa bomba poczty elektronicznej (ang. E-mail Bomb) jest serią wiadomości
wysłanych do skrzynki odbiorczej ofiary. Celem takiego ataku jest zapełnienie
konta mało istotnymi wiadomościami. Użytkownik korzystający
z komutowanego dostępu do Internetu jest wiec narażony na poniesienie znacznie
większych kosztów, jak i na stratę czasu. Praktyka taka jest stosowana przez wiele
osób korzystających z grup dyskusyjnych. Używają tego jako lekarstwo na
„spamerów” zasypujących grupę wiadomościami nie na temat lub z różnorodnymi
reklamami. Obecnie zauważa się tendencję do wysyłania plików instalacyjnych
Windows NT lub Windows 98.
W rzadkich przypadkach bomby pocztowe mogą spowodować blokadę
świadczonych przez serwer usług. Stosowane przeciwko słabszym systemom, mogą
skutecznie zablokować łącza i zapełnić wolne miejsce na dysku twardym, co jest
równoczesne z unieruchomieniem serwera.
22 CERT Advisory CA-97.28, IP Denial-of-Service Attacks, 1997
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
71
Jedną z metod obrony jest filtrowanie poczty elektronicznej. Określając zasady, na
których jedne wiadomości są pozostawiane w naszej skrzynce odbiorczej, inne zaś
kasowane lub przenoszone do innych folderów, mamy pewną kontrolę nad
przychodzącą pocztą. Inną metodą, gdy jesteśmy nagminnie nękani, jest kontakt
z administratorem serwera, z którego korzysta nadawca. W większości przypadków
takie działanie odnosi skutek. Możliwe jest też zablokowanie napływu poczty spod
danego adresu już na poziomie routera.
Bardziej samodzielni użytkownicy kierują się zasadą „oko za oko” i za każdy
nadesłany list wysyłają nadawcy 10 podobnych. Sytuacja jest dosyć
kontrowersyjna, ponieważ nadawca może korzystać z programów umożliwiających
wysyłanie anonimowych wiadomości lub korzysta z cudzych kont. Możemy się
więc spotkać z tym, że to my zasypiemy niewinną osobę stosem śmieci i to my
dostaniemy upomnienie od administratora lub w ogóle stracimy konto. Sytuacja
taka oczywiście może nie mieć miejsca, jeśli zabezpieczymy się tak, jak nasz
napastnik. W każdym razie takie zachowanie z naszej strony jest nieetyczne
i niepotrzebnie zwiększa ruch w sieci.
Email spamming
Jest to odmiana Email bombing’u ponieważ dotyczy większej ilości użytkowników,
a polega na wysyłaniu wiadomości do wszystkich użytkowników danego serwera.
Jest to metoda stosowana najczęściej do reklam, rzadziej do wyrządzania
jakichkolwiek szkód.
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
72
Listy dyskusyjne
Ostatnio modna jest inna, bardziej subtelna forma zapełniania konta pocztowego.
Napastnik podszywając się pod innego użytkownika, zapisuje go na wiele list
dyskusyjnych jednocześnie. Lista dyskusyjna działa w ten sposób, że jej członkowie
piszą na jeden wspólny adres, a kopie tych wiadomości rozsyłane są do wszystkich.
Rezultaty takiego działania mogą być katastrofalne. Zakładając, że ofiara została
zapisana na 200 list dyskusyjnych, z których każda ma po 50 członków
wysyłających średnio 2 listy dziennie, to okaże się, że na naszym koncie każdego
dnia pojawi się około 20000 wiadomości. Jeśli wiadomości te zawierają tylko sam
tekst o średniej wielkości 5KB, to otrzymujemy prawie 80MB wiadomości
dziennie. Niektórzy użytkownicy wysyłają listy w formacie HTML, czyli
o kilkukrotnie większej objętości, a niejednokrotnie nawet pliki binarne! To chyba
pozwala uzmysłowić sobie skalę zagrożenia. Można jeszcze dodać, że część
użytkowników posiada skrypt automatycznie odpowiadający na otrzymaną
wiadomość listem grzecznościowym z podziękowaniami i zapewniający
o otrzymaniu odpowiedzi. Takie zachowanie w tym konkretnym przypadku
doprowadzi do tego, że ofiara będzie dodatkowo dostawać kopie własnych listów.
Napastnik celowo wybiera okres dłuższej nieobecności użytkownika, kiedy to
tysiące wiadomości w sposób niekontrolowany gromadzi się w skrzynce pocztowej.
Zazwyczaj prowadzi to do blokady usług, szczególnie gdy ofiara ma limitowaną
przestrzeń dyskową (ang. quota). Zastosowanie filtrów nie przyniesie rezultatów,
ponieważ wiadomości przychodzą z adresami nadawców. Istnieje oczywiście
możliwość zastosowania zaawansowanych filtrów przeszukujących nagłówki
wiadomości i wyodrębnienie z nich adresów serwerów. Anulowanie subskrypcji
danej listy nie jest proste, zwłaszcza że każda z nich może używać do tego innych
procedur. Znalezienie takich informacji jest bardzo pracochłonne, gdyż
w otrzymywanych wiadomościach zazwyczaj nie ma tych instrukcji i pozostaje
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH
Ataki na systemy komputerowe
73
tylko poszukiwanie ich w Internecie. Niektóre listy nie umo liwiają
natychmiastowego usunięcia użytkownika, ponieważ zakładają z góry
kilkumiesięczną subskrypcję. Najprostszym wyjściem z tej sytuacji jest usunięcie
aktualnego konta i zmiana adresu pocztowego.
Finger redirect
Finger jest usługą umożliwiającą uzyskanie informacji o użytkownikach na danym
serwerze. Większość wersji demona fingerd umożliwia przekierowanie do innego