Skanowanie sieci za pomocą Nmap: praktyczny poradnik
Nmap to branżowy standard rozpoznania sieci. Naucz się mapować otwarte porty, wykrywać działające usługi i widzieć swoją sieć dokładnie tak, jak widzi ją atakujący.
Spis treści
- Czym jest Nmap i dlaczego jest ważny?
- Wykrywanie hostów
- Techniki skanowania portów
- Skanowanie TCP SYN (skanowanie ukryte)
- Skanowanie TCP Connect
- Skanowanie UDP
- Wykrywanie usług i wersji
- Wykrywanie systemu operacyjnego
- Silnik skryptów Nmap (NSE)
- Formaty wyników
- Unikanie wykrycia
- Budowanie punktu odniesienia dla własnej sieci
Czym jest Nmap i dlaczego jest ważny?
Nmap (Network Mapper) to darmowe narzędzie open source, które od 1997 roku jest fundamentem rozpoznania sieci. Wysyła spreparowane pakiety do hostów docelowych i analizuje odpowiedzi, by ustalić, które hosty są aktywne, które porty są otwarte, jakie usługi działają i często — jaki system operacyjny jest używany. Specjaliści od bezpieczeństwa używają go do oceny podatności, testów penetracyjnych i inwentaryzacji sieci. Atakujący używają go, by znaleźć punkty wejścia przed atakiem. Zrozumienie, co Nmap ujawnia o Twoich systemach, to pierwszy krok do ich obrony.
Zawsze uzyskaj pisemną zgodę przed skanowaniem sieci, która nie należy do Ciebie. Nieautoryzowane skanowanie jest w większości jurysdykcji nielegalne.
Wykrywanie hostów
Przed skanowaniem portów musisz wiedzieć, które hosty są aktywne. Domyślnie Nmap pinguje hosty przed ich badaniem:
# Ping sweep — discover live hosts in a subnet
nmap -sn 192.168.1.0/24
Flaga -sn (bez skanowania portów) wysyła żądania ICMP echo, pakiety TCP SYN na port 443, TCP ACK na port 80 oraz żądania ICMP timestamp. W sieci lokalnej zwykle to wystarcza. W przypadku wzmocnionych hostów lub zapór blokujących ICMP może być konieczne całkowite pominięcie wykrywania hostów:
# Treat all hosts as online — useful when ICMP is blocked
nmap -Pn 10.0.0.5
Techniki skanowania portów
Nmap obsługuje wiele typów skanowania. Najważniejsze z nich to:
Skanowanie TCP SYN (skanowanie ukryte)
nmap -sS 192.168.1.10
To domyślne skanowanie przy uruchomieniu jako root. Nmap wysyła pakiet SYN; jeśli port jest otwarty, cel odpowiada SYN/ACK, a Nmap natychmiast wysyła RST zamiast dokończyć uzgadnianie. Ponieważ pełne połączenie nie powstaje, wiele starszych systemów IDS i logów aplikacji go nie rejestruje — stąd nazwa „skanowanie ukryte”. Jest szybkie i dokładne.
Skanowanie TCP Connect
nmap -sT 192.168.1.10
Używane, gdy nie masz uprawnień do surowych gniazd. Nmap wykonuje pełne uzgadnianie TCP. Jest głośniejsze i wolniejsze, ale działa bez roota. Logi aplikacji zarejestrują te połączenia.
Skanowanie UDP
nmap -sU 192.168.1.10
Skanowanie UDP jest wolne, bo zamknięte porty UDP zwykle zwracają komunikaty ICMP „port unreachable”, a otwarte często nie zwracają nic. Ograniczanie szybkości przez system sprawia, że skanowanie trwa minuty na każdy host. Gdy to możliwe, celuj tylko w konkretne porty UDP:
nmap -sU -p 53,161,500 192.168.1.10
Wykrywanie usług i wersji
Wiedza, że port jest otwarty, jest przydatna; wiedza, co na nim działa, jest niezbędna:
nmap -sV 192.168.1.10
Nmap wysyła serię sond i porównuje odpowiedzi z bazą ponad 11 000 sygnatur usług. Otrzymasz wynik w rodzaju 80/tcp open http Apache httpd 2.4.51. Flaga --version-intensity (0–9) określa, jak agresywnie Nmap sonduje — wyższe wartości wykrywają mniej typowe usługi, ale trwają dłużej.
Wykrywanie systemu operacyjnego
nmap -O 192.168.1.10
Nmap analizuje zachowanie stosu TCP/IP (wartości TTL, rozmiary okna, flagi IP itp.), by rozpoznać system operacyjny. Połącz to z -sV, by uzyskać pełny obraz:
nmap -A 192.168.1.10
Flaga -A włącza za jednym razem wykrywanie systemu, wersji, skanowanie skryptami i traceroute.
Silnik skryptów Nmap (NSE)
Najpotężniejszą funkcją Nmapa jest silnik skryptów, pozwalający automatycznie wchodzić w interakcję z usługami za pomocą skryptów w języku Lua:
# Run default safe scripts
nmap -sC 192.168.1.10
# Check for specific vulnerabilities
nmap --script vuln 192.168.1.10
# Enumerate HTTP headers
nmap --script http-headers 192.168.1.10
Powyższe polecenia uruchamiają domyślne bezpieczne skrypty, sprawdzają konkretne podatności i wyliczają nagłówki HTTP. Skrypty dzielą się na kategorie safe, intrusive, exploit, brute i inne. Ostrożnie z kategoriami intrusive i exploit — mogą zakłócić działanie usług lub wywołać alerty.
Formaty wyników
W profesjonalnych zleceniach zapisuj wyniki w formatach czytelnych dla maszyn:
# Normal output
nmap -oN scan.txt 192.168.1.0/24
# XML output (importable into Metasploit, vulnerability scanners)
nmap -oX scan.xml 192.168.1.0/24
# All formats at once
nmap -oA scan_results 192.168.1.0/24
Format XML można zaimportować do Metasploita i skanerów podatności, a -oA zapisuje wszystkie formaty naraz. Narzędzia takie jak Zenmap zapewniają graficzny interfejs do wizualizacji wyników, a Metasploit potrafi bezpośrednio zaimportować XML z Nmapa, by uzupełnić swoją bazę hostów.
Unikanie wykrycia
Atakujący stosują różne techniki, by nie wywołać alertów IDS/IPS:
- Powolne skanowanie:
-T0lub-T1drastycznie zmniejsza tempo wysyłania pakietów - Wabiki:
-D RND:10wysyła pakiety z 10 losowych adresów-wabików obok prawdziwego źródła - Fragmentacja:
-fdzieli pakiety na 8-bajtowe fragmenty - Podszywanie się pod port źródłowy:
--source-port 53naśladuje ruch DNS
Zrozumienie tych technik pomaga dostroić systemy detekcji, by je wychwytywały.
Budowanie punktu odniesienia dla własnej sieci
Regularnie skanuj Nmapem własną infrastrukturę i porównuj wyniki. Nieoczekiwane otwarte porty, nowe usługi czy nieznane hosty to sygnały ostrzegawcze. Prosty schemat pracy:
- Wykonaj autoryzowane skanowanie wszystkich portów:
nmap -p- -sV -oX baseline.xml 192.168.1.0/24 - Zaplanuj cotygodniowe skanowania i porównuj wyniki XML narzędziem
ndiff - Zbadaj każdą różnicę — nowy otwarty port może oznaczać błąd konfiguracji lub przejęty host
Nmap nie jest skanerem podatności, ale pokazuje, co jest wystawione. Połącz go z narzędziami takimi jak OpenVAS czy Nessus, by uzyskać pełny obraz powierzchni ataku.