Jeszcze dziesięć lat temu skanowanie portów kojarzyło się z początkową częścią ataku na system informatyczny. Dziś skanery portów są stosowane jako niezbędnik administratora sieci, dlatego też najpopularniejsze narzędzia tego typu często widnieją jako standardowy składnik serwerowego systemu operacyjnego. W artykule tym wyjaśnię jakie szczegółowe zastosowanie mają skanery portów oraz przedstawię zastosowanie jednego z nich.
Techniczna definicja skanowania portów to zbiór działań polegających na sprawdzeniu maksymalnie dużej ilości portów wraz z śledzeniem portów otwartych bądź też takich, które są podatne na ataki. Mając takie informacje, administrator systemu jest w stanie określić co należałoby zrobić aby zabezpieczyć się przed atakiem na jego infrastrukturę informatyczną. W praktyce hacker (cracker?) po znalezieniu otwartego bądź też podatnego na wykorzystanie portu, używa różnorakich narzędzi jak np. Metasploit który posiada bogatą bazę programów tzw. exploitów (typ szkodliwego oprogramowania zawierający najczęściej kod wykorzystujący luki w systemie/oprogramowaniu) dzięki czemu może wykonywać nieautoryzowane działania jak np. zdalne wykonanie kodu co zaś prowadzi np. do utraty danych lub wykorzystania urządzeń wewnątrz infrastruktury do dalszych ataków.
W zależności od zastosowanych rozwiązań w infrastrukturze danej sieci, stosuje się różne typy skanowań. Krótko scharakteryzujemy najpopularniejsze z nich:
Skanowanie typu TCP (tzw. skanowanie pełne) – najpopularniejsza i najprostsza metoda skanowania, w której skaner portów próbuje nawiązać pełne połączenie ze skanowanymi portami. Łatwo dzięki temu odnaleźć otwarte porty.
Skanowanie typu TCP SYN (inaczej nazywa skanowaniem połówkowym) – skaner w tym wypadku nie używa funkcji sieciowych, wysyła puste pakiety IP i analizuje jego odpowiedzi. Jeśli skaner dostanie pakiet SYN/ACK znaczy to że port jest nasłuchiwany, w innym wypadku skaner otrzyma pakiet RST. Po odebraniu pakietu z informacją o nasłuchiwaniu, skaner zakańcza połączenie poprzez wysłanie pakietu RST. W przeciwieństwie do metody pełnego skanowania portów, tutaj nigdy nie jest nawiązywane pełne połączenie TCP.
Skanowanie typu TCP FIN – jest to mniej wydajna aczkolwiek „cichsza” w działaniu metoda skanowania portów bo ciężka do wykrycia. Wiele urządzeń typu firewall wychwytuje próby skanowania portów co automatycznie zgłasza administratorowi systemu. Sekret tej metody polega na fakcie iż w momencie przeskanowania otwartego portu otrzymujemy odpowiedź pakietem RST, natomiast zamknięte porty ignorują je. Nam metoda tego typu nie będzie potrzebna, a jest jedynie przykładem i ciekawostką gdyż osoby próbujące dostać się do naszej sieci często stosują właśnie tą metodę.
Jeśli chodzi o narzędzia istnieje oczywiście bardzo wiele darmowych rozwiązań tego typu. Jak wspomniałem na początku wiele tych programów jest dołączonych do płyt pentestera (czyli tzw. legalnych hakerów) jak np. w systemie Kali Linux (wcześnie Backtrack) program nmap.
Program nmap początkowo został stworzony do skanowania obszernych sieci. Z uwagi jednak na bardzo zadowalającą wydajność, szybko znalazł rzesze użytkowników niemalże domowych. Posiada on wiele opcji które umożliwiają dostosowanie jakości skanowania, m.in. dynamiczne obliczanie odstępu czasu między poszczególnymi pakietami czy też skanowanie równoległe. Jako jeden z pierwszych programów umożliwiał sprecyzowanie zakresu skanowanych maszyn w sieci czy konkretnych portów. Program od początku swego istnienia przedstawiał filozofię TMTOWTDI (there’s more than one way to do it – z ang. każdą rzecz można wykonać na wiele sposobów) znana wielu programistom.
Program nmap występuje na wielu platformach. W artykule tym skupimy się na systemie Kali Linux w wersji 2016.2 z użyciem zalecanej przez autora linii komend, choć jest dostępna również jego wersja z interfejsem graficznym. Wcześniej jednak wyszczególnimy sobie stany portów w programie nmap, jest ich dokładnie sześć:
1) Otwarty – najbardziej interesujący nas stan. To dzięki niemu crackerzy mogą wykorzystywać luki w naszych systemach żeby dokonać penetracji sieci
2) Zamknięty – stan ten zachodzi gdy host odpowiada na pakiety nmap ale nie ma żadnych aplikacji które byłby wstanie obsłużyć request.
3) Filtrowany – połączenie jest filtrowane najczęściej przez sprzętowy lub software’owy firewall i przez to nie jesteśmy w stanie określić czy port jest otwarty
4) Niefiltrowany – mamy pewność że skanowany port jest dostępny, ale nie mamy możliwości sprecyzowania czy jest on zamknięty czy też otwarty. W przypadku mapowania reguł na urządzeniach typu firewall może nadać portom taki stan
5) Otwarty | filtrowany – jak sama nazwa sugeruje stan ten pojawia się w momencie gdy skaner nie jest w stanie rozpoznać czy port jest otwarty czy tez filtrowany. Najczęściej stan ten występuje w momencie gdy porty nie dają żadnej odpowiedzi co może oznaczać że filtr pakietu zablokował połączenie
6) Zamknięty | filtrowany – dokładnie jak wyżej, z tym że tutaj nmap ma problem z określeniem czy port jest zamknięty czy filtrowany.
Zacznijmy od sprawdzenia wersji naszego programu. Wersje wychodzą dość rzadko, ale warto mieć jego aktualną wersję (zwłaszcza gdy wygrzebaliśmy pendrive z bootowalną wersją systemu nagraną 'jakiś czas temu’ na pendrive)
Jak w każdej konsolowej aplikacji najważniejsza dla nas będzie dokumentacja którą przypomnijmy sobie odpowiednie parametry w razie potrzeby. Służy do tego oczywiście help czyli parametr ’-h’:
Skoro posiadamy już niezbędną dokumentację, możemy spróbować dokonać naszego pierwszego skanowania:
W ten sposób otrzymaliśmy informację o hoście 192.168.0.129 a dokładniej jego otwarte porty, stan i działające usługi. Ciekawostką jest, że Nmap nie skanuje portów po kolei a robi to losowo. Możemy jednak za pomocą parametru ‘-r’ wymusić sekwencyjną kolejność skanowania.
Skanu dokonaliśmy dla jednego konkretnego hosta. Możemy jednak zawęzić zakres skanowanych maszyn poprzez zaznaczenie jego przedziału:
W ten sposób skanujemy hosty w sieci z zakresu adresów 192.168.0.1 – 192.168.0.30
Choć w naszym prezentowanym przykładzie sprawdzania własnej sieci się to nie przyda, dodam jako ciekawostkę, że program nmap rozwiązuje nazwy domen, a więc zamiast adresu/zakresu adresów IP podać nazwę domeny:
Dzięki czemu dowiadujemy się informacji o stanie portów działających na serwerze hostującym witrynę niebezpiecznik.pl
Choć wydawać by się mogło, że administrator nie musi skanować portów celem dowiedzenia się jaki działania wewnątrz niego system operacyjny, to zdarzają się sytuację jak np. praca handlowców na własnym komputerach, gdy musi to zweryfikować. Administrator by zachować porządek i bezpieczeństwo powinien znać wszystkie systemy operacyjne pracujące w jego sieci. Może tego dokonać bez konieczności obchodzenia każdego pokoju firmy i weryfikacji każdego sprzętu z osobna.
Przy okazji zastosowaliśmy zapis umożliwiający skanowanie wszystkich 255 hostów poprzez zastosowanie w adresie IP symbolu gwiazdki. Warto nadmienić również iż dzięki parametrowi systemu operacyjnego, nierzadko administratorzy odkrywają niepożądaną maszynę w sieci.
Skoro wiemy, jak skanować poszczególne hosty, zakres hostów, to sprecyzujmy jeszcze zakres portów które chcielibyśmy przeskanować. Służy do tego parametr ‘-p’ po którym podajemy zakres skanowanych portów. U nas będą to porty od 5 do 1050.
Oczywiście nie stoi nic na przeszkodzie, aby wcześniejsze komendy połączyć i np. skanować dany zakres portów w danym zakresie hostów.
Bardziej zaawansowane typy skanowań oraz pełną listę komend dla programu nmap można znaleźć pod adresem https://nmap.org/man/pl/index.html
Pozostałe znane programy tego typu (kolejność przypadkowa) to m.in:
- Capsa Free
- PortScan
- FreePortScanner
- Angry IP Scanner
- LanSpy
.. i wiele innych z pewnością dostępnych na Twoją platformę.
Reasumując – naszym zadaniem jako administratora jest pozostawienie minimalnej ilości otwartych portów, a raczej blokowanie tych nieużywanych. Warto też pamięć o innych kwestiach jak ograniczony (odpowiedni) poziom uprawnień dla danych aplikacji które wykorzystują dane porty, a same aplikacje aktualizować od razu po publikacji poprawek/nowych wydań wersji. Nie bez znaczenia jest również profilaktyczne skanowanie w poszukiwaniu nowych hostów, zwłaszcza w przypadku firm z dużą rotacją pracowników czy tych w których polityka bezpieczeństwa umożliwia pracę na własnych maszynach. Skanowanie sieci należy traktować jako rutynowe działania umożliwiające utrzymać porządek w infrastrukturze sieciowej, a nieraz i zapobiec utracie danych lub nieautoryzowanego dostępu do zasobów wewnątrz sieci.
Support Online działa od 2002 roku i dzięki doświadczeniu, pomoże dostosować rozwiązania technologiczne dla Twojej firmy. Doradztwo informatyczne to podstawa do zapewnienia rozwoju biznesowego i zyskania przewagi konkurencyjnej. Zachęcamy do zapoznania się z naszą ofertą.
Źródło:
Własne doświadczenia oraz
https://nmap.org/man/pl/index.html
Krzysztof Parkitny