Nmap (Network Mapper) to standardowe narzędzie open-source w arsenale każdego administratora sieci, pentestera i specjalisty od bezpieczeństwa. Pozwala mapować sieci, wykrywać aktywne hosty, otwarte porty, identyfikować usługi i ich wersje, a nawet wykrywać system operacyjny zdalnych maszyn. W tym artykule pokażę Ci najczęściej używane tryby skanowania i praktyczne scenariusze diagnostyczne.
Czym jest Nmap?
Nmap rozwijany jest od 1997 roku przez Gordona Lyona ("Fyodor"). To narzędzie wiersza poleceń (z opcjonalnym GUI - Zenmap), dostępne na Linux, macOS, Windows i BSD. Wykorzystuje surowe pakiety IP do określenia, jakie hosty są dostępne w sieci, jakie usługi oferują, jaki system operacyjny działa, jakie typy filtrów pakietów lub firewalli są w użyciu i wiele więcej.
Główne zastosowania
- Audyt bezpieczeństwa - identyfikacja otwartych portów i potencjalnie podatnych usług
- Inwentaryzacja sieci - wykrywanie wszystkich hostów w danej podsieci
- Diagnostyka - sprawdzanie czy konkretna usługa nasłuchuje, czy firewall blokuje port
- Pentesting - rozpoznanie etapu reconnaissance przed dalszymi testami
- Compliance - dokumentowanie konfiguracji sieci dla audytów
Instalacja
Linux (Ubuntu/Debian)
sudo apt update
sudo apt install nmap
Linux (RHEL/CentOS/Fedora)
sudo dnf install nmap
macOS (Homebrew)
brew install nmap
Windows
Pobierz instalator z nmap.org/download. Razem z Nmap zainstaluje się Zenmap (GUI) oraz Npcap (driver do przechwytywania pakietów).
Weryfikacja
nmap --version
Podstawowe użycie
Składnia
nmap [opcje] <cel>
Cel może być pojedynczym IP, nazwą hosta, podsiecią CIDR lub zakresem.
Najprostsze skanowanie
nmap example.com
Domyślnie Nmap skanuje 1000 najczęściej używanych portów TCP. Dla każdego portu pokazuje stan: open, closed, filtered.
Skanowanie podsieci
nmap 192.168.1.0/24
Skanuje wszystkie 256 adresów w sieci 192.168.1.0/24.
Skanowanie wielu celów
nmap 192.168.1.10 192.168.1.20 192.168.1.30
nmap 192.168.1.10-50
nmap example.com server2.example.com
Uwaga: wiele zaawansowanych typów skanowania (np.-sS,-O) wymaga uprawnień roota (Linux/macOS) lub administratora (Windows), bo używa surowych pakietów IP.
Typy skanowania
SYN scan (-sS) - domyślny dla roota
sudo nmap -sS example.com
Tzw. "half-open scan" - wysyła pakiet SYN, czeka na odpowiedź, ale nigdy nie kończy handshake'a. Szybki i mniej widoczny w logach niż pełne połączenie. Wymaga roota.
TCP connect scan (-sT)
nmap -sT example.com
Pełny TCP handshake. Działa bez roota, ale jest wolniejszy i pojawia się w logach aplikacji.
UDP scan (-sU)
sudo nmap -sU -p 53,67,123,161 example.com
Skanuje porty UDP (DNS, DHCP, NTP, SNMP). UDP scan jest znacznie wolniejszy od TCP, więc warto ograniczyć liczbę portów flagą -p.
Ping scan (-sn) - tylko detekcja hostów
nmap -sn 192.168.1.0/24
Sprawdza, które adresy w sieci są aktywne (odpowiadają), bez skanowania portów. Idealne do szybkiej inwentaryzacji.
List scan (-sL)
nmap -sL 192.168.1.0/24
Tylko listuje cele i robi reverse DNS, bez wysyłania pakietów do nich. Bezpieczne, gdy nie chcesz "zaczepiać" hostów.
Specyfikacja portów (-p)
Pojedynczy port:
nmap -p 22 example.com
Wiele portów:
nmap -p 22,80,443 example.com
Zakres:
nmap -p 1-1000 example.com
Wszystkie 65535 portów:
nmap -p- example.com
TCP i UDP jednocześnie:
sudo nmap -sS -sU -p T:22,80,443,U:53,161 example.com
Najpopularniejsze N portów:
nmap --top-ports 100 example.com
Wykrywanie usług i wersji (-sV)
nmap -sV example.com
Po znalezieniu otwartego portu, Nmap próbuje rozpoznać konkretną usługę i jej wersję (np. Apache 2.4.58, OpenSSH 9.6p1). Bardzo przydatne do oceny czy używasz aktualnych wersji bez znanych podatności.
Możesz dostroić intensywność wykrywania flagą --version-intensity 0-9 (domyślnie 7).
Wykrywanie systemu operacyjnego (-O)
sudo nmap -O example.com
Próbuje określić system operacyjny zdalnego hosta na podstawie subtelnych różnic w implementacji stosu TCP/IP. Wymaga roota i przynajmniej jednego otwartego oraz jednego zamkniętego portu, żeby dać dobry wynik.
Skanowanie agresywne (-A)
sudo nmap -A example.com
Skrót łączący -O + -sV + -sC (default scripts) + --traceroute. Daje pełny obraz hosta jednym poleceniem, ale jest głośny i wolny - łatwo wykryć przez IDS/IPS.
NSE - skrypty Nmap
Nmap Scripting Engine pozwala uruchamiać skrypty Lua, które wykonują dodatkowe sprawdzenia: od wykrywania konkretnych podatności po brute-force, enumerację SMB, sprawdzanie HTTPS i wiele innych. Skrypty są pogrupowane w kategorie.
Domyślne skrypty
nmap -sC example.com
Albo równoważnie --script=default.
Konkretna kategoria
nmap --script=vuln example.com
nmap --script=safe example.com
nmap --script=auth,brute example.com
Konkretny skrypt
nmap --script=http-title example.com
nmap --script=ssl-cert -p 443 example.com
nmap --script=smb-os-discovery 192.168.1.10
Lista popularnych skryptów
http-title- wyświetla tytuł strony WWWssl-cert- pokazuje szczegóły certyfikatu SSL/TLSssl-enum-ciphers- lista wspieranych szyfrów (audyt TLS)smb-os-discovery- wersja Windows + nazwa domeny SMBhttp-enum- enumeracja popularnych ścieżek (admin panele, /backup, itp.)vuln- kategoria wykrywająca znane podatnościbanner- pobiera bannery z otwartych portów
Timing i agresywność (-T0 do -T5)
-T0 paranoid- bardzo wolne, dla unikania wykrycia (15 min/probe)-T1 sneaky- wolne, mniej widoczne w logach-T2 polite- oszczędza zasoby celu-T3 normal- domyślne, balans-T4 aggressive- szybkie skanowanie sieci LAN-T5 insanity- najszybsze, ale niedokładne
Dla typowego audytu w sieci LAN -T4 jest dobry. Dla skanowania przez Internet zostaw -T3 żeby nie tracić wyników przez timeouty.
Zapis wyników
Format normalny + XML + grepable jednocześnie:
nmap -oA wyniki example.com
Tworzy wyniki.nmap, wyniki.xml, wyniki.gnmap.
Pojedynczy format:
nmap -oN raport.txt example.com # normalny tekst
nmap -oX raport.xml example.com # XML (do dalszego parsowania)
nmap -oG raport.gnmap example.com # grepable
Praktyczne scenariusze
Szybka inwentaryzacja sieci LAN
sudo nmap -sn 192.168.1.0/24
Lista wszystkich aktywnych adresów IP w 30 sekund.
Pełny audyt pojedynczego serwera
sudo nmap -sS -sV -O -p- -T4 -A -oA pelny_audyt 192.168.1.10
Skanuje wszystkie 65535 portów, wykrywa usługi, OS, uruchamia skrypty default, zapisuje 3 formaty wyjścia.
Sprawdzenie czy serwer SSH jest dostępny
nmap -p 22 example.com
Audyt konfiguracji TLS na serwerze WWW
nmap --script=ssl-enum-ciphers,ssl-cert -p 443 example.com
Pokazuje wspierane szyfry, wystawcę certyfikatu, datę wygaśnięcia.
Wykrycie hostów z otwartym RDP
sudo nmap -p 3389 --open 192.168.1.0/24
Flaga --open pomija porty zamknięte w wynikach.
Skan z wyłączonym ping (host za firewallem)
sudo nmap -Pn 192.168.1.10
Domyślnie Nmap najpierw pinguje cel. Jeśli firewall blokuje ICMP, Nmap uzna host za niedostępny. -Pn wymusza skanowanie portów bez sprawdzania ping.
Aspekty prawne i etyczne
Ważne: skanowanie cudzej sieci bez zgody właściciela jest w wielu jurysdykcjach (w tym w Polsce - art. 267 KK) traktowane jako próba nieuprawnionego dostępu do systemu informatycznego. Skanuj tylko sieci, którymi zarządzasz, lub na które masz pisemną zgodę.
Bezpieczne cele do testów:
scanme.nmap.org- oficjalny cel testowy autorów Nmap- Twoja własna sieć LAN (192.168.x.x, 10.x.x.x)
- Maszyny wirtualne w izolowanej sieci (VirtualBox/VMware host-only)
- Platformy CTF: HackTheBox, TryHackMe, VulnHub
Alternatywy
- Masscan - dużo szybszy od Nmap (skan całego internetu w ~6 minut), ale mniej funkcji
- RustScan - frontend napisany w Ruście, używa Nmap pod spodem; szybkie skanowanie portów + przekazanie do Nmap dla detekcji wersji
- Zmap - akademickie narzędzie do skanowania całego internetu
- Unicornscan - asynchroniczny skaner, mniej popularny ale szybki
- Angry IP Scanner - GUI dla mniej zaawansowanych użytkowników
Podsumowanie
Nmap to fundament każdego audytu bezpieczeństwa sieciowego. Zaczynając od prostego nmap example.com, można szybko przejść do zaawansowanych technik: wykrywania wersji usług, identyfikacji systemu operacyjnego, uruchamiania setek gotowych skryptów NSE wyszukujących konkretne podatności.
Dla codziennej pracy administratora 80% wartości daje znajomość kilku komend: -sS, -sV, -p, -A, --script=.... Resztę dogonisz wraz z konkretnymi potrzebami.
Jeśli potrzebujesz pomocy w audycie bezpieczeństwa sieci albo wdrożeniu monitoringu wykrywającego nieautoryzowane skanowanie, skontaktuj się z nami.