Skanowanie portów TCP

Podobne dokumenty
PROTOKOŁY WARSTWY TRANSPORTOWEJ

Audyt bezpieczeństwa (skanowanie otoczenia sieciowego) Artur Sierszeń

SEGMENT TCP CZ. II. Suma kontrolna (ang. Checksum) liczona dla danych jak i nagłówka, weryfikowana po stronie odbiorczej

Sieci komputerowe Warstwa transportowa

Router programowy z firewallem oparty o iptables

Skanowanie portów. Autorzy: Jakub Sorys, Dorota Szczpanik IVFDS

TCP/IP formaty ramek, datagramów, pakietów...

Sieci komputerowe - Protokoły warstwy transportowej

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

Przesyłania danych przez protokół TCP/IP

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

Sieci komputerowe. Wykład 7: Transport: protokół TCP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Zarządzanie bezpieczeństwem w sieciach

Bezpieczeństwo w M875

Projektowanie bezpieczeństwa sieci i serwerów

Programowanie sieciowe

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

Sieci komputerowe. Protokoły warstwy transportowej. Wydział Inżynierii Metali i Informatyki Przemysłowej. dr inż. Andrzej Opaliński.

Programowanie współbieżne i rozproszone

9. System wykrywania i blokowania włamań ASQ (IPS)

Podstawy Transmisji Danych. Wykład IV. Protokół IPV4. Sieci WAN to połączenia pomiędzy sieciami LAN

iptables -F -t nat iptables -X -t nat iptables -F -t filter iptables -X -t filter echo "1" > /proc/sys/net/ipv4/ip_forward

Protokoły sieciowe - TCP/IP

Sieci komputerowe. Wykład 5: Warstwa transportowa: TCP i UDP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

Wybrane metody obrony przed atakami Denial of Service Synflood. Przemysław Kukiełka

Instrukcja konfiguracji i uruchamiania połączenia VPN z systemami SAP

Sieci komputerowe. Zajęcia 3 c.d. Warstwa transportu, protokoły UDP, ICMP

Programowanie Sieciowe 1

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Katedra Inżynierii Komputerowej Politechnika Częstochowska. Zastosowania protokołu ICMP Laboratorium podstaw sieci komputerowych

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Sieci komputerowe laboratorium

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. Marcin Bieńkowski

ARP Address Resolution Protocol (RFC 826)

Na podstawie: Kirch O., Dawson T. 2000: LINUX podręcznik administratora sieci. Wydawnictwo RM, Warszawa. FILTROWANIE IP

Gniazda surowe. Bartłomiej Świercz. Łódź,9maja2006. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Gniazda surowe

Laboratorium 6.7.2: Śledzenie pakietów ICMP

MODEL OSI A INTERNET

Laboratorium 6.7.1: Ping i Traceroute

Metody ataków sieciowych

Metody zabezpieczania transmisji w sieci Ethernet

Zdalne logowanie do serwerów

Klient-Serwer Komunikacja przy pomocy gniazd

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Kierunek: technik informatyk 312[01] Semestr: II Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. Marcin Bieńkowski

Rys. 1. Wynik działania programu ping: n = 5, adres cyfrowy. Rys. 1a. Wynik działania programu ping: l = 64 Bajty, adres mnemoniczny

Komunikacja pomiędzy sterownikami PLC za pomocą łącza GSM GPRS

Warstwa sieciowa. Model OSI Model TCP/IP. Aplikacji. Aplikacji. Prezentacji. Sesji. Transportowa. Transportowa

Aby lepiej zrozumieć działanie adresów przedstawmy uproszczony schemat pakietów IP podróżujących w sieci.

Podstawowe protokoły transportowe stosowane w sieciach IP cz.1

Omówienie TCP/IP. Historia

Model OSI. mgr inż. Krzysztof Szałajko

Sieci komputerowe - administracja

Protokół wymiany sentencji, wersja 1

Instrukcja instalacji Control Expert 3.0

dostępu do okręslonej usługi odbywa się na podstawie tego adresu dostaniemu inie uprawniony dostep

ISO/OSI TCP/IP SIECI KOMPUTEROWE

Adresy w sieciach komputerowych

Warstwa transportowa. mgr inż. Krzysztof Szałajko

Warstwa transportowa

Sieci komputerowe - Wstęp do intersieci, protokół IPv4

Vladimir vovcia Mitiouchev icmp blind attacks Oparto o draft-gont-tcpm-icmp-attacks-04 (Fernando Gont)

Dr Michał Tanaś(

Zarządzanie ruchem w sieci IP. Komunikat ICMP. Internet Control Message Protocol DSRG DSRG. DSRG Warstwa sieciowa DSRG. Protokół sterujący

Całkowita długość nagłówka zróżnicowane. Numer identyfikacyjny Flagi Przesunięcie

Instrukcja 5 - Zastosowania protokołu ICMP

pasja-informatyki.pl

Laboratorium Sieci Komputerowych - 2

Stos protokołów TCP/IP (ang. Transmission Control Protocol/Internet Protocol)

Wykład Nr Sieci bezprzewodowe 2. Monitorowanie sieci - polecenia

Laboratorium - Konfigurowanie zapory sieciowej systemu Windows 7

Firewalle, maskarady, proxy

Architektura INTERNET

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Aukcja trwa od momentu, gdy informacje o przedmiocie są dostępne dla klientów, a kończy się wraz z wysłaniem opisanego dalej komunikatu FINISH_MSG.

Przecinanie kabla atak TCP Reset

Laboratorium - Wykorzystanie programu Wireskark do badania ramek Ethernetowych

OCHRONA PRZED RANSOMWARE

Protokoły wspomagające. Mikołaj Leszczuk

Internet Control Message Protocol (ICMP) Łukasz Trzciałkowski

Architektura oraz testowanie systemu DIADEM Firewall Piotr Piotrowski

Rozdział ten zawiera informacje na temat zarządzania Modułem Modbus TCP oraz jego konfiguracji.

Laboratorium - Używanie programu Wireshark do obserwacji mechanizmu uzgodnienia trójetapowego TCP

Zadanie1: Odszukaj w Wolnej Encyklopedii Wikipedii informacje na temat NAT (ang. Network Address Translation).

Windows W celu dostępu do i konfiguracji firewall idź do Panelu sterowania -> System i zabezpieczenia -> Zapora systemu Windows.

Warstwy i funkcje modelu ISO/OSI

Zarządzanie bezpieczeństwem w sieciach dr inż. Robert Banasiak, mgr inż. Rafał Jachowicz, Instytut Informatyki Stosowanej PŁ, 2013

Protokół IP. III warstwa modelu OSI (sieciowa) Pakowanie i adresowanie przesyłanych danych RFC 791 Pakiet składa się z:

Hosting WWW Bezpieczeństwo hostingu WWW. Dr Michał Tanaś (

Konfiguracja zapory Firewall w systemie Debian.

Najprostsza odpowiedź, jaka przychodzi mi do głowy to, z powodu bezpieczeństwa.

TRX API opis funkcji interfejsu

Zestaw ten opiera się na pakietach co oznacza, że dane podczas wysyłania są dzielone na niewielkie porcje. Wojciech Śleziak

Laboratorium - Konfiguracja zapory sieciowej systemu Windows Vista

Sieci komputerowe w sterowaniu informacje ogólne, model TCP/IP, protokoły warstwy internetowej i sieciowej

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ ADRESACJA W SIECIACH IP. WSTĘP DO SIECI INTERNET Kraków, dn. 24 października 2016r.

Protokół DHCP. DHCP Dynamic Host Configuration Protocol

Transkrypt:

Skanowanie portów TCP Autor: Vatazhka 20.09.2007. Zmieniony 20.09.2007. Skanowanie portów (ang. port scanning) jest jednym z kroków poprzedzających włamanie do systemu informatycznego. Dostarcza ono informacji o liczbie i pośrednio o rodzaju usług uruchomionych na skanowanej stacji. Celem niniejszego opracowania jest zademonstrowanie działania wszystkich obecnie znanych metod skanowania portów TCP. Ze względu na dotychczas niewielkie rozpowszechnienie nowych protokołów z rodziny IPv6 problem zostanie ograniczony do dziedziny IPv4. Rodzina protokołów powiązanych z IPv4 jest obecnie dominującym rozwiązaniem na rynku - pracuje w niej nie tylko Internet, ale i spora część intra- i ekstranetów. Większość protokołów wyższego rzędu, wykorzystywanych przez aplikacje, używaw charakterze protokołu transportowego protokołu TCP. Protokół IP Protokół IP jest w użyciu od wczesnych lat 80. Jest on protokołem warstwy sieciowej w rozumieniu siedmiowarstwowego modelu ISO/OSI - zapewnia przekazywanie datagramów od stacji źródłowej do stacji docelowej poprzez sieć rozległą (największą siecią rozległą, w której wykorzystywany jest protokół IP, jest Internet). Ze względu na ograniczenia wynikające ze stosowania różnych technologii w warstwie kanałowej, datagram IP może zostać podzielony na mniejsze - jest to tzw. fragmentacja. Ustawienie bitu zakazu fragmentacji (DF, Don't Fragment) powoduje odrzucanie przez bramę datagramów o za dużym rozmiarze (MTU, Maximum Transmission Unit) w stosunku do określonego dla danej sieci. Protokół TCP Połączeniowy protokół TCP działa "nad" protokołem IP. Wykorzystuje on w pełni dwukierunkowe połączenia, zapewnia niezawodność (stosowane są obustronne potwierdzenia), sterowanie przepływem danych (określana jest ilość danych, która może jeszcze zmieścić się w buforach) oraz zachowanie kolejności danych (co wymaga numeracji segmentów - jednostek danych przekazywanych przez warstwę TCP do warstwy IP). Oprogramowanie TCP ustanawia połączenie stosując uzgadnianie trójfazowe (ang. three-way handshake), kończy je zaś wymiana czterech komunikatów. Połączenie TCP może znajdować się w danej chwili w jednym z 11 zdefiniowanych w [8] (wraz z warunkami przejść) stanów. W każdej chwili wiele procesów w jednej stacji może korzystać z protokołu TCP. W celu rozróżnienia tych procesów używa się szesnastobitowych numerów portów. Istnieje klasa tzw. portów ogólnie znanych (ang. well-known ports) - przeznaczonych do wykonywania ogólnie znanych usług, która jest zdefiniowana w [10], a najnowszą wersję przypisań można znaleźć w [5]. Pewne serwery usług zawierają błędy, które mogą posłużyć do ataku, którego skutkiem będzie odmowa wykonania usługi (ang. denial of service) lub nawet przejęcie kontroli nad serwerem. Skanowanie portów służy do określenia potencjalnych usług, na które może być przeprowadzony atak (dane zebrane w ten sposób wymagają dodatkowej weryfikacji). Ustanawianie połączenia TCP - uzgadnianie trójfazowe Ustanawianie połączenia TCP przebiega według poniższego scenariusza: - serwer wykonuje tzw. otwarcie bierne (ang. passive open) połączenia, wywołując funkcje interfejsu gniazdowego socket(), bind(), listen(), - klient 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 (potwierdzenia, ang. acknowledgement), 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. Wymiana danych w połączeniu TCP

Jest to zasadnicza część transmisji, mogąca przebiegać według wielu scenariuszy; najczęściej obejmuje ona następującą wymianę segmentów: - klient wysyła żądanie do serwera, - serwer wysyła potwierdzenie przyjęcia żądania w postaci segmentu ACK, który może być wysłany razem z odpowiedzią, - klient potwierdza otrzymanie odpowiedzi segmentem ACK. Kończenie połączenia TCP Schemat zamykania połączenia TCP obejmuje zwykle wymianę czterech segmentów i wygląda następująco: - jeden z programów - klient lub serwer - wykonuje tzw. zamknięcie aktywne (ang. active close), wywołując funkcję close(), co powoduje wysłanie segmentu FIN (zakończenia, ang. finish); w pewnych sytuacjach segment ten może być wysłany razem z danymi, - drugi z programów potwierdza przyjęcie segmentu FIN własnym segmentem ACK, zwiększając numer segmentu FIN o 1 (segmenty FIN są numerowane podobnie jak segmenty SYN), wykonując tzw. zamknięcie bierne (ang. passive close), - w tym momencie tym połączeniem mogą jeszcze przepływać dane od stacji wykonującej zamknięcie bierne do stacji wykonującej zamknięcie aktywne, jest to tzw. półzamknięcie (ang. half-close), - stacja wykonująca zamknięcie bierne wykonując funkcję close() wysyła numerowany segment FIN do stacji wykonującej zamknięcie aktywne, - stacja wykonująca zamknięcie aktywne potwierdza przyjęcie segmentu FIN wysyłając stacji wykonującej zamknięcie bierne segment ACK z numerem segmentu FIN zwiększonym o 1. Skanowanie portów - technika i stosowane metody Ze względu na pewną dowolność pozostawioną przez twórców [8], nie wszystkie stosy TCP/IP są podatne na zaprezentowane metody skanowania portów. Skanowanie otwarte (ang. connect() scan, open scan) Skanowanie otwarte jest rzadko wykorzystywane ze względu na łatwość wykrycia i zablokowania takiego "ataku". Metoda ta polega na wykonaniu próby uzgadniania trójfazowego 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 w postaci funkcji connect(), stanowiącej część interfejsu gniazdowego. Procedura nawiązywania połączenia z portem nasłuchującym (będącym w stanie nasłuchu - 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() z wartością 0, oznaczającą sukces. 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. Skanowanie półotwarte (ang. SYN scan, half-open scan) Ten rodzaj skanowania także korzysta ze zdefiniowanego w [8] 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). 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 przeciwnym wypadku. jest w stanie nasłuchu lub RST w Skanowanie niewłaściwym polem flag Na oktet flag składa się 6 bitów (flag), licząc od zerowego odpowiadają one następującym flagom: FIN, SYN, RST, PSH, ACK, URG oraz 2 niewykorzystane bity (zgodnie z [8] powinny być one wyzerowane, podobnie jak 4 niewykorzystane bity oktetu przesunięcia). Taka ilość flag pozwala na skonstruowanie dużej ilości różnych segmentów o niewłaściwych flagach, dlatego też opisane zostaną jedynie wybrane, najczęściej spotykane ich kombinacje. Opisane niżej metody łączy wiele wspólnych cech: - zgodnie z [8] skanowana stacja powinna odpowiedzieć segmentem RST jeżeli docelowy port nie jest w stanie nasłuchu lub zignorować go w przeciwnym wypadku, - używane we wszystkich metodach segmenty nie pojawiają się bez uprzedniego nawiązania połączenia, a więc pojawienie się takiego segmentu jest sytuacją wyjątkową i może być wykryte przez stanową zaporę sieciową, analizującą przebieg połączenia i odrzucającą niepoprawne segmenty, - powyższe cechy oznaczają, że skanowanie tymi metodami jest wolne (segment należy uznać za zignorowany po przekroczeniu pewnego, zwykle dość długiego czasu oczekiwania) oraz często zawodne (urządzenia aktywne na trasie przejścia segmentu mogą go odrzucić bez poinformowania o tym nadawcy), - twórcy części systemów (m. in. IRIX, HP/UX, IOS, Windows) nie zastosowali się do specyfikacji zawartych w [8] i nadejście tak spreparowanego segmentu zawsze powoduje odpowiedź RST, niezależnie od stanu portu docelowego. Skanowanie FIN (ang. FIN scan, stealth scan) Segment z ustawioną flagą FIN normalnie służy do zamknięcia połączenia. Jeżeli taki segment, nie należący do połączenia, trafi na nasłuchujący port, to powinien on zostać zignorowany. Jeśli natomiast skanowany port nie był w stanie nasłuchu, odesłany powinien zostać segment z ustawioną flagą RST. Skanowanie puste (ang. NULL scan) W tej metodzie do skanowania pojedynczego portu używa się segmentu z wyzerowanymi wszystkimi flagami. Skanowanie X (ang. XMAS scan) Odpowiednik skanowania pustego, lecz w nagłówku TCP segmentu wysyłanego przez skanującego ustawiona jest nieużywana flaga o wartości 40hex (pole opcji z włączonym wyłącznie szóstym bitem), tzw. flaga X - stąd nazwa metody. Skanowanie Y (ang. YMAS scan) Metoda analogiczna do poprzedniej z tym wyjątkiem, że ustawiona jest nieużywana flaga o wartości 80hex (tj. włączony jest jedynie siódmy bit pola opcji), zwana flagą Y. Skanowanie Z (ang. ZMAS scan) Ten typ skanowania jest często określany mianem skanowania X, co prowadzi do nieporozumień. Dlatego autor [4] zdecydował się nazywać metodę, w której stacja skanująca wysyła segment z normalnie niespotykaną kombinacją flag FIN PSH URG skanowaniem Z, analogicznie do dwóch poprzednio omawianych metod. Skanowanie ACK (ang. ACK scan) Ten rodzaj skanowania polega na wysłaniu segmentu z ustawioną flagą ACK i nie umożliwia wykrycia portów nasłuchujących, a jedynie ustalenie faktu filtrowania danych przychodzących do skanowanego portu przez stanową zaporę sieciową. Gdy skanowana stacja zwraca w odpowiedzi segment RST, oznacza to, że skanowany port nie jest filtrowany przez stanową zaporę sieciową. Skanowanie rozmiarem okna (ang. window size scan)

Jest to rodzaj skanowania podobny do skanowania ACK, jednak dzięki temu, że większość systemów modyfikuje pole rozmiaru okna (nie jest to zachowanie wyspecyfikowane w [8]) możliwe jest ustalenie nie tylko faktu filtrowania skanowanego portu, ale także stwierdzenia, czy jest on w stanie nasłuchu. Skanowanie przekierowaniem odpowiedzi serwera FTP (ang. FTP bounce scan) W specyfikacji protokołu FTP (zawartej w [9]) zdefiniowano możliwość trybu pracy serwera FTP, w którym wyniki przekazuje on innej stacji niż ta, która zainicjowała sesję. Aby skanować stację o adresie A.B.C.D należy wykonać poniższą procedurę: - skanujący loguje się na serwer FTP obsługujący przekierowanie odpowiedzi, - podczas sesji FTP skanujący wykonuje komendę PORT A,B,C,D,X,Y, gdzie X _ 256 + Y określa numer skanowanego portu, - jeżeli serwer FTP umożliwia przekierowanie, odpowie komunikatem o kodzie 200, jeżeli nie - komunikatem o kodzie 500, - skanujący wydaje dowolną komendę (np. LIST) inicjującą transmisję danych pod wskazany komendą PORT A,B,C,D,X,Y adres, - jeżeli skanowany port nie był w stanie nasłuchu, serwer zwróci komunikat o kodzie 426, w przeciwnym wypadku - komunikaty o kodach 150 i 226. Najważniejszą zaletą tej metody jest zapewnienie anonimowości skanującemu, ponieważ z perspektywy stacji skanowanej wydaje się, że to serwer FTP prowadzi skanowanie otwarte. Nie jest to jednak anonimowość pełna - w logach serwera FTP pozostają informacje, które mogą doprowadzić do wykrycia inicjatora skanowania portów. Skanowanie bezczynne (ang. IP ID idle scan, dumb scan) Najnowsza metoda skanowania, po raz pierwszy przedstawiona w [3]. Jej największą zaletą jest zapewnianie praktycznie zupełnej anonimowości skanującemu. Metoda ta opiera swe działanie na fakcie, iż większość stosów TCP/IP zwiększa pole ID w nagłówku IP o stałą wartość (najczęściej 1); do działania wymagane jest użycie stacji pośredniczącej, której oprogramowanie TCP/IP zachowuje się właśnie w taki sposób. Aby skanowanie tego rodzaju było w ogóle możliwe, stacja pośrednicząca musi być w czasie skanowania pojedynczego portu bezczynna, tzn. nie może w tym czasie wysłać żadnego pakietu poza opisanymi w poniższym schemacie: - stacja skanująca pobiera wartość IP ID stacji pośredniczącej wysyłając bezpośrednio do niej dowolny pakiet IP, najczęściej wykorzystując żądania echa ICMP (ang. ICMP Echo Request), na które stacja pośrednicząca powinna odpowiadać odpowiedziami echa ICMP (ang. ICMP Echo Reply) - w ten sposób, kilkakrotnie powtarzając procedurę, skanujący może obliczyć przyrost wartości IP ID stacji pośredniczącej, - stacja skanująca wysyła do stacji skanowanej segment TCP z ustawioną flagą SYN o sfałszowanym adresie źródłowym, wskazującym na stację pośredniczącą, - stacja skanowana odpowiada segmentem SYN ACK jeżeli port docelowy był w stanie nasłuchu lub RST w przeciwnym wypadku (odpowiedź jest oczywiście "odsyłana" stacji pośredniczącej), - jeżeli do stacji pośredniczącej dotarł segment SYN ACK, odpowiada ona stacji skanowanej segmentem RST, co powoduje zwiększenie licznika IP ID; w przeciwnym wypadku (tj. jeżeli stacja pośrednicząca otrzymała segment RST) ignoruje go, co nie powoduje zwiększenia licznika IP ID, - stacja skanująca ponownie pobiera aktualną wartość licznika IP ID stacji pośredniczącej i tej postawie oblicza, czy skanowany port był w stanie nasłuchu czy nie. Od czasu opublikowania tej metody sukcesywnie nanoszone są poprawki do stosów TCP/IP w systemach operacyjnych, np. w systemie OpenBSD pole IP ID jest zwiększane standardowo o pseudolosową wartość, a dla Linuksa istnieją "łaty" zawierające wspomniany kod z OpenBSD oraz taką korektę obsługi protokołu ICMP, aby odpowiedzi ICMP (ang. ICMP Reply) zawierały kopie pól z żądań ICMP (ang. ICMP Request). Istnieją również implementacje powodujące zablokowanie lub czasowe ograniczenie wysyłania segmentów RST, zawarte np. w systemie FreeBSD, lecz nie powinny być one używane ze względu na to, że łamią one zalecenia zawarte w [8]. Obrona przed skanowaniem portów Jak wynika z wyżej opisanych własności poszczególnych metod skanowania portów, administratorowi sieci nie jest łatwo stwierdzić, czy ma on do czynienia ze skanowaniem portów, czy z innego rodzaju

aktywnością (np. powtarzanymi próbami nawiązania połączenia z usługami nieobsługiwanymi przez daną stację). Podejrzenia powinny budzić: - wielokrotne próby nawiązania połączenia na różnych portach TCP w krótkim okresie czasu, - duża ilość wychodzących z sieci segmentów RST, pochodzących z jednej stacji, - pojawiające się przychodzące segmenty TCP o adresach docelowych obejmujących stacje z tej sieci o ustawionych flagach innych niż SYN, których numer sekwencyjny nie wskazuje na przynależność tego segmentu do żadnego z nawiązanych połączeń). Wymienione zdarzenia należy uwzględnić w konfiguracji zapór sieciowych i zdefiniować odpowiednie reakcje lub zastosować gotowe pakiety IDS (Intrusion Detection System). Reakcją nie polecaną jest automatyczne "odcinanie" ruchu przychodzącego ze stacji, którą zidentyfikowano jako skanującą ze względu na możliwość sfałszowania adresu źródłowego (ang. spoofing). Nieocenionym narzędziem do wykrywania ataków (także skanowania portów) i zapobiegania im jest odpowiednio skonfigurowana zapora sieciowa (ang. firewall). Zapora sieciowa jest mechanizmem służącym do filtrowania transmisji drogą analizy adresów protokołowych (w przypadku, gdy jest to bezstanowa zapora sieciowa, ang. non-stateful firewall, screening router) lub dodatkowo informacji protokołowych (zapora stanowa, ang. stateful firewall). Zapory sieciowe działają w oparciu o tzw. zestawy reguł (ang. rulesets), które uwzględniają takie kryteria, jak adresy oraz inne informacje protokołowe (w tym aktualny stan połączeń TCP). W zależności od stopnia zaawansowania oprogramowania zapory sieciowejmożliwe jest zastosowanie różnych akcji. Do najczęściej spotykanych należą: - przekazanie pakietu odbiorcy w niezmienionej postaci ("akceptuj", ang. accept), - zwrócenie pakietu nadawcy w niezmienionej postaci ("odbij", ang. mirror), odrzuceniu pakietu z odesłaniem informacji o tym nadawcy ("odrzuć", ang. reject), - skasowanie bez śladu ("usuń", ang. drop), zapisanie informacji o pakiecie do logu systemowego "loguj", ang. log oraz przekazanie pakietu do innej stacji ("przekaż", ang. jump). Sporym problemem może być wysyłanie sfragmentowanych datagramów IP przez stację skanującą. Nie każda zapora sieciowa działa w ten sposób, że przed zbadaniem datagramu próbuje go zdefragmentować (ograniczeniem jest w tym przypadku głównie pojemność pamięci oraz moc przetwarzania). W ten sposób można "przemycić" do sieci m. in. wykorzystywane w skanowaniu portów nietypowe segmenty TCP. Warto także zabezpieczyć się przed pośredniczeniem w skanowaniu portów, odpowiednio konfigurując serwery FTP (uniemożliwiając FTP bounce scan) oraz nałożyć "łaty" wprowadzające losowe zmiany licznika IP ID. Dobra polityka bezpieczeństwa powinna uwzględniać tego rodzaju próby naruszenia bezpieczeństwa (niektórzy skłaniają się ku zdaniu, że skanowanie portów jest już formą ataku). Jednocześnie nie zaleca się eskalacji działań odwetowych, a jedynie poprzestanie na zapisaniu informacji do logów systemowych i, w szczególnie uciążliwych przypadkach, odcięciu transmisji od intruza oraz powiadomieniu odpowiedniego operatora sieciowego. Technika ukrywania źródła skanowania portów Często stosowanie technik "anonimowych" (IP ID idle scan, FTP bounce scan) nie jest pożądane lub możliwe. Wówczas skanujący mają do wyboru wyłącznie metody ujawniające ich adres IP. Ponieważ podanie prawdziwego adresu źródłowego jest wymagane gdy oczekuje się odpowiedzi od stacji docelowej, w grę wchodzi jedynie wysłanie dużej ilości pakietów, które różnią się wyłącznie adresem źródłowym. Wśród nich jest jeden pakiet z adresem źródłowym stacji atakującego, a pozostałe stacje służą jako tzw. przynęty (ang. decoys). Właśnie z tego powodu - wszak "przynętą" może być dowolnie wybrany adres - nie poleca się przeprowadzania odwetu ani "odcinania" ruchu. Niestety, jak już wspomniano, wykrycie skanowania portów jest możliwe jedynie poprzez zliczanie ilości nieprawidłowych lub niezakończonych połączeń przychodzących w jednostce czasu. Jeżeli skanowanie poszczególnych portów jest dokonywane w na tyle dużych odstępach czasowych, aby nie uaktywnić IDS (w celu skrócenia całkowitego czasu skanowanie portów można prowadzić z różnych stacji - w sposób rozproszony), jest ono praktycznie niemożliwe do wykrycia. Literatura [1] W. Richard Stevens: UNIX. Programowanie usług sieciowych. T.1, Wydawnictwa Naukowo- Techniczne, Warszawa 2000 [2] Computer Emergency Response Team: TCP SYN Flooding and IP Spoofing Attacks. Advisory CA-

96.21, Computer Emergency Response Team, Pittsburgh 1996 [3] Salvatore "Antirez" Sanfilippo: dumbscan.txt, http://www.kyuzz.org/antirez/papers/dumbscan.html [4] Marcin Dawcewicz: Techniki skanowania sieci komputerowych, Software 2.0 nr 9/2001 [5] Internet Assigned Numbers Authority: Assigned Port Numbers, ftp://ftp.ftp.isi.edu/innotes/iana/assignments/port-numbers [6] J. B. Postel (red): Internet Protocol. RFC 791, 1981 [7] J. B. Postel: Internet Control Message Protocol. RFC 792, 1981 [8] J. B. Postel (red): Transmission Control Protocol. RFC 793, 1981 [9] J. B. Postel, J. K. Reynolds: File Transfer Protocol. RFC 959, 1985 [10] J. K. Reynolds, J. B. Postel: Assigned Numbers. RFC 1700, 1994