Praca Dyplomowa BezpieczeĹ stwo SystemĂłw Komputerowych A Hakerzy, prace doktorskie, magisterskie, Prace Magisterskie, Prace Magisterskie i inne, Prace Magisterskie i inne


Uniwersytet Warmińsko-Mazurski

Wydział Matematyki i informatyki

Adam Kiewisz

Bezpieczeństwo systemów komputerowych a hakerzy

Praca napisana w Katedrze

Informatyki i Badań Operacyjnych

pod kierunkiem

dr Haliny Tańskiej

0x01 graphic

Olsztyn 2004

Spis treści

Wstęp…………………………………………………………………………. 3

Rozdział I - Problem bezpieczeństwa………..…………….………… …….. 4

1.1. Rozwój Internetu……………………………….………………………. 4

1.2. Przyczyny naruszenia bezpieczeństwa………….……………….…..… 5

1.3. Postać komputerowego włamywacza……..…….…………………....... 6

1.4. Protokół TCP/IP……………………………….……………….……… 8

Rozdział II - Ataki na systemy komputerowe………….………….……… 16

2.1. Rodzaje ataków………………………………….…………….……….16

2.2. Ataki pasywne…………………………………..…………….………..17

2.2.1. Skanowanie……………….……….………….…………...……..17

2.2.2. Węszenie……………………….…….……………..…..………..25

2.3. Ataki aktywne…………….…………………………………………….28

2.3.1. Podrabianie…………………….………………….…….……….28

2.3.2. Przejmowanie sesji……………….………………………….…..32

2.3.3. Konie trojańskie………….………………………....……………35

2.3.4. Ataki typu DoS…….……….……………………………………38

2.3.5 Ataki przepełnienia buforu..…….……………....……………….44

Rozdział III - Rodzaje zabezpieczeń systemów komputerowych……….. 47

3.1. Podstawowe zagadnienia bezpieczeństwa…………..………….……….47

3.2 Techniki zabezpieczeń przed włamaniami……………….. …………….51

3.2.1 Firewall……………..………………………………………………51

3.2.2 Usługi szyfrowania………..……………………………….……….60

3.2.3 Kerberos……..…………………………………………….……….64

Zakończenie…………………………………………………………….……….68

Streszczenie……………………………………………………………………..69

Bibliografia…………………………….………………………………………..70

Spis tabel i rysunków…………………………………………………………72

Wstęp

W ostatnich latach obserwuje się dynamiczny rozwój Internetu. Ilość jego użytkowników wzrasta, co spowodowane jest możliwościami, jakie nam daje komunikacja z całym światem. Coraz więcej osób korzysta z Internetu zarówno w domu, jak i w pracy zawodowej. Staje się on powoli nieodłącznym elementem naszego codziennego życia. Zrobienie zakupów nie wiąże się już jednoznacznie z pójściem do sklepu, a przeczytanie książki z koniecznością jej kupna. Wraz ze wzrostem znaczenia Internetu, powiększa się stale przepływ informacji poprzez sieć. Rośnie także ich znaczenie i niezbędna staje się ich poufność. Łatwo korespondować z ważnymi osobami, bądź dokonywać transakcji elektronicznych nie wychodząc nawet z domu. Dla niektórych osób, takie informacje mogą okazać się niezwykle cenne. Niezbędne jest zatem zadbanie o ich bezpieczeństwo, ponieważ ze względów finansowych, kradzież danych staje się powoli nową profesją. Można sobie wyobrazić znaczenie, jakie miałoby pozyskanie cennych informacji przez jedną z konkurujących ze sobą firm.

Celem pracy jest uświadomienie, co do potencjalnych zagrożeń, jakie niesie ze sobą podłączenie do Internetu. Opisując różne techniki ataków i metody ograniczające ich skuteczność, starałem się uzmysłowić niebezpieczeństwo, na jakie są narażone poufne informacje przesyłane w sieci. W pierwszym rozdziale postaram się wytłumaczyć problem, związany z włamaniami do systemów komputerowych pracujących w sieci, przeprowadzić charakterystykę osób niosących zagrożenia, oraz dokonam wprowadzenia do tematyki protokołu TCP/IP będącego podstawą całego Internetu. Drugi rozdział zawiera opis najważniejszych technik, jakimi posługują się komputerowi włamywacze. W rozdziale trzecim poruszyłem problematykę metod ochrony przed potencjalnymi atakami. Zakres przedstawionych zagadnień nie wyczerpuje dogłębnie tematu pracy, ponieważ codziennie pojawiają się nowe techniki, ale z pewnością stanowi jego większą część.

Rozdział I Problem bezpieczeństwa

1.1 Rozwój Internetu

W późniejszych latach sześćdziesiątych, w okresie zimnej wojny, amerykańska agencja rządowa ARPA rozpoczęła prace nad utworzeniem strategicznej sieci komputerowej zdolnej do przetrzymania ataku jądrowego lub kataklizmów. Owocem pracy była nowa sieć komputerowa nosząca nazwę ARPANet. Nikt wtedy nie przypuszczał, że postawiono wtedy pierwszy krok, na drodze, która prowadziła do ogólnoświatowej sieci Internet. W latach siedemdziesiątych ARPANet rozrosła się przekraczając wszelkie oczekiwania twórców. W 1983 roku wprowadzono protokół TCP/IP. Był on punktem zwrotnym w dziedzinie komunikowania się za pośrednictwem sieci komputerowej. Pozwalał on na pomyślne przełączanie pakietów wysyłanych przez różnorodne sieci o dowolnej strukturze i wielkości, niezależnie od różnic pomiędzy systemami operacyjnymi. W 1986 roku powstała sieć organizacji National Science Fundation- NFSNET, do której, z racji dysponowania przez nią stosunkowo szybkimi łączami, przyłączyła się większość ośrodków uniwersyteckich. Spowodowało to zamknięcie sieci ARPANET. W 1991 roku liczba komputerów przyłączonych do Internetu przekroczyła 100 tysięcy. Według badań Nielsen-NetRatings w pierwszym kwartale 2003 roku, liczba osób na świecie z dostępem do internetu wynosiła 585 milionów. Natomiast z badań NetTrack, przeprowadzonych przez SMG/KRC Poland Media S.A., 6,29 miliona, czyli 21,1 procent Polaków w wieku od 15 do 75 lat korzystało w czerwcu 2003 roku z Internetu, z tego w naszym kraju dwie trzecie Polaków posiada komputer w domu, a 21% ma również dostęp do sieci. Przy tak rozbudowanej sieci za każdym razem, gdy łączymy się przez Internet, dostęp do nas maja setki tysięcy, a nawet miliony ludzi. Według raportu przygotowanego wspólnie przez Computer Security Institute (CSI) oraz FBI , wśród 251 firm w Stanach Zjednoczonych odnotowano prawie 202 milionów dolarów strat, spowodowanych włamaniami do sieci komputerowych w skali światowej straty liczone są w miliardach dolarów. Trudno zatem uważać problemu przestępstw Internetowych jako mało istotny.

0x01 graphic

Rys. 1. Ilość użytkowników Internetu w Polsce w latach 1998-2003 [mln]

Źródło: Opracowanie własne

1.2. Przyczyny naruszenia bezpieczeństwa

Możemy wymienić główne przyczyny mogące doprowadzić do utraty informacji, bądź naruszenia jej poufności. Są to: awaria sprzętu, błąd oprogramowania, niedozwolona ingerencja z zewnątrz lub wewnątrz systemu.

Najczęściej za sprawą naruszenia bezpieczeństwa systemów komputerowych stoi grupa mniej lub bardziej wyspecjalizowanych użytkowników, zajmująca się włamaniami do systemów komputerowych.

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

Techniki, jakimi można posłużyć się dla osiągnięcia któregoś z w/w celów, opierają się przede wszystkim na wykorzystaniu: wad protokołu TCP/IP i protokołów pokrewnych, błędów w oprogramowaniu systemowym, oraz błędów administratora lub użytkownika systemu.

Ponieważ protokół TCP/IP nie posiada żadnych wbudowanych mechanizmów szyfrowania danych, umożliwia to przechwycenie ich przez potencjalnego włamywacza. Najbardziej pospolitym sposobem naruszenia bezpieczeństwa w sieci jest pozyskanie dostępu do czyjegoś konta na komputerze przyłączonym do sieci Internet. Szczególnie niebezpieczne jest włamanie na konto administratora, gdyż umożliwia to dostęp do danych wszystkich użytkowników danego komputera i ułatwia zatarcie w systemie śladów ingerencji. Jednym z najtrudniejszych zadań administratora jest usunięcie skutków włamania, a także upewnienie się, czy nie zostały wprowadzone modyfikacje umożliwiające intruzowi ponowne włamanie.

1.3. Postać komputerowego włamywacza

W dzisiejszych czasach coraz częściej słyszymy o sytuacjach, w których tzw. hakerzy włamują się np. do serwerów znanych firm i wyrządzają poważne szkody. Nic dziwnego zatem, że większość ludzi kojarzy ich w bardzo negatywny sposób, nie zastanawiając się głębiej nad znaczeniem terminu haker. Określenie haker wywodzi się od angielskiego słowa hacking, które w swoim pierwotnym znaczeniu określało wykonywanie skomplikowanych i precyzyjnych zadań prymitywnymi narzędziami. Hakerem był ktoś, kto umiał zrobić eleganckie meble, używając tylko siekiery. Hacking we wczesnej gwarze informatycznej to po prostu ciężka praca nad jakimś zadaniem. Obecnie haker to ktoś, kto potrafi biegle poruszać się w szeroko pojętym środowisku informacyjnym - posiada zarówno specjalistyczne przygotowanie techniczne niekoniecznie udokumentowane dyplomami, jak i zasób inteligencji wystarczający do tego, by realizować własne plany bez przesadnego naruszania prawa.

Ze względu na charakter działalności programistów zajmujących się łamaniem zabezpieczeń systemów komputerowych, dzieli się ich na: hakerów, crackerów, phrackerów i phreakerów.

Haker to 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 uniemożliwienia innym ich czerpania. Crackerem jest tez ktoś, kto likwiduje zabezpieczenia programu przed nielegalnym kopiowaniem, czyli ktoś, kto nie tylko łamie zabezpieczenia, ale i także normy etyczne. To właśnie oni są często myleni przez media z hakerami.

Phracker to 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 korzysta z ukradzionych informacji dotyczących połączeń telefonicznych takich jak 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 sprawa mediów, które nakreśliły wizerunek hakera, jako przestępcy, który bezwzględnie włamuje się i kradnie. Taki stan rzeczy bardzo denerwuje prawdziwych hakerow ze starej szkoły, którzy uważają, że tacy ludzie jak crackerzy psują im opinie.
A zatem należy stanowczo zaznaczyć, że znaczenie tych dwóch grup ludzi w aspekcie włamań komputerowych jest całkowicie odmienne.

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ód.

1.4 Protokół TCP/IP

Aby lepiej zrozumieć metody, jakimi posługują się hakerzy włamując się do komputerów, należy najpierw pojąć, na jakiej zasadzie działa globalna sieć Internet. Protokół TCP/IP jest podstawowym protokołem stanowiącym szkielet całej sieci Internet, a zatem jego znajomość jest niezbędna do przeprowadzenia ataku, bądź też zbudowaniu pewnej ochrony komputera. Architektura TCP/IP powstała w niewielkim, zamkniętym środowisku akademickim, które nie potrzebowało żadnego szczególnego zabezpieczenia przesyłanych danych, gdyż komunikacja była otwarta i oparta na wzajemnym zaufaniu wąskiego grona użytkowników. Historycznie zawiera ona takie mechanizmy, które umożliwiają poprawną transmisję danych w sieci. Nie zapewnia ani poufności, ani niezaprzeczalności, ani integralności przesyłanej informacji, która może w dowolnym momencie być podsłuchana, przejęta bądź zmodyfikowana przez osoby trzecie.

Model TCP/IP

W 1984 roku Międzynarodowa Organizacja Standaryzacyjna ISO (International Standards Organization) wprowadziła siedmio warstwowy model współpracy sieci komputerowych, opisujący sposób, w jaki informacja jest przekazywana poprzez sieć z aplikacji działającej na jednym komputerze do aplikacji uruchomionej na innym komputerze. Nazwy tych warstw zdefiniowane w modelu są używane przez projektantów sieci podczas tworzenia właściwych sieci komputerowych. W sieci podzielonej na warstwy każdy moduł (warstwa) pełni określone funkcje lub oferuje sąsiednim warstwom określone usługi.

W oparciu o siedmio warstwowy model ISO/OSI stworzono implementacje dla grupy protokołów TCP/IP (rys.2), na których skoncentruje się w mojej pracy. Szczegółowo model ISO/OSI został również opisany przez Erica Cole w książce „Hacker beware” na stronie 169.

Model TCP/IP

Protokoły

Warstwa aplikacyjna

HTTP,FTP,POP3,SMTP

Warstwa transportowa

TCP,UPD

Warstwa sieciowa

IP,ICMP,IGMP

Warstwa dostępu

Ethernet, PPP, X.25

Tabela. 1. Model TCP/IP

Źródło: Richard Stevens, „TCP-IP Ilustrated Volume 1:The Protocols” , Wydawnictwo Addison-Wesley, 1994, S.2

Warstwa dostępu odpowiada za dostarczanie danych do innych urządzeń bezpośrednio dołączonych do sieci. Współpracuje ona bezpośrednio ze sprzętem oraz sterownikami odpowiedzialnymi za współpracę z siecią. W sieci lokalnej mogą to być Ethernet lub Token-Ring (różne rozwiązania sieci lokalnych). W przypadku innych sieci mogą to być protokoły PPP, SLIP lub inne. Warstwa ta współpracuje więc z interfejsem sieciowym (kartą sieciową), modemem lub innym urządzeniem pozwalającym na bezpośrednie połączenie dwóch lub więcej komputerów i separuje resztę warstw od zastosowanych rozwiązań fizycznych (niskopoziomowych). Świadczy ona usługę warstwie wyższej polegającą na wysyłaniu i odbieraniu porcji danych (zwanych ramkami) z komputerów w danej sieci fizycznej.

Warstwa sieciowa odpowiada za dostarczanie danych do urządzeń nie tylko w obrębie danej sieci fizycznej. Organizuje ona ruch tzw. pakietów IP między poszczególnymi sieciami fizycznymi połączonymi w intersieć. Korzysta z usług warstwy dostępu, sama zaś świadczy usługi dostarczania pakietu do dowolnego komputera w Internecie. W skład tej warstwy wchodzą: protokół IP (Internet Protocol), który służy do przesyłania danych między dwoma komputerami głównymi oraz protokoły pomocnicze w stosunku do IP: ICMP (Internet Control Message Protocol) oraz IGMP (Internet Group Managment Protocol). Dzięki ICMP oraz IGMP protokół IP może obsługiwać specjalne wiadomości sieciowe, takie jak komunikaty o błędach i wiadomości wielokrotne (wysyłane do co najmniej dwóch systemów). IP jest protokołem bezpołączeniowym wysyłającym dane w postaci datagramów (niezależnych od siebie, samodzielnych jednostek informacyjnych). 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.

Warstwa transportowa odpowiedzialna jest za niezawodną wymianę danych między aplikacjami. Podobnie jak warstwa sieciowa nadzoruje transmisję danych między komputerami, tak warstwa transportowa nadzoruje transmisje przez warstwę sieciową. Korzysta z warstwy sieciowej, sama zaś dostarcza usług niezawodnego transportu danych. Warstwa transportowa może stosować jeden z dwóch protokołów przesyłania wiadomości: TCP (ang. Transport Control Protocol) lub UDP (ang. User Datagram Protocol)

Warstwa aplikacyjna jest najwyżej położona. Tej warstwie odpowiadają wszelkie programy (aplikacje) Internetowe korzystające z warstwy transportowej. Tu znajdują się wszelkie konkretne zastosowania Internetu - przesyłanie plików (FTP), poczty (SMTP) i inne.

Protokół TCP

Jednym z najważniejszych protokołów warstwy transportowej modelu TCP/IP OSI, mających bez wątpienia największe zastosowanie w dzisiejszym Internecie jest TCP. Na nim bazuje HTTP (ang. Hypertext Transfer Protocol) - usługi WWW, FTP (ang. File Transfer Protocol) czy SMTP (ang. Simple Mail Protocol). TCP zapewnia zorientowaną połączeniowo, niezawodną obsługę ciągu przesyłanych bajtów. Określenie „zorientowaną połączeniowo” oznacza, że dwie aplikacje używające TCP muszą, przed połączeniem wymiany danych, nawiązać połączenie TCP. Protokół TCP służy do przesyłania danych między warstwą sieciową a warstwą aplikacji oferując 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 przypadku protokołu UDP, który nie gwarantuje dostarczenia danych, ani przesyłania ich w odpowiedniej kolejności. Protokół TCP próbuje dodatkowo zoptymalizować ruch w sieci, dąży do uzyskania maksymalnego przepływu danych w Internecie, prowadząc dynamiczną kontrolę danych w poszczególnych połączeniach. 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 IP korzysta z datagramów.

Komunikat TCP

Protokół TCP traktuje dane jako nieprzerwany strumień informacji, ale zważywszy na to, że przesyłanie danych musi odbywać się za pomocą datagramów protokołu IP, to każdy przesyłany komunikat 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.

0x01 graphic

Rys.2. Struktura komunikatu TCP

Źródło: Dominik Kruk, Lustracja przez Internet, Pckurier, 2002, nr. 8, s. 46

W tabeli 2 przedstawiono przeznaczenie poszczególnych pól komunikatu 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 za pomocą liczby 32-bitowej.

Flaga URG

Sygnalizuje modułowi TCP strony odbierającej, że pole Wskaźnik ważności 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 czyszczenia połączenia TCP kierowane 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.

Suma kontrolna TCP

Umożliwia wykrycie błędu transmisji przez moduł TCP strony odbierającej dane.

Wskaźnik ważności

Wskazuje miejsce, gdzie 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.

Tabela 2. Przeznaczenie poszczególnych pól komunikatu TCP

Źródło: Lars Kalander, „Hacker Proof- czyli jak się bronić przed intruzami”, Wydawnictwo Mikom, Warszawa 1998, s. 70

Ustanawianie połączenia TCP

Protokół TCP aby zapewnić pewną transmisję i sekwencyjny przepływ strumienia bajtów, 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 wysłania danych, wysyła do warstwy transportowej komputera głównego żądanie utworzenia połączenia TCP. Wysyłana jest wiadomość z flagą synchronizacji SYN (ang. synchronize) do odległego portu, z którym program zamierza się połączyć. To poprzez flagę SYN program typu klient daje sygnał dla serwera, że chce ustanowić 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 (ang. acknowledgment) oraz numer potwierdzenia. Po każdym wysyłaniu danych protokół TCP uruchamia licznik odmierzający czas. W przypadku, gdy licznik przekroczy ustaloną wartość, a potwierdzenie wysyłanych danych nie przychodzi, są one automatycznie retransmitowane. Podczas przeprowadzania procesu synchronizacji węzły muszą ustalić metodę potwierdzenia wiadomości. W protokole TCP identyfikacji danych dokonuje się za pomocą numeru sekwencji, wysyłanego z jednego węzła do drugiego. Numer ten można sobie wyobrazić jako liczbę wygenerowaną losowo. 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 w obydwie strony, niezależnie od 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 klienta powiększony o jeden. Jeśli zatem moduł TCP strony klienta żądający połączenia TCP wysłał numer sekwencji 2210, to w odpowiedzi modułu TCP strony serwera prześle mu w polu „numer potwierdzenia” numer 2211, co oznacza, że odebrano element danych o numerze 2210 i oczekuje się, że następny będzie miał numer 2211.

W skrócie ustanawianie połączenia TCP przebiega na zasadzie trójfazowego uzgadniania:

0x01 graphic

Rys. 3. Trójfazowe uzgadnianie połączenia TCP

Żródło: Eric Cole, „Hackers Beware” , Wydawnictwo New Riders, Pierwsza edycja, 2001, s.169

Zamykanie połączenia TCP przez program odbywa się za pomocą operacji dwuetapowego potwierdzenia. Aby zamknąć połączenie, jeden z węzłów (serwer lub klient) wysyła wiadomość zawierającą flagę FIN (ang. finish), 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 wysyła wiadomość zawierającą flagę FIN. Potwierdzenie wysyłane 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ą flagę FIN i otrzymają potwierdzenia, wtedy połączenie TCP zostanie oficjalnie zamknięte.

Rozdział II Ataki na systemy komputerowe

2.1. Rodzaje ataków

Atak na bezpieczeństwo systemów komputerowych to działanie mające na celu przeniknięcie do chronionego systemu komputerowego w celu przechwycenia lub zniekształcenia przechowywanych w nim informacji.

Techniki włamań są bardzo zróżnicowane, od bardzo prostych do bardzo wyrafinowanych. Można je ogólnie podzielić na dwie kategorie: ataki aktywne i ataki pasywne.

Ataki pasywne (ang. passive attacks), polegają na podsłuchiwaniu lub śledzeniu przesyłania danych w celu odkrycia treści komunikatu lub wykonania analizy ruchu (ang. traffic analysis) danych w sieci. Z reguły ataki pasywne są pierwszym krokiem do przeprowadzenia ataku aktywnego i mają za zadanie zebranie jak najwięcej informacji o celu ataku. Ponieważ ataki pasywne nie zmieniają danych, są bardzo trudne do wykrycia. W postępowaniu z tymi atakami należy raczej skupić się na zapobieganiu, a nie wykryciu.

Ataki aktywne (ang. active attacks), polegają na wykonywaniu zmian w strumieniu danych lub tworzeniu danych fałszywych. Rozróżnia się cztery typy ataku aktywnego:

2.2. Ataki pasywne

Zanim haker przeprowadzi aktywny atak, powinien zapoznać się ze środowiskiem swojego celu. W większości przypadków, to czy atak powiedzie się, jest bezpośrednio uzależnione od tego, jak dużo informacji napastnik zdoła uzyskać o celu. Posiadając już wszelkie informacje, haker może odwiedzić stronę internetową z listą odpowiednich exploitów (gotowych programów do przeprowadzenia ataku), ściągnąć potrzebne programy i przeprowadzić skuteczny atak.

2.2.1 Skanowanie

Skanowanie pozwala napastnikowi określić czy dany komputer jest aktywny, określić listę usług na nim dostępnych oraz poznać rodzaj i wersję zainstalowanego sytemu operacyjnego. Bardziej zaawansowane techniki pozwalają także na poznanie topologii sieci, w której pracuje komputer-cel, określenie ilości komputerów dostępnych w sieci, jak i również odszukanie istniejących zapór ogniowych. Skanowanie jest pierwszym krokiem przeprowadzanym przez hakera, pozwalającym na zebranie informacji potrzebnych do przeprowadzenia udanego ataku.

Do skanowania portów wykorzystuje się różne techniki, w zależności od użytych protokołów, z których korzystają atakowane komputery. Wszystkie z nich maja swoje wady i zalety.

Skanowanie otwarte TCP connect

Jest najprostszą metodą, wykorzystującą wywołanie systemowe. Charakteryzuje się dużą szybkością (możliwość równoległego tworzenia połączeń), nie wymaga specjalnych uprawnień w systemie, z drugiej jednak strony jest łatwo wykrywalna, nawet przez system bez jakichkolwiek zabezpieczeń. Metoda ta polega na wykonaniu próby uzgadniania trójfazowego (rys 4.) dla każdego spośród skanowanych portów TCP. Mechanizm uzgadniania trójfazowego jest dostępny w systemach zgodnych z UNIX nawet dla nieuprzywilejowanych użytkowników.

Procedura nawiązywania połączenia z portem nasłuchującym (będącym w stanie nasłuchu - ang. LISTENING) wygląda następująco:

Zakończone sukcesem uzgadnianie trójfazowe powoduje powrót funkcji connect() wartością 0, oznaczającą sukces.


0x01 graphic

Rys. 4. Skanowanie przy porcie otwartym

Źródło: http://www.it-faq.pl/itfaqarticle.asp?id=235

Przebieg nieudanej próby nawiązania połączenia z portem zamkniętym (nie będącym w stanie LISTENING) wygląda następująco:

W takiej sytuacji funkcja connect() powraca z wartością -1, która sygnalizuje błąd. Stacja skanująca zwykle natychmiast zamyka dopiero co otwarte połączenie (wywołując funkcje close()), ponieważ ilość otwartych deskryptorów jest limitowana, a wynegocjowane połączenie nie jest używane do dalszej wymiany danych.

0x01 graphic

Rys. 5. Skanowanie przy porcie zamkniętym.

Źródło: http://www.it-faq.pl/itfaqarticle.asp?id=235

Skanowanie półotwarte SYN


Ten rodzaj skanowania także korzysta ze zdefiniowanego w części pracy poświęconej połączeniu TCP uzgadniania trójfazowego i dlatego jest równie łatwy do wykrycia i zablokowania co skanowanie otwarte, mimo że nie zachodzi w tym przypadku pełne uzgadnianie trójfazowe (brakuje wysłania ostatecznego potwierdzenia przez klienta). Skanowanie półotwarte oznacza, że zakończenie połączenia następuje zanim wykonane zostanie potrójne uzgodnienie.

Wymiana segmentów następuje według poniższego schematu:

Skanowanie z flagą FIN

Podobnie, jak w poprzedniej metodzie wykrywane są zamknięte porty TCP. Otwarte natomiast wykrywane są przez zaprzeczenie. Wysłanie pakietu ze znacznikiem FIN do zamkniętego portu TCP spowoduje odesłanie przez serwer pakietu z flagą RST. Natomiast w przypadku natrafienia na port otwarty stos przekaże pakiet z flagą FIN do procesu związanego z tym portem, a więc nie nastąpi odesłanie jakiejkolwiek odpowiedzi. Istnieją dwie metody przeprowadzenia skanowania pakietami z flagą FIN. Pierwsza z nich, przez porównanie, polega na wysłaniu do serwera ciągu pakietów na poszczególne porty. Następnie porównuje się listę portów, z których przyszła odpowiedź z listą pakietów wysłanych. Druga metoda wykorzystuje określony czas oczekiwania. Do portu TCP wysyła się pakiet z flagą FIN i w rezultacie otrzymuje się pakiet RST albo czeka się określony czas oczekiwania (timeout) i następnie wysyła się pakiet ze znacznikiem FIN do następnego portu TCP. Wady i zalety tej metody są takie same, jak w przypadku skanowania z flagami SYN i ACK.

Skanowanie z flagami SYN/ACK

W metodzie tej wykorzystuje się mechanizm obsługi połączeń półotwartych z pominięciem pierwszego etapu. Klient wysyła do serwera pakiet z ustawionymi flagami SYN i ACK. Serwer, otrzymując takie połączenie traktuje je jako błąd, gdyż wywołanie nie zostało poprzedzone pakietem z flagą SYN i wysyła do klienta pakiet z flagą RST. Tak dzieje się w przypadku trafienia na zamknięty port TCP. W przypadku otwartego portu serwer nie wyśle żadnej odpowiedzi na pakiet z flagami SYN i ACK. W ten sposób następuje wykrycie przez zaprzeczenie otwartego portu. Wykrycie przez zaprzeczenie stanowi w tym przypadku wadę tej metody, gdyż nie daje stuprocentowej pewności czy port jest naprawdę otwarty. Zaletą tej metody jest z kolei możliwość omijania najprostszych zapór ogniowych.

Skanowanie Reverse ident

Technika wykorzystuje właściwości protokołu ident opisanego przez Dave Goldsmitha w „RFC 1413 Identification Protocol” , który został zaprojektowany tak, aby można było uzyskać informacje o zestawionych połączeniach pomiędzy dwoma komputerami. Na podstawie uzyskanych odpowiedzi skanujący uzyskuje informacje o nazwach użytkowników, którzy są właścicielami procesów połączonych poprzez protokół TCP. Protokół ident posiada pewne ograniczenie. Umożliwia udzielanie informacji o połączeniach zestawionych jedynie pomiędzy parą klient - serwer. Aby tego dokonać wystarczy podłączyć się po protokole HTTP i można rozpocząć skanowanie. Znalezienie procesu pracującego jako root i jego skompromitowanie umożliwia uzyskanie swobodnego dostępu do całego systemu z przywilejami root. Zaletami tej techniki są duża szybkość skanowania, oraz fakt, że nie jest konieczne posiadanie żadnych przywilejów w systemie oraz uzyskanie znaczących informacji o systemie. Wadą natomiast jest łatwość wykrycia.

Skanowanie IP ID header

Technika ta wykorzystuje pewne szczególne cechy TCP/IP. Datagram IP posiada szesnastobitowe pole identyfikatora, który jednoznacznie określa każdy wysłany przez komputer pakiet IP. Wartość tego pola zwiększana jest automatycznie - o jeden za każdym razem, kiedy wysyłany jest kolejny datagram IP. Technika ta wykorzystuje jedną ze standardowych metod skanowania np. TCP connect. W procesie tym wykorzystywany jest dodatkowy komputer, który stanowi atrapę umożliwiającą ukrycie źródła skanowania. Komputer atrapa powinien być wybrany tak, aby ruch generowany przez niego był jak najmniejszy lub zerowy. W skanowaniu biorą udział trzy komputery:

Skanowanie przeprowadza się następująco:
Komputer atakujący wysyła serię pingów do atrapy, otrzymując odpowiedzi, w których kolejne identyfikatory (id) pakietów zwiększane są o jeden.

0x08 graphic
Odpowiedź od y.y.y.y: bytes=32 seq=1 ttl=128 id=+1 win=0 time<10ms
Odpowiedź od y.y.y.y: bytes=32 seq=2 ttl=128 id=+1 win=0 time<10ms
Odpowiedź od y.y.y.y: bytes=32 seq=3 ttl=128 id=+1 win=0 time<10ms


W pewnej chwili atakujący wysyła do ofiary zmodyfikowany pakiet SYN, w którym adres źródłowy wskazuje na komputer atrapę. Jeżeli skanowany port jest otwarty, to wówczas nastąpi potrójne uzgodnienie pomiędzy komputerami Z numerami IP z.z.z.z i y.y.y.y, a co za tym idzie atrapa wyśle pakiet ACK do maszyny skanowanej. Spowoduje to powstanie pakietu o identyfikatorze większym o jeden niż poprzednio wysłany. Uzgodnienie połączenia pomiędzy z.z.z.z i y.y.y.y wpłynie zatem na odpowiedzi na PING wysyłane do x.x.x.x, które będą wyglądały następujco:

0x08 graphic

Odpowiedź od y.y.y.y: bytes=32 seq=1 ttl=128 id=+1 win=0 time<10ms
Odpowiedź od y.y.y.y: bytes=32 seq=2 ttl=128 id=+2 win=0 time<10ms
Odpowiedź od y.y.y.y: bytes=32 seq=3 ttl=128 id=+1 win=0 time<10ms

W przypadku, gdy skanowany port jest zamknięty ofiara odpowie pakietem RST/ACK a atrapa nie wygeneruje żadnego pakietu do komputera skanowanego. W tym przypadku odpowiedzi na pinga z y.y.y.y do x.x.x.x pozostaną bez zmian.

Skanowanie z flagą ACK.

Skanowanie rozpoczyna się od wysłania do serwera pakietu z flagą ACK. Zarówno w przypadku otwartego, jak i zamkniętego portu TCP od serwera zawsze przychodzi pakiet RST. Aby określić, który port jest otwarty analizuje się pole TTL lub pole WINDOW pakietu otrzymanego od serwera (w zależności od implementacji stosu jedna z tych metod może nie być skuteczna).

W przypadku analizy pola TTL zwracamy uwagę na to, które wartości TTL są niższe od innych. Niższe wartości TTL oznaczać będą porty otwarte, wyższe natomiast porty zamknięte. W przypadku zaś pola WINDOW zamknięte porty będą miały zerową wartość, otwarte zaś niezerową. Zaletą tego skanowania jest bardzo trudne rejestrowanie ruchu oraz możliwość uniknięcia wykrycia przez systemy wykrywania intruzów.

Skanowanie typu NULL

W metodzie tej do serwera wysyłane są pakiety, w których nie jest ustawiona żadna flaga z SYN, ACK, FIN, RST, URG oraz PSH. Podobnie jak w metodzie FIN i SYN/ACK wykrycie otwartych portów następuje przez zaprzeczenie. Wysłanie pakietu bez flag do otwartego portu nie spowoduje powstania odpowiedzi. Natomiast wysłanie do portu zamkniętego spowoduje otrzymanie pakietu RST. Zaletą skanowania jest omijanie systemów wykrywania intruzów, wadą zaś możliwość wykorzystania wyłącznie do systemów UNIX'owych.

Skanowanie ICMP sweeps

Polega na wysłaniu pakietu ICMP Echo reguest, czyli zwykłego pinga. Brak odpowiedzi oznacza, że host jest niedostępny. Może też oznaczać, że odpowiedź na pakiety ICMP Echo reguest jest celowo zablokowana przez skanowany system na firewallach lub routerach.

Skanowanie Broadcast ICMP

Jest to odmiana poprzedniej metody, polegający na wysyłaniu pinga na adres rozgłoszeniowy sieci (ang. broadcast address). Można w ten sposób nawet ustalić liczbę komputerów w sieci. Systemy z rodziny Microsoft nie reagują na ten typ skanowania.

Skanowanie TCP sweep


Polega na wykorzystaniu pakietu TCP jako pakietu ping, korzystając z właściwości nawiązania połączenia. TCP, jako protokół połączeniowy wymaga zestawienia połączenia z trójfazowym uzgadnianiem- wymieniane są 3 elementy kontrolne. Host nawiązuje połączenie wysyła segment z ustawionym bitem SYN (czyli numer sekwencji synchronizującej). Informuje to odbiorcę, że nadawca chce nawiązać połączenie oraz podaje numer sekwencji przesyłanych danych. Odbiorca odpowiada wysyłając segment z ustawionymi bitami SYN i ACK, potwierdzając odbiór i informując, od jakiego numeru sekwencyjnego będzie odliczał wysyłane przez siebie dane. Jeśli port jest nieaktywny, wysyła segment z flagą RST. Nadawca wysyła segment potwierdzający odbiór ACK, zawierając już pierwsze dane. Dzięki tej wymianie nadawca wie, że odbiorca jest gotowy do przyjmowania danych. Pakiety TCP sweeps są przeważnie wysyłane na porty: 21, 22, 23, 25, 80, czyli typowe usługi, których pakiety nie są blokowane przez firewalle.

Skanowanie UDP Sweep


Metoda wykorzystuje wiadomość ICMP_PORT_UNREACHABLE, która jest generowana przez zamknięty port UDP. Metoda może być nieskuteczna ze względu na fakt, iż większość zapór ograniczających odrzuca pakiety UDP.

2.2.2 Węszenie

Nazwa techniki węszenia pochodzi od angielskiego słowa sniffing. Czasownik sniff w języku angielskim znaczy „wąchać, wyczuwać w powietrzu (np. niebezpieczeństwo), zwąchać, obwąchiwać”. Węszenie jest obrazową nazwą jednej z technik pasywnego ataku, polegającej na podsłuchiwaniu ruchu w sieci. Monitorowanie ruchu w sieci oznacza wyszukiwanie wielu interesujących danych. W najbardziej oczywistym przypadku przechwytywać można informacje dotyczące uwierzytelniania (nazwy użytkowników oraz hasła), by następnie uzyskać dostęp do zasobów. Można monitorować przesyłanie także innego rodzaju informacji, na przykład poczty elektronicznej lub bieżących komunikatów. Wszystko, co jest przesyłane w ramach sieci staje się dostępne dla podsłuchującego.

Programy służące w tym celu nazywa się snifferami. Zainstalowanie sniffera w jakimś newralgicznym punkcie sieci, np. na routerze może doprowadzić do pokonania zabezpieczeń wszystkich innych stacji roboczych z nim połączonych. Niektóre protokoły, które używają haseł do weryfikacji tożsamości użytkownika, przesyłają hasło otwartym tekstem. Jeśli na drodze między użytkownikiem a serwerem znajdzie się ktoś, kto używa sniffera, pozna on nasze hasło, jak i inne informacje przesyłane tą drogą.

Protokoły owe to m.in.: Telnet, FTP, POP3, HTTP

Monitorowanie Telnetu (port 23.)

Telnet już niejako zwyczajowo jest usługą, którą program atakujący monitoruje w celu uzyskania informacji dotyczących logowania. Nie obsługuje on żadnych mechanizmów zabezpieczających z poziomu sesji i przesyła w sieci nazwę użytkownika oraz hasło w postaci tekstu jawnego (tekst pogrubiony), co przedstawia następujący przykład:

0x08 graphic
[~] % telnet localhost

Trying 127.0.0.0…

Connected to localhost.

Escape character is `^]`.

Redhat Linux relase 6.1 (Cartman)

Kernel 2.2.12-20 on an i686

login: adam

Password: biedronka

[18:03:03][redhat61]

[~] %

Rys. 6. Monitorowanie usługi Telnetu

Źródło: Opracowanie własne

Monitorowanie FTP (port 21.)

Usługa FTP (File Transfer Protocol), używana jest w celu przesyłania plików w sieci, a także przekazuje dane uwierzytelniające w postaci tekstu jawnego. W przeciwieństwie do usługo Telnet, FTP pozwala także na anonimowy dostęp do plików, kiedy to użytkownik jako swoją nazwę podaje anonymous lub ftp oraz określa dowolne hasło. Dane protokołu FTP są zazwyczaj ukrywane przez przyjazny interfejs klienta, jednak stosowny strumień danych uwierzytelniających przesyłany jest siecią w sposób jawny, co ułatwia hakerowi przejęcie interesujących go informacji. Przykład monitorowania połączenia z serwerem POP prezentuje rysunek numer 8.

0x08 graphic

[~] % telnet localhost 21

Trying 127.0.0.0…

Connected to localhost.

Escape character is `^]`.

220 localhost FTP server (Version wu-1.5.0(1) Tue Feb 17 16:48:12

USER: adam

331 Password requiem for adam.

PASS: biedronka

230 User Adam logged In.

Rys. 7. Monitorowanie połączenia z serwerem FTP

Źródło: Opracowanie własne

Monitorowanie POP3 (port 110.)

Usługa POP (Post Office Protocol) działa na serwerze sieciowym, poprzez który klienckie programy poczty elektronicznej łączą się w celu dostępu do wiadomości użytkownika znajdującego się na serwerze centralnym. Serwer POP często występując w sieciach dostawców usług internetowych (Internet Service Provider, ISP) i umożliwiają dostarczanie wiadomości elektronicznych do klientów. Treść ruchu pakietów POP często nie jest podawana szyfrowaniu, zaś dane uwierzytelniające są przesyłane w postaci jawnej. Informacje o nazwie użytkownika oraz haśle przekazuje się do odległego serwera za pomocą poleceń USER oraz PASS. Przykład prezentuje rysunek 9.

0x08 graphic

[~] % telnet localhost 110

Trying 127.0.0.0…

Connected to localhost.

Escape character is `^]`.

+OK POP3 localhost v7.59 server ready

USER: adam

+OK User name accepted, password please

PASS: biedronka

+OK Mailbox open, 24 messages

Rys. 8. Monitorowanie połączenie z serwerem POP3

Źródło: Opracowanie własne

Istnieją rozszerzenia protokołu POP, które poza szyfrowaniem sesji zapobiegają także przekazywaniu danych uwierzytelniających w postaci jawnej.

Monitorowanie HTTP (port 80.)

Protokół http (Hypertext Transfer Protocol) jest używany w celu przesyłania danych w sieci WWW. Dane te, zwykle kierowane do portu 80, są zazwyczaj monitorowane raczej w celu analizy statystyk i wykorzystywania w sieci niż samej ich zawartości. Jednak ruch HTTP może zawierać także dane uwierzytelniające i informacje o transakcjach dokonywanych za pomocą kart kredytowych- tego rodzaju dane są zazwyczaj szyfrowane w standardzie Secure Socjet Layer (SSL, warstwa zabezpieczeń łączy).

Wykrywanie snifferów w sieci jest zadaniem trudnym, gdyż działając pasywnie nie zostawiają żadnych śladów w logach systemowych. Snifery 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 dosyć kosztowne rozwiązanie. Idealnym wydaje się więc szyfrowanie danych. Jeśli nie mamy do dyspozycji szyfrowania sesji, należy skorzystać z aplikacji, które oferują silne dwukierunkowe szyfrowanie danych. Przykładem może być Secure Shell (SSH), który zastępuje standardowego telneta i przy negocjacji połączenia stosuje algorytm RSA, a po autoryzacji transmisja kodowana jest algorytmem IDEA.

Jako ciekawostkę, należy zaznaczyć, że sniffery pierwotnie używane były przez administratorów w celu identyfikacji potencjalnych problemów, jednak z czasem zostały zaadoptowane przez hakerów, jako narzędzia świetnie nadające się do przechwytywania cennych danych.

2.3. Ataki aktywne

Tego typu ataki są zwykle następstwem przeprowadzonych metod pasywnych. W tym przypadku napastnik nie ogranicza się już do monitorowania lub podsłuchu informacji przesyłanych przez sieć, lecz dokonuje już modyfikacji i fałszowania danych. Kiedy haker posiada wszelkie potrzebne informacje odnośnie architektury sieci, systemów operacyjnych i zainstalowanych zabezpieczeń, przechodzi do ataku aktywnego.

2.3.1 Podrabianie

Termin ten oznacza podszywanie się jednego komputera pod inny, upoważniony do nawiązania połączenia.

Istnieje wiele odmian podszywania się, jednak najpopularniejsze z nich to IP-spoofing oraz DNS-spoofing.

IP-spoofing

Metoda ta polega na przesłaniu pakietów ze sfałszowanym numerem IP, tak aby był rozpoznawany jako ktoś inny. Należy jednak pamiętać, że ponieważ atakujący tym sposobem ukrywa się pod „podrobionym” numerem IP, to odpowiedź na jego próbę połączenia jest wysyłana na adres sfałszowany, a nie jego.

Przykład prezentuje rysunek 7. Atakujący wysyła do Janka pakiet ze sfałszowanym numerem IP. Janek otrzymuje pakiet, ale odpowiada na numer IP, który został mu podany, a zatem nie adres atakującego. W takiej sytuacji haker nie otrzymuje żadnej odpowiedzi od Janka.

Ta metoda nosi również nazwę podrabiania na ślepo lub „ataku jednokierunkowego”, ponieważ można wysyłać tylko pakiety do ofiary (Janek), nie uzyskując żadnej odpowiedzi.

0x08 graphic
0x08 graphic
0x08 graphic
0x01 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x01 graphic
0x01 graphic

Rys. 9. Atakujący wysyłający fałszywy pakiet

Źródło: Opracowanie własne

Jeśli natomiast atakującemu uda się ulokować na drodze pomiędzy komputerem ofiary, a komputerem na który wskazuje podrobiony adres, jest w stanie uzyskać pakiety będące odpowiedzią. Tego typu pozycja hakera nosi często nazwę „man in the middle” (człowiek w środku) i widoczna jest na rysunku 8. Jest oba podobna do przejmowania sesji (session hijacking), która opisze w dalszej części pracy. Różnica polega na tym, że tutaj atakujący nie doprowadza do zerwania połączenia komputerów, na których się koncentruje.

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x01 graphic
0x01 graphic
0x01 graphic

Rys. 10. Ulokowanie atakującego w metodzie „man in the middle”.

Źródło: Opracowanie własne

DNS-spoofing

Jest to atak na serwer DNS (ang. Domain Name System), który posiada bazę danych zawierającą spis numerów IP adresów mnemonicznych. Atak DNS-spoofing polega na modyfikacji poszczególnych wpisów w tablicy DNS tak, aby klient zamiast do komputera docelowego, został skierowany do komputera hakera.

0x08 graphic

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x01 graphic
0x01 graphic
0x01 graphic

0x08 graphic
komputer docelowy serwer DNS klient

0x08 graphic

0x01 graphic

komputer hakera

Rys.11. Zasada działania DNS-spoofing

Źródło: Opracowanie własne

Istnieją pewne sposoby, które mogą ochronić przed atakiem podrobienia. Ważnym zaznaczenia jest fakt, że można ochraniać komputer, poprzez który haker próbuje wykonać atak, natomiast nie ma recepty w przypadku, gdy atakujący używając swojego komputera i podrabia adres IP. W sytuacji, gdy celem ataku może być jakaś firma posiadająca sieć wewnętrzną, można zastosować podstawowe filtry na routerach, które nie przepuszczają pakietów z zewnątrz mających adres źródłowy sieci firmy. Takiego rodzaju filtrowanie nosi nazwę ingress.

Z kolei tzw. filtrowanie engress zapobiega przed użyciem komputerów firmy w celu przeprowadzenia ataku podrabiania. Wtedy routery filtrują wszystkie pakiety wychodzące, sprawdzając, czy adres źródłowy należy do sieci lokalnej. Jeśli nie należy, pakiety zostają odrzucone, gdyż jest wtedy podejrzenie ataku podrobienia.

2.3.2 Przejmowanie sesji

Znalezienie aktualnego hasła, które może posłużyć hakerowi do włamania do systemu, należy do jednych z najtrudniejszych czynności. Gdy używane są silne lub jednorazowe hasła (ang. one-time passwords), nawet jeśli atakujący jest w stanie je podejrzeć metodą sniffingu, stają się one bezużyteczne gdy następny użytkownik zaloguje się do systemu. Aby ominąć ten problem, haker powoduje przerwanie połączenia utworzonego pomiędzy klientem a serwerem, następnie podszywa się pod klienta i podsyła serwerowi własne numery sekwencji. Dzięki temu atakujący nie potrzebuje już hasła, gdyż serwer myśli że jest on użytkownikiem prowadzącym aktywną sesje, która przeszła już przez proces autentyfikacji.

Ta metoda nosi nazwę przejmowania sesji (ang. session hijacking).

Aby mieć możliwość śledzenia przesyłanych pakietów, konieczne jest korzystanie ze sniffera, co oznacza, że haker musi mieć uprawnienia administratora na komputerze, z którego przeprowadza atak. Przejmowanie sesji jest więc połączeniem metod: węszenia i IP-spoofingu.

Aby doprowadzić do przerwania połączenia TCP należy je wcześniej rozsynchronizować. Wykorzystuje się do tego właściwość protokołu TCP polegającą na tym, że jeśli numery sekwencji pakietu nie pokrywają się z wartościami oczekiwanymi przez komputer, to zostaną one odrzucone.

Aby tego dokonać można wykorzystać jedną z trzech metod:

Aktywne rozsynchronizowanie

Metoda ta wiąże się z przerwaniem istniejącego już połączenia. Atakujący modyfikując ramki wymusza rozsynchronizowanie połączenia TCP, tak że komputery nie mogą wymieniać między sobą danych. Po rozsynchronizowaniu, numer sekwencji klienta nigdy nie jest równy poprzednio wysłanemu przez serwer potwierdzeniu oczekiwanego numeru sekwencji, dlatego serwer nie akceptuje danych i odrzuca pakiet. Następnie haker za pomocą swojego komputera przechwytuje oryginalne pakiety i tworzy ich zamienniki, które są akceptowane zarówno przez klienta, jak i serwer. Atakujący jest w stanie modyfikować dowolne dane ze strumienia, ponieważ wszystkie transmisje przechodzą przez jego komputer. W ten sposób może on do oryginalnego żądania klienta własne. Serwer po otrzymaniu pakietu odpowiada na polecenia wydane przez hakera, a także na te wydawane przez prawdziwego klienta. Przed przekazaniem odpowiedzi serwera do klienta, atakujący może usunąć odpowiedzi na swoje polecenia tak, aby użytkownik nie zauważył jego obecności.

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x01 graphic
0x01 graphic
0x01 graphic

klient haker serwer

Rys. 12. Modyfikowanie żądań klienta i usuwanie odpowiedzi serwera

Źródło: Opracowanie własne

Wczesne rozsynchronizowanie

Powoduje on przerwanie połączenia między klientem a serwerem we wczesnej, konfiguracyjnej fazie. Atakujący podglądając pakiety oczekuje na potwierdzenie zsynchronizowanego połączenia SYN/ACK wysyłane podczas drugiej fazy transmisji przez serwer do klienta. Gdy je zauważa wysyła do serwera pakiet wyzerowania RST, a następnie pakiet zsynchronizowanej odpowiedzi SYN, z parametrami identycznymi jak w pakiecie SYN/ACK serwera. Pakiet hakera ma jednak 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/ACT, który zostaje przechwycony przez hakera. Wtedy atakujący wysyła do serwera swój pakiet ACT, dzięki czemu serwer przełącza się w tryb połączenia zsynchronizowanego.

Rozsynchronizowanie pustymi danymi

Atak ten polega na wysyłaniu dużej ilości pustych danych zarówno do klienta, jak i serwera. Dane przesyłane przez hakera nie są widoczne dla klienta. Puste dane powodują przełączenie obu komputerów, połączonych w sesji TCP, do stanu rozsynchronizowania, ponieważ niweczą one zdolność komputera do otrzywania połączenia TCP.

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

Skuteczną metodą zapobiegającą przechwyceniu po rozsynchronizowaniu jest szyfrowanie transmisji na poziomie aplikacji, bądź też zastosowanie kryptograficznej implementacji protokołu TCP. Szyfrowanie strumienia bardzo skutecznie ogranicza zdolność hakera do manipulowania danymi w czasie rzeczywistym.

2.3.3 Konie trojańskie

Koń trojański jest programem często stosowanym przez hakerów pozwalającym na pokonanie zabezpieczeń systemu omijając procedury autoryzacji. Należy zaznaczyć nie jest wirusem komputerowym, ale ze względu na swoje działanie często bywa z nimi utożsamiany. Konie trojańskie mogą być zaszyte w praktycznie każdym programie, a zatem ich wykrycie jest bardzo trudne. Hakerzy często modyfikują istniejące programy i tworzą własne wersje w celu podmiany oryginału. Rezydując w plikach binarnych i pracując w tle nie ujawniają swojej obecności.

Zasada działania konia trojańskiego jest dosyć prosta. Uruchomiony zainfekowany program, wykonuje normalną pracę, bezpośrednio wynikającą z przeznaczenia programu (np. gra, demo. program użytkowy), lecz dodatkowo, w tle, wykonuje niezauważalne dla użytkownika operacje (najczęściej po prostu niszczy - kasuje lub zamazuje - dane na dysku twardym). Konie trojańskie najczęściej przenoszą się w plikach udających nowe, popularne programy kompresujące (np. ZIP, ARJ, RAR) lub też udają programy narzędziowe do obsługi dysków.
Większość koni trojańskich jest tak tworzona, aby uruchamiać się przy starcie systemu.

Klasyfikacja koni trojańskich

Jest wiele odmian koni trojańskich. Ich podziału można dokonać w oparciu o sposobów ich działania.

Źródła zagrożeń

Podstawową przyczyną zainfekowania komputera jest używanie niesprawdzonych programów, ściąganie z nieautoryzowanych stron „najnowszych wersji" oprogramowania, nierozważne otwieranie listowych załączników. W systemach Unix konie trojańskie mogą być tworzone wyjątkowo łatwo, ponieważ kod źródłowy tego systemu jest ogólnie dostępny i jego zmian może dokonać niemal każdy. Tak zmodyfikowany kod haker może umieścić na stronie WWW (np. w postaci łatki systemu) i czekać aż ofiara go ściągnie i zainstaluje na swoim, komputerze. Wybór strony WWW, na której umieszcza się tak zmienione programy też może być nieprzypadkowy. Przykładem może być nie tak dawne zdarzenie, w którym dokonano zmian kodów źródłowych tcpdump i libpcap.

Są jednak sytuacje, w których właśnie udostępnienie kodu źródłowego pozwoliło zlikwidować niebezpieczeństwo. Niechlubnym przykładem takiej sytuacji może być firma Borland ze swoim serwerem InterBase. W roku 1992 na serwerze tej firmy zostało umieszczone „tylne wejście". Pozwalało ono lokalnie i zdalnie modyfikować bazę danych, instalować dowolne oprogramowanie, a także przejąć kontrolę nad maszyną. W lipcu 2000 roku Borland zdecydował się na opublikowanie swoich kodów źródłowych i już grudniu tego samego roku „słabość" serwera InterBase została odkryta. W styczniu 2001 roku centrum bezpieczeństwa internetowego CERT wydało oficjalną wiadomość o tym fakcie. Dziurę oczywiście załatano, ale przez około 6 lat istniała i jest bardzo prawdopodobne, że była często wykorzystywana.

Metody wykrywania i usuwania

Jest wiele dziur w systemach, o których użytkownik nie ma świadomości. Zatem trzeba być na bieżąco z informacjami na temat bezpieczeństwa. Użytkownik powinien być uczulony na nienormalne działanie komputera (np. notorycznie wyświetlane komunikaty o błędnie wprowadzonym haśle). Pomocne mogą być przy tym programy monitorujące ruch sieciowy potrafiące stwierdzić, czy nie ma połączeń z nieznanymi adresami, lub nieuzasadniona aktywność na pewnym porcie. Można też posłużyć się programami typu Anti-Trojan, które potrafią wykryć i usunąć „nieproszonych gości” z systemu, ale trzeba pamiętać, że nie dają one stu procentowego bezpieczeństwa. Większość z nich funkcjonuje na zasadzie rozpoznawana charakterystycznego, wcześniej zaimplementowanego kodu. Niestety wiele nowych koni trojańskich przybywa z dnia na dzień i wiele z nich nie zostało jeszcze zbadanych.

W przypadku, gdy użytkownik znalazł i usunął konia trojańskiego powinien przede wszystkim pozmieniać wszelkiego rodzaju hasła dostępu, gdyż nie ma pewności czy nie zostały one przesłane na komputer hakera.

2.3.4 Ataki typu DoS

W ostatnich czasach coraz częściej mamy do czynienia z tego typu atakiem. Atak DoS (ang. Denial of Service) umożliwia osobie całkowite zablokowanie dostępu do świadczonych usług. Popularność zyskał sobie tym, iż jest łatwy do przeprowadzenia i niestety bardzo ciężko się przed nim chronić. Większość systemów operacyjnych (Windows NT i Unix), routerów, oraz komponentów sieciowych, pracujących z pakietami, w jakimś stopniu są podatne na ataki DoS. Jeśli haker nie jest w stanie uzyskać dostępu do komputera, może doprowadzić do zablokowania go, używając właśnie tej metody. Oznacza to, że nawet często uaktualniany i dobrze zabezpieczony system może nie być w stanie się obronić. W pewnych przypadkach ataki typu DOS mogą być także częścią innego ataku, mającego na celu uzyskanie dostępu do systemu. Można wymienić dwa główne rodzaje ataków odmowy obsługi.

W pierwszym przypadku dochodzi do zablokowania systemu lub sieci w taki stopniu, że aby odzyskać funkcjonalność potrzebna jest interwencja człowieka. Przykładowo jeśli atakujący prześle ofierze pakiety, które nie są oczekiwane, może to doprowadzić do zawieszenia lub przeładowania systemu. Jest to bardzo atrakcyjna metoda zważywszy, że aby unieruchomić komputer potrzeba tylko paru pakietów. Unieruchomienie systemu przy ataku odmowy obsługi bazuje na wykorzystaniu niedoskonałości protokołu TCP/IP.

W drugim przypadku system zasypywany jest taką ilością informacji, że nie jest w stanie na nie wszystkie odpowiedzieć. Jeśli przykładowo możliwe jest obsłużenie przez system 10 pakietów na minutę, to wysłanie przez hakera w ty czasie 20, podczas gdy inni użytkownicy starają się połączyć, doprowadzi do przeciążenia łącza i zablokuje usługę. Jeśli atakujący po pewnym czasie przestanie zalewać system pakietami, maszyna może dalej kontynuować normalną pracę. W przeciwieństwie do pierwszej metody, sposób ten polega na całkowitym obciążeniu sieci do tego stopnia, że niemożliwy jest dalszy transfer danych. W takiej sytuacji nie ma potrzeby interwencji człowieka.

Aby haker był w stanie wygenerować tego typu obciążenie sieci, może posłużyć się techniką zwaną DDoS (Distributed Denial of Service).Jest to zmodyfikowana wersja ataku DoS. Polega na wysłaniu do serwera internetowego w krótkim czasie dużej liczby żądań z wielu różnych adresów - jest to w istocie atak DoS przeprowadzany z setek lub nawet tysięcy komputerów. Z tego powodu DDoS niesie ze sobą nieporównywalnie większe zagrożenie niż zwykły DoS. Typowy DDoS rozpoczyna się wysłaniem przez inicjującego sygnału ataku dla węzłów głównych - kilku komputerów koordynujących pracę wszystkich pozostałych maszyn-węzłów. Sieć węzłów jednocześnie rozpoczyna wysyłać do serwera-ofiary ogromną liczbę żądań, zazwyczaj pobrania strony WWW o skomplikowanej strukturze (wymagającej dodatkowych, złożonych obliczeń po stronie serwera). Taka lawina zapytań powoduje problemy z dostępem do serwera innych użytkowników; przekroczenie możliwości serwera sprawia, iż nie jest on już w stanie poprawnie działać. Słynna seria ataków DDoS miała miejsce w lutym 2000, kiedy to pod naporem masowych zapytań przestało działać kilka znanych serwisów, w tym CNN i Yahoo. W wielu krajach DDoS uznany został za poważne przestępstwo komputerowe.

0x08 graphic
0x08 graphic
0x01 graphic

0x08 graphic
0x08 graphic
atakujący

0x08 graphic

0x01 graphic
0x01 graphic
0x01 graphic
0x01 graphic
0x01 graphic

system system system system system

0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
0x08 graphic
w Niemczech we Francji w Finlandii w Bułgarii w Norwegii

0x01 graphic

ofiara

Rys. 13. Atak przeprowadzony metodą DDos.

Źródło: Opracowanie własne

Przeprowadzenie ataku odmowy obsługi jest bardzo proste, a jego efekt jest niesamowicie destrukcyjny. Sprawa jest o tyle poważniejsza, że wszelkie narzędzia (tzw. exploity) potrzebne do jego przeprowadzenia są łatwo dostępne w Internecie. Do najpopularniejszych exploitów możemy zaliczyć: SYN Flood, Ping of Death oraz Smurf.

SYN Flood

Zasada działa SYN Flood polega wykorzystaniu właściwości trójfazowego uzgadniania połączenia TCP i jest skuteczna w przypadku większości dostępnych systemów operacyjnych. Biorąc pod uwagę ciągle powiększającą się strukturę Internetu, większość przesyłanych pakietów zanim dotrą do miejsca przeznaczenia, przechodzą w drodze przez wiele maszyn. Skutkiem tego, wiele pakietów dociera z dużym opóźnieniem albo ulegała zagubieniu. Aby nawiązać połączenie, serwer musi poczekać na potwierdzający pakiet ACK od klienta. Jeśli go nie otrzyma, ponownie wyśle własny pakiet ACK i zanim odrzuci żądanie połączenia, powtórzy operacje kilkukrotnie (z reguły 5-6 razy). Za każdym razem, gdy serwer ponawia wysłanie pakietu ACK, czas jego oczekiwania zwiększa się dwukrotnie. Tak więc, przy założeniu, że serwer ponawia oczekiwanie 6 razy i zaczyna od opóźnienia 3 sekund, to zanim odrzuci żądanie klienta minie 198 sekund. Korzystając z tych właściwości, haker przy użyciu techniki spoofingu, wysyła pakiety synchronizacji SYN do serwera, z fałszywym adresem zwrotnym, należącym do maszyny, która jest w tym czasie wyłączona lub odłączona od sieci. Serwer odpowie pakietem ACK i będzie czekała na odpowiedź od klienta, która nigdy nie nadejdzie. W rezultacie gniazdko serwera zostanie zablokowany na pewien okres czasu.

Na poniższym rysunku przedstawiłem, jak może wyglądać tego typu atak. Haker (podrobiony.pl) korzystając z podrobionego adresu źródłowego wysyła trzykrotnie pakiet synchronizacji, a zatem serwer (192.168.20.23) za każdym razem nie uzyskuje odpowiedzi na pakiet ACK i nie może zostać ukończone trójfazowe uzgadnianie.

0x08 graphic

Rys. 14. Atak SYN Flood przeprowadzony przeciwko usłudze Telnetu.

Źródło: Opracowanie własne

Efekt działania tego typu ataku, jest zależny od jego stopnia nasilenia słabości systemu. Początkowo tego typu ataki były uznawane za niemożliwe do wyśledzenia, ponieważ haker korzystał z podrobionego adresy zwrotnego. Dodatkowym utrudnieniem mogły być kolejne zmiany numeru IP atakującego.

Skuteczną obroną jest zmiana adresu IP zaatakowanego komputera. Zaraz potem należy przeprowadzić rekonfigurację serwerów DNS. W efekcie atakujące pakiety będą docierały na zły adres. Metoda ta jest jednak nieskuteczna, jeśli atakujący ustawił jako cel ataku nazwę komputera.

Ping of Death

Specyfikacje RFC 791 dotyczące protokołów internetowych, dopuszczają maksymalny rozmiar pakietów do 65536 oktetów (bajtów), z czego 20 oktetów należy do nagłówka IP. Żądanie ICMP ECHO zawarte w pakiecie IP składa się z 8 oktetów informacji nagłówka ICMP i znajduje się zaraz po kilku oktetach danych w popularnym żądaniu ping. A zatem na pole danych pozostaje 65508 oktetów (65536-20-8=65508). Korzystając jednak z fragmentacji pakietów jest możliwe stworzenie ponad wymiarowego pakietu ECHO zawierającego więcej niż 65508 oktetów. Fragmentacja występuje wtedy, gdy poprzez Internet przesyłany jest pakiet dużych rozmiarów. Wtedy router dzieli taki pakiet na wiele małych kawałków, aby możliwe było jego dalsze przesłanie. Komputer docelowy otrzymuje te fragmenty i nie zacznie przetwarzania pakietu dopóki nie złoży go w jedną całość. Jeśli wewnętrzne 16 bitowe zmienne ulegną przepełnienia (ang. buffer overflow), może doprowadzić to do restartowania lub zawiedzenia komputera. Jest to błąd który występuje w takich systemach jak Windows 95, Windows 3.11, MacOS, Windows NT 3.5.1.

Rozwiązaniem problemu może być przeprowadzenie aktualizacji systemu i zainstalowanie odpowiedniego patcha. Skuteczne jest również ustawienie blokady „pingów” na Firewallu. Ping of Death staje się już raczej „archaiczną” metodą ataku i większość nowszych systemów jest na niego odporna.

Smurf

Atak typu Smurf polega na wysyłaniu dużej ilości pakietów ICMP echo (ping) na adresy rozgłoszeniowy (ang. Broadcast Address) z podrobionym adresem źródłowym. W sieci rozgłoszeniowej mogą być potencjalnie setki komputerów i każdy z nich odpowie na pakiet ICMP. Wygeneruje to bardzo duży przepływ danych na podrobiony adres IP i może dojść do przeciążenia sieci. Przy tego typu ataku narażone jest zarówno urządzenie rozgłoszeniowe jak i komputer istniejący pod podrobionym adresem.

Aby lepiej zobrazować mechanizm ataku, posłużę się następującym przykładem. Jeśli haker posiada łącze typu ADSL 512kb/s (Neostrada) a jego celem jest sieć przełączalna posiadająca 100 komputerów. W momencie, gdy prześle na adres rozgłoszeniowy strumień 512kb/s pakietów ping z podrobionym adresem źródłowym, zostanie on rozesłany do wszystkich 100 komputerów i w rezultacie zostanie stworzonych dodatkowe 100 pakietów odpowiedzi. Wygeneruje to transfer rzędu 51,2 Mb/s na adres ofiary i spowoduje zablokowanie komputera.

Metodą ochrony przed tego typu atakiem może być wprowadzenie filtrowania wszystkich pakietów wchodzących i wychodzących na routerach jak i zablokowanie adresów rozgłoszeniowych.

2.3.5 Przepełnienia bufora

Błędy przepełnienia bufora (ang. buffer overflow) to największy z istniejących podzbiór wszystkich luk w zabezpieczeniach wykryty kiedykolwiek w systemach, umożliwiający uruchomienie na atakowanym komputerze własnego kodu. Początkowo technika ta stosowana była w systemach rodziny UNIX, lecz z biegiem czasu znalazła też swoje miejsce w środowisku systemowym Windows NT. Przepełnienie bufora pozwala wykorzystać uprawnienia atakowanego programu. Celem są funkcje stosowane w nieodpowiedni sposób przez programistów w fazie tworzenia programów w języku C /C++ takie jak strcpy(), strcat(), gets(), nie sprawdzające długości wprowadzanych danych. Przepełnienie bufora polega na dostarczeniu dłuższego łańcucha znaków, niż jest oczekiwany. Można tak zmodyfikować bufor, że adres powrotny funkcji wskaże procedurę, która na przykład uruchomi powłokę z uprawnieniami administratora.

Większość nowoczesnych systemów komputerowych używa stosu, aby przekazać argumenty procedurom i aby zachować lokalne zmienne. Stos jest obszarem pamięci zorganizowanym w ten sposób, że ostatni położony tam element jest z niego pobierany w pierwszej kolejności (kolejka LIFO - ang. Last In First Out). Kiedy program wywołuje funkcję tworzona jest nowa ramka stosu. Ta ramka stosu składa się z argumentów przekazanych do funkcji jak również dynamicznej ilości przestrzeni dla lokalnych zmiennych. Wskaźnik stosu jest rejestrem, który przechowuje aktualną lokacje szczytu stosu. Ponieważ wartość ta stale się zmienia jak tylko nowe wartości odkładane są na szczyt stosu, wiele implementacji również dostarcza wskaźnik stosu, który znajduje się blisko początku ramki stosu. Dlatego też lokalne zmienne mogą znacznie łatwiej być adresowane odpowiednio do tej wartości. Adres zwrotny dla wywołań funkcji jest również zapamiętywany na stosie i jest to przyczyną nadużyć przepełnienia bufora, ponieważ przepełnienie lokalnej wartości w funkcji może nadpisać adres zwrotny tej funkcji, potencjalnie zezwalając hakerowi na wykonanie dowolnego kodu i przejęcia kontroli nad komputerem.

Mechanizmy ataków buffer overflow są złożone i trudne do zrozumienia. Wymagane są określone wiadomości z zakresu języków C/C++, asemblera oraz budowy i zarządzania pamięcią komputera. Wiedza taka jest potrzebna także po to, by świadomie chronić siebie i własny system (niezależnie od tego, czy jest to pojedynczy komputer, własny program, czy też sieć komputerowa).

Ochrona przed tymi atakami nie należy do rzeczy prostych, ponieważ źródłem niebezpieczeństwa jest niepoprawny sposób programowania twórców aplikacji. A zatem jeśli nie mamy do dyspozycji kodu źródłowego, na którym można przeprowadzić modyfikacje i ponownie skompilować, niezbędne jest zabezpieczenie od zewnątrz podatnych na atak programów działających na komputerze.

Można tego dokonać na wiele sposobów :

Rozdział III Rodzaje zabezpieczeń systemów komputerowych.

3.1. Podstawowe zagadnienia bezpieczeństwa

Problematyka systemów komputerowych stała się w ostatnich czasach bardzo popularna. Jedną z przyczyn takiego stanu rzeczy jest rzeczywisty przyrost zagrożenia ze strony komputerowych włamywaczy inną- zjawiska związane z globalizacją gospodarki, jeszcze inną- rozwój technologii informatycznych i Internetu, co powoduje że coraz więcej wcześniej odizolowanych sieci lokalnych posiada teraz połączenie ze światem, co naraża je na ataki hakerów. Istnienie zabezpieczeń i to zabezpieczeń stosunkowo silnych jest więc koniecznością bez względu na wartość przetwarzanej w systemie informacji. Niestety wielu przypadkach konieczność ta bywa uświadamiana dopiero po zaistnieniu naruszenia bezpieczeństwa.

W dokumencie "Trasted Computer Standards Evaluation Criteria", znanym także jako "Orange Book", Departament Obrony USA zdefiniował siedem poziomów bezpieczeństwa komputerowego systemu operacyjnego. Różne poziomy określają różne sposoby zabezpieczania sprzętu, oprogramowania i danych. Klasyfikacja ma charakter "zawierania", co oznacza, że wyższe poziomy mają wszystkie cechy poziomów niższych.

Klasa D

Minimalna ochrona (ang. minimal protection).Klasa D określa najniższy poziom bezpieczeństwa oznaczający całkowity brak wiarygodności systemu. Poziom ten nie wymaga weryfikacji, ponieważ cechuje go brak jakichkolwiek zabezpieczeń.

Jedynie co można zrobić to ograniczyć dostęp fizyczny do systemu. Każdy użytkownik, który ma dostęp do systemu może z nim zrobić wszystko

Klasa C1

Dobrowolna kontrola dostępu (ang. discetionary 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 załogować 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. superużytkownika (np. root w systemie Unix) lub użytkownik taki nie jest bardziej bezpieczny niż pozostali. Klasa C1 jest pozbawiona mechanizmów rejestrowania zdarzeń. Informacja o nazwach kont oraz zakodowane hasła są dostępne dla wszystkich użytkowników. Istnieje duże niebezpieczeństwo rozkodowania hasła na postawie zaszyfrowanego ciągu.

Klasa C2

Dostęp kontrolowany (ang. controlled access protection). System operacyjny pracujący na tym poziomie gwarantuje automatyczne rejestrowanie wszystkich istotnych z punktu widzenia bezpieczeństwa zdarzeń i zapewnia silniejszą ochronę kluczowych danych, takich jak baza danych haseł użytkowników systemu.

Istnieje również 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. 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 przypisanie każdemu obiektowi systemu etykiety bezpieczeństwa określającej status tego obiektu w odniesieniu do przyjętej polityki bezpieczeństwa. Przykładowo, gdy obiekt użytkownik żąda dostępu do obiektu folder, system ochrony przyjmuje lub odrzuca to żądanie na podstawie porównania zawartości etykiet bezpieczeństwa tych obiektów. Etykiety te mogą się zmieniać 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 obowiązkowe jest chronienie zarówno przesyłanej jak i przechowywanej informacji. Dla przykładu: terminale muszą być połączone z serwerem za pośrednictwem specjalizowanego sprzęty i wiarygodnego okablowania, co da gwarancje że nikt nie będzie w stanie przechwycić znaków wciskanych na naszej klawiaturze.

Klasa A1

Zweryfikowana realizacja systemu (ang. verified design). 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ść. Wymaga formalnego dowodu, że system jest zgodny z wymaganiami. Problemem pojawiającym się jednak w systemie pracującym w tej klasie jest duże obciążenie spowodowane uaktywnieniem opcji bezpieczeństwa. Może okazać się, że serwery nie będą w stanie obsłużyć wszystkich użytkowników po uruchomieniu wszystkich programów zabezpieczających, co ciągnie za sobą duże obciążenie procesora i powierzchni dyskowej.

Aktualnie na rynku dostępnych jest wiele narzędzi przeznaczonych do ochrony systemów komputerowych. W pewnym sensie mamy do czynienia z bardzo modnym trendem rynkowym zabezpieczania systemów. Moda ta jest bardziej nakazem chwili niż nie mającym podstaw wymysłem, ale zarówno najbardziej zaawansowane aplikacje programowe i produkty sprzętowe dedykowane do ochrony naszej sieci nie zastąpią kluczowego elementu - polityki bezpieczeństwa.

Polityka bezpieczeństwa

Polityka bezpieczeństwa to plan lub sposób działania przyjęty w celu zapewnienia bezpieczeństwa systemów i ochrony danych. Jest to zbiór dokumentów określający zasady ochrony informacji w danej organizacji. Dokumenty te powinny zawierać: wyjaśnienia, jasno sformułowane prawa, obowiązki i zakres odpowiedzialności osób mających związek z obiegiem informacji, procedury ochrony informacji oraz procedury działania w przypadku naruszenia bezpieczeństwa systemu. Bezpieczeństwo systemów komputerowych z punktu widzenia polityki bezpieczeństwa należy postrzegać bardzo szeroko. Niezbędne jest rozważenie wszystkich możliwych zagrożeń - zarówno tych zewnętrznych jak i wewnętrznych. Należy wziąć pod uwagę wiele czynników takich jak: topologia sieci, użytkowane systemy operacyjne i sposoby autoryzacji użytkowników.

Budowa polityki bezpieczeństwa realizowana jest w następujących etapach:

Dopiero w momencie zatwierdzenia projektu systemu ochrony przez kierownictwo organizacji można przystąpić do wyboru oprogramowania, które sprosta zadaniu wdrożenia przyjętej polityki bezpieczeństwa. Z uwagi na dużą ilość dostępnych rozwiązań, wybór najbardziej odpowiedniego produktu nie jest łatwy.

3.2 Techniki zabezpieczeń przed włamaniami

3.2.1 Firewall

Najbardziej skutecznym sposobem zmniejszania potencjalnych zagrożeń bezpieczeństwa wynikających z podłączenia do sieci, jest fizyczne odseparowanie wszystkich komputerów wspomagających realizację istotnych zadań komputerów przechowujących strategiczne informacje. Z praktycznego punktu widzenia, oznacza to całkowitą przebudowę fizycznej struktury systemu informatycznego. Rozwiązaniem tego problemu jest zastosowanie oprogramowania zwanego „ścianą ognia” (ang. firewall) służącemu ochronie systemu lokalnego przed ingerencją zewnętrzną. Jest to zwykle dedykowana maszyna sprawdzająca przepływ pakietów, które przepuszcza lub blokuje zgodnie z regułami ustalonymi przez administratora. Zapora ogniowa jest kompromisem między siecią izolowaną od Internetu a siecią swobodnie do niego przyłączoną. Umieszczana między siecią lokalną firmy a Internetem, daje prosty mechanizm kontroli ilości i rodzaju ruchu sieciowego i tym samym 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 zdobycia przez nich punkty zaczepienia po jej wewnętrznej stronie.

Zapory ogniowe możemy podzielić na trzy kategorie: na poziomie sieci, aplikacyjne i filtrujące.

Firewall na poziomie sieci

Zaporę ogniową na poziomie sieci przeważnie jest realizowana za pomocą routera lub innego specjalnego komputera filtrującego pakiety. Każdy pakiet IP zawiera takie dane jak adres urządzenia emitującego pakiety i adres docelowy, na podstawie których zapora decyduje, czy dany pakiet przepuścić czy zatrzymać. Protokoły takie jak TCP czy UDP dodają do nagłówków pakietów standardowe numery portów źródła i punktu przeznaczenia, identyfikujące aplikacje związane z tymi urządzeniami. Na podstawie analizy portu przeznaczenia można rozpoznać określoną usługę i w efekcie zastosować bardziej rygorystyczne reguły selekcji dla uaktywnienia lub zablokowania połączenia. Działanie zapory ogniowej na poziomie sieci oparte jest o tzw. listy dostępowe lub czarne listy, zawierające adresy które są blokowane przez zaporę. Router lub specjalny komputer może być skonfigurowany tak, aby blokować wszystkie wiadomości przychodzące z określonej firmy, oraz do niej wysyłane. Blokowanie pakietów zazwyczaj odbywa się za pomocą pliku zawierającego adresy IP określonych firm czy ośrodków. Zapora będzie wtedy blokowała wszystkie pakiety przychodzące z tych firm, lub zmierzające do nich. W momencie, gdy odnajduje on pakiet zawierający zastrzeżony adres, zatrzymuje go uniemożliwiając mu przedostanie się do sieci lokalnej. Zapora taka odpowiada także na żądania użytkowników dotyczące takich usług jak FTP, HTTP czy Telnet. Może ona być zaprogramowana na przykład w taki sposób, aby użytkownicy sieci lokalnej mieli dostęp do serwerów WWW, ale nie mogli korzystać z usługi FTP. Zazwyczaj można określić, które z informacji dołączonych do pakietu mają być kontrolowane przez router. Informacje, w oparciu o które może odbywać się selekcja to: adres źródłowy, adres docelowy, protokół sesji (np. TCP, UDP), źródłowy i docelowy port aplikacji dla żądanej usługi oraz informacja czy pakiet jest początkiem żądania połączenia.

Firewalle aplikacyjne

W tym przypadku stosowany jest routing z poziomu aplikacji. Używa się bram (ang. proxy gateways), na których ustawia się oprogramowanie działa jako pośrednik pomiędzy serwerem internetowym a klientem. Zamiast komunikować się między sobą bezpośrednio, każdy z nich porozumiewa się z serwerem proxy, który utrzymuje stan połączenia TCP między klientem a serwerem internetowym i dzięki temu każda ze stron "wierzy", że jest połączona ze sobą bezpośrednio. Serwer proxy nie tylko przekazuje żądania od klientów, ale również je analizuje. Dzięki temu ma możliwość kontrolowania tego, jakie operacje realizują użytkownicy. Mogą one zostać zatwierdzone i przekazane dalej, bądź może nastąpić ich odrzucenie.

Firewall w celu podjęcia decyzji o legalności informacji stosuje kryteria:

Filtrowanie pakietów

Filtry pakietów pozwalają lub blokują przepływ pakietów danych podczas ich przesyłania z jednej sieci lub jej segmentu do innej sieci lub jej segmentu.

W dużych sieciach zapory ogniowe najczęściej stosują filtrowanie pakietów. Polega to na sprawdzeniu czy kolejne kawałki danych przepływające przez sieć spełniają określone kryteria. Pakiety po sprawdzeniu zgodności z regułami są przepuszczane lub blokowane. Zwykle wymogi dotyczą dopuszczalnych adresów IP przychodzących i wychodzących pakietów, stosowanych protokołów sieciowych czy numerów portów serwera. Zapory oparte na filtrowaniu pakietów często rezydują nie na serwerze, lecz na odpowiednim routerze (ang. screening router), urządzeniu, które stanowi styk Intranetu z sieciami zewnętrznymi. Transmitowane są przez nie wszystkie dane wchodzące i wychodzące.

Architektura zapór ogniowych

Ze względu na architekturę ścian ogniowych, możemy je podzielić na kategorie:

Router filtrujący transmitowane pakiety

Wśród architektur typu firewall router filtrujący występuje najczęściej, niekiedy będąc jedynym elementem zabezpieczającym sieć. W zależności od rozwiązania jest to specjalizowane urządzenie sieciowe np. router lub jego odpowiednik oparty o komputer i oprogramowanie umożliwiające filtrowanie pakietów, a tym samym separację ruchu pomiędzy sieciami lub konkretnymi urządzeniami, na poziomie protokołu IP (lub IPX). Kontrola przepływu pakietów prowadzona jest w zależności od adresu IP, IPX i MAC nadawcy lub odbiorcy oraz rodzaju usługi sieciowej. Ten typ zabezpieczenia stosuje się jako rozszerzenie możliwości funkcjonującej już struktury połączenia sieci prywatnej i publicznej.

Komputer-twierdza

W terminologii militarnej twierdza to dobrze strzeżona, ufortyfikowana i zorientowana na długotrwałą obronę przed agresorem budowla. W środowisku sieci komputerowych jest to urządzenie, które z punktu widzenia sieci może być narażone na częste i bezpośrednie ataki potencjalnych włamywaczy komputerowych i dlatego pozostaje pod szczególnym nadzorem administratora systemu. Rozwiązanie stosuje się na serwerach sieci prywatnej, aby wyeliminować nieautoryzowany dostęp i we właściwy sposób reagować na próby ingerencji w system ze strony osób trzecich.

0x01 graphic

Rys. 15. Rola i umiejscowienie komputera-twierdzy w zaporze sieciowej.

Źródło: http://www.pckurier.pl/archiwum/art0.asp?ID=2030

Komputer z dwoma interfejsami sieciowymi

Kolejnym z rozwiązań jest takie skonfigurowanie struktury wewnętrznej chronionej sieci komputerowej, aby dostęp do sieci publicznej miał tylko jeden komputer w sieci lokalnej. Komputer taki, posiadający dwa interfejsy sieciowe, widziany jest z obu podłączonych sieci, jednak bezpośrednia komunikacja pomiędzy nimi nie jest możliwa ze względu na blokadę transmisji pakietów wprost pomiędzy interfejsami. Jest to jedna z realizacji zabezpieczenia komputer-twierdza opisanego powyżej. Komunikacja pomiędzy sieciami publiczną i lokalną jest możliwa dwuetapowo, przez wstępne zalogowanie się na komputerze pośredniczącym, i dostęp na poziomie którejś z dozwolonych usług (np. Telnet lub FTP) do komponentów drugiej sieci. Rygorystyczne przestrzeganie poprawności zabezpieczenia systemu oraz ciągły nadzór nad jego pracą został ograniczony w tym rozwiązaniu do jednego komputera pełniącego rolę bramy pomiędzy separowanymi sieciami.

0x01 graphic

Rys. 16. Rola i umiejscowienie komputera z dwoma interfejsami sieciowymi.

Źródło: http://danger.zone.w.interia.pl/bezpieczenstwo/fire04.html

Konstrukcja filtrująca przepływające pakiety

Tego typu struktura ściany ogniowej składa się ze współpracujących między sobą: routera filtrującego pakiety oraz komputera o funkcjonalności twierdzy sieciowej. Zazwyczaj komputer pracuje w wewnętrznej, chronionej sieci, a router zapewnia takie mechanizmy dostępu, aby komputer ten był jedynym urządzeniem widzianym i dostępnym w sieci prywatnej od strony sieci publicznej. Jest to możliwe dzięki filtrowaniu pakietów docierających do routera i przesyłaniu do wnętrza chronionego obszaru tylko tych, które spełniają przyjęte kryteria bezpiecznego dostępu. Korzystając z takiego rozwiązania administrator ma do dyspozycji dodatkowe narzędzia i metody umożliwiające konstruowanie zaawansowanych systemów zabezpieczających zasoby sieci prywatnej.

0x01 graphic

Rys. 17. Schemat konstrukcji filtrującej przepływające pakiety.

Źródło: http://danger.zone.w.interia.pl/bezpieczenstwo/fire04.html

Wydzielona podsieć realizująca filtrację pakietów

Jest to rozwiązanie zbliżone do przedstawionego poprzednio, lecz wykorzystanego dwukrotnie. Dla zapewnienia bezpieczeństwa dostępu wydzielono podsieć (strefa zdemilitaryzowana), która zazwyczaj jest widoczna i dostępna bez większych ograniczeń zarówno z sieci prywatnej, jak i publicznej. Nie jest natomiast możliwe bezpośrednie komunikowanie się tych dwu sieci. Za taką konfigurację odpowiadają routery (wewnętrzny i zewnętrzny) filtrujące pakiety pod kątem adresata i nadawcy informacji. Dostęp do sieci publicznej z wewnętrznej sieci chronionej możliwy jest dwuetapowo, poprzez komputer pracujący w dodatkowej podsieci. Czasami dla zapewnienia bezpiecznej, lecz bezpośredniej pracy pomiędzy sieciami instalowane są w podsieci pośredniczącej komputery-twierdze, które dzięki odpowiedniemu oprogramowaniu lub konfiguracji umożliwiają komunikację na poziomie niektórych usług sieciowych. Wykorzystywanie dodatkowej podsieci, wydzielonej ze struktury fizycznej sieci prywatnej, ma na celu taką konfigurację sieci, aby możliwe było bezpieczne udostępnianie pewnych zasobów dla sieci publicznej przy jednoczesnej blokadzie dostępu do sieci prywatnej z zewnątrz. Aby zrealizować ten postulat należy umieścić komputery i urządzenia, które będą udostępniane ogółowi użytkowników sieci komputerowych, w wydzielonej podsieci utworzonej struktury. Zadaniem administratora jest w takim wypadku właściwa konfiguracja tych urządzeń, aby nie stały się "bocznymi drzwiami" do chronionego systemu, oraz czuwanie nad poprawnością pracy serwera pośredniczącego.

0x01 graphic

Rys. 18. Schemat wydzielonej podsieci realizującej filtrację pakietów.

Źródło: http://danger.zone.w.interia.pl/bezpieczenstwo/fire04.html

Brama realizowany na poziomie aplikacji

Wiele usług wykorzystywanych w sieciach komputerowych pracuje na zasadzie transmisji danych poprzez kolejne urządzenia, które wysyłają informację dalej, dopiero po przyjęciu jej w całości, oraz przeanalizowaniu zawartości pól sterujących (ang. store-and-forward). Takie rozwiązanie umożliwia realizację kolejnego rodzaju zabezpieczenia, polegającego na pośredniczeniu w przesyłaniu danych określonego typu. Jeśli oprogramowanie realizujące tą funkcję zostanie uruchomione na komputerze dostępnym z obydwu sieci (prywatnej i publicznej) to możliwa jest wymiana informacji pomiędzy tymi, wzajemnie nieosiągalnymi

sieciami. Rozwiązanie takie jest stosowane powszechnie podczas przesyłania poczty elektronicznej, której dedykuje się dla usługi publicznej jeden z komputerów o funkcjach twierdzy, a następnie dzięki właściwej konfiguracji zapewnia się transmisję poczty adresowanej do wnętrza sieci prywatnej i na odwrót, bez konieczności komunikacji bezpośredniej pomiędzy nadawcą a odbiorcą wiadomości. Na podobnej zasadzie funkcjonują tzw. usługi proxy, czyli rozwiązania bazujące na buforowaniu danych i komunikowaniu korespondentów lub usług w imieniu każdej ze stron. Np. http-proxy (oprogramowanie umożliwiające dostęp poprzez firewall do popularnego ostatnio systemu multimedialnego

World Wide Web) wystepując w imieniu użytkownika z sieci wewnętrznej realizuje dostęp do zdalnych serwerów, a następnie uzyskaną odpowiedź przekazuje do wnętrza chronionej sieci komputerowej.

Dobrze skonstruowana zapora sieciowa gwarantuje niemal całkowicie przed atakami z zewnątrz. Jest w stanie ochronić przed atakami podsłuchiwania i podszywania, blokuje penetrację sieci wewnętrznej, a bardziej zaawansowane jej odmiany potrafią ochronić przed znanymi wirusami i końmi trojańskimi.

Niestety, zapora sieciowa nie potrafi zabezpieczyć przed atakami od strony sieci lokalnej, duża część włamań do systemów pochodzi właśnie z samej organizacji. Osobami przeprowadzającymi atak bywają zdesperowani pracownicy, którzy np. chcą przekazać konkurencji poufne dane. Zapora sieciowa nie chroni także przed nowymi odmianami wirusów i koni trojańskich, ponieważ nie jest też w stanie wykryć elementów, które w chwili instalacji jeszcze nie istniały. Nie zabezpiecza również przed nowymi (destrukcyjnymi) apletami Javy i komponentami ActiveX oraz przed techniką zwaną social engineering, czyli manipulacją ludźmi, która ma na celu wydobycie od nich tajnych informacji. Polega to na przykład na dzwonieniu do pracownika i wydobywaniu od niego różnymi podstępami poszukiwanego hasła.

3.3 Usługi szyfrowania

Szyfrowanie w przypadku systemów komputerowych zapewnia poufność i prywatność zarówno w odniesieniu do plików utrzymywanych na serwerze jak i również w stosunku do danych przesyłanych poprzez sieć. Zastosowanie szyfrowania podczas przesyłania informacji poprzez sieć Internet daje gwarancje, że dane zostaną odczytane tylko przez uprawnione osoby.

Aktualnie mamy do czynienia z dwoma podstawowymi grupami systemów (algorytmów) szyfrujących : symetryczne i niesymetryczne .

Szyfrowanie Symetryczne

Pierwsza z nich i jednocześnie najbardziej popularna to algorytmy poufnego klucza, często określana także jako algorytmy symetryczne lub algorytmy klucza prywatnego. W tej metodzie ten sam klucz używany jest używany zarówno do szyfrowania danych jak i do ich rozkodowania. Ponieważ potrzebny jest ten sam klucz do obu czynności, musi on być utrzymywany w sposób niedostępny osobom trzecim. Zaletą tej metody jest stosunkowo niski nakład mocy obliczeniowych komputerów przeprowadzających szyfrowanie i rozkodowanie nawet dużych plików. Oczywistą wadą jest konieczność dostarczenia klucza wszystkim zainteresowanym, co może doprowadzić do jego przechwycenia przez hakera w przypadku przesyłania poprzez sieć publiczną.

Najbardziej znanymi algorytmami klucza poufnego są:

Szyfrowanie asymetryczne

Druga grupa algorytmów szyfrujących oparta jest o tzw. metodę klucza publicznego, znaną także jako algorytmy klucza publiczno-prywatnego lub klucza asymetrycznego. W przeciwieństwie do metody klucza poufnego komunikujące się ze sobą strony używają dwu różnych kluczy - jednego do zaszyfrowania przesyłki, drugiego do jej rozkodowania. Nazwa "klucz publiczny" wzięła się stąd, że algorytmy te bazują na generowaniu klucza przez każdą ze stron i ich wymianie za pośrednictwem sieci publicznej bez utraty prywatności, bowiem klucz publiczny staje się użyteczny jedynie w przypadku posiadania sekretnego, znanego tylko lokalnie, klucza prywatnego. Algorytmy tego typu gwarantują nam prywatność, ale nie gwarantują autentyczności, co może doprowadzić do różnego typu ataków znanych jako "Man in the Middle" (człowiek w środku). Z tych to właśnie powodów algorytmy klucza publicznego są bardzo często stosowane wspólnie z tzw. podpisami cyfrowymi, pozwalającymi upewnić się co do wiarygodności źródła pochodzenia.

Najbardziej znanymi algorytmem klucza publicznego są:

Często z pojęciem szyfrowania wiązane są metody, czy raczej aplikacje takie jak PGP (ang. Pretty Good Privacy). PGP jest fascynującym mechanizmem umożliwiającym użytkownikom kodowanie informacji utrzymywanej na zasobach serwera oraz szyfrowanie przesyłanych listów. Mechanizm ten realizuje jednak dużo więcej, bowiem zawiera narzędzia tworzenia, certyfikowania i zarządzania kluczami. Z tego punktu widzenia jest to metoda typu "wszystko-w-jednym": poufność (szyfrowanie), stwierdzenie autentyczności i integralność danych. Ze względu na stosowanie metody IDEA do szyfrowania (128-bitowy klucz) PGP podlega restrykcją eksportowym USA.

Podobnie można potraktować techniki typu SSL (Secure Sockets Layer) firmy Netscape. Metoda ta może być stosowana w odniesieniu do dowolnej aplikacji sieciowej (HTTP, Telnet, FTP),ale doczekała się wdrożenia jedynie dla komunikacji przeglądarki z serwerem Web. Podobnie jak PGP gwarantuje ona stwierdzenie autentyczności, poufność i integralność. Korzystanie z SSL wymaga uzyskania specjalnego klucza od firmy Versign, co na ogół wiąże się z opłatami licencyjnymi. Pewną alternatywą dla SSL jest propozycja firm Microsoft i NetManage: PCT (an. Private Communication Technology), jednak SSL jest dużo bardziej popularniejsze. Podobnie jak w innych przypadkach mamy dwie wersje SSL: 128-bitową dla rynku amerykańskiego i 40-bitowę dla innych rynków.

Niestety nawet najlepsze algorytmy szyfrowania mogą zostać złamane. Efektywną metodą łamania niemal każdego systemu kryptograficznego w sytuacji, gdy atakujący może sobie pozwolić na długi okres oczekiwania na wyniki, jest metoda pełnego przeglądu. Polega ona na sprawdzaniu po kolei każdego znaku i jego kombinacji, np. z literami, cyframi, znakami specjalnymi. Metoda ta jest czasochłonna, a sprawdzenie wszystkich kombinacji znaków wymaga dużej mocy obliczeniowej. Przeprowadzenie pomyślnego ataku tego typu może zająć od kilku minut do miliarda lat. Nieprzyjemne skutki może też mieć stosowanie słabych haseł jako kluczy algorytmów symetrycznych oraz niewłaściwe przechowywanie tajnych i prywatnych kluczy kryptograficznych.

3.2.3 Kerberos

Kerberos jest systemem opartym na modelu dystrybucji kluczy (ang. key distribution model) i dzięki bezpiecznej autoryzacji oraz szyfrowaniu sesji gwarantuje bezpieczeństwo w sieci. Został zapoczątkowany we wczesnych latach osiemdziesiątych przez Massachusetts Institute of Technology w ramach projektu Atena. Swoją nazwę zapożyczył od mitologicznego imienia Cerbus- trzygłowego psa strzegącego bram Hadesu.

Systemu Kerberos można podzielić na części składowe: serwery bezpieczeństwa, serwery aplikacji i danych oraz aplikacje klienta dostosowane do współpracy z tym systemem. Cała koncepcja opiera się na wydawaniu przez centralny serwer tzw. „biletów” (ang. tickets) dla poszczególnych usług sieciowych. Użytkownik aby uzyskać bilet, powinien każdorazowo podać hasło, co zostało wyeliminowane poprzez użycie przez system tzw. „bilety na bilet” (ang. ticket granting ticket). Zasadniczą różnicą w stosunku do autoryzacji zdalnej przeprowadzanej w standardowy sposób jest to, że hasła nigdy nie są przesyłane siecią, zarówno w postaci jawnej jak i zaszyfrowanej. Wynika to z tego, że hasła są zapisywane na serwerze Kerberos, a nie na stacjach roboczych. Bilety przesyłane są w postaci szyfrowanej, lecz użytkownik nie może ich odszyfrować ani modyfikować. Do szyfrowania informacji uwierzytelniających używany jest algorytm DES, tak więc żadna z nich nie jest przesyłana otwartym tekstem. Kerberos pełni tylko rolę pośrednika przy nawiązaniu połączenia między klientem a serwerem, natomiast dalsza komunikacja odbywa się bez jego udziału.

Zasada działania systemu Kerberos

Udział systemu Kerberos podczas inicjacji połączenia między klientem a serwerem można wytłumaczyć w oparciu o następujące po sobie zdarzenia:

Weryfikacja między serwerem a klientem w początkowej fazie autoryzacji polega na przesłaniu do serwera informacji uwierzytelniającej, w której skład wchodzą: nazwa klienta i zakodowany bieżący czas. Kiedy serwer przeprowadzi operacje jej odszyfrowania, sprawdza czy te informacje są zgodne z tymi zawartymi w bilecie. Oprócz adresu serwera, bilet zawiera także takie informacje, jak czas utworzenia, czas ważności oraz klucz sesji. Bilety wydawane przez serwer biletów mają określony czas ważności, od kilku do kilkunastu godzin, a informacje uwierzytelniające tracą ważność już po kilku minutach. Uniemożliwia to posłużenie się: cudzym biletem, biletem przestarzałym lub pochodzącym z innego serwera. Dodatkowym zabezpieczeniem jest to, że serwer odpowiadając klientowi zwiększa zaszyfrowany czas o jeden, a zatem jakakolwiek próba podrobienia biletu jest niewykonalna. Kerberos dzięki swojej konstrukcji zapewnia: poufność danych, integralność przesyłanych danych oraz weryfikacje tożsamości obydwu stron.

Pomimo swoich zalet, system Kerberos ma też kilka znaczących wad. Ponieważ serwer jest punktem sieci przechowującym bardzo ważne informacje takie jak hasła użytkowników, tak więc bardzo ważna sprawą jest jego zabezpieczenie fizyczne. Jakakolwiek penetracja systemu przez włamywacza miałaby katastrofalne skutki dla bezpieczeństwa całej sieci. System Kerberos zaprojektowany został do pracy w określonym środowisku, a mianowicie miał służyć uwierzytelnianiu użytkowników pracujących na jednoużytkownikowych stacjach roboczych korzystających z zasobów udostępnianych przez duże i bezpieczne serwery. W takim środowisku sprawdza się dobrze. Jednak wiele komputerów pracujących w sieci Internet to systemy wielodostępne. W odniesieniu do takich systemów pojawiają się problemy. Jeden z nich związany jest z koniecznością przechowywania kluczy i biletów w systemie; w środowisku wielodostępnym narażone są one na niebezpieczeństwa związane z obecnością innych użytkowników w systemie.

Zakończenie

 

Problem bezpieczeństwa systemów komputerowych będzie zawsze aktualny. Codzienni powstają coraz to nowsze i bardziej wyrafinowane techniki włamań, a wraz z nimi tworzone są narzędzia służące zapewnieniu bezpieczeństwa. Jest to forma wyścigu między firmami tworzącymi bariery ochronne komputerów, a hakerami, którzy skutecznie te bariery przełamują. Wobec tego można stwierdzić, iż nie ma obecnie stu procentowo bezpiecznego systemu. To, co dzisiaj wydaje się być rozwiązaniem pewnym, jutro może okazać się całkowicie bez wartości. Pozytywnym aspektem działalności hakerów jest „zmuszanie” producentów do większego wysiłku przy projektowaniu swoich produktów. Z drugiej jednak strony, komputerowi włamywacze są powodem strat sięgającym wielu milionów dolarów. Coraz częściej zdarza się zatem, że firmy zatrudniają w swoich szeregach hakerów i wykorzystują potencjał jaki posiadają. Przecież lepiej jest powierzyć ochronę systemu przed włamaniami i utratą cennych informacji specjaliście - hakerowi, który najlepiej zna się na metodach zewnętrznej ingerencji. Ta profilaktyka jest tańsza niż późniejsze naprawianie szkód wyrządzonych przez włamywacza.

Na temat bezpieczeństwa systemów komputerowych powstało już wiele publikacji. Ze względu na ogrom tego zagadnienia moja praca stanowi tylko skromny przegląd tematyki. Należy jednak pamiętać, że bezpieczeństwo systemów komputerowych jest wrażliwe na cały szereg innych zagrożeń, takich jak błędy konstrukcyjne oprogramowania i sprzętu, pomyłki użytkowników, wszelkiego rodzaju awarie (w tym awarie zasilania), a także niewłaściwe procedury organizacyjne. Niewłaściwe użycie nawet najlepszych mechanizmów bezpieczeństwa może zniweczyć ich siłę i sens. Nawet najbardziej zorganizowany system haseł nie będzie nic warty, jeśli za hasło wybierzemy popularną łatwą do odgadnięcia nazwę, a nawet najlepsze hasło na nic się nie zda, jeśli przez lata będziemy je utrzymywać bez zmian. Mam nadzieję, że przedstawione przeze mnie sposoby włamań jak i sposoby ich zapobiegania, choć troszkę uzmysłowią problem bezpieczeństwa systemów komputerowych.

Streszczenie

Praca niniejsza zawiera wybrane zagadnienia dotyczące bezpieczeństwa systemów komputerowych pracujących w sieci Internet. Całość pracy obejmuje swym zasięgiem trzy rozdziały. Pierwszy rozdział traktuje o źródle zagrożeń, na jakie są narażone systemy komputerowe w obecnych czasach. Omówione zostały tu podstawowe informacje na temat rozwoju i historii globalnej sieci, jaką jest Internet. Opisane są również najczęstsze przyczyny naruszenia bezpieczeństwa systemów komputerów, a także wyjaśnione jest, kto ponosi odpowiedzialność za większość włamań internetowych. Część pierwszego rozdziału poświęcona protokołowi TCP/IP to podstawowe zagadnienia na temat mechanizmów, za pomocą których przesyłane są poufne informacje poprzez sieć. Drugi rozdział opisuje techniki, jakimi najczęściej posługują się włamywacze w celu uzyskania dostępu do cennych danych. Trzeci rozdział przedstawia przykłady rozwiązań z zakresu ochrony systemów komputerowych powszechnie przyjętych i stosowanych w dziedzinie, jaką jest informatyka.

Hackers and Computer System Security

Abstract

This book presents a problem of computer systems connected to Internet. First chapter contains information about a source of threats, which endager computer systems now adays. I have described a short Internet history and it's development and explained, who is responsible for the most of the computer break-ins. The part of first chapter about TCP/IP protocol shows the main mechanisms of transfering precious data through the Internet. Second chapter describes techniques used by the computer burglars to gain access their targets. Third chapter presents main methods of protecting the computer systems.

Bibliografia

Publikacje książkowe

1. Lars Kalander, „Hacker Proof- czyli jak się bronić przed intruzami”,

Wydawnictwo Mikom, Warszawa 1998

2. Eric Cole, „Hackers Beware” , Wydawnictwo New Riders, Pierwsza edycja, 2001

3. Marek Wrona, „Niebezpieczeństwo komputerowe” Wydawnictwo RM, Warszawa 20006. Ryan Russell, „Hack Proofing Your Network” , Wydawnictwo Helion, 2002

4. Paul G. Sery, Jey Beale, "Serwery internetowe Red Hat Linux" , Wydawnictwo Helion, 2004

5. Joel Scambray, “Hacking Exposed - Network Security Secrets&Solutions”, Wydawnictwo McGraw-Hill, Drugie wydanie, 2001

6. Richard Stevens „TCP/IP Illustrated Volume1 - The Protocols”, Wydawnictwo Addison-Wesley, 1995

7. Man Young Rhee, „Internet Security- Cryptographic Principles, Algorithms and Protocols ”, Wydawnictwo Wiley, 2003

8. William R. Cheswick, Stewen M. Bellovin, Aviel D. Rubin, “Firewalls and Internet Security”, Wydawnictwo Addison-Wesley, Wydanie drugie, 2003

9. Dr. Thomas W. Shinder, Cherie Amon, Robert J. Shimonski, Debra Littlejohn Shinder, “Best Damn Firewall Period”, Wydawnictwo Syngress, 2003

10. Jason Garman, „Kerberos: The Definitive Guide”, Wydawnictwo O'Reilly, 2003

Magazyny

11. ENTER

12. Pckurier

13. Phreack Magazine

Strony internetowe

14. http://www.elsop.com

15. http://www.winter.pl/internet/

16. http://www.gocsi.com/press/

17. http://www.galaxy.uci.agh.edu.pl/~szymon/

18. http://www.slacke.pretenders.pl/web/

19. http://www.it-faq.pl/

20. http://www.iss.net/

21. http://www.zso4.szkola.icpnet.pl/strony/informatyka/

22. http://www.rainbow.mimuw.edu.pl/

23. http://www.microsoft.com/info/

24. http://www.snake-basket.de

25. http://www.cert.org/advisories

26. http://www.cs.virginia.edu/~survive/

27. http://www.freesoft.org/CIE/RFC/

28. http://www.insecure.org/sploits/

29. http://www.pentics.net

30. http://www.faqs.org

31. http://www.sans.org/rr/papers/

32.http://www.it-scs.com.pl/zabezpiecz/

33. http://www.clico.pl

34. http://www.bezpieczenstwoit.pl

35. http://www.boran.com/security/

36. http://grc.com

37. http://www.pckurier.pl/archiwum/

38. http://danger.zone.w.interia.pl/bezpieczenstwo/

39. http://web.mit.edu/kerberos/www/

40. http://docs.rinet.ru/LomamVse/

41. http://terminal.n17.waw.pl

42. http://www.kernel.org/pub/linux/libs/security

Spis tabel i rysunków

Tabela 1

Str. 9

Model TCP/IP.

Tabela 2

Str. 12

Przeznaczenie poszczególnych pól komunikatu TCP.

Rysunek 1

Str. 5

Ilość użytkowników Internetu w Polsce w latach 1998-2003

Rysunek 2

Str. 12

Struktura komunikatu TCP.

Rysunek 3

Str. 15

Trójfazowe uzgadnianie połączenia TCP.

Rysunek 4

Str. 18

Skanowanie przy porcie otwartym.

Rysunek 5

Str. 19

Skanowanie przy porcie zamkniętym.

Rysunek 6

Str. 26

Monitorowanie usługi Telnet.

Rysunek 7

Str. 26

Monitorowanie połączenia z serwerem FTP.

Rysunek 8

Str. 27

Monitorowanie połączenie z serwerem POP3.

Rysunek 9

Str. 30

Atakujący wysyłający fałszywy pakiet.

Rysunek 10

Str. 30

Ulokowanie atakującego w metodzie „man in the middle”.

Rysunek 11

Str. 31

Zasada działania DNS-spoofing.

Rysunek 12

Str. 33

Modyfikowanie żądań klienta i usuwanie odpowiedzi serwera.

Rysunek 13

Str. 41

Atak przeprowadzony metodą DDos.

Rysunek 14

Str. 42

Atak SYN Flood przeprowadzony przeciwko usłudze Telnetu.

Rysunek 15

Str. 56

Rola i umiejscowienie komputera-twierdzy w zaporze sieciowej.

Rysunek 16

Str.57

Rola i umiejscowienie komputera z dwoma interfejsami sieciowymi.

Rysunek 17

Str. 57

Schemat konstrukcji filtrującej przepływające pakiety.

Rysunek 18

Str. 59

Schemat wydzielonej podsieci realizującej filtrację pakietów.

TCP/IP (Transmission Control Protocol/Internet Protocol)

ARPA (Advanced Reaserch Projects Agency) Agencja rządowa USA odpowiedzialna za prace nad technologiami militarnymi

http://www.elsop.com/wrc/h_web.htm

http://terminal.n17.waw.pl/000079.html

http://www.winter.pl/internet/w0579.html

www.gocsi.com/press/20030528.jhtml

http://galaxy.uci.agh.edu.pl/~szymon/legionowo.html

Michał Kamfora, Kult hakingu, „Enter, 1999, nr. 9 , S.18

Protokół jest zestawieniem reguł określających, w jaki sposób dane są transmitowane poprzez sieć komunikacyjną.

http://slacke.pretenders.pl/web/22.htm

Andrzej Sopala „Pisanie programów internetowych”, Wydawnictwo MIKOM, Warszawa 2000, s.238

Lars Kalander, „Hacker Proof- czyli jak się bronić przed intruzami” , Wydawnictwo Mikom, Warszawa 1998, S.74

Eric Cole, „Hackers Beware”, Wydawnictwo New Riders, Pierwsza edycja, 2001, s. 47

http://www.faqs.org/rfcs/rfc1413.html

Fyodor, The Art Of Port Scanning, Phrack Magazine, nr. 51, art. 11, 1997, S.15

Marek Wrona, „Niebezpieczeństwo komputerowe” Wydawnictwo RM, Warszawa 2000, s.10

Ryan Russell, „Hack Proofing Your Network” , Wydawnictwo Helion, 2002, S. 321

http://docs.rinet.ru/LomamVse/

http://www.iss.net/security_center/advice/Underground/Hacking/Methods/Technical/Spoofing/default.htm

Eric Cole „Hackers beware”, Wydawnictwo New Riders, Pierwsza edycja, 2001, S. 122

Paul G. Sery, Jey Beale, "Serwery internetowe Red Hat Linux" , Wydawnictwo Helion, 2004 ,s. 460

Lars Kalander, „Hacker Proof- czyli jak się bronić przed intruzami”, Wydawnictwo MIKOM, Warszawa 1998, s.325

http://www.zso4.szkola.icpnet.pl/strony/informatyka/wirusy/wirus26.html

http://rainbow.mimuw.edu.pl/SO/Projekt02-03/temat5-g1/trojan/trojan4.htm

http://www.microsoft.com/info/siteaccess.htm

http://www.snake-basket.de/e/AV.txt

http://www.cert.org/advisories/CA-2002-30.html

http://www.cert.org/advisories/CA-2001-01.html

ang. Denial of Service oznacza w języku polskim odmowę obsługi

Joel Scambray, “Hacking Exposed - Network Security Secrets&Solutions”, Wydawnictwo McGraw-Hill, Drugie wydanie, 2001, S.495

Eric Cole, „Hacker beware”, Wydawnictwo New Riders, Pierwsza Edycja, 2001, S. 205

http://www.cs.virginia.edu/~survive/ddos/ddos_history.html

Joel Scambray “Hacking Exposed - Network Security Secrets&Solutions”, Wydawnictwo McGraw-Hill, Drugie wydanie, 2001, S. 492

Richard Stevens „TCP/IP Illustrated Volume1 - The Protocols”, Wydawnictwo Addison-Wesley, 1995, S. 34.

http://www.freesoft.org/CIE/RFC/792/

http://www.insecure.org/sploits/ping-o-death.html

http://www.pentics.net/denial-of-service/white-papers/smurf.cgi

http://www.faqs.org/rfcs/rfc2267.html

Ryan Russel “Hack Proofing Your Network”, Wydawnictwo Helion, Druga edycja, 2002, str 225

www.sans.org/rr/papers/46/386.pdf

http://www.it-scs.com.pl/zabezpiecz/abufferover1.html

Eric Cole, „Hacker beware”, Wydawnictwo New Riders, Pierwsza edycja, 2001, S. 318

http://www.kernel.org/pub/linux/libs/security/Orange-Linux/refs/Orange/OrangeApp.html

http://www.clico.pl/clico/polityka-bezpiecz.html

http://www.bezpieczenstwoit.pl/Artykuly/A.Sadowski/index.html

http://www.boran.com/security/index.html

Man Young Rhee, „Internet Security- Cryptographic Principles, Algorithms and Protocols ”, Wydawnictwo Wiley, 2003, S. 339

William R. Cheswick, Stewen M. Bellovin, Aviel D. Rubin, “Firewalls and Internet Security”, Wydawnictwo Addison-Wesley, Wydanie drugie, 2003, S. 175

Router (czasem zwany też ruter) to urządzenie sieciowe kierujące ruchem pakietów w sieci.

http://grc.com/su-firewalls.htm

Dr. Thomas W. Shinder, Cherie Amon, Robert J. Shimonski, Debra Littlejohn Shinder, “Best Damn Firewall Period”, Wydawnictwo Syngress, 2003, S.75

IPX (Internetwork Packet Exchange)- protokół sieciowy kontrolujący adresowanie i ustalanie tras pakietów w sieciach lokalnych (LAN) i między sieciami tego typu.

Kontrola Dostępu do Medium (Media Access Control), jest to adres unikalny dla każdego urządzenia w sieci.

Ryan Russell, „Hack Proofing Your Network”, Wydawnictwo Helion, 2002, S. 522

ang. social engineering- w jezyku polskim oznacza inżynierię socjalną

http://www.pckurier.pl/archiwum/art0.asp?ID=2738

Marek Wrona, „Niebezpieczeństwo komputerowe”, Wydawnictwo RM, Warszawa 2000, S.74

http://www.clico.pl/clico/polityka-bezpiecz.html

http://web.mit.edu/kerberos/www/

Jason Garman, „Kerberos: The Definitive Guide”, Wydawnictwo O'Reilly, 2003, S. 16

http://rainbow.mimuw.edu.pl/SO/Projekt02-03/temat4-g6/bernatowicz/kerberos.htm

http://www.bezpieczenstwoit.pl/Artykuly/Bezpieczenstwo_sieci/Redakcja,Wady_i_ograniczenia_protokolu_Kerberos/

62

adres.pl

adres.pl

adres.pl = 80.50.48.61

adres.pl = 80.50.48.60

80.50.48.61

80.50.48.60

atakujący

80.50.48.60

Janek

80.40.50.60

podrobiony adres

10.12.60.50

od adresu:10.12.60.50

do adresu: 80.40.50.60

1)Podrobiony pakiet

od adresu:10.12.60.50

do adresu: 80.40.50.60

atakujący

80.50.48.60

podrobiony adres

10.12.60.50

Janek

80.40.50.60

2) Odpowiedź wysłana

do: 10.12.60.50

3) Atakujący widzi

odpowiedź idącą do: 10.12.60.50

żądanie klienta

żądanie hakera

odpowiedź klienta

odpowiedź klienta

odpowiedź hakera

żądanie klienta

10:27:10.880000 podrobiony.pl.1191 > 192.168.20.10.23: S

70894115:7089411 (0) win

8192 <mss 1460>

10:27:10.880000 192.168.20.10.23 > podrobiony.pl.1191: S

1737393897:1737393897 (0)

ack 70894116 win 4288 <mss 1460>

10:27:14.610000 podrobiony.pl.1192 > 192.168.20.10.23: S

70897870:70897870 (0) win

8192 <mss 1460>

10:27:14.610000 192.168.20.10.23 > podrobiony.pl.1192: S

1741139606:1741139606 (0)

ack 70894116 win 4288 <mss 1460>

10:27:17.74000 podrobiony.pl.1193 > 192.168.20.10.23: S

70897952: 70897952 (0) win

8192 <mss 1460>

10:27:10.80000 192.168.20.10.23 > podrobiony.pl.1193: S

1741139606:1741139606 (0)

ack 70897952 win 4288 <mss 1460>



Wyszukiwarka

Podobne podstrony:
praca dyplomowa ?zpieczeĺƒstwo?nych w sieciowych systemach komputerowych [inzynierska] 5AVN62WTY3RD
BEZPIECZE STWO SYSTEM W INF
BEZPIECZE STWO SYSTEM W INF
Praca dyplomowa Sieć komputerowa w oparciu o system Linux i protokół Samba- calosc, Zespół Szkół Pon
Opis oprogramowania wspomagające analizę komponentów systemu komputerowego, Prace kontrolne
streszczenie panelu, Prace dyplomowe i magisterskie, praca dyplomowa, materiały z internetu
Bezpieczeństwo systemów komputerowych
Bezpieczeństwo systemów komputerowych
praca dyplomowa sieci komputerowe GDOXII4V6BM7D5VEI6ISJKWUIZ3VHR4X7YX6U5I
BSI, Semestr 8, Bezpieczeństwo systemów komputerowych
Polityka bezpieczenstwa w systemie komputerowym, Polityka Bezpieczeństwa w Systemach Komputerowych
System bezpieczeństwa Zbiorowego Narodów Zjednoczonych, WAŻNE PRACE Z ADMINISTRACJI I BEZ PIECZEŃST
Bezpieczenstwo systemów komputerowych 3
Szkolenie iso zetom, Prace dyplomowe i magisterskie, praca dyplomowa, materiały z internetu
ISO PPJ, Prace dyplomowe i magisterskie, praca dyplomowa, materiały z internetu, iso 9000
Elektrownia wiatrowa w systemie energetycznym Pomiary, zjawiska, ocena [PRACA DYPLOMOWA MAGISTERSKA]

więcej podobnych podstron