• Nie Znaleziono Wyników

N MAP - SKANOWANIE PORTÓW I HOSTÓW W SIECI

2. PRZEGLĄD NARZĘDZI ATAKU

2.1 N MAP - SKANOWANIE PORTÓW I HOSTÓW W SIECI

Jednym z najbardziej popularnych skanerów sieci, który moŜe być uŜyty zarówno do wykrywania hostów jak i do skanowania portów danego hosta jest program Nmap (Network Mapper)9. Dostępny jest on w wersjach dla róŜnych systemów operacyjnych, takich jak Linux, Microsoft Windows, FreeBSD, OpenBSD, Solaris, IRIX, Mac OS X, HP-UX, NetBSD, Sun OS i innych.

2.1.1 Wyszukiwanie hostów

Wyszukiwanie hostów w programie Nmap (opcja –sP) działa podobnie do tradycyjnego programu ping wysyłającego komunikat protokołu ICMP typu Echo Request (prośba o odpowiedź, lub tzw. ping). Protokół ICMP słuŜy do diagnostyki i sterowania przepływem komunikatów w sieci. Po wysłaniu pakietu ICMP, Nmap czeka na odpowiedź od hosta, który był jego adresatem. PoniŜszy przykład ilustruje wynik działania programu po przeszukaniu lokalnej sieci na obecność uruchomionych hostów:

E:\nmap-3.93>nmap -sP 192.168.1.1-254

Starting nmap 3.93 ( http://www.insecure.org/nmap ) at 2005-12-03 11:44

Host (192.168.1.7) appears to be up.

Host trynka (192.168.1.20) appears to be up.

Host bartek (192.168.1.202) appears to be up.

Nmap finished: 254 IP address (3 host up) scanned in 14.837 seconds

Nmap zwrócił informację, Ŝe trzy hosty w sieci o adresie 192.168.1.0/24 odpowiedziały na wysłany pakiet. Są to komputery o adresach IP 192.168.1.7, 192.168.1.20 oraz 192.168.1.202.

9

PoniewaŜ w wielu hostach pakiety protokołu ICMP są blokowane (np. przez zapory ogniowe, rutery, itp.), moŜliwa jest próba nawiązania połączenia TCP z portem 80 (standardowy port usługi WWW) lub na innym dowolnym porcie (opcja – P). Zwykle, gdy skanowany host nie udostępnia Ŝadnej usługi (wszystkie porty są zamknięte), wysyłany jest przez jego podsystem TCP/IP pakiet RST, co w tym przypadku równieŜ wystarcza, aby stwierdzić, Ŝe dany komputer jest uruchomiony.

Jednak nie wszystkie systemy operacyjne postępują zgodnie ze specyfikacją protokołów, dlatego brak odpowiedzi nie daje 100% pewności odnośnie braku istnienia skanowanego hosta.

2.1.2 Skanowanie portów TCP

Podstawową metodą skanowania jest próba nawiązania połączenia z otwartym portem zdalnego hosta (opcja -sT). W poniŜszym przykładzie, Nmap próbuje połączyć się z portami od 1-1024 (tzw. well known ports - dobrze znane porty) hosta o adresie IP 192.168.1.20. Porty 1-1024 skanowane są domyślnie natomiast, jeŜeli istnieje potrzeba skanowania portów powyŜej 1024, naleŜy to sprecyzować podczas uruchamiania programu. Te porty, które odpowiedzą inaczej niŜ pakietem z ustawioną flagą RST uznaje się za otwarte, pozostałe traktowane są jako zamknięte.

E:\nmap-3.93>nmap -sT 192.168.1.20

Starting nmap 3.93 ( http://www.insecure.org/nmap ) at 2005-12-03 14:48

Interesting ports on 192.168.1.20:

(The 1661 ports scanned but not shown below are in state: filtered)

PORT STATE SERVICE

25/tcp open smtp

119/tcp open nntp

135/tcp open msrpc

139/tcp open netbios-ssn

143/tcp open imap

445/tcp open microsoft-ds

1025/tcp open NFS-or-IIS

MAC Address: 00:20:ED:41:29:A5 (Giga-byte Technology CO.)

Nmap finished: 1 IP address (1 host up) scanned in 170.966 seconds

Jak widać, w badanym systemie zostało wykrytych siedem otwartych portów.

W celu wykrycia usług RPC10, naleŜy wprowadzić opcję -sR.

Ciekawy jest sposób, w jaki program działa w zaleŜności od uŜytych opcji skanowania. W przypadku opcji: –sT, -sR oraz –sP (ping scan) zawsze najpierw wysyłany jest pakiet SYN. Gdy zostanie wysłana odpowiedź SYN/ACK, Nmap odpowiada pakietem ACK i od razu wysyła pakiet RST kończąc w ten sposób wymianę pakietów. Wynikiem działania jest informacja, Ŝe skanowany port jest otwarty, a host jest dostępny. Gdy Nmap otrzyma odpowiedź RST, oznacza to zamknięty port, ale skanowany komputer jest dostępny. Gdy nie ma odpowiedzi, zakłada się, Ŝe port jest zablokowany przez zaporę sieciową lub skanowany host nie działa. Jednak połączenia nawiązywane w powyŜszy sposób raczej na pewno zostaną odnotowane w logach systemowych skanowanej maszyny. Z punktu widzenia włamywacza jest to absolutnie nie do zaakceptowania. I właśnie tutaj okazuje się jak bardzo wszechstronnym narzędziem jest Nmap. UŜycie opcji -sS programu powoduje, Ŝe program nawiązuje sesję ze skanowanym hostem wysyłając pakiet SYN, ale potem zachowuje się niezgodnie ze specyfikacją protokołu TCP. Gdy otrzyma pakiet z ustawioną flagą RST będzie to oznaczało, Ŝe port jest zamknięty. Natomiast, jeśli otrzyma w odpowiedzi pakiet SYN/ACK, zamiast wysłać pakiet SYN (zgodnie ze specyfikacją) wysyła pakiet RST. PoniewaŜ zachowanie to powoduje zerwanie procesu ustanawiania sesji, wiele usług potraktowanych w ten sposób nie odnotuje takiego połączenia w logach bezpieczeństwa. Skoro nie ma śladu w logach, intruz moŜe spokojnie skanować wszystkie porty. Mimo Ŝe większość usług nie odnotuje przerwanego nawiązywania sesji, większość systemów IDS (Intrusion Detection System) oraz zapór ogniowych (firewalls) jest bardzo uczulona na podobne praktyki. Najnowsze systemy operacyjne i systemy zapisujące zdarzenia odnotowują wszelkie nieprawidłowości, takŜe nie do końca nawiązane sesje lub wszelkie anomalia (zdarzenia niezdefiniowane protokołem).

Jednak w Internecie funkcjonuje sporo starszych systemów, często w Ŝaden sposób niezabezpieczonych. Skanowanie tym sposobem określane jest mianem skanowania niewidzialnego – stealth.

Jednym z pomysłów na ominięcie powyŜszej niedogodności jest wykorzystanie cechy protokołu TCP, w którym, w przypadku próby nawiązania połączenia

10Remote Procedure Call -usługi pozwalające na zdalne wykonywanie zadań; np.: SSH, X11, HTTP i

z zamkniętym portem wysyłany jest pakiet RST. Opcja -sF programu uruchamia skanowanie FIN typu stealth. Pakiet TCP z ustawioną flagą FIN normalnie kończy sesję między dwoma hostami. Gdy jednak zostanie wysłany bez wcześniejszego ustanowienia sesji, otwarte porty powinny go zignorować, natomiast w przypadku portów zamkniętych powinien zostać wysłany pakiet RST.

Innymi metodami skanowania typu stealth jest wysyłanie przez Nmap pakietów z aŜ trzema bez sensownie (z punktu widzenia specyfikacji protokołu TCP) ustawionymi flagami (opcja -sX) czy skanowanie puste (opcja -sN), w którym Nmap próbuje nawiązać połączenie wysyłając pakiet bez ustawionych flag11.

Niestety nie wszystkie systemy operacyjne mają prawidłowo (zgodnie z zaleceniem) zaimplementowaną obsługę stosu protokołów TCP/IP. Oznacza to, Ŝe nie muszą się zachowywać tak, jak opisano wcześniej. Dobrze zabezpieczone hosty mogą teŜ wysyłać fałszywe odpowiedzi. Istnieje teŜ grupa inteligentnych zapór ogniowych, które zapisują w swoich tablicach stanów historię przepływu pakietów, potrafiąc wyciągać wnioski i odpowiednio do potrzeb działać na podstawie ruchu pakietów odbywającego się w określonym czasie.

2.1.3 Skanowanie portów UDP

Za pomocą programu Nmap moŜna równieŜ badać porty bezpołączeniowego protokołu UDP. Określenie bezpołączeniowy oznacza, Ŝe pakiety wysyłane są bez uprzedniego zestawienia sesji jak to ma miejsce w komunikacji poprzez protokół TCP.

W komunikacji przy pomocy protokołu UDP nie występują potwierdzenia otrzymania informacji, dlatego pakiety te mogą się gubić w sieci. Nmap z opcją -sU wysyła pusty pakiet UDP i czeka na informację zwrotną ICMP Port unreachable (port niedostępny).

Otrzymanie jej oznacza zamknięty port. Gdy skaner nie otrzyma Ŝadnej informacji zwrotnej, zakłada się, Ŝe port jest otwarty. Trzeba teŜ wybadać, czy zapora sieciowa nie blokuje pakietów ICMP wysyłanych do skanowanego hosta, poniewaŜ w takim przypadku Nmap moŜe zwrócić informację, Ŝe wszystkie porty są otwarte, co moŜe nie być prawdą. Mając na uwadze ten problem, program domyślnie próbuje wysłać

11Więcej o opcjach programu i przykładach zastosowań moŜna znaleźć w dokumentacji programu, który jest dostępny pod adresem http://www.insecure.org/nmap/man/

pakiet ICMP Echo request (tzw. ping) do skanowanego hosta zanim rozpocznie skanowanie.

2.1.4 Inne funkcje programu

Dla hakera, nie mniej waŜne od zgodnych z rzeczywistością wyników skanowania jest równieŜ skuteczne ukrywanie samego faktu skanowania. Nmap pozwala na wykorzystanie kilku technik zmniejszających ryzyko wykrycia.

Pierwszą z nich jest FTP Bounce (odbijanie FTP). Technika ta wykorzystuje pewną słabość zdefiniowaną w specyfikacji protokołu FTP. Kiedy nawiązywane jest połączenie z serwerem FTP za pomocą klienta FTP, klient nawiązuje domyślnie połączenie z serwerem poprzez port 21 TCP serwera. Jest to tzw. połączenie kontrolne, słuŜące do przesyłania informacji diagnostycznych i konfiguracyjnych. Aby przesyłać strumienie danych, serwer musi nawiązać osobne połączenie z klientem. Oczywiście klient zacznie nasłuchiwać na nowym porcie, ale najpierw musi poinformować o tym serwer FTP. SłuŜy do tego komenda PORT, za pomocą której klient prosi o zainicjowanie połączenia podając adres IP i numer portu, na którym nasłuchuje.

Metoda ta nosi nazwę aktywnego transferu. Okazuje się jednak, Ŝe klient wcale nie musi podać swojego adresu IP. MoŜna więc, wykorzystać serwer FTP do nawiązania połączenia z innym hostem niŜ nasz klient FTP i przechwycić informacje, które serwerowi zwróci ów host.

Z aktywnym transferem wiąŜe się teŜ pewien problem. OtóŜ wiele klientów FTP znajduje się za zaporą sieciową lub urządzeniem NAT (Network Address Translation), które nie dopuszczają ruchu FTP inicjowanego z zewnątrz. W takim przypadku technika FTP bounce jest idealnym rozwiązaniem. Napastnik uzyskuje dostęp do serwera FTP, a serwer FTP uzyskuje dostęp do poszczególnych hostów wewnątrz strefy zwracając potrzebne informacje. Obecnie najczęściej komunikacja FTP odbywa się w trybie pasywnym - klient inicjuje zarówno połączenie kontrolne jak i transfer danych, co pozwala na korzystanie z FTP mimo obecności urządzeń filtrujących, takich jak zapory sieciowe (pod warunkiem, Ŝe reguły w nich zdefiniowane pozwalają na to komputerom z sieci wewnętrznej). Jednak w Internecie działa sporo starych serwerów FTP podatnych na technikę FTP bounce i pozwalających na wykorzystywanie aktywnego transferu. Nmap potrafi nawiązać połączenie FTP w trybie

aktywnym, a następnie wysłać do serwera FTP komendę PORT zawierającą adres IP skanowanego hosta oraz numery portów, które mają być sprawdzone.

Drugą techniką zmniejszającą ryzyko wykrycia jest wykorzystanie fragmentacji (opcja -f). Pakiety te wysyłane są z uciętymi nagłówkami TCP imitując uszkodzone lub zdefragmentowane pakiety. Niektóre słabsze zapory ogniowe nie radzą sobie z tego typu przepływem danych.

Trzecią techniką oferowaną przez Nmap jest wykorzystanie tzw. przynęty. Dzięki opcji -D uŜytkownik moŜe wprowadzić kilka adresów IP oddzielonych przecinkami. Nmap rozpocznie skanowanie wykorzystując te adresy jako adresy źródłowe. Dodatkowo zostanie pomieszana kolejność skanowanych portów dla kaŜdego adresu. W logach skanowanego systemu pojawi się więc kilka prób skanowania róŜnych portów z róŜnych adresów IP i tylko jeden z tych adresów będzie prawdziwy.

Kolejną techniką mogącą ukryć fakt skanowania jest wykorzystywana domyślnie przez Nmap randomizacja numerów skanowanych portów. O wiele trudniej jest znaleźć w logach wpisy dotyczące skanowania, gdy numery portów wybierane są w kolejności losowej, a nie po kolei np. od najmniejszego do największego.

Warto równieŜ wspomnieć, Ŝe program ten zawiera rozbudowaną bazę danych, zawierającą luki w stosach TCP/IP wielu wersji, wielu systemów operacyjnych. Baza ta, słuŜąca identyfikacji systemów operacyjnych i ich wersji na odległość uwaŜana jest za jedną z najlepszych12. Do identyfikacji systemu komputera Nmap potrzebuje dostępu do zamkniętych i otwartych portów TCP oraz działających usługach. Gdy program napotka na system, którego nie moŜe rozpoznać, tworzy dla tego systemu „odcisk palca” i prosi o przesłanie go twórcom bazy danych, by został uwzględniony w następnych wersjach programu.

Powiązane dokumenty