Audyt bezpieczeństwa (skanowanie otoczenia sieciowego) Artur Sierszeń asiersz@kis.p.lodz.pl http://bzyczek.kis.p.lodz.pl
Skanowanie sieci komputerowych 2
Skanowanie otoczenia sieciowego (ang. Network Scanning) - wszystkie techniki skanowania mające na celu stwierdzenie czy dany komputer jest podłączony do sieci oraz jaki system operacyjny jest na nim zainstalowany. W wypadku hakera tego typu techniki powinny być zastosowane na początku działań penetracyjnych (w celu dokładnego określenia celu ataku, jego podatności na pozostałe techniki skanowania i ewentualne metody ataku. Z punktu widzenia administratora mogą być używane w celu diagnostyki oraz monitorowania komputerów w sieci oraz zasobów na nich udostępnianych. Niektóre zaawansowane skanery otoczenia sieciowego z rozbudowanym interfejsem graficznym umożliwiają tworzenie map sieci zawierających logiczne odwzorowanie fizycznej topologii sieci. 3
Skanowanie systemu operacyjnego Jest to zdalne rozpoznawanie systemu operacyjnego Metody wykrywania systemu operacyjnego często określane są z języka angielskiego pojęciem OS fingerprinting Ten typ skanowania ma na celu wykrycie rodzaju oraz (jeśli to możliwe) wersji systemu operacyjnego Nowe systemy operacyjne coraz rzadziej udostępniają jakiekolwiek dane ze względów bezpieczeństwa Istnieją jednak takie techniki, które umożliwiają identyfikację nowszych systemów, włącznie z zainstalowanymi na nich zestawami poprawek (np. Service Packów dla systemów z rodziny Windows) czy numeracji jądra dla dystrybucji Linux 4
Stos sieci Każdy rodzaj i wersja systemu operacyjnego działający w sieci komputerowej może nieco inaczej pracować wykorzystując protokoły TCP/IP Jeszcze bardziej jest to widoczne w sieci Internet, gdzie często różnice w zachowaniu się np. serwerów wynikają z dodatkowego oprogramowania zainstalowanego na systemie i zestawie dostępnych usług Różnice wynikają z odmiennego kodu zaimplementowanego do obsługi sieci. Kod ten, nazywany stosem sieci najczęściej znajduje się w jądrze systemu. Różne zespoły osób zajmowały tworzeniem takiego kodu dla różnych systemów operacyjnych (unikalny jest charakter stosu sieci dla różnorodnych systemów - obserwując zachowanie systemu w sieci można określić jego rodzaj) 5
Stos sieci Największa odmienność w zachowaniu się systemów widoczne jest w nagłówkach pakietów zestawu protokołów TCP/IP Tworząc bazę charakterystycznych zachowań systemów operacyjnych można odróżnić system już nawet po jednym pakiecie Techniki zdalnego wykrywania systemów operacyjnych dzieli się na: aktywne pasywne 6
Aktywne wykrywanie systemu operacyjnego Aktywna technika wykrywania systemu operacyjnego oznacza, że wykorzystywana jest tu aktywna analiza stosu Aktywna oznacza, że do otrzymania informacji konieczne jest wygenerowanie ruch sieciowego Narzędzia korzystające z tej metody wysyłają w kierunku skanowanej maszyny różnego rodzaju pakiety, często są one odpowiednio spreparowane Następnie oczekują na odpowiedź (lub też jej brak) i dokładnie analizują jej rezultaty Często na tym etapie następuję porównanie wyników z bazą danych zawierajęca odciski palców czyli sposoby reakcji danego systemu operacyjnego na określony pakiet 7
Aktywne wykrywanie systemu operacyjnego Skuteczność tej metody zależy przede wszystkim, od tego czy skanowany komputer ma otwarty chociaż jeden port W tego typu pakietach sondach najczęściej modyfikowane są nagłówki TCP i IP Wadą z punktu widzenia atakującego jest konieczność wysłania informacji do skanowanego komputera (najczęściej serwera) Istnieje ryzyko, że taka próba skanowania zostanie wykryta przez administratora 8
Aktywne wykrywanie - sondy Sonda FIN do otwartego portu wysyłany jest pakiet bez ustawionej flagi SYN i ACK (najczęściej z flaga FIN). Niektóre systemy operacyjne np. Windows, CISCO, IRIX odpowiedzą na taką sondę pakietem z ustawiona flagą RST. Próbkowanie początkowych numerów sekwencyjnych TCP (ang. TCP Initial Sequence Number Sampling, ISN) wykorzystuje identyfikację algorytmu generowania ISN w pakietach z ustawionymi znacznikami ACK/SYN. Obecnie wiele systemów operacyjnych jest odporne na tego typu działania, gdyż wykorzystują tzw. inkrementację losową. Sonda z niezdefiniowaną flagą w nagłówku TCP. Segment SYN może wywołać różne reakcję hosta: Linux z jądrem poniżej 2.0.35 ustawi flagę SYN w odpowiedzi, brak odpowiedzi na pakiet, w odpowiedzi wysyłany pakiet ze znacznikiem RST. 9
Aktywne wykrywanie - sondy Sprawdzanie rozmiaru okna TCP różny dla różnych systemów Sprawdzanie czy ustawiony jest bit nie fragmentować Sprawdzanie wartości ACK. Niektóre systemy np. Windows zachowuje się w tej sprawie niejednoznacznie. Badanie jakie pola są ustawienia w polu TOS (ang. Type of Service). Większość systemów operacyjnych zeruje tę wartość, natomiast Linux ustawia wartość 0xC0. Sondy sprawdzające opcje TCP. Testują zachowanie się stosu na różne warianty ustawień opcji TCP. 10
Aktywne wykrywanie - sondy Metoda SYN Flood Resistance. Sprawdza odporność systemu na zalewanie pakietami SYN analizowana jest tutaj liczba możliwych połączeń z otwartym portem z jednego adresu IP i portu. Sondy testujące limitowanie komunikatów o błędach ICMP. Każdy system ogranicza ilość komunikatów w jednostce czasu. Sprawdzanie polega na wysyłaniu dużej ilości pakietów na porty UDP (numery portów powyżej 1024) i zliczaniu pakietów otrzymanych w odpowiedzi. Testowanie pakietami ICMP z błędnie ustawioną wartością w polu nagłówka ICMP. Część systemów operacyjnych odpowiada na to pakietami bez zmian w nagłówku, inne zaś zmieniają wartość na poprawną dla tego typu pakietu. 11
Pasywne wykrywanie systemu operacyjnego Pasywne metody skanowania, mające na celu wykrycie wersji systemu operacyjnego na zdalnej maszynie, bez wysyłania pakietów sondujących. W drodze wyjątku dopuszcza się tutaj nawiązanie połączenia z usługą sieciowa uruchomioną na zdalnym komputerze, ale w sposób prawidłowy, tak jak by to miało miejsce, podczas konwencjonalnego korzystania z usługi bez żadnych złych zamiarów. Z założenia metody pasywne są ciężko wykrywalne o wiele trudniej jest wykryć i zarejestrować próby takich działań szpiegujących, niż w przypadku zastosowania aktywnych metod OS fingerprinntingu. Metody pasywne można podzielić na: z pasywną analizą stosu TCP/IP, wykorzystujące warstwę aplikacji modelu OSI. 12
Pasywne wykrywanie systemu operacyjnego Metody identyfikacji z pasywną analizą stosu polegają na przechwytywaniu pakietów generowanych przez upatrzony jako cel komputer z wykorzystaniem techniki sniffingu (przechwytywanie pakietów przepływających w sieci) i późniejszej analizy otrzymanych informacji. Możliwość wykorzystania tego typu technik wynika z różnic w implementacji stosu TCP/IP w różnych systemach operacyjnych. Najczęściej różnice są widoczne w wartościach w odpowiednich polach nagłówków protokołów TCP i IP. 13
Najważniejsze parametry protokołu IP i TCP. Protokół Nazwa parametru Nazwa oryginalna czas życia pakietu TTL Time To Live IP TCP pole ID (identyfikacja) ustawienia bitów TOS ustawienia bitu braku fragmentacji rozmiar okna maksymalny rozmiar segmentu selektywne odrzucanie opcja NOP Identification Type Of Service don't fragment Window Size Maximum Segment Size Selective Acknowledgment No Operation Gdy podczas analizy pakietów, zostaną odczytane powyższe wartości w polach nagłówków, a następnie porównane z bazą sygnatur identyfikujących wartości tych parametrów dla danego systemu operacyjnego, możliwe będzie stwierdzenie z dużą pewnością, w jaki system operacyjny wyposażony jest sprawdzany host. 14
Skanowanie ICMP Protokół ICMP (ang. Internet Control Message Protocol, internetowy protokół komunikatów kontrolnych) jest protokółem warstwy sieciowej modelu OSI oraz warstwy Internet modelu TCP/IP Protokół powstał z myślą o diagnostyce sieci oraz trasowaniu W sieciach komputerowych pełni przede wszystkim funkcję kontroli transmisji w sieci (skanowania sieci komputerowych z wykorzystaniem protokołu ICMP ma na celu stwierdzenie czy aktualnie host jest dostępny w sieci i czy funkcjonuje prawidłowo) Warto podkreślić, że aby nie obciążać sieci wprowadzono zasadę, że nie wolno odpowiadać pakietem ICMP, gdy błąd w połączeniu zostanie spowodowany przez inny pakiet ICMP 15
Skanowanie portów Skanowanie portów jest jednym z najczęściej spotykanych rodzajów skanowania w sieciach komputerowych Często jest powiązane z atakami występującymi w warstwach Internetu i host-to-host Zazwyczaj jednym z kroków ataku jest określenie dostępnych usług na komputerze zdalnym oraz które z nich są w stanie nasłuchu na połączenie TCP lub UDP W tym celu wykonuje się skanowanie portów. Skanowanie odbywa się na poziomie protokołów TCP, UDP lub ICMP 16
Skanowanie portów protokołu TCP Protokół TCP (ang. Transmission Control Protocol ) jest strumieniowym protokołem komunikacji między dwoma komputerami Jest on częścią zestawu protokołów (nazywanych również stosem) TCP/IP Umożliwia komunikację połączeniową oraz niezawodne przesyłanie danych między komunikującymi się procesami Zarówno w modelu OSI, jak i również modelu TCP/IP odpowiada warstwie transportowej Charakterystyczny dla protokołu TCP jest sposób nawiązania połączenia, nazywany potrójnym uściskiem dłoni (ang. three-way handshake). 17
Skanowanie portów protokołu TCP Mechanizm komunikacji umożliwił opracowanie sześciu podstawowych (istnieją także pewne warianty pochodne) technik skanowania portów protokołu TCP w zależności od ustawionej flagi lub kilku flag: TCP-connect TCP SYN TCP FIN TCP ACK TCP XMAS Skanowanie rozmiarem okna TCP NULL 18
TCP-connect Skanowania to polega na przeprowadzeniu tzw. pełnego połączenia TCP z danym portem (tzw. skanowanie otwarte). Jest to jedna z najprostszych technik. Nawiązanie połączenia przebiega w trzech etapach: Atakujący wysyła pakiet TCP z ustawiona flagą SYN Skanowany host wysyła pakiet z ustawionymi flagami, na podstawie którego można stwierdzić stan portu: SYN/ACK - zwykle oznacza, że port jest otwarty, RST/ACK - oznacza, że port jest zamknięty. Napastnik odsyła ACK. Metoda TCP-connect jest metodą szybką i skuteczną, jednak rzadko używana przez hakerów, ze względu na to, iż pozostawia ślady w logach systemowych. Próba skanowania dużej ilości kolejnych portów może zwrócić uwagę. 19
TCP SYN Jest nieco bardziej wyrafinowaną odmianą techniki TCPconnect. Wykorzystywana jest tu tzw. półotwarcie połączenia - stąd nazywane jest również skanowaniem półotwartym. Nawiązuje połączenia w dwóch etapach: Atakujący wysyła pakiet TCP z ustawiona flagą SYN Skanowany host wysyła pakiet z ustawionymi flagami: SYN/ACK - zwykle oznacza, że port jest otwarty, RST/ACK - oznacza, że port jest zamknięty. Napastnik nie odsyła odpowiedzi w postaci pakietu z ustawiona flagą ACK. Z punktu widzenia napastnika metoda ta jest bezpieczniejsza. Ponieważ nie zostaje nawiązane pełne połączenie, a skanowany komputer oczekuje odpowiedzi (w postaci pakietu z ACK), połączenie może nie zostać zapisane do dziennika. 20
TCP FIN Technikę TCP FIN zalicza się to tzw. skanowania ukrytego (ang. stealth scanning). Z założenia techniki skanowania ukrytego mają na celu ominięcie reguł filtrowania pakietów używanych w zaporach sieciowych. Na początku napastnik wysyła pakiet z ustawiona flaga FIN. Technika ta wykorzystuje założenie, że zamknięte porty odpowiadają na pakiet FIN, pakietem zawierającym flagę RST tym samym zrywają połączenie. Natomiast otwarty port nie odpowiada na pakiet z flaga FIN. Podczas tego skanowania wykorzystywane są specjalnie wygenerowane pakiety FIN. Niektóre systemy operacyjne m.in. większość systemów Windows wysyła odpowiedź RST nawet, wtedy gdy port jest otwarty. W skutek czego wyniki skanowania tą metoda mogą być błędne. 21
TCP ACK Kolejna technika zaliczana to technik skanowania ukrytego. Wykorzystuje zasadę prawidłowego nawiązywania połączenia z potrójnym uściskiem dłoni, a konkretnie ostatni etap, w którym rozpoczynający komunikację wysyła na koniec ustanowienia połączenia flagę ACK. Na samym początku zostaje wysłany pakiet z ACK pomimo, że nie zostało nawiązane połączenie. W wyniku czego skanujący otrzymuje odpowiedź z flaga RST na porcie, który jest zamknięty, a na porcie otwartym nie powinien otrzymać żadnej odpowiedzi. TCP ACK jest najczęściej używane do poznania działania firewalla na testowanym komputerze. Stad często skanery wykorzystujące tę metodę w wypadku otrzymania flagi RST uznają, że dany port nie jest filtrowany, zaś przy braku odpowiedzi należy uznać port za filtrowany przez zaporę sieciową. 22
TCP XMAS Nazwa tej techniki pochodzi od określenia, iż tego typu skanowania wykorzystuję się pakiet przypominający bogato ozdobioną choinkę (ang. Christmas tree), a to z powodu wielu flag ustawionych w pakiecie TCP. W pakiecie tym ustawione są trzy flagi: ACK, URG, PSH. W rezultacie otrzymuję się jako odpowiedź: RST port jest zamknięty brak odpowiedzi port jest otwarty Skanowanie TCP XMAS jest nieskuteczne na nowsze systemy z rodziny Windows. Wynik skanowania pokaże, że wszystkie porty są zamknięte. 23
Skanowanie rozmiarem okna Jest to rodzaj zaawansowanego skanowania (ang. window size scan) podobnego do skanowania ACK, jednak ta technika możliwa jest tylko dzięki temu, że większość systemów operacyjnych modyfikuje pole rozmiaru okna (jeden z parametrów protokołu TCP) chociaż nie jest to zgodne ze specyfikacją RFC 793. Dzięki zmianie rozmiaru okna możliwe jest ustalenie nie tylko faktu filtrowania skanowanego portu przez firewall, ale także stwierdzenia, czy jest on w stanie nasłuchu gdy jakaś usługa pracuję na danym porcie zmodyfikuje rozmiar okna. 24
TCP NULL Ta technika również jest zaliczana do skanowania typu stealth. Polega na wysłaniu na testowane porty pakietu TCP bez żadnej flagi. W zależności od odpowiedzi można określić stan portu: brak odpowiedzi port jest otwarty RST port jest zamknięty. Skanowanie TCP NULL jest nieskuteczne na nowsze systemy z rodziny Windows. Wynik skanowania pokaże, że wszystkie porty są zamknięte. 25
Skanowanie portów protokołu UDP Protokół UDP (ang. User Datagram Protocol) - protokół datagramów użytkownika. Tak jak protokół TCP, umiejscowiony jest w warstwie transportowej. Protokół UDP charakteryzuje się tym, że: jest to protokół bezpołączeniowy, jest możliwość transmisji do kilku adresów docelowych na raz, nie ma narzutu na nawiązywanie połączenia i śledzenie sesji, nie ma mechanizmów kontroli przepływu. 26
Skanowanie portów protokołu UDP Ze względu na to, że jest to protokół bezpołączeniowy, skanowanie jest o wiele trudniejsze niż w przypadku TCP. Nie można wysłać samego pakietu UDP i oczekiwać na odpowiedź portu UDP takiej odpowiedzi nigdy nie będzie. Podczas skanowania UDP wykorzystywany jest protokół ICMP. Większość komputerów wysyła błąd ICMP_PORT_UNREACH, kiedy otrzyma pakiet skierowany na zamknięty port UDP. W przeciwnym wypadku port może być otwarty lub być filtrowany przez zaporę sieciową. Jest to jednak metoda zawodna, gdyż pakiety UDP nie zawsze docierają do celu. 27
Skanowanie portów protokołu UDP Skaner musi mieć zaimplementowaną kontrole przesyłu pakietów. Drugą wadą skanowania portów UDP jest jego niska wydajność większość systemów operacyjnych ogranicza liczbę przesyłanych komunikatów o błędach ICMP sygnalizowany jest błąd w jednostce czasu. Przykładowo jądro systemu Linux limituje liczbę takich pakietów do dwudziestu na sekundę. 28
Skanowanie portów protokołu UDP Na komputerach z zainstalowanym systemem Linux istnieję alternatywne rozwiązanie. Wykorzystuje ono funkcje systemowe: write() lub recvfrom(). Linux pośrednio informuje użytkownika o wystąpieniu błędu podczas połączenia na porcie UDP. Gdy programowo dwa razy zostanie wywołana funkcja write() na zamkniętym porcie, za drugim razem zostanie zakończona niepowodzeniem. Wywołanie recvfrom() na nie blokowanych gniazdach połączeń UDP zazwyczaj zwraca komunikat ponownej próby EGAIN, jeśli błąd nie został odebrany lub jeśli został, zwracana jest wartość ECONNREFUSED (odrzucone połączenie). Warto dodać, iż mimo, że techniki wykorzystujące funkcję write() lub recvfrom() są rzadko stosowane to ich użycia w Linuksie nie są wymagane uprawnienia administratora w przeciwieństwie metody wykorzystującej ICMP 29
FTP bounce attack Skanowanie FTP bounce attack nazywane jest tez czasem skanowaniem przekierowaniem odpowiedzi serwera FTP. Protokół FTP (ang. File Transfer Protocol ) Protokół Transferu Plików jest protokołem typu klient-serwer, który umożliwia przesyłanie plików z i na serwer poprzez sieć opartą o stos TCP/IP. Protokół ten jest w warstwie aplikacji modelu TCP/IP. FTP do standardowej pracy wykorzystuje dwa porty TCP: port 20 do przesyłania danych oraz port 21 do przesyłania poleceń między klientem a serwerem. FTP bounce attack zalicza się to anonimowych technik skanowania. Serwer FTP wykorzystuje polecenie PORT do kontrolowania połączenia i to za jego pomocą serwer dowiaduję się na jaki adres i port ma wysłać dane. 30
FTP bounce attack U podstaw tej metody skanowania leży fakt, że w specyfikacji protokołu FTP zdefiniowano możliwość trybu pracy serwera FTP, w którym wyniki przekazuje on do innej stacji roboczej 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 wyrażenie: X * 256 + Y określa numer skanowanego portu. Jeżeli serwer FTP umożliwia przekierowanie, odpowie komunikatem o kodzie 200, jeżeli nie umożliwia komunikatem o kodzie 500. Napastnik wydaje dowolną komendę (np. LIST) inicjującą transmisję danych na docelowy host (wskazany komendą PORT A,B,C,D,X,Y) 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. 31
FTP bounce attack 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. Metoda nie gwarantuje jednak pełnej anonimowość w logach serwera FTP pozostają informacje, które mogą doprowadzić do wykrycia inicjatora skanowania portów. Nie zawsze istnieje możliwość wykorzystania serwera FTP do przeprowadzenia tego typu skanowania. Niektóre serwery nie umożliwiają wykonywania na nich polecenia PORT w takiej sytuacji próba ataku zakończy się niepowodzeniem. Większość współczesnych serwerów FTP jest zabezpieczona przed tego typu atakami. 32
Skanowanie modemowe - wardialing Wardialing (lub war dialing) nazywane również z ang. modem scanning to technika polegająca na użyciu modemu do automatycznego skanowania listy numerów telefonicznych, zazwyczaj poprzez dzwonienie pod każdy lokalny numer celem poszukiwania komputerów, faksów lub serwisów BBS (ang. Bulletin Board System) komputerów, które w czasach gdy Internet dopiero się rozwijał, służyły do umieszczania i czytania ogłoszeń, obsługiwania własnej skrzynki e-mail, czy też dokonywania transferu plików. Osoba korzystająca z tej techniki skanowania, najczęściej określana jako haker, używała tak zdobytych w informacji do różnych celów, w tym również do przygotowania włamania. Skanowanie to miało na celu zlokalizowanie modemów w sieci. 33
Skanowanie modemowe - wardialing W zależności od ilości numerów takie skanowanie było procesem dość czasochłonnym. Mechanizm wardialingu polegał na tym, że wydzwaniający komputer wybierał nieznany numer czekając zwykle do dwóch dzwonków - inne komputery podłączone do sieci telefonicznej odbierały zazwyczaj natychmiast. Jeśli telefon dzwonił dwa razy komputer przerywał próbę i wybierał następny numer, podobnie jak po odebraniu przez człowieka lub automatyczną sekretarkę. Natomiast w przypadku odebrania połączenia przez komputer wyposażony w modem lub faks numer był dopisywany do listy. 34
Audyt bezpieczeństwa (skanowanie otoczenia sieciowego) K O N I E C