Nmap od podstaw – kompletny przewodnik po skanowaniu sieci
Nmap (Network Mapper) to jedno z najstarszych i najpotężniejszych narzędzi w arsenale każdego specjalisty ds. bezpieczeństwa i administratora sieci. Pozwala na odkrywanie hostów, skanowanie portów, detekcję usług, identyfikację systemów operacyjnych oraz uruchamianie zaawansowanych skryptów automatyzujących audyt.
W tym artykule znajdziesz dziesiątki konkretnych przykładów z opisami — od absolutnych podstaw aż po zaawansowane techniki używane podczas profesjonalnych testów penetracyjnych.
⚠️ Ważne: Skanowanie sieci bez zgody właściciela jest nielegalne. Wszystkie przykłady wykonuj wyłącznie na własnej infrastrukturze lub w ramach autoryzowanego pentestu.
Instalacja
Ubuntu / Debian
sudo apt update && sudo apt install -y nmap
RHEL / CentOS / Rocky Linux
sudo dnf install -y nmap
Weryfikacja wersji
nmap --version
# Nmap version 7.94 ( https://nmap.org )
1. Odkrywanie hostów (Host Discovery)
Ping scan – szybkie wykrywanie aktywnych hostów w sieci
nmap -sn 192.168.1.0/24
Nmap wysyła pakiety ICMP Echo Request do wszystkich adresów w podsieci. Nie skanuje portów — tylko sprawdza, które hosty odpowiadają. Przydatne do szybkiej inwentaryzacji sieci lokalnej.
Nmap scan report for 192.168.1.1
Host is up (0.0012s latency).
Nmap scan report for 192.168.1.10
Host is up (0.0034s latency).
Nmap scan report for 192.168.1.105
Host is up (0.0021s latency).
Odkrywanie hostów bez pinга (omijanie firewalla)
nmap -sn -PS80,443,22 192.168.1.0/24
Wysyła TCP SYN na porty 80, 443 i 22 zamiast ICMP. Przydatne gdy firewall blokuje ping, ale przepuszcza ruch HTTP/SSH.
Skanowanie z listy celów z pliku
nmap -sn -iL targets.txt
Plik targets.txt może zawierać adresy IP, zakresy CIDR lub nazwy hostów — jeden na linię.
Wyłączenie DNS lookup (szybsze skanowanie)
nmap -sn -n 10.0.0.0/8
Flaga -n pomija rozwiązywanie nazw DNS, co znacząco przyspiesza skanowanie dużych zakresów.
2. Skanowanie portów
Skanowanie domyślnych 1000 portów
nmap 192.168.1.10
Domyślnie Nmap skanuje 1000 najpopularniejszych portów TCP. Dobry punkt startowy dla szybkiego rekonesansu.
Skanowanie wszystkich 65535 portów
nmap -p- 192.168.1.10
Kompletne skanowanie — trwa dłużej, ale gwarantuje że nie przeoczysz żadnej usługi działającej na niestandardowym porcie.
Skanowanie konkretnych portów
nmap -p 22,80,443,3306,5432 192.168.1.10
Skanujesz tylko podane porty. Świetne gdy wiesz czego szukasz — np. baz danych (3306 MySQL, 5432 PostgreSQL).
Skanowanie zakresu portów
nmap -p 1-1024 192.168.1.10
Skanuje porty od 1 do 1024 — tzw. “well-known ports”, gdzie działają standardowe usługi systemowe.
Skanowanie portów UDP
sudo nmap -sU -p 53,67,68,123,161,500 192.168.1.1
UDP jest często pomijane, a ukrywają się tam usługi takie jak DNS (53), DHCP (67/68), NTP (123), SNMP (161) czy VPN (500). Wymaga uprawnień root.
Skanowanie TCP i UDP jednocześnie
sudo nmap -sS -sU -p T:80,443,U:53,161 192.168.1.1
Prefix T: oznacza TCP, U: — UDP. Pozwala w jednym przebiegu przeskanować oba protokoły.
3. Typy skanowania
SYN Scan (domyślny, “half-open”)
sudo nmap -sS 192.168.1.10
Najpopularniejsza i najszybsza technika. Nmap wysyła SYN, czeka na SYN-ACK i od razu odpowiada RST — nie nawiązuje pełnego połączenia. Trudniejszy do wykrycia w logach aplikacji. Wymaga root.
TCP Connect Scan (bez roota)
nmap -sT 192.168.1.10
Używa systemowego connect(). Wolniejszy i bardziej widoczny w logach, ale nie wymaga uprawnień root. Dobry dla zwykłego użytkownika.
ACK Scan – mapowanie reguł firewalla
sudo nmap -sA 192.168.1.10
Służy nie do wykrywania otwartych portów, lecz do ustalenia czy porty są filtrowane przez firewall. Port “unfiltered” oznacza że firewall przepuszcza pakiet.
FIN / NULL / Xmas Scan – omijanie IDS
sudo nmap -sF 192.168.1.10 # FIN scan
sudo nmap -sN 192.168.1.10 # NULL scan (brak flag)
sudo nmap -sX 192.168.1.10 # Xmas scan (FIN+PSH+URG)
Techniki polegające na wysyłaniu pakietów z niestandarowymi flagami TCP. Niektóre starsze systemy i firewalle nie filtrują ich poprawnie. Na systemach Windows zazwyczaj nieskuteczne.
Idle Scan – skanowanie przez “zombie”
sudo nmap -sI 192.168.1.50 192.168.1.10
Zaawansowana technika ukrycia — Nmap skanuje cel (.10) używając adresu IP hosta zombie (.50). Twój adres IP nie pojawia się w logach celu. Wymaga hosta z przewidywalnym IPID.
4. Detekcja usług i wersji
Detekcja wersji uruchomionych usług
nmap -sV 192.168.1.10
Nmap próbuje określić dokładną wersję każdej usługi działającej na otwartym porcie. Kluczowe podczas audytu — znając wersję, możesz sprawdzić znane CVE.
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.6
80/tcp open http nginx 1.24.0
443/tcp open ssl/https nginx 1.24.0
3306/tcp open mysql MySQL 8.0.36
Intensywność detekcji wersji
nmap -sV --version-intensity 9 192.168.1.10
Skala 0–9. Wyższy poziom = więcej prób = wolniej, ale dokładniej. Domyślna wartość to 7.
Detekcja systemu operacyjnego
sudo nmap -O 192.168.1.10
Nmap analizuje odpowiedzi TCP/IP i próbuje dopasować “fingerprint” do bazy znanych systemów.
OS details: Linux 5.15 - 6.1
Network Distance: 1 hop
Agresywne skanowanie (wersja + OS + traceroute + skrypty)
sudo nmap -A 192.168.1.10
Odpowiednik -sV -O --traceroute -sC. Kompletna informacja o hoście w jednym poleceniu. Głośne i wolne — nie używaj na produkcji bez zgody.
5. Wydajność i szybkość skanowania
Profile szybkości (-T0 do -T5)
nmap -T0 192.168.1.10 # Paranoid – bardzo wolny, omija IDS
nmap -T1 192.168.1.10 # Sneaky
nmap -T2 192.168.1.10 # Polite – oszczędza przepustowość
nmap -T3 192.168.1.10 # Normal (domyślny)
nmap -T4 192.168.1.10 # Aggressive – szybszy, wymaga dobrego łącza
nmap -T5 192.168.1.10 # Insane – może gubić wyniki
Na własnej sieci lokalnej -T4 to dobry kompromis między szybkością a dokładnością.
Ręczna kontrola szybkości
nmap --min-rate 1000 --max-retries 2 192.168.1.0/24
Wymusza minimum 1000 pakietów/sekundę. Przydatne przy skanowaniu dużych sieci.
Równoległe skanowanie wielu hostów
nmap --min-hostgroup 64 192.168.1.0/24
Skanuje 64 hosty jednocześnie zamiast sekwencyjnie.
6. Skrypty NSE (Nmap Scripting Engine)
NSE to jeden z najpotężniejszych aspektów Nmapa. Skrypty są napisane w Lua i pozwalają automatyzować dziesiątki zadań audytowych.
Uruchomienie domyślnych skryptów
nmap -sC 192.168.1.10
Uruchamia skrypty z kategorii default — bezpieczne, szybkie, przydatne.
Wykrywanie podatności
nmap --script vuln 192.168.1.10
Sprawdza znane podatności: Heartbleed, MS17-010 (EternalBlue), ShellShock i inne.
Sprawdzenie podatności na EternalBlue (MS17-010)
nmap --script smb-vuln-ms17-010 -p 445 192.168.1.0/24
Skanuje całą sieć w poszukiwaniu maszyn Windows podatnych na exploit użyty przez WannaCry.
Host script results:
| smb-vuln-ms17-010:
| VULNERABLE:
| Remote Code Execution vulnerability in Microsoft SMBv1
| State: VULNERABLE
| IDs: CVE:CVE-2017-0144
Brute-force SSH
nmap --script ssh-brute -p 22 192.168.1.10
Próbuje zalogować się na SSH używając wbudowanej listy loginów i haseł. Tylko na własnych serwerach!
Enumeracja użytkowników SMB
nmap --script smb-enum-users -p 445 192.168.1.10
Wypisuje konta użytkowników dostępne przez protokół SMB (Windows / Samba).
Sprawdzenie konfiguracji SSL/TLS
nmap --script ssl-enum-ciphers -p 443 192.168.1.10
Wypisuje obsługiwane zestawy szyfrów (cipher suites) i ocenia ich bezpieczeństwo (A/B/C/F).
| TLSv1.2:
| ciphers:
| TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A
| TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
Wykrywanie Heartbleed (CVE-2014-0160)
nmap --script ssl-heartbleed -p 443 192.168.1.10
Detekcja HTTP headers i metod
nmap --script http-methods,http-headers -p 80,443 192.168.1.10
Sprawdza jakie metody HTTP akceptuje serwer (GET, POST, PUT, DELETE, TRACE — TRACE często powinien być wyłączony) oraz jakie nagłówki zwraca.
Skanowanie pod kątem domyślnych danych logowania
nmap --script http-default-accounts -p 80,8080,8443 192.168.1.0/24
Sprawdza popularne panele administracyjne (Tomcat, Jenkins, Router admin) pod kątem domyślnych haseł.
DNS zone transfer
nmap --script dns-zone-transfer --script-args dns-zone-transfer.domain=4geeker.com -p 53 192.168.1.1
Próbuje pobrać pełną strefę DNS. Jeśli się uda — serwer DNS jest źle skonfigurowany i ujawnia całą strukturę domeny.
Wykrywanie FTP Anonymous login
nmap --script ftp-anon -p 21 192.168.1.0/24
Sprawdza czy serwer FTP pozwala na logowanie bez hasła (użytkownik anonymous).
Enumeracja bazy danych MySQL
nmap --script mysql-databases,mysql-users -p 3306 192.168.1.10
Bez uwierzytelnienia lub z podanymi danymi wykrywa bazy danych i użytkowników MySQL.
7. Zapis wyników
Zapis do pliku tekstowego
nmap -sV 192.168.1.0/24 -oN wyniki.txt
Zapis w formacie XML (do dalszej analizy)
nmap -sV 192.168.1.0/24 -oX wyniki.xml
XML można importować do narzędzi takich jak Metasploit, Faraday, czy własnych skryptów Python.
Zapis w formacie grepable
nmap -sV 192.168.1.0/24 -oG wyniki.gnmap
Prosty format do szybkiego przetwarzania przez grep, awk, cut.
Zapis we wszystkich formatach jednocześnie
nmap -sV 192.168.1.0/24 -oA wyniki_pelne
Tworzy trzy pliki: wyniki_pelne.nmap, wyniki_pelne.xml, wyniki_pelne.gnmap.
8. Przykłady z realnego pentestu
Faza rekonesansu – pełny skan sieci
# Krok 1: Szybkie odkrycie hostów
sudo nmap -sn -n --min-rate 2000 10.10.10.0/24 -oG hosts_live.gnmap
# Krok 2: Wyciągnij żywe hosty do pliku
grep "Up" hosts_live.gnmap | awk '{print $2}' > hosts.txt
# Krok 3: Pełne skanowanie portów na żywych hostach
sudo nmap -sS -p- -n --min-rate 3000 -iL hosts.txt -oA full_ports
# Krok 4: Detekcja wersji i skrypty na znalezionych portach
sudo nmap -sV -sC -p 22,80,443,8080,8443,3306 -iL hosts.txt -oA services
Szybki audyt bezpieczeństwa serwera webowego
sudo nmap -sS -sV -p 80,443,8080,8443 \
--script "http-methods,http-headers,ssl-enum-ciphers,ssl-heartbleed,http-default-accounts" \
192.168.1.10 -oA web_audit
Audyt Active Directory / Windows
sudo nmap -sS -p 88,135,139,389,445,464,636,3268,3269 \
--script "smb-vuln-ms17-010,smb-enum-users,ldap-rootdse" \
10.10.10.0/24 -oA ad_audit
Skanowanie z fałszywym adresem źródłowym (decoy)
sudo nmap -D 10.0.0.1,10.0.0.2,ME 192.168.1.10
Nmap wysyła pakiety z kilku fałszywych adresów IP (decoy) razem z prawdziwym (ME). Utrudnia ustalenie rzeczywistego źródła skanu w logach firewalla.
Skanowanie przez proxy / Tor
nmap --proxies socks4://127.0.0.1:9050 192.168.1.10
Kieruje ruch przez SOCKS proxy (np. Tor). Uwaga: działa tylko z TCP Connect Scan (-sT).
9. Przydatne kombinacje flag
| Cel | Polecenie |
|---|---|
| Szybki rekon sieci lokalnej | nmap -sn 192.168.1.0/24 |
| Pełny skan bez roota | nmap -sT -sV -p- cel |
| Cichy skan omijający IDS | sudo nmap -sS -T2 -f cel |
| Kompletny audyt hosta | sudo nmap -A -p- cel |
| Tylko otwarte porty w output | nmap --open 192.168.1.0/24 |
| Skan z pominięciem pinга | nmap -Pn cel |
| Fragment pakietów (IDS evasion) | sudo nmap -f cel |
| MTU customowy | sudo nmap --mtu 24 cel |
10. Automatyzacja z bash
Skrypt do regularnego audytu sieci
#!/bin/bash
# audit-network.sh – uruchamiaj np. przez cron co tydzień
TARGET="192.168.1.0/24"
DATE=$(date +%Y%m%d_%H%M)
OUTDIR="/opt/nmap-audits/$DATE"
mkdir -p "$OUTDIR"
echo "[*] Odkrywanie hostów..."
sudo nmap -sn -n "$TARGET" -oG "$OUTDIR/hosts.gnmap"
LIVE=$(grep "Up" "$OUTDIR/hosts.gnmap" | awk '{print $2}' | tr '\n' ' ')
echo "[*] Znalezione hosty: $LIVE"
echo "[*] Skanowanie portów i usług..."
sudo nmap -sS -sV -O --script default,vuln \
-p- --min-rate 2000 \
$LIVE \
-oA "$OUTDIR/full_scan"
echo "[+] Gotowe. Wyniki w: $OUTDIR"
Parsowanie XML wyników w Pythonie
import xml.etree.ElementTree as ET
tree = ET.parse("wyniki.xml")
root = tree.getroot()
for host in root.findall("host"):
addr = host.find("address").get("addr")
for port in host.findall("ports/port"):
portid = port.get("portid")
state = port.find("state").get("state")
service = port.find("service")
svc_name = service.get("name", "unknown") if service is not None else "unknown"
version = service.get("version", "") if service is not None else ""
if state == "open":
print(f"{addr}:{portid} [{svc_name} {version}]")
Podsumowanie
Nmap to narzędzie, które rośnie razem z Tobą — od prostego nmap 192.168.1.1 aż po złożone pipeline’y rekonesansu z NSE. Kluczowe zasady:
- Zawsze miej autoryzację przed skanowaniem jakiejkolwiek sieci
- Zaczynaj od lekkiego odkrycia hostów, potem zagłębiaj się w szczegóły
- Używaj
-oAżeby zawsze zachować wyniki — przyda się przy raportowaniu - Łącz Nmapa z innymi narzędziami: Metasploit, Burp Suite, Nuclei, OpenVAS
- Regularny automatyczny audyt własnej infrastruktury to dobra praktyka DevSecOps
Masz pytania o konkretną technikę lub chcesz zobaczyć jak zintegrować Nmapa z pipeline’em CI/CD? Napisz do nas: kontakt@4geeker.com