Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security...

109
BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH Spis treści 2 Spis treści Wstęp 4 Rozdział I – Problem bezpieczeństwa 1. Zagrożenia w sieci Internet 5 2. Kim jest haker? 9 3. Klasy zabezpieczeń 11 Rozdział II – Podstawy Internetu 1. Protokół TCP/IP 15 Rozdział III – Ataki na systemy komputerowe 1. Rodzaje ataków 22 2. Ataki pasywne 27 2.1. Social engineering 27 2.2. Hasła 29 2.3. Skanowanie 38 2.4. Sniffing 48 3. Ataki aktywne 52 3.1. Spoofing 52 3.2. Hijacking 54 3.3. Konie trojańskie 58 3.4. Ataki typu DOS 61 3.5. Ataki typu Buffer Overflow 78 4. Tylne drzwi 80 Rozdział IV – Rodzaje zabezpieczeń 1. Firewall 87 2. Tripwire 95

Transcript of Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security...

Page 1: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Spis treści

2

Spis treści

Wstęp 4

Rozdział I – Problem bezpieczeństwa

1. Zagrożenia w sieci Internet 5

2. Kim jest haker? 9

3. Klasy zabezpieczeń 11

Rozdział II – Podstawy Internetu

1. Protokół TCP/IP 15

Rozdział III – Ataki na systemy komputerowe

1. Rodzaje ataków 22

2. Ataki pasywne 27

2.1. Social engineering 27

2.2. Hasła 29

2.3. Skanowanie 38

2.4. Sniffing 48

3. Ataki aktywne 52

3.1. Spoofing 52

3.2. Hijacking 54

3.3. Konie trojańskie 58

3.4. Ataki typu DOS 61

3.5. Ataki typu Buffer Overflow 78

4. Tylne drzwi 80

Rozdział IV – Rodzaje zabezpieczeń

1. Firewall 87

2. Tripwire 95

Page 2: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Spis treści

3

3. Kerberos 102

Zakończenie 106

Bibliografia 107

Spis tabel i rysunków 110

Page 3: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Wstęp

4

Wstęp

W ostatnich latach obserwuje się dynamiczny rozwój Internetu. Z powodu

możliwości jakie daje z dnia na dzień przybywa podłączanych komputerów oraz

wzrasta ilość jego użytkowników. Coraz więcej osób korzysta z niego w pracy

zawodowej i coraz więcej firm prowadzi dzięki niemu interesy. Internet powoli

staje się nieodłącznym elementem naszego życia. Zrobienie zakupów nie łączy się

już jednoznacznie z pójściem do sklepu, a przeczytanie gazety z koniecznością jej

kupna. Wzrost znaczenia Internetu pociąga za sobą zwiększoną ilość informacji

jakie są nim przesyłane. Rośnie także ich znaczenie i niezbędna staje się ich

poufność. Nie ruszając się z domu możemy dokonywać transakcji elektronicznych,

bądź korespondować z ważnymi osobami. Dla niektórych osób takie informacje

mogą się okazać niezwykle cenne. Konieczne jest więc zadbanie o ich

bezpieczeństwo, ponieważ kradzież tych danych staje się powoli nową profesją.

Ma to miejsce głównie ze względów finansowych. Można sobie wyobrazić

znaczenie jakie miałoby pozyskanie cennych informacji przez jedną

z konkurujących ze sobą firm.

Celem mojej pracy jest przedstawienie potencjalnych zagrożeń jakie niesie

ze sobą podłączenie do Internetu. Pokazując różnorodność ataków i metody

ograniczające ich skuteczność, starałem się uzmysłowić użytkownikowi

niebezpieczeństwo, na jakie narażone są jego poufne informacje przesyłane w sieci.

Kolejne rozdziały to podstawowe informacje o protokole TCP/IP będącym

podstawą Internetu oraz rodzaje i typy najczęstszych ataków. Na koniec

przytoczyłem kilka ogólnych metod stosowanych w celu zabezpieczenia systemu

przed ingerencją włamywacza. Zakres przedstawionych zagadnień nie wyczerpuje

dogłębnie tematu pracy, ponieważ codziennie pojawiają się nowe techniki, ale

z pewnością stanowi jego większą część.

Page 4: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Problem bezpieczeństwa

5

Rozdział I

1. Zagrożenia w sieci Internet

Gdy we wczesnych latach sześćdziesiątych powstawała sieć ARPAnet, nikt

nie przypuszczał, że przyjmie ona kształt dzisiejszego Internetu. Na początku była

to wojskowa sieć Departamentu Obrony USA i była przeznaczona do prowadzenia

prac badawczych nad architekturą otwartych systemów komunikacyjnych.

W roku 1973 oddzielono część cywilną NFSnet i wprowadzono protokół TCP/IP.

Sieć miała służyć przede wszystkim środowisku akademickiemu, jednak w 1991r.

została udostępniona światu i od tego momentu Internet zaczyna się dynamicznie

rozwijać. Z czasem zaczęto go wykorzystywać do celów komercyjnych i stało się

jasne, że niezbędne jest położenie większego niż do tej pory nacisku na kwestie

bezpieczeństwa.

Wraz ze wzrostem ilości komputerów podłączonych do Internetu, nasilać się

będzie fala przestępstw elektronicznych. Jak przewiduje Computer Industry

Almanac Inc. pod koniec roku 2000 liczba podłączonych do Internetu komputerów

wyniesie blisko 600 mln, a użytkowników Internetu będzie aż 327 mln, z czego

w Polsce około 2,1 mln osób1. Stale rozbudowywana sieć i zwiększony w niej ruch

powoduje wzrost zagrożenia bezpieczeństwa naszych danych. W momencie gdy

podłączymy się do sieci Internet, dostęp do nas mają setki tysięcy, albo nawet

miliony ludzi na całym świecie.

1 Prognoza przygotowana przez Credit Suisse First Boston, dostępna za strony Magazynu Value

Page 5: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Problem bezpieczeństwa

6

1,21,6

2,1

3,8

5,7

7,2

8,5

9,9

1998 1999 2000 2001 2002 2003 2004 2005

Rys. 1. Ilość użytkowników Internetu w Polsce (mln)2

Utrata informacji lub naruszenie jej poufności może być spowodowane:

� awarią sprzętu,

� błędem oprogramowania,

� niedozwoloną ingerencją z zewnątrz lub wewnątrz systemu.

Najczęstszymi sprawcami naruszenia bezpieczeństwa systemów komputerowych

jest mniej lub bardziej wyspecjalizowana grupa użytkowników, zajmująca się

włamaniami do systemów komputerowych. Do tego procederu wykorzystują oni

błędy w oprogramowaniu i konfiguracji systemów komputerowych.

2 Źródło: Credit Suisse First Boston

Page 6: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Problem bezpieczeństwa

7

Zagrożenia bezpieczeństwa w sieci Internet można podzielić na następujące klasy:

� uzyskanie dostępu do danych transmitowanych przez sieć lub

przechowywanych na dołączonych do sieci komputerach przez osoby

niepowołane,

� uzyskanie dostępu do takich zasobów jak moc obliczeniowa, pamięć

komputerów itp.,

� utrata danych na skutek ingerencji zewnętrznej,

� fałszerstwo danych.

Techniki, jakimi można posłużyć się dla osiągnięcia któregoś z tych celów, opierają

się przede wszystkim na wykorzystaniu:

� wad protokołu TCP/IP i protokołów pokrewnych,

� błędów w oprogramowaniu systemowym,

� błędów administratora lub użytkownika systemu.

Protokół TCP/IP nie zawiera wbudowanych mechanizmów szyfrowania

przesyłanych danych. Umożliwia to przechwytywanie danych zwłaszcza

w przypadku mediów transmisyjnych funkcjonujących na zasadzie magistrali

takich jak Ethernet. Najczęstszym jednak sposobem naruszenia bezpieczeństwa

w sieci jest pozyskanie dostępu do cudzego konta na komputerze pracującym

w systemie wielodostępnym przyłączonym do sieci Internet. Można to osiągnąć

między innymi wykorzystując błędy w oprogramowaniu systemowym. Włamanie

na konto administratora jest szczególnie niebezpiecznym przypadkiem, ponieważ

umożliwia dostęp do danych wszystkich użytkowników danego komputera, a także

ułatwia zatarcie w systemie śladów włamania.

Page 7: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Problem bezpieczeństwa

8

Usuwanie skutków włamania jest jednym z najtrudniejszych zadań administratora,

głównie ze względu na konieczność upewnienia się, czy nie zostały wprowadzone

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ń.

Page 8: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Problem bezpieczeństwa

9

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óźniej 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.

Page 9: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Problem bezpieczeństwa

10

� 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 wyraźnie 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

Page 10: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Problem bezpieczeństwa

11

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ć

Page 11: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Problem bezpieczeństwa

12

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

Page 12: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Problem bezpieczeństwa

13

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.

Page 13: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Problem bezpieczeństwa

14

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

Page 14: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Podstawy Internetu

15

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.

Page 15: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Podstawy Internetu

16

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

Page 16: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Podstawy Internetu

17

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.

FIN

16-bitowy rozmiar okna

32-bitowy numer potwierdzenia

16-bitowy port źródłowy

16-bitowa suma kontrolna TCP

Opcje (jeśli występują)

Opcjonalne miejsce na dane

Dopełnienie (w razie potrzeby)

16-bitowy wskaźnik Urgent

16-bitowy port źródłowy

32-bitowy numer sekwencji

SYN

RST

PSH

ACK

URG

Zarezerwowane 6-bitów

Długośćnagłówka

4 bity

32 bity

1616 310

Rys. 2. Budowa komunikatu TCP.

Page 17: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Podstawy Internetu

18

W tabeli przedstawiono przeznaczenie poszczególnych pól komunikatu TCP

Tabela 2. Przeznaczenie pól danych w nagłówku TCP

port źró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

„wskaźnik 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.

Page 18: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Podstawy Internetu

19

suma kontrolna TCP umożliwia wykrycie błędu transmisji przez moduł TCP

strony odbierającej dane.

wskaźnik 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

Page 19: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Podstawy Internetu

20

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 odpowiedź, 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ęźle 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

Page 20: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Podstawy Internetu

21

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

Page 21: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

22

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

serwerkomputer

użytkownika

Rys. 3. Schemat ataku przerwania.

Page 22: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

23

� 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

serwerkomputer

użytkownika

komputerhakera

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.

Page 23: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

24

modyfikacja

serwerkomputer

użytkownika

komputerhakera

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

serwerkomputer

użytkownika

komputerhakera

Rys. 6. Schemat ataku podrobienia.

Page 24: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

25

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óźnieniu 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

Page 25: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

26

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.

Page 26: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

27

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 wyobraźnią hakera.

Page 27: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

28

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.

Page 28: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

29

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ść,

Page 29: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

30

ż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

Page 30: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

31

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ę

Page 31: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

32

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ć

Page 32: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

33

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

Page 33: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

34

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

Page 34: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

35

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 źró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 źró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.

Page 35: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

36

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 metodalogin

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 Źródło: opracowanie własne

Page 36: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

37

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.

Page 37: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

38

2.3. Skanowanie

Jedną z pierwszych czynności, jakie wykonuje haker, jest test penetracyjny

atakowanego komputera w celu zdobycia informacji dotyczących:

� oferowanych usług TCP, UDP, RPC,

� rodzaju i wersji oprogramowania udostępnionych usług jak i samego

systemu operacyjnego,

� struktury sieci komputerowej.

W pierwszej kolejności wykonuje skanowanie zdalnej maszyny pod kątem

otwartych portów, a następnie próbuje uzyskać informacje o rodzaju i wersji

oprogramowania odpowiedzialnego za obsługę tych portów, a także informacje

o architekturze i systemie operacyjnym.

Większość wykorzystywanych przez hakerów dziur w systemach jest zależna

od oprogramowania zarządzającego daną usługą, bądź nawet od wersji całego

systemu. Posiadając już wszelkie informacje, haker może odwiedzając stronę

internetową z listą dostępnych exploitów, ściągnąć z niej odpowiedni program

i przeprowadzić atak. Skanowanie przeprowadza się techniką siłową (ang. brute

force) poprzez wysyłanie wielu pakietów na różne porty i w zależności od

otrzymanej odpowiedzi lub jej braku, poprzez dedukcję otrzymuje się porty, które

są otwarte. Do skanowania portów wykorzystywane są różne techniki,

w zależności od użytych protokołów, z których korzystają atakowanie serwery.

Wszystkie z nich mają swoje wady i zalety.

Page 38: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

39

TCP connect() scanning

Jest to podstawowa metoda, polegająca na nawiązywaniu połączenia z każdym

interesującym portem. Jeśli połączenie dojdzie do skutku oznacza to, że dany port

jest otwarty, w przeciwnym wypadku port jest niedostępny. Jedną z korzyści tej

metody jest to, że do jej użycia nie potrzeba specjalnych przywilejów. Drugą zaletą

jest szybkość, ponieważ można nawiązywać połączenia z wieloma portami

równocześnie. Wadą jest oczywiście łatwość wykrycia tej metody, ponieważ logi na

docelowym serwerze pokażą dużą ilość ustanawianych połączeń i listę

komunikatów z błędami. Jeśli na serwerze działają antyskanery, to mogą zamknąć

połączenie.

TCP SYN scanning, half-open scanning

W przeciwieństwie do skanowania połączeniowego, w tej metodzie nie ustanawiane

jest pełne połączenie.

SYN

SYN/ACK

RST

SYN

RST

port otwarty

port zamknięty

skanowanyserwer

komputerhakera

Rys. 7. Metoda skanowania półotwartego – TCP SYN scanning.

Page 39: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

40

Wysyłany jest pakiet SYN, tak jakby chciano utworzyć połączenie i oczekuje się na

odpowiedź. Jeśli w odpowiedzi serwer zwróci pakiet SYN/ACK to port jest otwarty

i wysyłany jest pakiet RST rezygnujący z połączenia. Jeśli otrzymano RST oznacza

to, że port jest zamknięty.

Korzyścią z tej techniki jest to, że tylko niewiele serwerów zapisuje je do logów.

Niestety, aby móc budować własne pakiety SYN należy posiadać przywileje roota.

TCP FIN scanning, stealth scanning

Niektóre firewalle i filtry pakietów potrafią rozpoznać skanowanie typu SYN.

Istnieją dwie odmiany techniki „stealth scanning”. Pierwsza polega na tym,

że po wysłaniu pakietu FIN, przy porcie zamkniętym zwracany jest pakiet RST.

Jeśli port jest otwarty, to pakiet FIN jest ignorowany. Jest to błąd

w implementacji TCP, dlatego też jej skuteczność nie jest stuprocentowa.

FIN

brak reakcji

FIN

RST

port otwarty*

port zamknięty

skanowanyserwer

komputerhakera

Rys. 8. Metoda skanowania typu „stealth” – TCP FIN scanning.* istnieje tylko prawdopodobieństwo, że port jest otwarty

Page 40: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

41

W drugim przypadku wysyłany jest pakiet ACK i jeśli TTL otrzymanych pakietów

jest niższy, niż reszta otrzymanych pakietów RST lub rozmiar okna jest większy niż

zero, istnieje duże prawdopodobieństwo, że dany port jest otwarty.

Na potrzeby tej techniki nadal wymagane są przywileje roota do budowania

własnych pakietów IP7.

TCP SYN/FIN fragmentation scanning

Nie jest to nowa metoda, tylko modyfikacja poprzednich technik. W związku

z tym, że niektóre firewalle odrzucają pojedyncze pakiety SYN i FIN, można

próbować je rozdrobnić na mniejsze fragmenty IP rozdzielając nagłówek TCP

na kilka mniejszych części, aby były trudniejsze dla filtrów pakietów. Niestety

niektóre programy mogą mieć trudności z tak małymi pakietami, na niektóre sieci

ta technika działa, a w innych powoduje ich zawieszanie.

TCP reverse ident scanning

Metoda ta polega na nawiązaniu pełnego połączenia TCP i próbie ustalenia, poprzez

protokół ident, właściciela procesu na danym porcie. Jeśli właścicielem jest root,

można próbować ataku na ten właśnie port.

7 Uriel Maimon, Port Scanning without the SYN flag, Phrack Magazine nr 49 art. 15, 1997

Page 41: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

42

UDP ICMP port unreachable scanning

W związku z tym, że protokół UDP nie jest protokołem połączeniowym, nie można

stosować tych samych technik skanowania, jak dla protokołu TCP.

Przeprowadzenie skanowania UDP jest trudniejsze w realizacji, mimo że sam

protokół jest prostszy. Dzieje się tak dlatego, że otwarte porty nie wysyłają

potwierdzenia w odpowiedzi na żądanie, a porty zamknięte nie wysyłają pakietów

z komunikatem o błędzie.

W protokole UDP obsługa błędów transmisji i retransmisja uszkodzonych lub

zagubionych pakietów spada na aplikacje. Na szczęście większość systemów

zwraca komunikat ICMP_PORT_UNREACH, kiedy wysyłane są pakiety do portu

zamkniętego. W ten sposób można się dowiedzieć, które porty są zamknięte

i poprzez eliminację wykazać, które mogą być otwarte. Technika ta jest stosunkowo

wolna, ponieważ w specyfikacji8 dotyczącej protokołu IP, określony jest pewien

limit wysyłanych komunikatów ICMP w danym przedziale czasowym. Dodatkowo,

aby mieć dostęp do komunikatów ICMP, należy posiadać uprawnienia roota.

Ten rodzaj skaningu ma najczęściej zastosowanie przy szukaniu usług RPC na

portach innych niż wskazywane przez portmapper, albo gdy jest on wyłączony.

Czasami dzięki tej technice możliwe jest ominięcie firewalli9.

8 Network Working Group, Request for Comments: 1812, Requirements for IP Version 4 Routers, 19959 Fyodor, The Art Of Port Scanning, Phrack Magazine nr 51 art. 11, 1997

Page 42: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

43

RPC scanning

RPC jest usługą pozwalającą uruchamiać programy na odległych maszynach.

W wyniku istnienia pewnych słabych punktów usługi RPC, wiele maszyn jest

podatnych na penetrację. Większość administratorów blokuje więc dostęp do

portmappera (port 111), aby uniemożliwić na dostęp do ich słabych usług RPC.

Jednakże jest możliwe skanowanie portów w poszukiwaniu usług RPC, które

w dodatku nie pozostawia śladów w logach większości systemów.

RPC opiera się na standardzie pytanie – odpowiedź. Klient wysyła inicjujące

zapytanie z numerem interesującego go programu, numer procedury, argumentami

i innymi potrzebnymi parametrami. W odpowiedzi otrzyma to, co zwróci procedura

lub gdy wystąpi błąd informacje dotyczące jego przyczyny. Programy RPC

zbudowane są z różnych procedur. Istnieje jedna procedura 0(), która występuje

zawsze. Jest to procedura, która nie posiada argumentów i nie zwraca żadnych

wartości. W ten sposób można określić, czy dany port obsługuje dany program,

wywołując funkcję ping, lecz najpierw trzeba sprawdzić, które porty UDP są

otwarte. Można tego dokonać właśnie metodą UDP connect(). Najpierw szukamy,

które porty UDP są otwarte, następnie próbujemy zapytać funkcją ping o numer

programu, który nas interesuje. Jeżeli dostaniemy odpowiedź pozytywna, to numer

programu, którego szukamy istnieje na tym porcie10.

10 Halflife, Scanning for RPC Services, Phrack Magazine nr 51 art. 7, 1997

Page 43: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

44

UDP recvfrom() and write() scanning

Metoda ta polega na wykorzystaniu faktu, że niektóre funkcje systemowe zwracają

inne komunikaty przy próbie połączenia z portem otwartym, a inne

z zamkniętym, np. powtórne użycie funkcji write() do portu zamkniętego zwróci

błąd. Również funkcja recvfrom() zazwyczaj zwraca EATGAIN („Try Again”,

errno 13) jeśli błąd ICMP nie został odebrany oraz ECONNREFUSED

(„Connection refused”, errno 111) gdy został odebrany. Technika ta może być

używana przez użytkowników nie posiadających uprawnień roota.

ICMP echo scanning (ping-sweep)

Dzięki tej technice możemy ustalić pod którymi numerami IP znajdują się

komputery. Jeśli otrzymamy odpowiedź na wysłany pakiet z ustawionymi bitami

72-79 nagłówka na wartość 1 i pierwszym polem obszaru danych ustawionym

na 8 (echo request11), to znaczy, że istnieje komputer pod skanowanym adresem IP.

Tak działa program ping.

FTP bounce attack

Interesującą opcją protokołu FTP (RFC 959)12 jest obsługa połączeń proxy.

Technika ta była skuteczna 15 lat temu, kiedy to specyfikacja RFC została napisana.

Ten słaby punkt protokołu może być użyty do wysyłania praktycznie nie do

11 Network Working Group, Request for Comments: 792, Internet Control Message Protocol, 198112 Network Working Group, Request for Comments: 959, File Transfer Protocol (FTP), 1985

Page 44: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

45

wyśledzenia wiadomości pocztowych i grup dyskusyjnych, zapełniać dyski,

próbować omijać firewalle oraz być uciążliwym i ciężkim do wytropienia. Możemy

wykorzystać to do skanowania portów TCP poprzez serwer FTP proxy. W ten

sposób możemy połączyć się z serwerami za firewallem i skanować porty, które są

prawdopodobnie zamknięte. Jeśli serwer pozwala na czytanie

i zapisywanie do katalogów, możemy wysłać przypadkowe dane do portów, które

znaleźliśmy otwarte. Metoda ta polega na użyciu komendy PORT w celu

zadeklarowania, że DTP (ang. data transfer process) klienta jest gotów do odbioru

na pewnym porcie. Następnie próbujemy poznać strukturę bieżącego katalogu

poprzez komendę LIST. Jeśli nasz docelowy serwer pracuje na danym porcie,

transfer zakończy się pomyślnie (odpowiedź 150 lub 226). W innym przypadku

otrzymamy komunikat 425 Can't buid data connection: Connection refuse. Wtedy

wydajemy kolejną komendę PORT z kolejnym numerem portu. Korzyścią z tej

metody jest to, że jest trudniejsza do wyśledzenia oraz pozwala omijać firewalle.

Wada natomiast jest jej powolność oraz to, że większość serwerów ma już

wyłączona opcję proxy.

IP.id scanning

Jest to względnie ostatnia metodą skanowania, która pozwala na użycie pakietów ze

sfałszowanym adresem źródłowym. Charakterystyczne dla niej jest wykorzystanie

pośredniego komputera. Wówczas, przewidując pole id w nagłówku IP, można

podszyć się pod pośrednika i skanować docelowy host pod kątem oferowanych

usług. Ważne przy tym jest to, że nie zdradzamy swojego prawdziwego adresu,

ponieważ w logach systemowych skanowanej maszyny pojawia się tylko adres

pośrednika. Należy zwrócić uwagę, że podczas skanowania techniką ip.id komputer

pośredniczący nie może wysyłać żadnych pakietów (zerowy ruch w sieci)

Page 45: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

46

i jednocześnie skanowana maszyna musi być podatna na SYN scanning.

Przykładowo mamy do czynienia z trzema komputerami:

� host A: komputer hakera – hacker.pl

� host B: komputer pośredniczący w skanowaniu – posrednik.pl

� host C: skanowany komputer – ofiara.pl

SYNpodrobiony

RST

SYN/ACK

port zamkni ty

port otwartyRST

PING

skanowanyserwer

komputerhakera

komputerpośrednik

Rys. 9. Metoda działania skanowania typu IP.id scanning.

W pierwszej kolejności poznaje się sposób numerowania kolejnych pakietów,

ponieważ znając zasadę działania tego algorytmu będziemy w stanie przewidzieć

kolejne numery wysyłanych pakietów. Uzyskamy to wywołując program hping:

$ hping posrednik.pl -r

HPING posrednik.pl (eth0 192.168.1.2): no flags are set, 40 data bytes

60 bytes from 192.168.1.2: flags=RA seq=0 ttl=64 id=41660 win=0 time=1.2 ms

60 bytes from 192.168.1.2: flags=RA seq=1 ttl=64 id=+1 win=0 time=75 ms

60 bytes from 192.168.1.2: flags=RA seq=2 ttl=64 id=+1 win=0 time=91 ms

60 bytes from 192.168.1.2: flags=RA seq=3 ttl=64 id=+1 win=0 time=90 ms

60 bytes from 192.168.1.2: flags=RA seq=4 ttl=64 id=+1 win=0 time=91 ms

60 bytes from 192.168.1.2: flags=RA seq=5 ttl=64 id=+1 win=0 time=87 ms

Page 46: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

47

Można zauważyć, że pole id nagłówka IP jest zawsze zwiększane o jeden, czyli

komputer posiada charakterystykę, jaką jesteśmy w stanie wykorzystać. Kolejnym

krokiem jest wysłanie do komputera C pakietów SYN na interesujący nas port ze

sfałszowanym adresem źródłowym, określającym B:

$ hping ofiara.pl -a posrednik.pl -S

Podglądając pakiety wychodzące z maszyny B można stwierdzić, czy dany port na

C jest otwarty, czy zamknięty. Jeśli host C odpowie potwierdzeniem ACK oznacza

to, że port jest otwarty, tak więc B odpowie RST, bo przecież nie ustanawiał

połączenia. Zauważymy więc, że host B wysyła pakiety:

$ hping ofiara.pl -a posrednik.pl -S

HPING posrednik.pl (eth0 192.168.1.2): no flags are set, 40 data bytes

60 bytes from 192.168.1.2: flags=RA seq=17 ttl=64 id=+1 win=0 time=96 ms

60 bytes from 192.168.1.2: flags=RA seq=18 ttl=64 id=+1 win=0 time=80 ms

60 bytes from 192.168.1.2: flags=RA seq=19 ttl=64 id=+2 win=0 time=83 ms

60 bytes from 192.168.1.2: flags=RA seq=20 ttl=64 id=+3 win=0 time=94 ms

60 bytes from 192.168.1.2: flags=RA seq=21 ttl=64 id=+1 win=0 time=92 ms

60 bytes from 192.168.1.2: flags=RA seq=22 ttl=64 id=+2 win=0 time=82 ms

Jeśli port jest zamknięty, to C wyśle RST, a B na ten pakiet nie odpowie, czyli nie

będzie wysyłał żadnych pakietów:

$ hping ofiara.pl -a posrednik.pl -S

HPING posrednik.pl (eth0 192.168.1.2): no flags are set, 40 data bytes

60 bytes from 192.168.1.2: flags=RA seq=52 ttl=64 id=+1 win=0 time=85 ms

60 bytes from 192.168.1.2: flags=RA seq=53 ttl=64 id=+1 win=0 time=83 ms

60 bytes from 192.168.1.2: flags=RA seq=54 ttl=64 id=+1 win=0 time=93 ms

60 bytes from 192.168.1.2: flags=RA seq=55 ttl=64 id=+1 win=0 time=74 ms

60 bytes from 192.168.1.2: flags=RA seq=56 ttl=64 id=+1 win=0 time=95 ms

60 bytes from 192.168.1.2: flags=RA seq=57 ttl=64 id=+1 win=0 time=81 ms

Page 47: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

48

2.4. Sniffing

Sniffing jest techniką polegającą na podsłuchiwaniu pakietów

przepływających w sieci. Każdy komputer podłączony do lokalnej sieci

komputerowej ma swój własny unikalny adres sprzętowy. W sieci, w której

występuje rozgłaszanie (ang. broadcasting), dane są rozsyłane do wszystkich

komputerów, ale odbierają je tylko te do których są zaadresowane. Wykorzystując

fakt, że karty sieciowe w trybie mieszanym (ang. promiscous mode) pozwalają na

odczytywanie pakietów przesyłanych do innych komputerów w sieci, haker może

przechwycić poufne informacje przesyłane poprzez sieć. Programy służące w tym

celu nazywa się snifferami. Zainstalowanie sniffera w jakimś newralgicznym

miejscu sieci, np. na routerze, może doprowadzić do pokonania zabezpieczeń

wszystkich innych stacji roboczych z nim połączonych.

Programy tego typu na ogół przechwytują wszystkie pakiety z danymi. Jeśli

haker nie kradnie danych, to z punktu jego widzenia większość pakietów nie ma dla

niego większego znaczenia, dlatego też ogranicza się przechwytywanie do kilkuset

bajtów z każdego pakietu. Zazwyczaj wystarczy to do poznania nawy użytkownika

i jego hasła.

Sniffery można zainstalować praktycznie na każdej maszynie w sieci,

ale najbardziej interesujące dla hakera są miejsca, gdzie dokonuje się procedur

autoryzacji. Na szczególne niebezpieczeństwo narażone są komputery będące

bramkami między sieciami. Ze względu na umiejscowienie sniffera w sieci

wyróżnić można trzy sytuacje:

� sniffer znajduje się na routerze znajdujący się między siecią lokalną

a Internetem (połączenie nie musi być bezpośrednie), bądź też między

Page 48: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

49

różnymi sieciami lokalnymi lub rozległymi; ten rodzaj sniffingu jest

najbardziej niebezpieczny,

� sniffer znajduje się na komputerze, z którego inicjowane jest połączenie,

� sniffer działa na komputerze, na który następuje próba logowania

użytkownika13.

W ostatnim czasie dość znacznie udoskonalono technologie w zakresie

bezpieczeństwa systemów komputerowych. Większość systemów operacyjnych

stosuje teraz kryptografię już na poziomie pakietu, tak więc jeżeli haker przechwyci

już jakieś pakiety będą one w postaci zaszyfrowanej. Wykorzystanie tych

zakodowanych informacji jest uwarunkowane dogłębną znajomością kryptografii,

bezpieczeństwa systemów oraz sieci komputerowych i posiadanie zaplecza

technicznego.

Sniffery występują w postaci programów darmowych oraz pakietów

komercyjnych. Te pierwsze są łatwo dostępne, bezpłatne, rozprowadzane głównie

w postaci kodu źródłowego. Drugie są produktami, których cena niejednokrotnie

sięga kilku tysięcy dolarów. Działający sniffer tak obciąża system, na którym jest

zainstalowany, że komercyjne produkty niejednokrotnie są rozwiązaniami

sprzętowo-programowymi, oparte na maszynie zbudowanej

z uwzględnieniem funkcji sieciowej, jaką będzie spełniać. Atutem stosowania

komercyjnych rozwiązań jest oferowany przez firmę pełen serwis, pomoc

techniczna, infolinia, itp. oraz to, że analizują dużą ilość protokołów.

Sniffery mogą się przyczynić do naruszenia bezpieczeństwa sąsiednich sieci

komputerowych bądź stopniowego dostępu do nich. Wymogiem uruchomienia

sniffera na danej maszynie jest posiadanie uprawnień roota, ponieważ możliwość

przestawienia karty sieciowej w tryb mieszany dozwolone jest tylko

13 Andrzej Dudek, Nie tylko wirusy, str. 203-204

Page 49: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

50

administratorom.

Wykrywanie snifferów w sieci jest zadaniem trudnym, bowiem programy

tego typu działają pasywnie i nie zostawiają żadnych śladów w logach

systemowych. Do znalezienia sniffera na lokalnym komputerze można użyć sum

kontrolnych MD5, oczywiście pod warunkiem, że sam pakiet MD5 został

zainstalowany dostatecznie wcześnie, najlepiej zaraz po instalacji systemu,

a sama baza oryginalnych sum kontrolnych jest fizycznie niedostępna dla hakera

(np. na nośniku MO przechowywanym w bezpiecznym miejscu).

Inaczej sprawa wygląda, gdy haker podpiął się bezpośrednio do medium

transmisyjnego. W tym celu należy sprawdzić każdy centymetr kabla sieciowego,

bądź też zastosować narzędzia służące do mapowania topologii sieci. Użycie

urządzeń typu TDR (Time Domain Reflectometr) mierzącego propagację

i fluktuację fal elektromagnetycznych w medium może pozwolić na wykrycie

nielegalnego podłączenia do naszej sieci. Tylko zapobiegliwy administrator

przyczyni się do minimalizacji szkód powstałych w wyniku działania snifferów.

Sniffery przechwytują pakiety wędrujące po medium transmisyjnym, do

którego są podpięte. W związku z tym, podział sieci na mniejsze podsieci zmniejsza

ilość informacji, które mogą być przechwycone. Sniffery nie potrafią przejść takich

urządzeń jak bridge, switche czy routery. Niestety jest to bardzo kosztowne

rozwiązanie. Idealnym wydaje się więc szyfrowanie danych. Nawet jeśli haker

przechwyci pakiety, to zakodowane informacje w nich zawarte będą dla niego

bezużyteczne. Można tu napotkać problem, czy metoda szyfrowanej komunikacji

jest wspierana przez wszystkie strony biorące w niej udział, ponieważ szyfrowanie

sesji między-platformowych jest zjawiskiem dość rzadkim. Jeśli nie mamy do

dyspozycji szyfrowania sesji, należy korzystać z aplikacji, które oferują silne

dwukierunkowe szyfrowanie danych. Przykładem może być Secure Shell (SSH),

który zastępując standardowego telneta, przy negocjacji połączenia stosuje algorytm

RSA, a po autoryzacji transmisja kodowana jest algorytmem IDEA.

Page 50: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

51

Sniffery pierwotnie używane były przez administratorów w celu identyfikacji

potencjalnych problemów, jednakże z czasem zostały zaadaptowane przez hakerów,

ponieważ świetnie nadają się do przechwytywania cennych danych.

Page 51: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

52

3. Ataki aktywne

3.1. Spoofing

Terminem tym określa się podszywanie jednego komputera pod inny,

upoważniony do nawiązywania połączenia. Istnieje wiele różnych odmian

podszywania, jednak najpopularniejsze to IP-spoofing i DNS-spoofing.

IP-spoofing

Metoda ta polega na podsłuchiwaniu przez sniffer połączenia pomiędzy klientem

a serwerem i wyłapywaniu wysyłanych numerów sekwencji. Po znalezieniu

algorytmu jakim są one tworzone haker doprowadza do niestabilności połączenia,

np. poprzez atak SYN Flood na stacje klienta, zmienia numer IP na numer klienta

i przewidując numery sekwencji korzysta z istniejącego połączenia jako

autoryzowany użytkownik.

192.168.1.1192.168.1.2192.168.1.1

serwer

komputerklienta

komputerhakera

Rys. 10. Zasada działania IP-spoofingu.

Page 52: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

53

DNS-spoofing

Jest to atak na serwer DNS, który posiada bazę danych przechowującą numery IP

dla poszczególnym adresów mnemonicznych. Atak DNS-spoofing polega na

ingerencji w tablicę DNS i modyfikacji poszczególnych wpisów tak, aby klient

zamiast do komputera docelowego kierowany był do komputera hakera.

192.168.1.1

192.168.1.2

stef.pl = 192.168.1.1

stef.pl = 192.168.1.2

stef.plstef.pl

serwer DNS

komputerklienta

komputerhakera

komputerdocelowy

Rys. 11. Zasada działania ataku DNS-spoofing. Modyfikacje przeprowadzone

w serwerze DNS (kolor czerwony) kierują klienta do maszyny hakera.

Page 53: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

54

3.2. Hijacking

Jednym z najbardziej niebezpiecznych ataków na system komputerowy jest

atak polegający na przechwyceniu sesji w protokole TCP (ang. hijacking). Technika

polega na tym, że haker powoduje przerwanie połączenia zestawionego pomiędzy

klientem a serwerem, następnie podszywa się pod klienta i podsyła serwerowi

własne numery sekwencji. Aby mieć możliwość wglądu w przesyłane pakiety,

konieczne jest korzystanie ze sniffera, co w tym przypadku oznacza, że haker musi

mieć uprawnienia roota na komputerze, z którego przeprowadza atak. Hijacking jest

więc połączeniem dwóch metod: sniffingu i IP-spoofingu.

W celu doprowadzenia do przerwania połączenia TCP należy je wcześniej

rozsynchronizować. Haker wykorzystuje właściwość protokołu TCP polegającą na

tym, że jeśli numery sekwencji pakietu nie zgadzają się z wartościami

oczekiwanymi przez komputer, to komputer go odrzuci i będzie czekać na

poprawnie numerowany. Można tego dokonać za pomocą kilku metod:

� wczesne rozsynchronizowanie

� aktywne rozsynchronizowanie

� rozsynchronizowanie pustymi danymi

Przechwycenie sesji umożliwia hakerowi ominięcie weryfikacji hasła, dzięki czemu

umożliwi mu to bezproblemowe wejście do komputera głównego.

Przechwytywanie w protokole TCP jest dużo większym zagrożeniem niż

podszywanie się pod IP, ponieważ przechwytując już odbywające się połączenie ma

zazwyczaj lepszy dostęp do systemu, niż miałby rozpoczynać je od nowa.

Page 54: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

55

Wczesne rozsynchronizowanie

Atak wczesnego rozsynchronizowania powoduje przerwanie połączenia między

klientem a serwerem we wczesnej fazie konfiguracji. Haker podglądając pakiety

oczekuje na potwierdzenie zsynchronizowanego połączenia SYN/ACK, wysyłane

przez serwer do klienta podczas drugiej fazy transmisji. Po jego wykryciu wysyła

do serwera pakiet wyzerowania RST, a następnie pakiet zsynchronizowanej

odpowiedzi SYN z takimi samymi parametrami, jak w pakiecie SYN/ACK serwera.

Jednak pakiet hakera ma inny numer sekwencji. Po otrzymaniu pakietu RST serwer

zamyka połączenie, a po otrzymaniu pakietu SYN, otwiera nowe połączenie przez

ten sam port, ale z innym numerem sekwencji. Do prawdziwego klienta serwer

wysyła z powrotem pakiet SYN/ACK, które przechwytuje haker i wysyła do

serwera swój własny pakiet ACK. Serwer przełącza się w tryb połączenia

zsynchronizowanego ESTABLISHED.

Aktywne rozsynchronizowanie

Metoda ta polega na przerwaniu już istniejącego połączenia. Charakteryzuje się

tym, że haker wykorzystując wymagania dotyczące numerów sekwencji protokołu

TCP i modyfikując ramki wymusza rozsynchronizowanie połączenia TCP, tak że

komputery te nie mogą wymieniać danych. Po rozsynchronizowaniu, numer

sekwencji pakietu klienta nigdy nie jest równy poprzednio wysłanemu przez serwer

potwierdzeniu oczekiwanego numeru sekwencji i dlatego serwer nie akceptuje

danych i odrzuca pakiet. Następnie haker, używając swojego komputera

przechwytuje oryginalne pakiety i generuje ich zamienniki akceptowane zarówno

przez klienta, jaki i przez serwer. W związku z tym, że wszystkie transmisje

przechodzą przez komputer hakera, może on modyfikować dowolne dane ze

Page 55: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

56

strumienia. W ten sposób haker może dodać do oryginalnego żądania klienta

własne. Serwer po otrzymaniu pakietu odpowiada zarówno na polecenia wydane

przez hakera, jak i na polecenia wydane przez prawdziwego klienta. Przed

przekazaniem odpowiedzi serwera do klienta haker może usunąć odpowiedzi na

swoje polecenia tak, aby użytkownik nie spostrzegł jego obecności.

żądanie klienta

odpowiedź klienta

żądanie klientażądanie hakera

odpowiedź klientaodpowiedź hakera

serwerkomputerhakera

komputerklienta

Rys. 12. Dodawanie poleceń hakera do żądań klienta oraz ich usuwanie

w odpowiedzi z serwera.

Rozsynchronizowanie pustymi danymi

Atak tego typu polega na równoczesnym wysyłaniu dużej ilości pustych danych do

serwera i do klienta. Puste dane nie maja wpływu na nic po stronie serwera oprócz

zmiany numeru potwierdzenia

Skutkiem ubocznym ataku rozsynchronizowania jest pojawiająca się

w sieci znaczna ilość retransmisji pakietów ACK. Podczas połączenia TCP prawie

wszystkie puste pakiety z ustawioną flagą ACK oznaczają potwierdzenie odebrania,

ale informują jednocześnie o tym, że zostały odrzucone. Klient nie akceptuje tego

potwierdzenia, ponieważ poprzednio nie wysłał pakietu ze zmodyfikowanym

Page 56: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

57

zamówieniem, więc tworzy własny pakiet potwierdzenia. Tworzy się pętla, która

może zostać zakończony tylko wtedy, gdy któryś pakiet się zagubi. W praktyce

często traci się pakiet z danymi z powodu zatłoczenia sieci.

Ataki przechwycenia sesji można wykrywać różnymi metodami:

� Wykrywanie stanu rozsynchronizowanego – numery sekwencji na obu

końcach są odczytywane za pomocą czytnika pakietów TCP

i w zależności od numerów sekwencji można określić, czy połączenie jest

w stanie rozsynchronizowanym. Pakiety można czytać tylko przy założeniu,

że numery sekwencji nie są w czasie przesyłania zmieniane przez hakera.

� Wykrywanie nawałnicy potwierdzeń – niektóre statystyki dotyczące ruchu

w lokalnym odcinku sieci w połączeniu TCP podają, że przed atakiem

średnia liczba pakietów potwierdzeń bez danych stanowi to około 50%

wszystkich pakietów, w sieci Fast Ethernet to 30%, natomiast podczas ataku

nawet 300%.

� Obliczanie procentu pakietów – stan połączenia można sprawdzać poprzez

obliczanie procentu pakietów i porównywać go ze stanem normalnym.

Aby zapobiec przechwyceniu po rozsynchronizowaniu należy korzystać

z szyfrowania transmisji na poziomie aplikacji lub stosować kryptograficzną

implementację protokołu TCP. Szyfrowanie strumienia w znaczny sposób ogranicza

zdolność hakera do manipulowania danymi w czasie rzeczywistym.

Page 57: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

58

3.3. Konie trojańskie

Koń trojański jest programem, który robi więcej, niż oczekuje od niego

użytkownik i te jego dodatkowe właściwości z punktu widzenia użytkownika

są niepożądane. To założenie prowadzi nas do trudności w wykrywaniu koni

trojańskich. (...) Problemem jest porównanie tego co robi program, z tym czego

oczekuje od niego użytkownik, a oczekiwania użytkownika wobec programów

przez niego wykorzystywanych są – na poziomie aplikacji – nieweryfikowalne14.

Takie programy są często stosowane przez hakerów, bo pozwalają na

pokonanie zabezpieczeń systemu omijając procedury autoryzacji. Konie trojańskie

(ang. trojan horses), zwane też trojanami, mogą być zaszyte praktycznie w każdym

programie. Są bardzo trudne do wykrycia, ponieważ zazwyczaj rezydują w plikach

binarnych, a pracując w tle nie ujawniają swojej działalności. Większość dobrze

zaprojektowanych programów tego typu zawiera się w narzędziach, które są

częścią samego systemu. Należy więc być ostrożnym w uruchamianiu programów

ściągniętych z Internetu, nawet jeśli są to programy z oficjalnych stron

producentów. Zdarzały się bowiem przypadki, że hakerzy włamywali się na

serwery firm i zmieniali kody źródłowe programów, które następnie były

kompilowane przez nieświadomych zagrożenia programistów z tej firmy

i rozpowszechniane w sieci. W ten sposób haker może małym wysiłkiem otworzyć

sobie „furtki” do wielu systemów. Przykładem takiego działania może być ostatnie

włamanie do sieci komputerowej Microsoftu, gdzie haker podrzucił trojana QAZ

zamaskowanego jako program notatnik (ang. notepad), który komunikował się

z komputerami w Azji i na południowym Pacyfiku, a po zainfekowaniu innych

14 Dr Alan Salomon, All About Viruses

Page 58: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

59

komputerów hasła były przesyłane na adres w Sankt Petersburgu15.

Hakerzy często modyfikują istniejące programy i tworzą własne wersje

podmieniając oryginalne. Wykrycie konia trojańskiego nie jest trudne pod

warunkiem, że byliśmy zapobiegliwi. W innym wypadku będzie to bardzo trudne

lub wręcz niemożliwe. Zazwyczaj stosuje się metodę porównania zgodności

obiektów (ang. object reconciliation), polegającą na sprawdzeniu, czy obecny stan

jest zgodny z zapamiętanym. Jedną z najpewniejszych metod jest stosowanie

cyfrowego podpisu dla każdego pliku używając różnych algorytmów. Obecnie

najbardziej popularnym i sprawdzonym jest MD5. Jest to jednokierunkowy

algorytm mieszający, tworzący unikalną 128 bitową sygnaturę dla informacji

wejściowej dowolnej długości. Sensowne jest więc zainstalowanie MD5 zaraz

po instalacji systemu, gdy nie udostępniamy go użytkownikom i nie jesteśmy

podłączeni do sieci.

Konie trojańskie mogą spowodować całkowite zniszczenie systemu.

Część programów jest nastawiona wyłącznie na destrukcje. Zazwyczaj po wykryciu

trojana należy się spodziewać pozostawionych jeszcze kilka ukrytych tylnich wejść.

Aby ustrzec się przed skutkami koni trojańskich należy zachować kilka

podstawowych zasad bezpieczeństwa, które w każdej sytuacji pomogą zwiększyć

bezpieczeństwo naszego systemu:

� zawsze należy zapoznać się z programem przed jego pierwszym

uruchomieniem,

� należy dokładnie przeczytać uruchamiane skrypty i starać się je dokładnie

zrozumieć,

15 Wall Street Journal, 2000

Page 59: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

60

� warto zapoznać się, w miarę możliwości, z kodem źródłowym, aby poznać

mechanizmu użyte w programie i wiedzieć czego się po nim można

spodziewać,

� nie należy uruchamiać nowych programów z konta roota, mają one wtedy

dostęp do wszystkich zasobów systemu i mogą już na wejściu dokonać

dużych szkód, najlepiej nowe programy testować na komputerze odłączonym

od sieci, tak aby nie mogły udostępnić nikomu żadnych zasobów w jakiś

tajny nieudokumentowany sposób,

� ogólnie zaleca się zachowanie dystansu do programów importowanych

z niepewnych i nieznanych źródeł, i to zarówno do programów źródłowych

jak i skompilowanych plików binarnych.

Page 60: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

61

3.4. Ataki typu DOS

W ostatnich latach dość często mamy do czynienia z atakami typu DOS

(ang. Denial of Service). W ogólnym znaczeniu metoda ta polega na częściowym

lub całkowitym zablokowaniu dostępu do świadczonych usług. Ten rodzaj ataku

jest łatwy w użyciu i niestety bardzo ciężko chronić przed nim system. Ataki mogą

być zdalne lub lokalne, zarówno na systemy komputerowe jak i na sprzętowe

elementy sieci komputerowych.

Ze względu na jego charakter, można wyróżnić trzy efekty jego działania:

� Designed Outage - wstrzymanie usług, wykorzystuje zjawisko odtwarzania

procesów (ang. processes recovery) większości urządzeń, w szczególności

tych, które mają komendy reset, tymczasowo się wyłączające lub

przekazujące kontrolę innemu procesowi. Wstrzymywanie usług jest

wykonywane przez system w celu zachowania jego niezawodności poprzez

zamykanie połączeń TCP dla danego źródłowego i docelowego adresu

i portu (ang. quad) i odrzucaniu dla nich połączeń przez określony czas.

� Resource Destruction - zniszczenie zasobów, to załamanie poszczególnych

obiektów w strumieniu informacji poprzez sprowadzenie ich do stanu

niestabilnego i nie funkcjonującego prawidłowo. Zniszczenie ma miejsce,

gdy jakiś program spowoduje błąd. Systemy operacyjne są nadzwyczajnie

złożone i nie wszystkie matematyczne możliwości są przewidywalne.

Czasami pewne wejścia do systemu powodują jego upadek. Może to nastąpić

poprzez pakiet z nieprawidłowym rozmiarem lub błędnymi opcjami, których

nie może obsłużyć gniazdko (ang. socket). W rezultacie może nastąpić

zawieszenie gniazdka, a czasem nawet systemu.

Page 61: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

62

� Resource Exhaustion - wyczerpanie zasobów, to ich przeciążenie w taki

sposób, aby opóźniane informacje nie docierały na czas. Komputery są

maszynami cyfrowymi i ich działanie oparte jest na operacjach

matematycznych, z pewną ograniczeniem do operacji na liczbach

skończonych. Każdy proces, który żąda więcej zasobów (pamięci, procesora,

itp.) niż jest to przewidziane może być zablokowany16.

W pewnych przypadkach atak typu DOS może być częścią innego ataku, maj cego

na celu uzyskanie dostępu do systemu:

� atak bazujący na technice SYN Flood może być początkiem innego ataku

z wykorzystaniem metody IP-spoof,

� niektóre systemowe programy mogą posiadać błąd wewnętrzny podczas

uruchamiania, który może być wykorzystany do zdobycia uprawnień

administratora,

� podczas ataku pomocne może się okazać zawieszenie działalności innych

maszyn w sieci lub uniemożliwienie pewnym osobom na dostęp do systemu,

� czasami możliwe jest uszkodzenie systemu podczas boot’owania

w szczególności rarp-boot. Jeśli znany jest port, na którym maszyna

oczekuje zgłoszenia podczas boot’owania możemy wysłać fałszywe pakiety

i prawie całkowicie przejąć kontrolę nad startem systemu,

� niektóre firewalle w momencie zablokowania przepuszczają wszystkie

pakiety, co może być bardzo pomocne w zdobywaniu niechronionych

systemów17.

16 Coretez Giovanni, Topology of Denial-of-Service, Endeavor Systems Inc. 200017 Hans Husman, Introduction to Denial of Service, 1996

Page 62: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

63

Atak typu DOS może mieć też przyczyny socjologiczno-ekonomiczne:

� może być częścią zemsty na użytkowniku lub na samym administratorze,

� może być wynikiem działania nieuczciwej konkurencji; potencjalne korzyści

finansowe lub gospodarcze mogą być następstwem zniszczenia systemu

komputerowego innych firm; może mieć ogromne znaczenie

w nadużyciach elektronicznych, które najprawdopodobniej będą miały

miejsce w najbliższych latach,

� czysta ludzka złośliwość.

Celem ataku typu DOS mogą być następujące elementy systemu:

� pamięć wirtualna (ang. swap space),

� tablice jądra (ang. kernel tables),

� pamięć RAM,

� pamięć dyskowa,

� pamięć podręczna (ang. cache),

� demon usług inetd.

Page 63: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

64

Ataki zdalne

Atak tego typu wykorzystuje wewnętrzne właściwości protokołu IP, w związku

z czym może być przeprowadzony na dowolnej platformie sprzętowej.

Implementacje tego protokołu nie różnią się znacznie między sobą, przez co

pojedynczy schemat ataku może być użyty przeciw różnym systemom

operacyjnym. Często wykorzystuje błędy w jądrze, a także w konkretnych

serwerach.

SYN Flood

W atakach tego typu cały problem tkwi w mechanizmie działania procesu

potrójnego potwierdzania połączenia TCP (ang. three way handshake).

W wyniku powiększania się Internetu, większość połączeń jest daleko

dystansowych, więc pakiety w drodze do miejsca przeznaczenia przechodzą przez

wiele maszyn. Rezultat jest taki, że pakiety te mogą być znacznie opóźnione lub

nawet zgubione. Aby zestawić połączenie na łączach, gdzie występują duże

opóźnienia, serwer musi poczekać na potwierdzający pakiet ACK od klienta. Jeśli

go nie otrzyma, ponowi wysłanie własnego pakietu ACK. Zanim serwer odrzuci

żądanie połączenia, sytuacja ta może się powtórzyć kilkukrotnie, z reguły 5-6 razy.

Za ka dym razem, gdy serwer ponawia wysłanie własnego pakietu ACK, czas jego

oczekiwania na odpowiedź zwiększa się dwukrotnie, tak więc jeśli serwer pozwala

na 6 prób i zaczyna od opóźnienia 3 sek., to zanim odrzuci żądanie będzie czekał na

odpowiedź klienta przez:

3 + 6 + 12 + 24 + 48 + 96 = 189 sek.

Page 64: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

65

czyli ogólnie:

(2n-1) · k

gdzie n to liczba prób, a k – początkowy czas opóźnienia.

Oto przykładowa droga jaką pokonuje pakiet wysłany poprzez połączenie TPSA

z Częstochowy do hosta matinf.pcz.czest.pl oraz czasy poszczególnych opóźnień

(jest to skrócony wynik komendy traceroute – bez adresów IP)18:

1 * * *

2 pa1.czestochowa.ppp.tpnet.pl 840.056 ms 139.709 ms 129.889 ms

3 do-czest-kop.wct2.katowice.tpnet.pl 179.940 ms 129.740 ms 129.949 ms

4 213.25.12.185 139.811 ms 139.658 ms 139.958 ms

5 do-war-cst4.r1.tpnet.pl 149.982 ms 171.137 ms 158.555 ms

6 do-kraacmm.r1.tpnet.pl 189.888 ms 229.506 ms 500.040 ms

7 do-r1.lodzcen.tpnet.pl 250.363 ms 329.760 ms 460.055 ms

8 z-TPNet-l-e3.lodz.pol34.pl 369.733 ms 249.826 ms 259.896 ms

9 212.191.127.154 279.866 ms 420.326 ms 529.401 ms

10 z-katowic-e1.czestochowa.pol34.pl 1390.029 ms 1159.877 ms 1649.802 ms

11 gw-pcz-pol34.pcz.czest.pl 920.338 ms 309.774 ms 449.916 ms

12 212.87.224.57 369.880 ms 1189.826 ms 1179.922 ms

13 matinf.pcz.czest.pl 369.882 ms 329.811 ms 329.873 ms

Jest to typowe miejsce ataku DOS typu SYN Flood, który polega na wysyłaniu

pakietów SYN do serwera z fałszywym adresem zwrotnym (ang. return address),

który nie istnieje albo należy do maszyny obecnie wyłączonej lub odłączonej od

sieci. Serwer odpowie własnym pakietem ACK i będzie oczekiwał na potwierdzenie

od klienta, które nigdy nie nadejdzie. Wobec tego serwer będzie ponawiał wysłanie

własnego pakietu 5-6 razy, za każdym razem dwukrotnie zwiększając czas

oczekiwania. W rezultacie gniazdko przez jakiś czas zostaje zablokowane.

18 Źródło: opracowanie własne

Page 65: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

66

Pojedyncze takie przypadki nie są zagrożeniem, natomiast gdy haker wysyła tysiące

takich żądań, problemy mogą być widoczne. Efekt działania takiego ataku jest

uzależniony od stopnia jego nasilenia oraz od słabości samego systemu. Ze względu

na ograniczoną ilość gniazdek obsługiwanych przez system, zablokowanie ich

wszystkich uniemożliwia prawidłowe działanie serwera, ponieważ następuje

zapełnienie kolejki połączeń oczekujących, a co się z tym wiąże blokuje ruch

wychodzący i przychodzący,

czyli dla innych użytkowników maszyna jest niedostępna. Dodatkowo duża ilość

otwartych gniazdek powoduje użycie znacznej ilości pamięci, co uszczupla zasoby

dla uruchomionych programów, a w najgorszym razie, zwłaszcza przy słabszych

systemach, może doprowadzić do ich załamania. Od kiedy zablokowane porty są

z powrotem po paru minutach dostępne, w celu przedłużenia blokady należy atak

podtrzymywać, dopóki serwer się nie zatrzyma, co w tym przypadku i tak trwa do

zresetowania go przez administratora.

Początkowo ten rodzaj ataku uznawany był za niemożliwy do wyśledzenia

z powodu fałszywego adresu zwrotnego, po którym rozpoznawano nadawcę. Haker

mógł dodatkowo utrudniać serwerowi wykrywanie i ignorowanie fałszywych

adresów poprzez ciągłą ich zmianę. Atak typu SYN Flood nie dokonuje zniszczeń

w serwerze ani w danych na nim zawartych. Nie ma też całkowitej ochrony przed

takimi atakami dopóki serwery są przyłączone do Internetu. Dla większości

systemów dostępne są już porady i aktualizacje oprogramowania, które

zmniejszenia ryzyko ataku.

W celu poprawy ochrony systemów należy stosować się do pewnych zaleceń:

� należy zmniejszyć liczbę wysyłanych przez serwer powtórzeń pakietu ACK,

tak aby serwer szybciej zwalniał gniazdka, ale należy przy tym uważać na to,

aby klient w ogóle miał szansę na połączenie

Page 66: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

67

� należy zwiększyć ilość możliwych połączeń; obsługa każdego gniazdka

zużywa kilkaset bajtów pamięci, tak więc jest możliwa obsługa większej ich

ilości. Oznacza to, że haker nie będzie w stanie tak szybko wysyłać pakietów

SYN, aby w tym samym czasie blokować wszystkie gniazdka

� istnieją propozycje, aby każdy dostawca Internetu (ang. Internet Service

Provider, w skrócie ISP) uniemożliwiał swoim użytkownikom wykonywanie

zdalnych ataków. Jest to możliwe jeśli router będzie zapobiegał wysyłaniu

pakietów, jeśli adres zwrotny nadawcy pakietu nie będzie zgodny z adresem

przydzielonym przez providera temu danemu użytkownikowi19.

Ping of Death

Niektóre systemy nie potrafią sobie poradzić z pakietami, których rozmiar jest

większy niż 65536 bajtów (64kB), w przeciwieństwie do standardowych

64 bajtów. Jest to błąd, który nie występuje tylko w systemach UNIX, ale jest

charakterystyczny dla MacOS, Netware, drukarek sieciowych, routerów, itp.

Poprawki wychodzą dość szybko, szczególnie dla systemu Linux, gdzie łaty

dostępne są już nawet po paru godzinach. Zgodnie ze specyfikacją RFC 791

długość pakietu IP może wynosić maksymalnie 65535 (216-1) oktetów łącznie

z nagłówkiem (standardowo 20 oktetów jeśli nie są zdefiniowane opcje IP). Samo

żądanie ICMP ECHO jest zawarte w pakiecie IP składa się z 8 oktetów informacji

nagłówka ICMP (RFC 792) i znajduje się zaraz po kilku oktetach danych w żądaniu

„ping”.

19 Tom Kermode, Denial of Service Attacks on any Internet Server Through SYN Flooding

Page 67: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

68

W związku z tym maksymalna dostępna wielkość pola danych to:

65535 - 20 - 8 = 65507 oktetów

Pomimo tego, że datagram IP o rozmiarze większym niż 65507 oktetów nie jest

zgodny ze specyfikacją RFC, jest jednak możliwy do stworzenia przy

wykorzystaniu fragmentacji pakietów. Fragmentacja polega na dzieleniu pakietu na

mniejsze części i wysłanie go do odbiorcy, gdzie zostaje z powrotem poskładany

w całość. Wykorzystując to, że maszyny nie przetwarzają pakietu, dopóki wszystkie

jego fragmenty nie zostaną odebrane, istnieje możliwość na przepełnienie

(ang. buffer overflow) wewnętrznych 16-bitowych zmiennych, co może prowadzić

do zresetowania lub zawieszenia maszyny, czy też do błędów w jądrze systemu

(ang. kernel dumps).

Technika ta nie dotyczy wyłącznie żądania „ping”, ale może być

wykorzystana przez wszystko, co wysyła datagramy IP, tak więc nie tylko ICMP

echo, ale także protokół TCP, UDP i nawet IPX może być użyty do ataku na

podatną maszynę. Jest to poważny problem głównie dlatego, że może być

przeprowadzany z zewnątrz i schemat jego działania jest niezależny od platformy

sprzętowej20.

Smurf

Atak „Smurf” odziedziczył swoją nazwę od exploita i jest stosunkowo nowy

w kategorii sieciowych ataków na hosty. Zasada jego działania polega na wysłaniu

przez napastnika dużej ilości pakietów ICMP echo (ping) na adresy broadcastowe

20 Mike Bremford, It’s the Ping o’Death Page!, 1996

Page 68: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

69

(ang. broadcast addresses) z podmienionymi adresami źródłowymi na adresy ofiary.

Jeśli router dostarczy pakiet na adres rozgłoszenia IP spowoduje to, że każda

maszyna przyjmie żądanie ICMP echo i na nie odpowie. Aby zobrazować

niebezpieczeństwo ataku należy posłużyć się przykładem.

Zakładając, że napastnik posiada łącze T1, a jego celem jest sieć przełączalna

(ang. switched network) posiadająca 100 komputerów, atakujący wysyła strumień

768kb/s pakietów ping na adres broadcastowy tej sieci. Pakiety ping zostaną

wysłane do każdego z tych 100 komputerów z podmienionym adresem źródłowym

i w rezultacie zostanie stworzone dodatkowe 100 pakietów odpowiedzi, które

zostaną przesłane na adres ofiary strumieniem 76,8Mb/s, co najprawdopodobniej

spowoduje blokadę usług21.

TearDrop

Atak ten wykorzystuje błąd w module fragmentacji IP, gdzie funkcja ip_glue()

nie dokonuje sprawdzania rozmiarów pakietów, choć sprawdza czy nie są za duże.

Funkcja składania fragmentów pakietu w jedną całość działa w pętli kopiując

oczekujące dane z kolejki i umieszcza je w nowo alokowanym buforze.

Gdy pakiety te są zbyt małe, funkcja memcopy() przenosi ciągi bajtów w inne

miejsca niż powinna, co z kolei powoduje zawieszenie, bądź restart systemu.

21 Craig A. Huegen, The lastest in Denial of Service attacks: „Smurfing”, 1997

Page 69: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

70

Land

Atak tego typu swoją nazwę przejął od narzędzia, które wykorzystuje podatność

niektórych implementacji TCP/IP na pakiety SYN, w których adres źródłowy

i docelowy są identyczne. Przy obecnej technologii protokołu IP nie jest możliwe

wyeliminowanie sfałszowanych pakietów, można jednak zmniejszyć

prawdopodobieństwo użycia ich w sieci poprzez filtrowanie pakietów

wychodzących, które mają adres źródłowy inny niż te z sieci lokalnej22.

Email bombing

Typowa bomba poczty elektronicznej (ang. E-mail Bomb) jest serią wiadomości

wysłanych do skrzynki odbiorczej ofiary. Celem takiego ataku jest zapełnienie

konta mało istotnymi wiadomościami. Użytkownik korzystający

z komutowanego dostępu do Internetu jest wiec narażony na poniesienie znacznie

większych kosztów, jak i na stratę czasu. Praktyka taka jest stosowana przez wiele

osób korzystających z grup dyskusyjnych. Używają tego jako lekarstwo na

„spamerów” zasypujących grupę wiadomościami nie na temat lub z różnorodnymi

reklamami. Obecnie zauważa się tendencję do wysyłania plików instalacyjnych

Windows NT lub Windows 98.

W rzadkich przypadkach bomby pocztowe mogą spowodować blokadę

świadczonych przez serwer usług. Stosowane przeciwko słabszym systemom, mogą

skutecznie zablokować łącza i zapełnić wolne miejsce na dysku twardym, co jest

równoczesne z unieruchomieniem serwera.

22 CERT Advisory CA-97.28, IP Denial-of-Service Attacks, 1997

Page 70: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

71

Jedną z metod obrony jest filtrowanie poczty elektronicznej. Określając zasady, na

których jedne wiadomości są pozostawiane w naszej skrzynce odbiorczej, inne zaś

kasowane lub przenoszone do innych folderów, mamy pewną kontrolę nad

przychodzącą pocztą. Inną metodą, gdy jesteśmy nagminnie nękani, jest kontakt

z administratorem serwera, z którego korzysta nadawca. W większości przypadków

takie działanie odnosi skutek. Możliwe jest też zablokowanie napływu poczty spod

danego adresu już na poziomie routera.

Bardziej samodzielni użytkownicy kierują się zasadą „oko za oko” i za każdy

nadesłany list wysyłają nadawcy 10 podobnych. Sytuacja jest dosyć

kontrowersyjna, ponieważ nadawca może korzystać z programów umożliwiających

wysyłanie anonimowych wiadomości lub korzysta z cudzych kont. Możemy się

więc spotkać z tym, że to my zasypiemy niewinną osobę stosem śmieci i to my

dostaniemy upomnienie od administratora lub w ogóle stracimy konto. Sytuacja

taka oczywiście może nie mieć miejsca, jeśli zabezpieczymy się tak, jak nasz

napastnik. W każdym razie takie zachowanie z naszej strony jest nieetyczne

i niepotrzebnie zwiększa ruch w sieci.

Email spamming

Jest to odmiana Email bombing’u ponieważ dotyczy większej ilości użytkowników,

a polega na wysyłaniu wiadomości do wszystkich użytkowników danego serwera.

Jest to metoda stosowana najczęściej do reklam, rzadziej do wyrządzania

jakichkolwiek szkód.

Page 71: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

72

Listy dyskusyjne

Ostatnio modna jest inna, bardziej subtelna forma zapełniania konta pocztowego.

Napastnik podszywając się pod innego użytkownika, zapisuje go na wiele list

dyskusyjnych jednocześnie. Lista dyskusyjna działa w ten sposób, że jej członkowie

piszą na jeden wspólny adres, a kopie tych wiadomości rozsyłane są do wszystkich.

Rezultaty takiego działania mogą być katastrofalne. Zakładając, że ofiara została

zapisana na 200 list dyskusyjnych, z których każda ma po 50 członków

wysyłających średnio 2 listy dziennie, to okaże się, że na naszym koncie każdego

dnia pojawi się około 20000 wiadomości. Jeśli wiadomości te zawierają tylko sam

tekst o średniej wielkości 5KB, to otrzymujemy prawie 80MB wiadomości

dziennie. Niektórzy użytkownicy wysyłają listy w formacie HTML, czyli

o kilkukrotnie większej objętości, a niejednokrotnie nawet pliki binarne! To chyba

pozwala uzmysłowić sobie skalę zagrożenia. Można jeszcze dodać, że część

użytkowników posiada skrypt automatycznie odpowiadający na otrzymaną

wiadomość listem grzecznościowym z podziękowaniami i zapewniający

o otrzymaniu odpowiedzi. Takie zachowanie w tym konkretnym przypadku

doprowadzi do tego, że ofiara będzie dodatkowo dostawać kopie własnych listów.

Napastnik celowo wybiera okres dłuższej nieobecności użytkownika, kiedy to

tysiące wiadomości w sposób niekontrolowany gromadzi się w skrzynce pocztowej.

Zazwyczaj prowadzi to do blokady usług, szczególnie gdy ofiara ma limitowaną

przestrzeń dyskową (ang. quota). Zastosowanie filtrów nie przyniesie rezultatów,

ponieważ wiadomości przychodzą z adresami nadawców. Istnieje oczywiście

możliwość zastosowania zaawansowanych filtrów przeszukujących nagłówki

wiadomości i wyodrębnienie z nich adresów serwerów. Anulowanie subskrypcji

danej listy nie jest proste, zwłaszcza że każda z nich może używać do tego innych

procedur. Znalezienie takich informacji jest bardzo pracochłonne, gdyż

w otrzymywanych wiadomościach zazwyczaj nie ma tych instrukcji i pozostaje

Page 72: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

73

tylko poszukiwanie ich w Internecie. Niektóre listy nie umo liwiają

natychmiastowego usunięcia użytkownika, ponieważ zakładają z góry

kilkumiesięczną subskrypcję. Najprostszym wyjściem z tej sytuacji jest usunięcie

aktualnego konta i zmiana adresu pocztowego.

Finger redirect

Finger jest usługą umożliwiającą uzyskanie informacji o użytkownikach na danym

serwerze. Większość wersji demona fingerd umożliwia przekierowanie do innego

hosta, np.:

$ finger @[email protected]

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.

Page 73: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

74

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.

Page 74: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

75

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

Page 75: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

76

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

Page 76: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

77

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.

Page 77: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

78

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.

Page 78: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

79

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.

Page 79: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

80

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.

Page 80: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

81

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 <stdio.h>

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 Źródło: Andrzej Dudek, Nie tylko wirusy, str. 193

Page 81: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

82

/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

Page 82: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

83

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 stream tcp nowait root /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 Źródło: opracowanie własne

Page 83: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

84

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 źródłowego

Podobnie jak to ma miejsce w przypadku koni trojańskich, jedną z metod jest

zmiana kodu źródłowego programu i jego podmiana w systemie. Ponieważ do

większości odmian Unix'a dostępne są kody źró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.

Page 84: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

85

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

Page 85: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Ataki na systemy komputerowe

86

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.

Page 86: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Rodzaje zabezpieczeń

87

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

Page 87: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Rodzaje zabezpieczeń

88

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 źró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 źró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.

Page 88: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Rodzaje zabezpieczeń

89

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.

Page 89: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Rodzaje zabezpieczeń

90

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 źró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

Page 90: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Rodzaje zabezpieczeń

91

(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ń.

Page 91: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Rodzaje zabezpieczeń

92

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

Page 92: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Rodzaje zabezpieczeń

93

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

Page 93: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Rodzaje zabezpieczeń

94

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ć źródłem potencjalnych

ataków.

26 Łukasz Ziółkowski, Firewall czyli ściana ognia, 1999

Page 94: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Rodzaje zabezpieczeń

95

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.

plikkonfiguracyjny

wzorcowabaza sygnatur

porównanie

generowaniesygnatury

baza nowychsygnatur

raport

Pliki na stałe w systemie

Rys. 13. Schemat działania programu Tripwire.

Page 95: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Rodzaje zabezpieczeń

96

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

Page 96: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Rodzaje zabezpieczeń

97

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.

Page 97: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Rodzaje zabezpieczeń

98

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.

Page 98: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Rodzaje zabezpieczeń

99

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ą

Page 99: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Rodzaje zabezpieczeń

100

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.

Łą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 kolizjiIlość identycznychsygnatur 1 2 3 4 5 6 7 8 ≥9

Łącznie

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

Page 100: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Rodzaje zabezpieczeń

101

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.

Page 101: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Rodzaje zabezpieczeń

102

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.

Page 102: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Rodzaje zabezpieczeń

103

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

Page 103: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Rodzaje zabezpieczeń

104

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

Page 104: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Rodzaje zabezpieczeń

105

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.

Page 105: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Zakończenie

106

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óźniejszy 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óźniejsze 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.

Page 106: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Bibliografia

107

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

Page 107: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Bibliografia

108

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 Łukasz, 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

Page 108: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Bibliografia

109

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/

Page 109: Spis treści - d_izydor/Bezpieczenstwo systemow komputerowych.pdfObszary poufne (ang. security domains). Jest to rozszerzenie problemu bezpieczeństwa na sprzęt komputerowy. W tym

BEZPIECZEŃSTWO SYSTEMÓW KOMPUTEROWYCH

Spis tabel i rysunków

110

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.