Spis treści Wstęp



Pobieranie 298.27 Kb.
Strona1/4
Data08.05.2016
Rozmiar298.27 Kb.
  1   2   3   4


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



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/IP1 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 ARPA2 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ęcy3. Według badań Nielsen-NetRatings w pierwszym kwartale 2003 roku, liczba osób na świecie z dostępem do internetu wynosiła 585 milionów4. 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 sieci5. 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 komputerowych6 w skali światowej straty liczone są w miliardach dolarów. Trudno zatem uważać problemu przestępstw Internetowych jako mało istotny.

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

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:

  • uzyskanie dostępu do danych transmitowanych przez sieć lub przechowywanych na dołączonych do sieci komputerach przez osoby niepowołane;

  • uzyskanie dostępu do innych zasobów (moc obliczeniowa komputerów itd.) przez osoby niepowołane;

  • utrata danych na skutek złośliwej ingerencji zewnętrznej;

  • fałszerstwo danych (dotyczy zwłaszcza poczty elektronicznej, gdzie zachodzi m.in. możliwość podszywania się pod innego nadawcę);

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ód8.
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ół9 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 komputerze10. 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 inne11.
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.

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

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


  • serwer wykonuje tzw. otwarcie bierne (ang. passive open) połączenia, wywołując funkcje interfejsu gniazdowego socket(), bind(), listen(),

  • klient (na rys.4. Bob) wykonuje tzw. otwarcie aktywne (ang. active open), wywołując funkcję interfejsu gniazdowego connect() - powoduje to wysłanie segmentu SYN (synchronizacji, ang. synchronize), zawierającego początkowy numer kolejnych danych, które klient zamierza wysyłać przez to połączenie (w pewnych sytuacjach także dane) oraz ewentualne opcje TCP,

  • serwer potwierdza przyjęcie segmentu SYN klienta i wysyła własny segment SYN, zawierający początkowy numer danych, które serwer będzie wysyłał przez to połączenie, wraz z segmentem ACK, zawierającym początkowy numer kolejnych danych klienta zwiększony o 1 - taki segment autor będzie określał jako SYN/ACK,

  • klient sygnalizuje przyjęcie odpowiedzi serwera segmentem ACK, zawierającym początkowy numer kolejnych danych serwera zwiększony o 1.

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:

  • Maskarada (ang. masquerade) polega na podszywaniu się pod komputer uprzywilejowany i zazwyczaj występuje równocześnie z innymi atakami aktywnymi.

  • Powtórka (ang. replay) polega na przechwyceniu danych i ich retransmisji w celu otrzymania niedozwolonych rezultatów.

  • Modyfikacja (ang. modification) polega na zmianie fragmentu oryginalnego komunikatu lub na jego opóźnieniu w celu uzyskania niedozwolonych skutków, takich jak uzyskanie dostępu do zasobów.

  • Blokada usług (ang. denial of service) polega na przeszkadzaniu w normalnej pracy lub uniemożliwianiu właściwemu zarządzaniu urządzeń komunikacyjnych.13


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:



  • klient wysyła na skanowany port serwera segment SYN,

  • serwer odpowiada segmentem SYN/ACK,

  • klient potwierdza odpowiedź serwera wysyłając segment ACK.

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


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:



  • klient wysyła na skanowany port serwera segment SYN,

  • serwer odpowiada segmentem RST,

  • klient potwierdza odpowiedź serwera wysyłając segment RST.

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.

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:

  • klient wysyła na skanowany port serwera segment SYN,

  • serwer odpowiada segmentem SYN/ACK jeżeli żądany port jest w stanie nasłuchu lub RST jeśli jest zamknięty.


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” 14, 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:

  • komputer atakujący o numerze IP x.x.x.x

  • komputer atrapa o numerze IP y.y.y.y

  • komputer skanowany o numerze IP z.z.z.z



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




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




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, HTTP16
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:
[~] % 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.

[~] % 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.


[~] % 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).17

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 danych18.
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-spoofing19.


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.

atakujący

80.50.48.60



od adresu:10.12.60.50

do adresu: 80.40.50.60




Janek

80.40.50.60



podrobiony adres

10.12.60.50


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.

3) Atakujący widzi

odpowiedź idącą do: 10.12.60.50





atakujący

80.50.48.60



Janek

80.40.50.60



podrobiony adres

10.12.60.50



1)Podrobiony pakiet

od adresu:10.12.60.50

do adresu: 80.40.50.60

2) Odpowiedź wysłana

do: 10.12.60.50



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


adres.pl = 80.50.48.61

adres.pl = 80.50.48.60



adres.pl

adres.pl


80.50.48.61


komputer docelowy serwer DNS klient


80.50.48.60



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



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 metod22:

  • aktywne rozsynchronizowanie

  • wczesne rozsynchronizowanie

  • rozsynchronizowanie pustymi danymi


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.


żądanie klienta

żądanie hakera



odpowiedź klienta

odpowiedź klienta

odpowiedź hakera



żądanie klienta

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.




  • Wykrywanie stanu rozsynchronizowanego: Numery sekwencji na obu końcach połączenia można odczytać za pomocą specjalnego programu lub urządzenia zliczającego pakiety TCP i wyświetlającego ich zawartość. Po analizie numerów sekwencji można określić, czy połączenie jest w stanie rozsynchronizowanym. Jednak pakiety po obu końcach połączenia można czytać tylko w sytuacji, gdy numery sekwencji nie są zmieniane przez hakera podczas przesyłania danych.

  • Wykrywanie nawałnicy potwierdzeń: Obliczenia dotyczące ruchu w lokalnym odcinku sieci połączenia TCP podają, że przed atakiem średnia liczba pakietów bez danych stanowi około połowy wszystkich pakietów. Natomiast podczas ataku hakerskiego liczba pakietów potwierdzeń może wzrosnąć nawet do 300%.

  • Obliczanie stanu pakietów: Polega na obliczaniu procentu pakietów i porównania go ze stanem normalnym

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 systemu23.
Klasyfikacja koni trojańskich
Jest wiele odmian koni trojańskich. Ich podziału można dokonać w oparciu o sposobów ich działania24.

  • Przejmowanie kontroli nad komputerem. Jest to chyba najpopularniejszy cel tworzenia koni trojańskich. Atakujący chce zdobyć pełną kontrolę nad maszyną ofiary (pełny dostęp do plików, prywatne rozmowy, etc.). Często stara się dojść do tego za pomocą niektórych technik opisanych poniżej.

  • Przesyłanie haseł. W czasie swojej aktywności koń trojański stara się zdobyć jak najwięcej haseł, którymi posługuje się ofiara (m.in. z ICQ, IRC, FTP, HTTP, /etc/shadow w systemie UNIX), a następnie przesyła je na wcześniej utworzone konto pocztowe (często na darmowych serwerach, aby utrudnić identyfikację).

  • Przechwytywanie wciśniętych klawiszy. Koń trojański zapisuje klawisze wciskane przez ofiarę, a następnie kolejno przekazuje je atakującemu.
    Haker dysponując takimi zapisami może dokonać analizy w poszukiwaniu haseł lub innych cennych informacji, pomocnych przy dalszym działaniu.

  • Działania destrukcyjne. Konie trojańskie mogą automatycznie wykasowywać różne kluczowe pliki w systemie, formatować partycje oraz prowadzić inną działalność, która ma na celu uszkodzenia systemu operacyjnego maszyny ofiary. Uaktywnienie konia trojańskiego może być natychmiastowe (bomba logiczna) lub zainicjowane przez atakującego (np. przez podanie odpowiedniego kodu aktywującego poprzez konkretny port).

  • Ataki typu DoS (Denial of Service). Idea polega na wygenerowaniu takiego ruchu na atakowanym łączu, aby doprowadzić do jego zapchania i sparaliżowania. Potrzebna jest do tego odpowiednia liczba zainfekowanych komputerów (w zależności od odporności atakowanego systemu). Bardziej szczegółowo tej technice ataku napisałem w rozdziale poświęconym odmowie obsługi. Jednym z głośniejszych ataków typu DoS był przeprowadzony w 2001 roku atak na serwery firmy Microsoft, co doprowadziło do zablokowania wielu routerów25. Inną odmianą DoS przeprowadzonych z pomocą koni trojańskich może być tzw. mail-bomb, w której atakowany jest konkretny adres e-mail, przez wysyłanie dużej ilości listów, co powoduje zapchanie i zablokowanie skrzynki pocztowej. Liczba komputerów, z których przychodzą te wiadomości powoduje, że jest niemal niemożliwym przefiltrować je wszystkie.

  • Działanie Proxy/Wingate. Ta odmiana koni trojańskich jest bardzo oryginalna i ciekawa. Komputer ofiary jest przekształcany w serwer proxy, z którego poprzez sieć może korzystać każdy lub tylko atakujący. Zapewnia to pełną anonimowość intruzowi. Może on wykonywać inne ataki, a ewentualny ślad będzie prowadził do komputera ofiary.

  • Działalność Anti-Software. Podstawowym działaniem tego typu koni trojańskich jest wyłączenie programów zabezpieczających komputer (np. firewall), co pozwoli hakerowi przeprowadzić atak na komputer ofiary26.



Ź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 libpcap27.

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 fakcie28. Dziurę oczywiście załatano, ale przez około 6 lat istniała i jest bardzo prawdopodobne, że była często wykorzystywana.


  1   2   3   4


©absta.pl 2016
wyślij wiadomość

    Strona główna