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 WWW
  • ssl-cert - pokazuje szczegóły certyfikatu SSL/TLS
  • ssl-enum-ciphers - lista wspieranych szyfrów (audyt TLS)
  • smb-os-discovery - wersja Windows + nazwa domeny SMB
  • http-enum - enumeracja popularnych ścieżek (admin panele, /backup, itp.)
  • vuln - kategoria wykrywająca znane podatności
  • banner - 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.