[ Pobierz całość w formacie PDF ]
Rozdział 18. f& Proste systemy wykrywania włamań 455
nie jest niczym nadzwyczajnym). Protokół TCP zapewnia również integralność prze-
syłanych danych. Ponadto ma on wbudowany mechanizm wysyłania żądań ponownego
przesłania na przykład uszkodzonych pakietów. Te procedury zapewniające poprawność
transmisji są cechą charakterystyczną protokołów połączeniowych. Połączenia TCP
w rzeczywistości rozpoczynają si wymianą pakietów złożonych z samych nagłówków
bez żadnej zawartości w celu nawiązania komunikacji i ustalenia parametrów transmisji.
Połączenia TCP są wykorzystywane do komunikacji na długich dystansach (w ujciu
sieciowym), na przykład przy usługach FTP oraz SSH.
TCP jest protokołem zachowującym stan. W UDP dane są wysyłane i tutaj kończy si
troska nadawcy. Protokół ten nie śledzi stanu transmisji, ponieważ przy transmisji bez-
połączeniowej nie ma kontroli dostarczenia pakietu. W protokole TCP sprawdzany jest
stan przekazania każdego pakietu. Z tego powodu TCP musi pamitać wysłane pakiety,
aby potwierdzić sobie stan poprawnej wysyłki po otrzymaniu potwierdzenia (lub wysłać
pakiet ponownie w razie problemów).
Taka pamić nazywana jest stanem. Po wysyłce pakietu TCP znajduje si w stanie
oczekiwania na potwierdzenie (awaiting receipt). Po potwierdzeniu dotarcia pakietu
TCP przechodzi w stan nieoczekujący potwierdzenia (not awaiting receipt). Oprócz
tych dwóch podstawowych stanów TCP wykorzystuje inne, które pozwalają na dokład-
ną kontrol poprawności dostarczania danych.
SYN, ACK, FIN
W nagłówkach TCP wystpują tzw. bity znaczników (flag bits) bity włączone lub
wyłączone, informujące o stanie komunikacji na obydwu jej końcach. Bity znaczników
są określane na podstawie ich pozycji w nagłówku. W niniejszym podrozdziale zapo-
znamy si ze znacznikami SYN, ACK oraz FIN.
Znacznik SYN oznacza, że dany pakiet ma na celu zainicjowanie sesji komunikacyj-
nej. Znacznik ten znacza zatem mniej wicej tyle, co chciałbym z tobą rozmawiać .
Znacznik ACK z kolei, że dany pakiet zawiera potwierdzenie otrzymania poprzednie-
go pakietu. Oznacza on tyle, co usłyszałem ci .
W celu zainicjowania sesji system A wysyła do systemu B pakiet składający si z samych
nagłówków. W nagłówku bdzie ustawiony tylko znacznik SYN. W odpowiedzi system
B wysyła do systemu A pakiet spełniający dwie funkcje: po pierwsze, informuje za
pomocą ustawionego znacznika ACK o tym, że pakiet inicjujący doszedł. Po drugie,
informuje system A, iż system B jest gotowy do nawiązania połączenia, w tym celu
ustawiony jest w nim również znacznik SYN.
Po otrzymaniu tego pakietu system A wysyła do B pakiet potwierdzający z ustawionym
tylko znacznikiem ACK. Wtedy nie jest już ustawiony znacznik SYN. W tym momen-
cie obydwa systemy już zakomunikowały, że chcą rozmawiać, wic nie ma potrzeby
dalszego informowania o tym fakcie.
Ta wymiana pakietów , - oraz nazywana jest potrójną inicjacją (triple
handshake) połączenia TCP.
456 Część V f& Zwiększanie bezpieczeństwa
Gdy system A nie ma już nic do wysłania, przekazuje systemowi B pakiet z ustawionym
znacznikiem FIN. W pakiecie tym jest ustawiony również znacznik ACK, potwierdzający
otrzymanie poprzedniego pakietu. System B potwierdza zakończenie połączenia, wysy-
łając pakiet ze znacznikiem ACK. Protokół TCP uwzgldnia również sytuacj, w której
system A chce zakończyć komunikacj, lecz system B nadal ma dane do wysyłki. W tej
sytuacji połączenie, nazywane półzamknitym (half-closed), pozostanie w tym stanie,
do momentu gdy system B wyśle do systemu A pakiet z informacją FIN-ACK, a system
A odpowie mu na to pakietem ze znacznikiem ACK.
Powyższy opis procedur komunikacyjnych miał na celu przybliżenie niektórych szcze-
gółów komunikacji TCP, a także posłużył jako podstawa do konfiguracji systemu NIDS.
Numerowanie znaczników SEQ i ACK
Protokół TCP obsługuje numeracj sekwencji oraz potwierdzeń . Sytuacja ta
może si nieco skomplikować. W uproszczeniu system A upewnia si, iż system B
otrzymał pakiety w odpowiedniej kolejności, nadając im kolejne numery. Gdy system
B otrzymuje pakiet, odsyła systemowi A pakiet z potwierdzeniem (znacznik ACK)
zawierający liczb potwierdzającą równą numerowi pakietu plus jeden. Oznacza to, że
w nastpnym pakiecie wysyłanym przez system B zostanie wysłana liczba potwier-
dzająca ostatnio otrzymany pakiet przesłany przez A.
System B to samo robi z wysyłanymi przez siebie pakietami. Każda ze stron komuni-
kacji przy inicjacji wybiera niezależnie początkowy numer sekwencji, zatem system B
rozpoczyna komunikacj z innym numerem sekwencji od systemu A. Dobrze zaim-
plementowane protokoły komunikacyjne wykorzystują jak najbardziej przypadkowe
początkowe numery sekwencji, co zabezpiecza przed próbami przejcia sesji TCP.
Rozpoznania i zagrożenia
Poznaliśmy podstawy funkcjonowania rodziny protokołów TCP/IP, nadszedł czas,
aby omówić niektóre sposoby wykorzystania ich przez napastników. Ogólnie mówiąc,
działania podejmowane przez napastników można z grubsza podzielić na rozpoznania
i zagrożenia.
Rozpoznanie (lub skanowanie) oznacza prób zdobycia wikszej ilości informacji na
temat systemu bez wyrządzania mu krzywdy. W rzeczywistości wikszość rozpoznań
ma na celu zwrócenie na siebie jak najmniejszej uwagi, aby uniknąć wykrycia. Zagro-
żeniem jest każda próba wyrządzenia szkody lub przejcia kontroli nad systemem.
Skanowanie portów SYN oraz SYNFIN
Skanowanie typu SYN jest bardzo powszechne. Wykorzystuje one protokół potrójnej
inicjacji. Jak pamitamy, system A wysyła do systemu B pakiet z ustawionym znacz-
nikiem , oczekując pakietu z ustawionymi znacznikami i . Załóżmy, że sys-
[ Pobierz całość w formacie PDF ]