Audyt bezpieczeństwa (skanowanie otoczenia sieciowego)

Transkrypt

Audyt bezpieczeństwa (skanowanie otoczenia sieciowego)
Audyt bezpieczeństwa
(skanowanie otoczenia sieciowego)
Artur Sierszeń
[email protected]
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ół
IP
TCP
Nazwa parametru
czas życia pakietu TTL
Nazwa oryginalna
Time To Live
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ę
22
sieciową.
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

Podobne dokumenty