Nmap (z ang. network mapper) – wolny i otwartoźródłowy[2] program komputerowy autorstwa Fyodora (Gordon Lyon)[3], służący do skanowania portów i wykrywania usług w sieci[4].

Nmap
Ilustracja
Autor Gordon Lyon (Fyodor)
Aktualna wersja stabilna 7.94
(19 maja 2023) [±]
Język programowania C, C++, Lua, Python[1]
System operacyjny Linux, Microsoft Windows, Solaris, BSD
Licencja GPLv2[2]
Strona internetowa

Program implementuje wiele różnych technik testowania portów TCP, UDP oraz SCTP, w tym niestandardowe podejścia wynikające ze specyfiki implementacji stosów sieciowych, które potencjalnie mogą omijać zapory sieciowe lub platformy Intrusion Detection System. Dodatkowo Nmap posiada możliwość identyfikacji systemów operacyjnych na skanowanych hostach.

Metody skanowania portów edytuj

Oto niektóre z metod dostępnych w nmapie:

  • skanowanie oparte na pełnym połączeniu TCP (nmap -sT) – listuje porty, z którymi udało się nawiązać połączenie
  • skanowanie SYN (tzw. półotwarte) (nmap -sS) – polega na wysyłaniu pakietów z ustawioną flagą SYN i oczekiwaniu na odpowiedź. Jeżeli serwer odpowie pakietem SYN-ACK oznacza to otwarty port. Serwer oczekuje na pakiet z bitem ACK, jednak nigdy go nie otrzymuje, a połączenie nie jest logowane w ramach warstwy aplikacji.
  • metoda ACK (nmap -sA) – wykorzystywana jest najczęściej do poznania ustawień firewalla (rozpoznawania prostych filtrów pakietów). Nmap wysyła do wskazanych portów pakiety ACK. Jeśli otrzyma pakiet RST, port uznawany jest za niefiltrowany, jeżeli zaś nie otrzymuje odpowiedzi, uznaje go za filtrowany
  • skanowanie FIN (nmap -sF) – korzysta z pakietów z ustawioną wyłącznie flagą FIN, czego host docelowy nie oczekuje. Porty niewykorzystane odpowiadają wówczas pakietem RST
  • metoda Xmas Tree (nmap -sX) – wykorzystuje pakiety z bitami FIN, URG i PUSH, porty zamknięte odpowiadają pakietem z flagą RST
  • skanowanie Null (nmap -sN) – korzysta z pakietów bez ustawionych żadnych flag
  • skanowanie portów UDP (nmap -sU) – listuje otwarte porty, korzystające z protokołu UDP
  • skanowanie ping (nmap -sP) – pozwala ono określić, które z hostów są aktywne w danym momencie
  • skanowanie RPC (nmap -sR) – znajduje usługi dostępne przez RPC

Nmap jest skanerem aktywnym. Wiąże się to z generowaniem przez niego dużej ilości ruchu, a w związku z tym – mimo dużej skuteczności – można wykryć jego używanie. Mniej ruchu generują tzw. skanery pasywne, np. p0f, właściwie skanujące wcześniej uzyskany zapis (z np. dumpcap czy tcpdump) z sieci. Opcje nmap pozwalają relatywnie utrudnić wykrycie adresu IP, z którego przeprowadzany jest skan z przełącznikiem -D <IP_przynety>, gdzie wprowadza się szereg mylących hostów. Inna opcja pozwala „obciążyć winą” inny komputer („zombie”), np. nmap -sI <zombieHost[:probeport]>.

Przykład:

  • Szybkie skanowanie domowej sieci lokalnej, prywatnej C klasy IP od 1 do 255:

nmap -A -T4 192.168.1.1-255

W efekcie powinno się uzyskać informacje o prawdopodobnym sprzęcie i wersjach oprogramowania komputerów w tej sieci, o czasie ich włączenia (uptime) o otwartych i zblokowanych portach i o wszystkich MAC adresach każdego PC. Dla administratora informacje sprzętowe mogą się okazać przydatne przy inwentaryzacji sieci, a wersje oprogramowania w połączeniu z otwartymi portami mogą służyć do uszczelnienia sieci.

Zobacz też edytuj

  • ettercapsniffer z możliwością pasywnego skanowania
  • p0f – pasywny skaner sieciowy
  • port knocking – technika otwierania portów tylko uprawnionym użytkownikom
  • snort – program wykrywający skanowanie portów

Przypisy edytuj

  1. Oficjalne repozytorium oprogramowania w serwisie GitHub. github.com. [dostęp 2022-05-23]. (ang.).
  2. a b Nmap Public Source License. nmap.org. [dostęp 2022-05-23]. (ang.).
  3. Matrix mixes life and hacking, bbc.co.uk, 23 maja 2003 [dostęp 12 czerwca 2011] (ang.)
  4. When Good Scanners Go Bad, ComputerWorld 22 Marca 1999 (ang.)

Linki zewnętrzne edytuj