Skanowanie portów – działanie polegające na wysyłaniu pakietów TCP lub UDP do systemu lub systemów (dowolnego typu: komputerów, drukarek, routerów) dostępnych przez sieć TCP/IP celem sprawdzenia otwartych portów i dostępnych serwisów.
Istnieje wiele metod skanowania i analizy nadchodzących odpowiedzi. Potencjalnie dzięki skanowaniu można uzyskać dużo informacji o:
- systemie operacyjnym,
- dostępnych usługach sieciowych,
- wersji programów obsługujących udostępnione usługi.
Ze względu na to, iż informacje uzyskane ze skanowania portów mogą być wykorzystane do złamania zabezpieczeń systemu administratorzy zwykle sami sprawdzają co widać patrząc z zewnątrz.
Skaner portów jest to oprogramowanie przeznaczone do szukania otwartych portów na serwerach. Jest ono często używane przez administratorów w celu sprawdzenia zabezpieczeń ich sieci oraz przez crackerów do znalezienia otwartych portów. Skanowanie portu serwera jest to szukanie nasłuchujących portów na danym serwerze. Inną metodą jest portsweep która skanuje wiele serwerów w poszukiwaniu konkretnego nasłuchującego portu. Jest ona przeważnie stosowana w celu znalezienia specyficznej usługi, na przykład, robak komputerowy oparty na SQL może szukać serwerów nasłuchujących na porcie TCP/UDP numer 1433.
Podstawowa wiedza o TCP/IP
TCP/IP jest obecnie najczęściej używanym protokołem sieciowym w internecie. W tym systemie serwery i usługi sieciowe są określone dwoma parametrami: adresem sieciowym i numerem portu. Istnieje 65536 różnych używalnych numerów portów. Większość usług używa ograniczoną liczbę portów; ich numery zostaną zarejestrowane w IANA kiedy usługa stanie się wystarczająco znacząca.
Część skanerów portów skanuje tylko najczęściej używane, lub najbardziej wrażliwe, porty na danym serwerze. Zobacz: porty protokołu.
Wynik skanowania jest najczęściej zaliczony do jednej z trzech kategorii:
- Otwarty lub Zaakceptowany: Serwer wysłał odpowiedź wskazującą, że usługa nasłuchuje na danym porcie.
- Zamknięty lub Zabroniony lub Nie nasłuchuje: Serwer wysłał odpowiedź wskazującą, że połączenia są zabronione.
- Odfiltrowane, Upuszczone (ang: Dropped) lub Zablokowane: Nie było odpowiedzi od serwera.
Otwarte porty stanowią dwa zagrożenia o których administratorzy muszą wiedzieć:
- Problem bezpieczeństwa i stabilności programu odpowiedzialnego za świadczenie usługi.
- Problem bezpieczeństwa i stabilności systemu operacyjnego na którym działa serwer.
Zamknięte porty mogą stanowić tylko to drugie zagrożenie. Zablokowane porty nie stanowią żadnego rozsądnego zagrożenia. Jest możliwość, że istnieją nieznane luki w bezpieczeństwie oprogramowania bądź systemu operacyjnego.
Informacje pozyskane skanerem portów mają zgodne z prawem zastosowania, na przykład sprawdzenie bezpieczeństwa sieci. Jednak skanowanie portów może posłużyć tym, którzy zamierzają złamać zabezpieczenia. Wiele exploitów polega na znalezieniu otwartych portów przez skaner portów i wysłaniu dużych ilości danych w celu osiągnięcia stanu zwanego przepełnieniem bufora. Takie działanie może mieć negatywny wpływ na bezpieczeństwo sieci i komputerów należących do niej, skutkujące utratą bądź ujawnieniem poufnych informacji i uniemożliwieniem pracy.
Skanowanie SYN
Skanowanie SYN jest najbardziej popularną formą skanowania TCP. Skaner portów zamiast używać funkcji sieciowych systemu operacyjnego wysyła „surowe” pakiety IP i monitoruje odpowiedzi. Ten typ skanowania jest również nazywany „częściowo otwartym skanowaniem” (ang. half-open scanning), ponieważ nigdy faktycznie nie otwiera pełnego połączenia TCP. Skaner portów generuje pakiet SYN. Jeżeli port jest otwarty, odpowie pakietem SYN-ACK. Komputer skanujący odpowiada pakietem RST zamykając połączenie zanim „przywitanie” (ang. handshake) jest ukończone.
Używanie „surowych” połączeń ma wiele zalet, dających skanerowi portów pełną kontrole nad pakietami wysłanymi i limitami czasu odpowiedzi pozwalających na szczegółowe analizowanie odpowiedzi. Istnieje dyskusja, które skanowanie jest mniej intruzyjne dla danego serwera. Skanowanie SYN ma zaletę tego, że indywidualne usługi nigdy faktycznie nie odbierają połączenia, podczas gdy inne usługi mogą być przerwane skanowaniem połączenia. RST podczas „przywitania” może jednak powodować problemy w pewnych oprogramowaniach sieciowych w szczególności dla prostych urządzeń jak drukarki. W tym wypadku nie ma jednoznacznie dobrego rozwiązania.
Skanowanie TCP
Najprostsze skanery portów używają funkcji sieciowych systemu operacyjnego i jest to przeważnie następna opcja gdy SYN nie jest realnym rozwiązaniem. Nmap nazywa tę metodę connect scan, nazwaną po Uniksowym wywołaniu systemowym connect(). Jeżeli port jest otwarty, system operacyjny dokańcza „przywitanie” (ang. three-way handshake) protokołu TCP i skaner portów natychmiast kończy połączenie. W przeciwnym wypadku zwrócony jest kod błędu. Zaletą tej metody jest fakt, że użytkownik nie musi posiadać specjalnych uprawnień. Jednak używanie funkcji sieciowych systemu operacyjnego uniemożliwia kontrolę niskopoziomową (ang. low-level control), dlatego też to skanowanie jest rzadziej używane.
Skanowanie UDP
Skanowanie UDP jest również możliwe, jednak są „problemy” techniczne. UDP jest protokołem bezpołączeniowym, więc nie ma żadnego odpowiednika pakietu TCP SYN. Natomiast, gdy pakiet UDP jest wysłany do portu, który nie jest otwarty, system odpowie wiadomością o nieosiągalności portu ICMP. Większość skanerów portów UDP używa tej metody skanowania i wykorzystuje brak odpowiedzi, aby stwierdzić, że port jest otwarty. Jednak gdy port jest zablokowany przez zaporę sieciową, ta metoda błędnie określi że port jest otwarty. Kiedy wiadomość o nieosiągalności portu jest zablokowana wszystkie porty będą pokazane jako otwarte. Ta metoda również zależy od ICMP rate limiting.
Alternatywnym podejściem jest wysyłanie pakietów UDP (specyficznych dla aplikacji) w nadziei uzyskania odpowiedzi na poziomie warstwy aplikacji. Na przykład wysyłanie zapytania DNS do portu 53 skutkuje odpowiedzią, jeżeli serwer DNS istnieje. Ta metoda jest o wiele bardziej wiarygodna w określaniu otwartych portów. Jest ograniczona jednak do skanowania portów na których, specyficzne dla aplikacji, pakiety „sondy” są dostępne. Niektóre narzędzia (np. nmap) mają sondy dla mniej niż 20 usług UDP, podczas gdy komercyjne narzędzia (np. nessus) posiadają 70. W niektórych przypadkach usługa może nasłuchiwać na porcie, ale być tak skonfigurowana, aby nie odpowiadać na konkretny pakiet „sondę”.
Żeby zaradzić różnym ograniczeniom każdego podejścia niektóre skanery oferują metodę hybrydową. Na przykład używanie nmap z opcją -sUV rozpocznie metodę wykorzystującą ICMP zaznaczając wszystkie porty jako „zamknięte”, bądź „otwarte|filtrowane”. Porty otwarte|filtrowane są następnie „sondowane” w celu uzyskania odpowiedzi aplikacji i zaznaczane jako „otwarte” gdy taka nastąpi.
Skanowanie ACK
Skanowanie ACK jest jednym z najbardziej unikalnych typów skanowania, ponieważ nie stwierdza dokładnie czy port jest otwarty czy zamknięty, tylko czy port jest filtrowany czy nie. Jest to szczególnie dobre, gdy chce się wykryć obecność zapory sieciowej i jej reguł połączeń. Proste filtrowanie pakietów pozwoli nawiązać połączenia (pakiety z zestawem bitów ACK), aczkolwiek bardziej wyszukana zapora może nie zezwolić na to.
Skanowanie okien
Rzadko stosowana ze względu na przestarzałą naturę, skanowanie okien, jest mało wiarygodne w określaniu czy port jest otwarty bądź zamknięty. Generuje taki sam pakiet jak metoda ACK, ale sprawdza czy pole okna pakietu było zmienione. Gdy pakiet dotrze do celu „wada projektowa” próbuje stworzyć rozmiar okna dla pakietu, jeżeli port jest otwartym zaznacza pole okna pakietu jako jedynki zanim wróci do wysyłającego.
Podczas gdy ta metoda została wyparta prawie kompletnie, używanie tej techniki skanowania z systemami, które już nie zapewniają wsparcia dla tej implementacji zwraca zera dla pola okna zaznaczając otwarte porty jako zamknięte.
Skanowanie FIN
Od kiedy skanowanie SYN nie jest już takie niewidoczne, zapory sieciowe przeważnie skanują i blokują pakiety w formie pakietów SYN. Zaprezentowane w wydaniu Phrack 49 artykuł nr 15 z roku 1996 przez Uriel Maimon. Jest udokumentowane, że pakiety FIN mogą ominąć zaporę bez żadnej modyfikacji jego przeznaczenia. Zamknięte porty odpowiadają na pakiet FIN odpowiednim pakietem RST, podczas gdy otwarte porty ignorują pakiet „od ręki” To jest typowe zachowanie ze względu na naturę TCP i w pewnych aspektach jest to jego nieuniknionym upadkiem. Systemy podatne na ten rodzaj skanowania to większość Uniksów i systemów NT. Microsoft jest odporny ponieważ wyśle pakiet RST niezależnie czy port jest otwarty czy zamknięty.
Skanowanie jałowe
Skanowanie jałowe (ang. idle scan) pozwala na ukrycie obecności komputera skanującego. Do wykonania tego skanowania niezbędne jest skorzystanie z trzeciego hosta (poza skanującym i skanowanym), tzw. hosta zombie. Skanowanie jałowe wykorzystuje obserwację zmian numeru identyfikacyjnego IPID oraz fałszowanie adresu nadawcy pakietów. Jest to jedna z bardziej złożonych metod skanowania, zapewnia jednak duży poziom anonimowości.
Niestandardowe skanowanie TCP
Pozwala użytkownikowi całkowicie skonfigurować skanowanie, ta technika skanowania jest raczej dla zaawansowanych potrzeb gdy standardowe techniki skanowania mają braki w pewnych aspektach.
Inne typy skanowania
Istnieją bardziej nietypowe metody skanowania, mają wiele ograniczeń i nie są powszechnie używane. Nmap wspiera większość z nich.
- Skanowanie protokołu – stwierdza które protokoły poziomu IP (TCP, UDP, GRE etc.) są włączone.
- Skanowanie serwera pośredniczącego – proxy (SOCKS or HTTP) jest używane do przeprowadzenia skanowania. Cel będzie widział adres IP serwera pośredniczącego jako źródło. Może być to również przeprowadzone używając pewnych serwerów FTP.
- Skanowanie bezczynne – Kolejna metoda skanowania nie ujawniająca twojego adresu IP, wykorzystująca wadę predictable ip id.
- CatScan – Sprawdza porty w poszukiwaniu błędnych pakietów.
- Skanowanie ICMP – stwierdza czy serwer odpowiada na zapytania ICMP jak: echo (ping), netmask etc.
Problemy z dostawcami internetu i skanowaniem portów
Wielu dostawców internetu pozbawia swoich klientów możliwości skanowania portów poza ich sieciami domowymi. Jest to przeważnie uregulowane w umowie na którą klient się zgodził. Inne publiczne i prywatne sieci również mogą nałożyć takie ograniczenia na użytkowników.
Niektórzy dostawcy internetu implementują filtry pakietów albo przezroczysty serwer pośredniczący, które zapobiegają skanerom portów możliwości dostępu do pewnych portów. Na przykład jeżeli ISP udostępnia transparent HTTP proxy na porcie 80, skany portów jakiegokolwiek adresu pokażą, że port 80 jest otwarty niezależnie od stanu faktycznego.
Zobacz też
Programy komputerowe służące do skanowania portów:
Programy wykrywające skanowanie portów:
Technika otwierania portów tylko uprawnionym użytkownikom: