
“Znajomość wroga i znajomość siebie to klucz do zwycięstwa w stu bitwach.” – Sun Tzu
Czym jest Nmap?
Nmap (Network Mapper) to darmowe, open-source’owe narzędzie do eksploracji sieci i audytu bezpieczeństwa.
Stworzone przez Gordona Lyona (Fyodor) w 1997 roku, do dziś pozostaje standardem w branży cyberbezpieczeństwa.
Możliwości Nmap:
- Wykrywanie hostów w sieci
- Identyfikację otwartych portów
- Rozpoznawanie systemów operacyjnych
- Wykrywanie wersji usług
- Testowanie zapór sieciowych
- Mapowanie topologii sieci
Instalacja
sudo apt update
sudo apt install nmapsudo dnf install nmapsudo zypper install nmapbrew install nmaptutaj można znaleźć więcej informacji o homebrew
nmap --versionPodstawowe skanowanie
sudo nmap scanme.nmap.orgkrótkie objaśnienie dla sudo nmap scanme.nmap.org
- Host is up (0.24s latency): Oznacza, że host odpowiada na zapytania i jest aktywny w sieci. Czas opóźnienia (latency) wyniósł 0.24 sekundy.
- Other addresses for scanme.nmap.org (not scanned): Adresy alternatywne (np. IPv6), które nie zostały przeskanowane, np. 2600:3c01::f03c:91ff:fe18:bb2f.
- Not shown: 994 closed tcp ports (reset): Spośród typowych 1000 portów TCP na hoście, 994 porty są zamknięte i odpowiadają resetem pakietu TCP, dlatego nie są wyświetlane domyślnie (by wynik był czytelniejszy).
- Tabela PORT STATE SERVICE: PORT — numer portu i protokół (tu TCP)
- STATE — status portu:
- open — port jest dostępny i nasłuchuje na połączenia (usługa działa)
- filtered — nmap nie może określić czy port jest otwarty, ponieważ pakiety są blokowane przez firewall lub filtr i nie otrzymuje odpowiedzi
- SERVICE — standardowa nazwa usługi przypisana do portu (wg IANA)
- Szczegóły z przykładu:
- 22/tcp open ssh: Port 22 jest otwarty i działa na nim usługa SSH (Secure Shell). Oznacza to, że można próbować połączyć się zdalnie przez SSH.
- 42/tcp filtered nameserver: Port 42 jest filtrowany — prawdopodobnie firewall blokuje pakiety wysłane przez nmap, dlatego stan nie jest jednoznacznie określony.
- 80/tcp open http: Port 80 jest otwarty, co oznacza działającą usługę HTTP (serwer www).
- 593/tcp filtered http-rpc-epmap: Port 593 jest filtrowany.
- 9929/tcp open nping-echo: Port 9929 otwarty, jest to usługa nping-echo (powiązana z narzędziem Nmap).
- 31337/tcp open Elite: Port 31337 otwarty, usługa oznaczona jako „Elite”, często używany jako port testowy w celach edukacyjnych lub demonstracyjnych.`
nmap 192.168.1.0/24nmap scanme.nmap.org 192.168.1.5 scanme.nmap.org0nmap -iL targets.txtTypy skanowania portów
Nmap oferuje różne techniki skanowania portów, które pozwalają dostosować analizę do celu, poziomu dyskrecji i potrzeb szybkiego wykrywania. Każdy typ skanu działa inaczej i daje różne rodzaje informacji, dlatego warto znać ich podstawy.
sudo nmap -sS scanme.nmap.orgTCP SYN Scan (skan furtki, stealth scan) -sS
To najpopularniejszy i zalecany typ skanowania. Nmap wysyła pakiet SYN (część 3-stopniowego uścisku dłoni TCP), ale nie nawiązuje pełnego połączenia. Dzięki temu jest szybki i bardziej dyskretny, bo nie jest rejestrowany jako pełne połączenie.
nmap -sT scanme.nmap.orgTCP Connect Scan -sT
Wykonuje pełne nawiązanie połączenia TCP. Jest mniej dyskretny i wolniejszy, ale przydatny, gdy nie mamy uprawnień do wykonywania surowych pakietów (np. jako zwykły użytkownik).
sudo nmap -sU scanme.nmap.orgUDP Scan -sU
Skanuje porty UDP, które działają inaczej niż TCP i są często pomijane. Jest wolniejszy i mniej dokładny z powodu braku potwierdzeń ze strony protokołu UDP, ale bardzo ważny, aby wykryć wszystkie usługi.
sudo nmap -sS -sU scanme.nmap.orgInne specjalistyczne skany
- Null Scan -sN: wysyła pakiety bez flag TCP:
- Pakiet TCP wysyłany bez żadnych ustawionych flag (pole flag w nagłówku TCP jest równe 0).
- Mechanizm: gdy pakiet bez flag trafia do zamkniętego portu, zgodnie z RFC 793 host powinien odpowiedzieć pakietem RST (reset).
- Jeśli port jest otwarty, host nie odpowiada wcale.
- Dlatego brak odpowiedzi oznacza port otwarty lub filtrowany (np. przez firewall).
- Zaleta: jest to bardzo dyskretna metoda, ponieważ wiele systemów nie loguje takich nietypowych pakietów.
- Wada: nie można rozróżnić portu otwartego od filtrowanego, bo w obu przypadkach brak odpowiedzi.
- FIN Scan -sF: wysyła pakiety z flagą FIN
- Pakiet TCP z ustawioną tylko flagą FIN (która normalnie służy do zamykania połączenia).
- Działa podobnie do Null Scan: zamknięte porty odpowiadają pakietem RST, otwarte porty pozostają bez odpowiedzi.
- Ta metoda jest często używana do omijania prostych zapór, które reagują tylko na pakiety SYN.
- Xmas Scan -sX: wysyła pakiety z flagami FIN, PSH, URG (pakiet świeci jak choinka)
- Pakiet TCP z ustawionymi flagami FIN, PSH i URG.
- Nazwa pochodzi od tego, że ten pakiet „świeci się” jak choinka (ang. Xmas tree).
- Działa na tej samej zasadzie co Null i FIN: brak odpowiedzi oznacza port otwarty/filtrowany, odpowiedź RST wskazuje port zamknięty.
- Ta metoda bywa używana do wykrywania szczególnych konfiguracji firewalli i systemów.
Te techniki mogą pomóc w wykrywaniu portów, które próbują ukryć zapory sieciowe (firewalle).
Dobierając typ skanowania, łączymy szybkość, dyskrecję i szczegółowość. Najczęściej zaczynamy od TCP SYN, potem uzupełniamy UDP lub specjalistyczne metody, szczególnie w przypadkach audytów bezpieczeństwa.
-
Wszystkie trzy skany wykorzystują luki i różnice w implementacji TCP, aby dyskretnie wykrywać porty.
-
Skanowanie bazuje na braku odpowiedzi jako oznace portu otwartego lub chronionego.
-
Są skuteczne przeciwko niektórym firewallom i systemom, ale w nowoczesnych systemach mogą być blokowane lub monitorowane.
-
Wymagają uprawnień administratora, bo operują na pakietach na niższym poziomie.
Wykrywanie usług i systemów
nmap pozwala nam nie tylko zobaczyć, które porty są otwarte, ale także jaki dokładnie program lub usługa na nich działa, oraz jaki system operacyjny jest uruchomiony na skanowanym hoście.
nmap -sV scanme.nmap.orgSkanowanie wersji usług — nawiązuje interakcję z usługami, pobiera tzw. banery (informacje o wersji i typie usługi), co pomaga nam ustalić, np. czy serwer WWW to Apache 2.4.53 czy może nginx 1.18. Takie informacje są nieocenione przy ocenie podatności i planowaniu dalszych działań.
sudo nmap -O scanme.nmap.orgRozpoznaje system operacyjny. Wysyła zestaw specjalnych pakietów i analizuje odpowiedzi z różnych warstw, porównując je z bazą znanych sygnatur. To pozwala z dużym prawdopodobieństwem wskazać, czy to jest Linux, Windows, macOS, a nawet konkretną wersję.
sudo nmap -sV -O scanme.nmap.orgsudo nmap -A scanme.nmap.orgW praktyce, często łączymy te skany używając -sV -O lub opcji -A, która wykonuje analizę wersji, wykrywa system operacyjny, uruchamia skrypty NSE i trasa traceroute jednocześnie. To daje nam pełny obraz celu, choć trwa dłużej i jest bardziej „głośne” w sieci.
Dzięki tym technikom możemy przygotować dokładną mapę infrastruktury i lepiej ocenić ryzyka bezpieczeństwa. Pamiętajmy jednak, że niektóre systemy mogą ukrywać te informacje lub reagować na skanowanie, dlatego ważne jest testowanie różnych parametrów.
Zaawansowane techniki
Kilka przykładowych technik, które można wykorzystywać w różnych scenariuszach
nmap -p 22,80,443 scanme.nmap.org
nmap -p 1-1000 scanme.nmap.org
nmap -p- scanme.nmap.orgnmap -F scanme.nmap.orgnmap -T4 scanme.nmap.orgnmap -Pn scanme.nmap.org
nmap -f scanme.nmap.org
nmap --data-length 25 scanme.nmap.orgNmap Scripting Engine (NSE)
NSE to potężny framework pozwalający na automatyzację zadań sieciowych. Zawiera setki gotowych skryptów do testowania bezpieczeństwa.
Dzięki skryptom można wykonać dokładniejsze testy bezpieczeństwa, wykrywać podatności, zbierać dodatkowe informacje o usługach, a nawet przeprowadzać proste ataki (np. brute force).
To moduł, który umożliwia automatyzację zaawansowanych testów bezpieczeństwa i zbierania informacji o sieci poprzez skrypty napisane w języku Lua.
Jak uruchomić skrypty?
- Dołącz opcję –script z nazwą skryptu lub grupą skryptów.
- Domyślnie można też użyć -sC, które uruchamia tzw. zestaw domyślnych, bezpiecznych skryptów.
nmap -sC scanme.nmap.orgNajłatwiej zacząć od opcji -sC, która uruchamia podstawowy zestaw bezpiecznych skryptów i daje szybki wgląd w usługi na hoście. Dalej mamy możliwość uruchamiania pojedynczych skryptów lub całych kategorii, np. vuln do wykrywania podatności, czy smb-os-discovery do szczegółowego rozpoznawania usług SMB.
nmap --script vuln scanme.nmap.org
nmap --script auth scanme.nmap.org
nmap --script discovery scanme.nmap.orgnmap --script http-enum scanme.nmap.org
nmap --script ssh-brute scanme.nmap.orgnmap --script-help all
nmap --script-help vulnNSE to świetny sposób na rozbudowę naszych skanów, automatyzację i zaoszczędzenie czasu podczas audytów lub pentestów.
Do najważniejszych zalet można zaliczyć:
-
Różnorodność i modularność:
NSE zawiera ponad tysiąc skryptów, podzielonych na kategorie:
- auth — uwierzytelnianie i sprawdzanie haseł
- broadcast — wykrywanie usług przez protokoły rozgłoszeniowe
- default — standardowy zestaw skryptów na podstawową analizę
- discovery — zbieranie informacji o sieci i usługach
- dos — testy podatności na ataki typu denial-of-service
- exploit — próby wykorzystania znanych luk
- external — integracja z zewnętrznymi narzędziami i serwisami
- fingerprint — detekcja charakterystycznych cech hosta
- malware — wykrywanie znanego złośliwego oprogramowania
- safe — skrypty bezpieczne dla produkcyjnych środowisk
- intrusive — bardziej agresywne, mogące wywołać nieoczekiwane zachowania
-
Możliwość tworzenia własnych skryptów:
NSE jest niezwykle elastyczne — użytkownicy mogą pisać własne skrypty w języku Lua, co pozwala na dostosowanie testów do konkretnych potrzeb, automatyzację powtarzalnych czynności i integrację nmap z niestandardowymi scenariuszami.
-
Parametry i konfiguracja:
Skrypty NSE mogą przyjmować różne argumenty (–script-args), co pozwala dostosować ich działanie do specyficznych warunków, np. podać dane uwierzytelniające lub określić zakres testów.
-
Aktualizacje i społeczność:
Skrypty NSE są stale rozwijane i aktualizowane przez społeczność. Regularne aktualizacje nmapa wprowadzają nowe skrypty i poprawiają istniejące, odpowiadając na rosnące zagrożenia i nowe typy usług.
Zapisywanie wyników
nmap -oN scan.txt scanme.nmap.org- oN
nmap -oX scan.xml scanme.nmap.org- oX
nmap -oG scan.gnmap scanme.nmap.org- oG
nmap -oA scan scanme.nmap.org- oA
Automatyczne wznawianie i tworzenie raportów:
- –resume
— wznowienie przerwanego skanowania, jeśli wcześniej uruchomiono z tym parametrem. - –append-output — dodanie wyników do istniejącego pliku (np. w celu kolejnych etapów skanowania).
- –stylesheet <ścieżka/URL> — konwersja wyników XML do HTML za pomocą własnych styli.
- –no-stylesheet — wyłącza styli w plikach XML, co przydaje się np. podczas automatycznego parsowania.
Różne tryby i szczegóły:
- -v – podnosi poziom raportowania, informuje o przebiegu skanowania
- -d[poziom] – poziom debugowania (0-9)
- -A – aktywuje wykrywanie OS, wersji usług, skryptów NSE
- -6 – skan IPv6
Zapisywanie wyników jest kluczowe, aby mieć dokumentację swojego skanowania i móc później analizować rezultaty, raportować lub wznowić prace. Dzięki różnorodności formatów (tekst, XML, grepable) można dostosować raport do własnych potrzeb i automatyzacji.
Praktyczne przykłady
sudo nmap -sS -sU -T4 -A -v -PE -PP -PS80,443 -PA3389 -PU40125 -PY -g 53 --script "default or (discovery and safe)" scanme.nmap.orgnmap -T4 -F 192.168.1.0/24nmap -sn 192.168.1.0/24nmap -p 80,443 --script http-enum,http-headers,http-methods scanme.nmap.orgAspekty prawne i etyczne
UWAGA: Skanowanie sieci bez zgody właściciela może być nielegalne!
Ta część jest niezwykle ważna, ponieważ nmap, choć jest potężnym narzędziem do eksploracji sieci i testów bezpieczeństwa, może być używany również w sposób nielegalny i nieetyczny. Dlatego chcę podkreślić kilka kluczowych zasad, których warto przestrzegać.
Zasady odpowiedzialnego użycia:
- Skanuj tylko własne sieci lub sieci, do których masz pisemną zgodę. Skanowanie sieci lub hostów bez pozwolenia właściciela może być uznane za naruszenie prywatności, a w wielu krajach jest to przestępstwo.
- Przestrzegaj lokalnych i międzynarodowych przepisów prawnych. Różne państwa mają różne regulacje dotyczące testów penetracyjnych i audytów bezpieczeństwa. Brać udział w takich działaniach legalnie wymaga znajomości tych przepisów.
- Informuj administratorów przed przeprowadzeniem skanowania/testów. Dzięki temu unikasz nieporozumień i możesz współpracować, co często zwiększa skuteczność testów i poprawia bezpieczeństwo.
- Bądź odpowiedzialny i etyczny podczas testów. Nie używaj skanowania do ataków, wykradania danych czy niszczenia zasobów. Pamiętaj, że celem jest poprawa bezpieczeństwa, a nie wyrządzenie szkody.
- Używaj odpowiednich opcji i timingów, aby nie przeciążać sieci ani urządzeń. Skanowanie może generować duży ruch, co wrażliwe systemy mogą odbierać jako atak DoS. Dostosuj parametry do środowiska.
- Dokumentuj swoje działania i wyniki. Dobrze udokumentowany proces testów pomaga w audytach, raportowaniu i wyciąganiu wniosków.
Nmap jest legalny i szeroko stosowany przez:
- Administratorów systemów
- Specjalistów ds. bezpieczeństwa
- Testerów penetracyjnych
- Zespoły Red Team/Blue Team
- Audytorów IT
Podsumowując, świadomość aspektów prawnych i etycznych jest nieodzowną częścią pracy z narzędziami takimi jak nmap. Faktyczne korzyści dla bezpieczeństwa można osiągnąć wyłącznie, gdy działamy w granicach prawa i z poszanowaniem innych.
Przydatne zasoby
📚 Oficjalna dokumentacja
nmap.org/book🔧 Nmap Scripting Engine
nmap.org/nsedoc📋 Cheat Sheet
stationx.net/nmap-cheat-sheetPodsumowanie
Nmap to absolutna podstawa w arsenale każdego specjalisty ds. bezpieczeństwa. Jego wszechstronność, moc i elastyczność sprawiają, że pozostaje narzędziem numer jeden do rekonesansu sieciowego od ponad 25 lat.
Kluczowe punkty do zapamiętania:
- Zacznij od prostych skanów i stopniowo zwiększaj złożoność
- Zawsze używaj
-v(verbose) aby widzieć postęp skanowania - Zapisuj wyniki w różnych formatach dla późniejszej analizy
- Eksperymentuj z NSE - to tam tkwi prawdziwa moc Nmap
- Pamiętaj o aspektach prawnych i etycznych