NMAP
NAZWA
STRESZCZENIE
OPIS
UWAGI DO TÅUMACZENIA
SKRÃCONA LISTA OPCJI
SPECYFIKACJA CELU
WYKRYWANIE HOSTÃW
PODSTAWY SKANOWANIA PORTÃW
TECHNIKI SKANOWANIA PORTÃW
SPECYFIKACJA PORTÃW I KOLEJNOÅCI SKANOWANIA
DETEKCJA USÅUG I WERSJI
WYKRYWANIE SYSTEMU OPERACYJNEGO
ZALEÅ»NOÅCI CZASOWE I WYDAJNOÅÄ
FIREWALL/IDS I PODSZYWANIE SIÄ
WYJÅCIE
RÃÅ»NE OPCJE
INTERAKCJA W CZASIE PRACY
PRZYKÅADY
BÅÄDY
AUTOR
UWARUNKOWANIA PRAWNE
PRZYPISY
NAZWA
nmap − NarzÄdzie do eksploracji sieci i skaner portów/zabezpieczeÅ
STRESZCZENIE
nmap [Typ Skanowania…] [Opcje] {specyfikacja celu} |
OPIS
Nmap (ang. âNetwork Mapper”) jest narzÄdziem open source do eksploracji sieci i audytów bezpieczeÅstwa. ZostaÅ zaprojektowany do szybkiego skanowania dużych sieci, ale również dziaÅa dobrze w stosunku do pojedynczych adresów. Nmap wykorzystuje niskopoziomowe pakiety IP do wykrywania które adresy sÄ dostÄpne w sieci, jakie udostÄpniajÄ usÅugi (nazwa aplikacji i wersja), na jakich systemach operacyjnych pracujÄ (wersja systemu), jakie typy systemów zaporowych (firewall) sÄ wykorzystywane i dziesiÄtek innych cech. Nmap jest powszechnie wykorzystywany do audytów bezpieczeÅstwa, również wielu administratorów sieci i systemów wykorzystuje go wykonywania rutynowych czynnoÅci, takich jak inwentaryzacja zasobów sieci, zarzÄdzanie aktualizacjami oprogramowania i monitorowania systemów oraz ich czasu dziaÅania (uptime).
Wynikiem dziaÅania Nmapa jest lista przeskanowanych adresów z dodatkowymi informacjami zależnymi od wykorzystanych opcji. JednÄ z gÅównych informacji jest âlista interesujÄcych portów”. Zawiera ona numery portów wraz z protokoÅami, nazwami usÅugi i wykrytym stanem. Stan może zostaÄ opisany jako otwarty, filtrowany, zamkniÄty, lub niefiltrowany. Otwarty oznacza, że aplikacja na badanym adresie oczekuje na poÅÄczenia/pakiety przychodzÄce na ten port. Filtrowany oznacza, że system zaporowy lub inne urzÄdzenie blokujÄce ruch sieciowy nie dopuszcza komunikacji do tego portu i z tego powodu Nmap nie jest w stanie okreÅliÄ czy badany port jest otwarty czy zamkniÄty. ZamkniÄty port nie posiada aplikacji, która obsÅuguje komunikacjÄ sieciowÄ. Porty sklasyfikowane jako niefiltrowane odpowiadaÅy na zapytania Nmapa, jednak nie byÅo możliwe okreÅlenie, czy byÅy one otwarte czy zamkniÄte. Nmap raportuje kombinacje stanów otwarty|filtrowany i zamkniÄty|filtrowany jeÅli nie jest w stanie okreÅliÄ, który z dwóch podanych stanów lepiej opisuje stan portu. Lista portów może również zawieraÄ informacje o wykrytych wersjach oprogramowania, jeÅli zostaÅa wÅÄczona detekcja wersji. JeÅli zostaÅa wybrana opcja skanowania dostÄpnych protokoÅów (−sO), Nmap zamiast listy portów dostarczy informacji na temat dostÄpnoÅci poszczególnych protokoÅów IP.
Poza listÄ interesujÄcych portów, Nmap może dostarczyÄ dodatkowych informacje na temat badanych adresów, takich jak odwrotne nazwy DNS, prawdopodobne systemy operacyjne, typu urzÄdzeÅ i adresy sprzÄtowe MAC.
Typowy wynik skanowania Nmapa jest przedstawiony w PrzykÅad 1, âPrzykÅadowe wyniki skanowania Nmapa”. W tym przypadku wykorzystano tylko opcjÄ −A, wykrywajÄcÄ wersje systemu operacyjnego, −T4 dla szybszego dziaÅania i dwa adresy docelowe.
PrzykÅad 1. PrzykÅadowe wyniki skanowania Nmapa
# nmap −A −T4 scanme.nmap.org playground
Starting nmap ( https://nmap.org/ )
Interesting ports on scanme.nmap.org (205.217.153.62):
(The 1663 ports scanned but not shown below are in state: filtered)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 3.9p1 (protocol 1.99)
53/tcp open domain
70/tcp closed gopher
80/tcp open http Apache httpd 2.0.52 ((Fedora))
113/tcp closed auth
Device type: general purpose
Running: Linux 2.4.X|2.5.X|2.6.X
OS details: Linux 2.4.7 − 2.6.11, Linux 2.6.0 − 2.6.11
Uptime 33.908 days (since Thu Jul 21 03:38:03 2005)
Interesting ports on playground.nmap.org (192.168.0.40):
(The 1659 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE VERSION
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios−ssn
389/tcp open ldap?
445/tcp open microsoft−ds Microsoft Windows XP microsoft−ds
1002/tcp open windows−icfw?
1025/tcp open msrpc Microsoft Windows RPC
1720/tcp open H.323/Q.931 CompTek AquaGateKeeper
5800/tcp open vnc−http RealVNC 4.0 (Resolution 400×250; VNC TCP port: 5900)
5900/tcp open vnc VNC (protocol 3.8)
MAC Address: 00:A0:CC:63:85:4B (Lite−on Communications)
Device type: general purpose
Running: Microsoft Windows NT/2K/XP
OS details: Microsoft Windows XP Pro RC1+ through final release
Service Info: OSs: Windows, Windows XP
Nmap finished: 2 IP addresses (2 hosts up) scanned in 88.392 seconds
NajnowszÄ wersjÄ Nmapa można pobraÄ z https://nmap.org/. Najnowsza wersja dokumentacji man jest dostÄpna pod adresem https://nmap.org/man/.
UWAGI DO TÅUMACZENIA
PrzemysÅaw Galczewski
Dokument ten zawiera nieoficjalne polskie tÅumaczenie oryginalnej dokumentacji Nmapa [1] w wersji 2991. DoÅożyÅem wszelkich staraÅ, aby byÅo ono jak najbardziej zbliżone do oryginaÅu, a przy tym fachowe i zrozumiaÅe. Nie jest przy tym gwarantowane, że jest ono tak samo dokÅadne i aktualne jak oficjalna wersja angielska. Dokument ten może byÄ modyfikowany i rozpowszechniany na zasadach Creative Commons Attribution License [2] . Polska wersja tego dokumentu jest dostÄpna w formatach HTML [3] , NROFF [4] i XML [5] . Wszelkie uwagi dotyczÄce tÅumaczenia proszÄ kierowaÄ bezpoÅrednio do mnie.
SKRÃCONA LISTA OPCJI
Skrócona lista opcji jest wyÅwietlana przy uruchomieniu Nmapa bez dodatkowych parametrów, a jej najnowsza wersja jest zawsze dostÄpna pod adresem https://nmap.org/data/nmap.usage.txt. Skrócona lista pozwala Åatwiej zapamiÄtaÄ najpopularniejsze opcje, ale nie zastÄpi wgÅÄbienia sie w resztÄ tej dokumentacji. Wiele z pozostaÅych opcji nie jest nawet zawartych na liÅcie skróconej.
Użycie: nmap [Typ(y) skanowania] [Opcje] {specyfikacja celu}
SPECYFIKACJA CELU:
Można podaÄ nazwy hostów, adresy IP, sieci, itp.
PrzykÅady: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0−255.1−254
−iL
−iR
−−exclude
−−excludefile
WYKRYWANIE HOSTÃW:
−sL: Lista skanowania − tylko wyÅwietla listÄ hostów do skanowania
−sP: Skanowanie Ping − tylko wykrywanie dostÄpnoÅci hostów
−P0: Traktuj wszystkie hosty jako dosÄpne − pomijanie wykrywania
−PS/PA/PU [lista_portów]: Wykrywanie TCP SYN/ACK lub UDP na wybranych portach
−PE/PP/PM: Zykrywanie za pomocÄ ICMP echo, timestamp, zapytania o maskÄ sieci
−n/−R: Nie używaj zapytaÅ DNS/Zawsze odpytuj DNS [domyÅlnie: czasami]
−−dns−servers
−−system−dns: Używaj systemowych ustawieÅ DNS
TECHNIKI SKANOWANIA:
−sS/sT/sA/sW/sM: Skanowania TCP SYN/Connect()/ACK/Window/Maimon
−sN/sF/sX: Skanowania TCP Null, FIN i Xmas
−−scanflags
−sI
−sO: Skanowanie protokoÅów IP
−b
SPECYFIKACJA PORTÃW I KOLEJNOÅCI SKANOWANIA:
−p
PrzykÅad: −p22; −p1−65535; −p U:53,111,137,T:21−25,80,139,8080
−F: Szybkie skanowanie − tylko porty zawarte w pliku nmap−services
−r: Skanuj porty kolejno − wyÅÄczenie losowania kolejnoÅci
DETEKCJA USÅUG/WERSJI:
−sV: Wykrywaj wersjÄ usÅugi na otwartych portach
−−version−intensity
−−version−light: Limituj do najpopularniejszych testów (poziom 2)
−−version−all: Używaj wszystkich testów (poziom 9)
−−version−trace: Pokazuj dokÅadne informacje podczas skanowania (do usuwania bÅÄdów)
DETEKCJA OS:
−O: WÅÄczenie wykrywania systemu operacyjnego
−−osscan−limit: Limitowanie wykrywania OS do obiecujÄcych hostów
−−osscan−guess: Zgaduj wersjÄ OS bardziej agresywnie
WYDAJNOÅÄ I ZALEÅ»NOÅCI CZASOWE:
−T[0−5]: Ustaw szablon (wyższy jest szybszy)
−−min−hostgroup/max−hostgroup
−−min−parallelism/max−parallelism
−−min−rtt−timeout/max−rtt−timeout/initial−rtt−timeout
−−max−retries
−−host−timeout
−−scan−delay/−−max−scan−delay
OPCJE FIREWALL/IDS:
−f; −−mtu
−D
−S
−e
−g/−−source−port
−−data−length
−−ttl
−−spoof−mac
−−badsum: WysyÅaj pakiety z nieprawidÅowÄ sumÄ kontrolnÄ TCP/UDP
WYJÅCIE:
−oN/−oX/−oS/−oG
−oA
−v: Podwyższenie poziomu raportowania (podwójne użycie powiÄksza efekt)
−d[poziom]: Ustaw lub podwyższ poziom debugowania (do najwyższego 9)
−−packet−trace: Pokazuj wszystkie wysyÅane i odbierane pakiety
−−iflist: WyÅwietl listÄ interfejsów i routingu (do wykrywania bÅÄdów)
−−append−output: DoÅÄcz nowe wyniki do już istniejÄcych w pliku
−−resume
−−stylesheet <Åcieżka/URL>: plik styli XSL do konwersji wyników w XML do formatu HTML
−−webxml: DomyÅlny styl z Insecure.Org
−−no−stylesheet: WyÅÄczenie dodawania styli do plików z wynikami XML
RÃÅ»NE:
−6: WÅÄczenie skanowania IPv6
−A: WÅÄczenie detekcji OS i wersji usÅug
−−datadir
−−send−eth/−−send−ip: WysyÅaj za pomocÄ ramek ethernet lub pakietów IP
−−privileged: ZakÅadaj że użytkownik ma odpowiednie uprawnienia
−V: WyÅwietl numer wersji Nmapa
−h: WyÅwietl stronÄ pomocy
PRZYKÅADY:
nmap −v −A scanme.nmap.org
nmap −v −sP 192.168.0.0/16 10.0.0.0/8
nmap −v −iR 10000 −P0 −p 80
SPECYFIKACJA CELU
Wszystko co nie jest opcjÄ Nmapa w parametrach wywoÅania (lub jej argumentem) jest traktowane jako specyfikacja celu skanowania. Najprostszym przypadkiem jest sam adres do przeskanowania.
Czasami chcesz przeskanowaÄ caÅÄ sieÄ, dlatego Nmap obsÅuguje format CDIR. Możesz doÅÄczyÄ do adresu /iloÅÄbitów i nmap przeskanuje każdy adres, który zawiera siÄ w podanym zakresie. Na przykÅad, 192.168.10.0/24 przeskanuje 256 adresów pomiÄdzy 192.168.10.0 (binarnie: 11000000 10101000 00001010 00000000) i 192.168.10.255 (binarnie: 11000000 10101000 00001010 11111111) wÅÄcznie. Podanie 192.168.10.40/24 spowoduje dokÅadnie takie samo zachowanie. ZaÅóżmy, że host scanme.nmap.org ma adres 205.217.153.62, podanie scanme.nmap.org/16 spowoduje przeskanowanie 65,536 adresów IP pomiÄdzy 205.217.0.0 i 205.217.255.255. NajmniejszÄ dopuszczalna wartoÅÄ to /1, co stanowi poÅowÄ Internetu. NajwiÄksza wartoÅÄ to 32, która oznacza skanowanie pojedynczego adresu IP.
Notacja CIDR jest krótka i zwiÄzÅa, jednak nie zawsze wystarczajÄco elastyczna. Na przykÅad, chcesz przeskanowaÄ 192.168.0.0/16 z pominiÄciem wszystkich adresów koÅczÄcych siÄ .0 i .255, ponieważ sÄ one najczÄÅciej adresami typu broadcast. Nmap obsÅuguje to poprzez podawanie zakresów adresów za pomocÄ oktetów. Zamiast podawaÄ normalny adres IP, możesz podaÄ listÄ adresów lub zakresów oddzielonÄ przecinkami. Na przykÅad 192.168.0−255.1−254 pominie wszystkie adresy koÅczÄce siÄ .0 lub .255. Zakresy nie sÄ limitowane do koÅcowych oktetów: podanie 0−255.0−255.13.37 pozwoli na przeskanowanie wszystkich adresów koÅczÄcych siÄ 13.37. Tego typu skanowania mogÄ byÄ przydatne podczas przeprowadzania badaÅ Internetu.
Adresy IPv6 mogÄ byÄ podawane jedynie w peÅnej formie IPv6 lub nazwy hosta. Zapis z wykorzystaniem CIDR i zakresów nie jest obsÅugiwany przy IPV6, jednak rzadko byÅoby to przydatne.
Nmap akceptuje podawanie wielu hostów w linii poleceÅ i nie muszÄ one byÄ tego samego typu. Komenda nmap scanme.nmap.org 192.168.0.0/8 10.0.0,1,3−7.0−255 zrobi to co powinna.
Zwykle adresy sÄ podawane w linii poleceÅ, jednak poniższe opcje pozwalajÄ na alternatywnÄ specyfikacjÄ celu:
−iL
odczytuje specyfikacjÄ celu z pliku plik−wejÅciowy. Podawanie dÅugiej listy adresów z linii poleceÅ jest dosyÄ niewygodne. Na przykÅad Twój serwer DHCP może posiadaÄ listÄ 10,000 aktualnie dzierżawionych adresów, które chcesz przeskanowaÄ. Możliwe również, że chcesz przeskanowaÄ wszystkie adresy IP z wykluczeniem aktualnie dzierżawionych aby uzyskaÄ listÄ nielegalnie przypisanych adresów statycznych. Po prostu wygeneruj listÄ adresów i podaj jÄ Nmapowi jako argument do parametru −iL. Poszczególne definicje mogÄ byÄ zgodne z dowolnym formatem akceptowanym przez Nmapa w linii poleceÅ (adres IP, nazwa, CIDR, IPv6 lub zakres). Każdy wpis musi byÄ oddzielony od nastÄpnego za pomocÄ jednej (lub wiecej) spacji, znaków tabulacji lub znaków nowej linii. Możesz również podaÄ znak (−) zamiast nazwy pliku jeÅli chesz aby Nmap pobraÅ adresy ze standardowego wejÅcia zamiast z pliku.
−iR
Do przeprowadzania badaÅ Internetu, możesz używaÄ wyboru losowych adresów. Argument iloÅÄ hostów informuje Nmapa ile losowych adresów ma wygenerowaÄ. Adresy prywatne, typu multicast lub niewykorzystywane sÄ automatycznie pomijane przy generowaniu. Argument 0 pozwala na przeprowadzanie skanowania bez koÅca. PamiÄtaj, że niektórzy administratorzy nie lubiÄ skanowania ich sieci i może siÄ im to nie spodobaÄ. Używaj tej opcji na wÅasne ryzyko! JeÅli poczujesz siÄ naprawdÄ znudzony w deszczowe popoÅudnie, wyprubuj komendÄ nmap −sS −PS80 −iR 0 −p 80 do wykrycia losowych serwerów WWW do przeglÄdania udostÄpnianych przez nie stron.
−−exclude
Podana lista celów do wyÅÄczenia z zakresu skanowania, jeÅli wchodzÄ w zakres aktualnego skanowania. Lista musi byÄ podana zgodnie ze standardowym formatem akceptowanycm przez Nmapa, wiÄc może zawieraÄ nazwy, adresy w formacie CDIR, zakresy, itp. Opcja ta jest przydatna, jeÅli sieÄ którÄ chcesz przeskanowaÄ zawiera systemy nietykalne lub krytyczne, o których wiadomo, że nie tolerujÄ dobrze skanowania lub też sieci administrowane przez innych ludzi.
−−excludefile
Opcja ta oferuje takÄ samÄ funkcjonalnoÅÄ jak −−exclude z tÄ rożnicÄ, że wykluczone cele (oddzielone spacjami, znakami tabulacji lub nowej linii) sÄ pobierane z pliku plik_wyÅÄczeÅ, a nie z linii poleceÅ.
WYKRYWANIE HOSTÃW
Jednym z pierwszych kroków rekonesansu sieciowego jest redukcja (czasami ogromnych) zakresów adresów IP do listy aktywnych lub interesujÄcych hostów. Skanowanie każdego portu na każdym adresie IP jest wolne i przeważnie niepotrzebne. OczywiÅcie to co czyni host interesujÄcym gÅównie zależy od celu skanowania. Administratorzy sieci mogÄ byÄ zainteresowani hostami udostÄpniajÄcymi okreÅlonÄ usÅugÄ podczas gdy audytorzy bezpieczeÅstwa mogÄ chcieÄ przyjrzeÄ siÄ każdemu urzÄdzeniu posiadajÄcemu adres IP. Administratorowi może wystarczaÄ wykorzystanie pinga ICMP do zlokalizowania hostów w jego wewnÄtrznej sieci, podczas gdy audytor przeprowadzajÄcy zewnÄtrzne testy penetracyjne może wykorzystywaÄ dziesiÄtki różnych testów do ominiÄcia reguÅ filtrowania systemu zaporowego.
Ponieważ niezbÄdne sÄ różne metody wykrywania hostów, Nmap oferuje szeroki wachlarz opcji pozwalajÄcych na wybieranie wykorzystywanych technik. Wykrywanie hostów czÄsto jest zwane skanowaniem Ping, jednak wykracza daleko poza proste wysyÅanie zapytania ICMP echo request znanego z programu ping. Użytkownik może pominÄÄ etap wykrywania poprzez wykorzystanie opcji skanowania listy (−sL), poprzez wyÅÄczenie pingowania (−P0) lub wykorzystania różnych kombinacji wieloportowego badania za pomocÄ testów TCP SYN/ACK, UDP, i ICMP. Celem tych testów jest uzyskanie informacji o adresach IP, które sÄ aktualnie dostÄpne (sÄ wykorzystywane przez urzÄdzenie sieciowe lub komputer). W przypadku wielu sieci tylko maÅy procent wykorzystywanych adresów IP jest równoczeÅnie aktywnych. Jest to szczególnie powszechne w sieciach prywatnych zgodnych z adresacjÄ RFC1918, takich jak 10.0.0.0/8. Ta sieÄ zawiera 16 milionów adresów IP, ale widziaÅem nie raz firmy wykorzystujÄce niecaÅy tysiÄc z nich. Opcja wykrywania hostów pozwala na szybkie wykrycie rzeczywiÅcie wykorzystywanych adresów IP z caÅej dostÄpnej puli.
JeÅli nie podano opcji wybierajÄcej metodÄ wykrywania hostów, Nmap wysyÅa pakiety TCP ACK na port 80 i zapytanie ICMP Echo Request query do każdego badanego adresu. WyjÄtkiem od tej reguÅy jest skanowanie ARP przeprowadzane dla aktualnego segmentu sieci ethernet. W przypadku uruchamiania przez nie uprzywilejowanych użytkowników systemów UNIX, wysyÅany jest pakiet SYN zamiast ACK z wykorzystaniem wywoÅania systemowego connect(). Ustawienia domyÅlne sÄ tożsame z opcjami −PA −PE. Takie wykrywanie hostów jest najczÄÅciej wystarczajÄce podczas skanowania sieci lokalnej, jednak podczas audytów bezpieczeÅstwa zalecane jest wykorzystywanie bardziej zaawansowanych opcji.
Opcje −P* (które wybierajÄ sposób pingowania) mogÄ byÄ ÅÄczone. Możesz poprawic dokÅadnoÅÄ wykrywania hostów za systemem zaporowym poprzez stosowanie wielu różnych portów/flag TCP i typów ICMP. Zwracam uwagÄ, że wykrywanie hostów ARP (−PR) jest z zaÅożenia wÅÄczane podczas testów sieci lokalnej w ramach tego samego segmentu, nawet jeÅli podasz inne opcje −P*, ponieważ praktycznie zawsze tak jest szybciej i efektywniej.
Opcje kontroli wykrywania hostów.
−sL (Lista skanowania)
Lista skanowania jest okrojonÄ funkcjÄ wykrywania hostów, która po prostu wyÅwietla wszystkie adresy z podanych zakresów skanowania i nie wysyÅa żadnych pakietów do nich. DomyÅlnie Nmap wykonuje odwrotne zapytania DNS o badane adresy aby poznaÄ ich nazwy. CzÄsto niespodziankÄ jest jak dużo informacji mogÄ udzieliÄ już same nazwy hostów. Na przykÅad fw.chi.playboy.com jest systemem zaporowym w biurze Playboy Enterprises w Chicago. Na koÅcu Nmap podaje także caÅkowitÄ liczbÄ adresów IP. Lista skanowania jest dobrym sposobem na sprawdzenie i uzyskanie pewnoÅci, że prawidÅowo podano zakres skanowania. JeÅli nie rozpoznajesz nazw domen na uzyskanej liÅcie, warto sprawdziÄ podany zakres, co pozwala unikÄÄ niepotrzebnego skanowania sieci nieznanej firmy.
IdeÄ tej opcji jest wyÅwietlanie prostej listy adresów, z tego powodu bardziej zaawansowana funkcjonalnoÅÄ taka jak skanowanie portów, wykrywanie systemu operacyjnego czy pingowanie nie może byÄ ÅÄczone z tÄ metodÄ. JeÅli chcesz wyÅÄczyÄ pingowanie podczas skanowania, poczytaj na ten temat w opisie opcji −P0.
−sP (Skanowanie Ping)
Ta opcja nakazuje Nmapowi przeprowadzaÄ tylko skanowanie typu Ping (wykrywanie hostów), a wynikiem jej dziaÅania jest lista aktywnych hostów. Dodatkowe testy (takie jak skanowanie portów lub wykrywanie systemu operacyjnego) nie sÄ przeprowadzane. Metoda ta idzie krok dalej niż lista skanowania i może byÄ wykorzystywana w podobnym celu. Pozwala na przeprowadzenie delikatnego rekonesansu bez zwracania zbytniej uwagi. Posiadanie wiedzy na temat iloÅci aktywnych hostów jest bardziej wartoÅciowe dla atakujÄcych niż sama lista adresów zawierajÄca adres IP i nazwÄ hosta.
Również administratorzy systemów czÄsto korzystajÄ z tej opcji. Pozwala ona na Åatwe i szybkie okreÅlenie liczby hostów w sieci lub monitorowanie dostÄpnoÅci serwerów. Opcja ta czÄsto jest nazywna Ping Sweep i daje bardziej wiarygodne wyniki niż pingowanie adresu broadcast, ponieważ niektóre adresy mogÄ na niego nie odpowiedzieÄ.
DomyÅlnie opcja −sP wysyÅa pakiety ICMP echo request i pakiety TCP na port 80. W przypadku wykonywania z konta nie uprzywilejowanego użytkownika wysyÅane sÄ pakiety SYN (z wykorzystaniem funkcji systemowej connect()) na port 80 badanego hosta. JeÅli uprzywilejowany użytkownik próbuje przeskanowaÄ adresy w lokalnej sieci ethernet, wykorzystywane sÄ zapytania ARP (−PR), chyba że dodano opcjÄ −−send−ip. Dla wiÄkszej wygody opcja −sP może byÄ ÅÄczona w dowolny sposób z innymi metodami wykrywania hostów (opcje −P*, nie dotyczy −P0). JeÅli wybrano któryÅ z typów testów i numer portu, nie sÄ wykorzystywne domyÅlne ustawienia (ACK i echo request). Wykorzystywanie tych opcji jest szczególnie zalecane, jeÅli pomiÄdzy badanym systemem, a hostem na którym jest uruchomiony Nmap jest system zaporowy, inaczej niektóre (lub wszystkie) hosty nie zostanÄ wykryte.
−P0 (Bez pinga)
Ta opcja wyÅÄcza caÅkowicie wykrywanie hostów. Normalnie Nmap próbuje wykryÄ aktywne adresy przed rozpoczÄciem wÅaÅciwego skanowania. DomyÅlnie Nmap przeprowadza tylko testy takie jak skanowanie portów, wykrywanie wersji i systemu operacyjnego tylko dla hostów, które zostaÅy wczeÅniej wykryte jako aktywne. WyÅÄczenie wykrywania hostów za pomocÄ opcji −P0 powoduje, że Nmap próbuje wykonaÄ wszystkie żadane typy skanowania na każdym podanym adresie IP. JeÅli wiÄc jako cel w linii pleceÅ podano klasÄ B (/16), wszystkie 65,536 adresów zostanie przeskanowane. Drugi znak w opcji −P0 jest zerem, a nie literÄ O. Wykrywanie hostów jest pomijane jak przy wyÅwietlaniu listy skanowania, jednak zamiast zatrzymaÄ siÄ i wyÅwietliÄ listÄ, Nmap kontynuuje i przeprowadza zaÅożone testy na każym adresie IP, tak jak by byÅ wykryty jako aktywny.
−PS [listaportów] (TCP SYN Ping)
Opcja ta powoduje wysyÅanie pustych pakietów TCP z ustawionÄ flagÄ SYN. DomyÅlnie port docelowy to 80 (konfigurowalne przed kompilacjÄ za pomocÄ staÅej DEFAULT_TCP_PROBE_PORT w pliku nmap.h), ale inny port może byÄ podany jako parametr. Możliwe jest również podanie listy portów, odzielonych przecinkami (np. −PS22,23,25,80,113,1050,35000), co spowoduje przeprowadzenie testów na wszystkich podanych portach równolegle.
Ustawiona flaga SYN sugeruje badanemu systemowi, że próbujesz nawiÄzaÄ z nim poÅÄczenie. Normalnie zdalny port bÄdzie zamkniÄty i zostanie wysÅany z powrotem pakiet z flagÄ RST (reset). JeÅli port bÄdzie otwarty, host bÄdzie próbowaÅ wykonaÄ drugi krok z trójstopniowego procesu nawiÄzywania poÅÄczenia odpowiadajÄc za pomocÄ pakietu TCP SYN/ACK. Nmap zamiast wysÅaÄ pakiet ACK, który by pomyÅlnie zakoÅczyÅ nawiÄzywanie poÅÄczenia, w tym momencie przerwie poÅÄczenie wysyÅajÄc pakiet RST. Pakiet RST jest wysyÅany przez kernel systemu na którym pracuje Nmap automatycznie, w odpowiedzi na niespodziwany pakiet SYN/ACK, a nie przez samego Nmapa.
Nmap nie zwraca uwagi czy port jest otwarty czy zamkniÄty. W zależnoÅci od uzyskanej omówionej wczeÅniej odpowiedzi (RST lub SYN/ACK) host jest uznawany za dostÄpny.
W systemach UNIX, tylko użytkownik uprzywilejowany − root − może wysyÅaÄ niskopoziomowe pakiety raw TCP. W przypadku użytkowników nie posiadajÄcych odpowiednich uprawnieÅ wykorzystywane jest obejÅcie w postaci wykorzystania funkcji systemowej connect() do wykonania poÅÄczeÅ ze wskazanymi portami. JeÅli connect() zwróci poprawnoÅÄ wykonania operacji lub bÅÄd odmowy poÅÄczenia ECONNREFUSED, stos TCP musiaÅ otrzymaÄ pakiet z flagami SYN/ACK lub RST i host jest uznawany za dostÄpny. JeÅli próba nawiÄzania poÅÄczenia zostaÅa przerwana po przekroczeniu maksymalnego czasu oczekiwania, host jest oznaczany jako niedostÄpny. To obejÅcie jest również wykorzystywane dla protokoÅu IPv6, ponieważ wysyÅanie niskopoziomowych pakietów raw TCP nie jest jeszcze dostÄpne w Nmapie.
−PA [lista portów] (TCP ACK Ping)
Metoda TCP ACK ping jest dosyÄ podobna do powyżej opisanego SYN ping. Różnica, jak Åatwo zgadnÄÄ, polega na wykorzystaniu flagi ACK zamiast SYN. Flaga ACK jest wykorzystywana do potwierdzania otrzymania danych za pomocÄ utworzonego wczeÅniej poÅÄczenia TCP, jednak w tym wypadku poÅÄczenie takie nie istnieje. Z tego powodu badany system powinien zawsze odpowiedzieÄ pakietem z flagÄ RST, ÅwiadczÄcÄ o nie isnieniu takiego poÅÄczenia.
Opcja −PA, tak jak SYN, używa portu numer 80 i również może przyjmowaÄ listÄ portów jako argument (w takim samym formacie). JeÅli program zostaÅ uruchomiony przez nie uprzywilejowanego użytkownika lub badany jest adres IPv6, wykorzystywane jest opisane wczeÅniej obejÅcie za pomocÄ connect(). ObejÅcie to nie jest idealne, ponieważ funkcja connect() wysyÅa pakiet SYN zamiast oczekiwanego ACK.
Powodem udostÄpniania zarówno metody SYN jak i ACK jest zwiÄkszenie szansy na ominiÄcie systemu zaporowego. Wielu administratorów konfiguruje routery i proste systemy zaporowe tak, żeby blokowaÅy przychodzÄce pakiety SYN, poza przychodzÄcymi do publicznych serwerów takich jak WWW czy pocztowych. Zabezpiecza to przed przychodzeniem innych poÅÄczeÅ przy jednoczesnym nie zakÅucaniu pozostaÅej transmisji wychodzÄcej do Internetu. Takie bezstanowe (non−stateful) rozwiÄzanie zajmuje maÅo zasobów systemu zaporowego/routera i jest szeroko wspierane przez filtry sprzÄtowe i programowe. Linuxowy firewall Netfilter/iptables dla wygody posiada opcjÄ −−syn, która implementuje takie wÅaÅnie bezstanowe filtrowanie. W przypadku takiego systemu zaporowego testy wykorzystujÄce metodÄ SYN ping (−PS) zostanÄ prawdopodobnie zablokowane w przypadku zamkniÄtych portów. W tym przypadku metoda ACK pozwoli na obejÅcie tych zabezpieczeÅ.
Innym popularnym typem jest firewall wykorzystujÄcy stany (stateful) do blokowania niechcianych pakietów. Taka funkcjonalnoÅÄ jest najczÄÅciej spotykana w wysokiej klasy systemach zaporowych, które stajÄ siÄ z roku na rok coraz popularniejsze. Linuxowy Netfilter/iptables posiada opcjÄ −−state, która kategoryzuje pakiety na podstawie stanu poÅÄczenia. Metoda SYN prawdopodobnie bÄdzie dziaÅaÅa poprawnie dla tego typu systemów, ale już pakiet z ACK zostanie rozpoznany jako nieprawidÅowy i zostanie zablokowany. RozwiÄzaniem tego problemu jest wykorzystywanie jednoczeÅnie obu metod SYN i ACK poprzez podanie parametrów −PS i −PA.
−PU [listaportów] (UDP Ping)
KolejnÄ metodÄ wykrywania hostów jest UDP ping, który wysyÅa puste (o ile nie wykorzystano opcji −−data−length) pakiety UDP na wskazane porty. Lista portów jest podawana w takim samym formacie jak dla wczeÅniej opisanych opcji −PS i −PA. JeÅli nie podano numerów portów, domyÅlnie używany jest port 32338. Port ten może byÄ zmieniony przed kompilacjÄ poprzez zmianÄ staÅej DEFAULT_UDP_PROBE_PORT w pliku nmap.h. Wybór tak maÅo popularnego portu zostaÅ podyktowany chÄciÄ unikniÄcia wysyÅania pakietów do otwartych portów, co w przypadku tego testu nie przyniosÅo by oczekiwanego efektu.
W przypakdu kiedy port jest zamkniÄty na badaniej maszynie, w odpowiedzi na pakiet UDP powinien zostaÄ odesÅany pakiet ICMP port unreachable oznaczajÄcy brak możliwoÅci komunikacji z wybranym portem. Po otrzymaniu takiej odpowiedzi Nmap oznacza host jako dostÄpny. Inne typy odpowiedzi ICMP, takie jak host/sieÄ niedostÄpna czy przekroczony czas życia TTL oznaczajÄ, że badany host nie jest dostÄpny, podobnie interpretowany jest brak odpowiedzi. JeÅli badany port jest otwarty, wiÄkszoÅÄ typowych usÅug zignoruje pusty pakiet i nie zostanie wysÅana żadna informacja zwrotna. WÅaÅnie dla tego domyÅlnie testowanym portem jest 31338, który jest bardzo rzadko wykorzystywany. Wiele usÅug, takich jak chargen, odpowie na pusty pakiet co spowoduje, że Nmap uzna host za dostÄpny.
GÅównÄ zaletÄ tego typu skanowania jest fakt, że omija systemy zaporowe i filtry skupiajÄce sie tylko na TCP. PrzykÅadowo, miaÅem kiedyÅ szerokopasmowy router bezprzewodowy Linksys BEFW11S4. ZewnÄtrzny interfejs tego urzÄdzenia filtrowaÅ domyÅlnie wszystkie porty TCP, za to testy UDP zwracaÅy odpowiedzi ICMP port unreachable, co ujawnia istnienie urzÄdzenia.
−PE; −PP; −PM (Typy ICMP Ping)
Dodatkowo poza opisanymi wczeÅniej metodami wykrywania hostów TCP i UDP, Nmap może wysyÅaÄ standardowe pakiety ICMP znane z typowego programu ping. Nmap wysyÅa pakiety ICMP typu 8 (echo request) do badanego hosta i oczekuje typu 0 (echo reply) w odpowiedzi. Niestety wiele hostów i systemów zaporowych blokuje tego typu pakiety, zamiast odpowiadaÄ prawidÅowo i zgodnie z RFC 1122 [6] . Z tego powodu skanowania nieznanych hostów w internecie za pomocÄ tej metody przeważnie nie sÄ wiarygodne. Jednakże administratorzy systemów monitorujÄcy wewnÄtrzne sieci mogÄ z powodzeniem efektywnie wykorzystywaÄ tÄ metodÄ. Takie wykorzystanie zapytaÅ ICMP echo request jest możliwe za pomocÄ opcji −PE.
Zapytanie echo request jest standardowym zapytaniem ICMP ping, jednak Nmap nie poprzestaje na tym. Standard ICMP (RFC 792 [7] ) opisuje także zapytania timestamp request, information request, i address mask request o kodach odpowiednio 13, 15 i 17. Podczas kiedy zaÅożonym efektem dziaÅania tych zapytaÅ jest uzyskanie informacji typu maska sieci czy aktualny czas, mogÄ byÄ one wykorzystane do wykrywania aktywnoÅci hostów. System który odpowiada, jest uznawany za aktywny. Nmap nie obsÅuguje zapytaÅ information request, jako że nie sÄ one czÄsto spotykane. RFC 1122 zaleca, że âhost NIE POWINIEN obsÅugiwaÄ tych zapytaÅ”. Zapytania timestamp i address mask mogÄ byÄ wysyÅane z wykorzystaniem opcji odpowiednio −PP i −PM. Odpowiedzi timestamp reply (ICMP kod 14) lub address mask reply (kod 18) ujawniajÄ aktywnoÅÄ hosta. Te dwa zapytania mogÄ byÄ pomocne, kiedy administrator specyficznie blokuje zapytania echo request zapominajÄc przy tym blokowaÄ inne typy ICMP, które mogÄ byÄ wykorzystane w tym samym celu.
−PR (ARP Ping)
Jednym z najczÄÅciej spotykanych scenariuszy wykorzystania Nmapa jest skanowanie sieci lokalnej ethernet. W wiÄkszoÅci sieci LAN, w szczególnoÅci wykorzystujÄcych adresacjÄ prywatnÄ zalecanÄ przez RFC1918, wiÄkszoÅÄ adresów IP nie jest wykorzystywana. Kiedy Nmap próbuje wysÅaÄ pakiet raw IP taki jak ICMP echo request, by poprawnie zaadresowaÄ ramkÄ ethernet system operacyjny musi okreÅliÄ (ARP) docelowy adres sprzÄtowy korespondujÄcy z docelowym adresem IP. Takie zachowanie jest czÄsto powolne i problematyczne, ponieważ systemy operacyjne nie zostaÅy napisane z uwzglÄdnieniem potrzeby wysyÅania milionów zapytaÅ ARP o niedostÄpne hosty w krótkim czasie.
Skanowanie ARP wykorzystuje zoptymalizowany algorytm Nmapa do wysyÅania zapytaÅ ARP. Po otrzymaniu odpowiedzi Nmap nie musi siÄ nawet martwiÄ o oparte na IP pakiety ping, ponieważ już wie, że host jest aktywny. Takie zachowanie pozwala na dużo szybsze i bardziej wiarygodne skanowanie. Z tego powodu zachowanie takie jest domyÅlne podczas skanowania sieci, którÄ Nmap wykryje jako sieÄ lokalnÄ należÄcÄ do tego samego segmentu. Nawet jeÅli zostanÄ podane inne typy skanowania ping (takie jak −PE lub −PS), Nmap używa ARP zamiast nich do wykrywaia hostów w lokalnej sieci ethernet. JeÅli nie chcesz używaÄ ARP do skanowania, dodaj opcjÄ −−send−ip.
−n (WyÅÄcz zapytania DNS)
Nakazuje Nmapowi nigdy nie używaÄ zapytaÅ odrotnych do serwerów DNS o nazwy przypisane do adresów IP. Jako że zapytania DNS sÄ najczÄÅciej dÅugo trwajÄ, opcja ta przyspiesza pracÄ.
−R (WymuÅ zapytania DNS)
Nakazuje Nmapowi zawsze wykonywaÄ odwrotne zapytania do serwera DNS o nazwy dla skanowanych adresów IP. DomyÅlnie zapytania sÄ wykonywane tylko dla aktywnych hostów.
−−system−dns (Używaj systemowego DNS)
DomyÅlnie Nmap okreÅla nazwy dla adresów IP poprzez wysyÅanie zapytaÅ bezpoÅrednio do serwerów DNS skonfigurowanych w systemie, o ile sÄ dostÄpne. Wiele zapytaÅ (czÄsto dziesiÄtki) jest wykonywanych równolegle dla uzyskania wiekszej szybkoÅci. Dodanie tej opcji wymusza wykorzystywanie rozwiÄzywania nazw za poÅrednictwem systemu operacyjnego (każdorazowo o pojedyncze IP za pomocÄ funkcji getnameinfo()). Ta opcja jest wolniejsza i jest użyteczna tylko w sporadycznych przypadkach, chyba że w Nmapie jest bÅÄd w kodzie DNS − prosze siÄ z nami skontaktowaÄ w tym przypadku. W przypadku skanowania sieci IPv6, rozwiÄzywanie nazw jest zawsze wykonywane z wykorzystaniem systemu operacyjnego.
−−dns−servers
DomyÅlnie Nmap próbuje odczytaÄ serwery DNS wpisane do pliku resolv.conf (UNIX) lub rejestru (Win32). Alternatywnie, możesz użyÄ tej opcji do podania wÅasnych serwerów. Opcja ta nie jest uwzglÄdniana, jeÅli użyto również opcji −−system−dns lub skanowane sÄ adresy IPv6. Używanie wielu serwerów DNS jest czÄsto dużo szybsze, niż tylko jednego.
PODSTAWY SKANOWANIA PORTÃW
Przez lata funkcjonalnoÅÄ Nmapa byÅa sukcesywnie powiÄkszana, z poczÄtku byÅ tylko efektywnym skanerem portów i to nadal pozostaje jego gÅównÄ funkcjÄ. Prosta komenda nmap target skanuje ponad 1660 portów TCP na wybranym celu skanowania. Podczas kiedy wiÄkszoÅÄ skanerów tradycyjnie zalicza wszystkie porty do kategorii otwarty lub zamkniÄty, Nmap jest dużo dokÅadniejszy. Rozróżnia szeÅÄ możliwych stanów każdego portu: otwarty, zamkniÄty, filtrowany, niefiltrowany, otwarty|filtrowany, or zamkniÄty|filtrowany.
Te stany nie sÄ rzeczywistymi stanami portów, opisujÄ jak Nmap je widzi. Na przykÅad, skanowanie Nmapa z wnÄtrza sieci pokazuje port 135/TCP jako otwarty, podczas kiedy skanowanie przez Internet może okreÅliÄ stan portu jako filtrowany.
SzeÅÄ stanów portów Nmapa
otwarty
Aplikacja aktywnie akceptuje na tym porcie poÅÄczenia TCP lub pakiety UDP. Znalezienie takich portów jest gÅównym celem skanowania. Osoby obeznane z bezpieczeÅstwem wiedzÄ, że każdy otwarty port to potencjalny cel ataku. AtakujÄcy i wykonujÄcy testy penetracyjne chcÄ wykorzystaÄ luki w oprogramowaniu poprzez otwarte porty, podczas gdy administratorzy starajÄ siÄ zamykaÄ lub chroniÄ je za pomocÄ systemów zaporowych przed niepożÄdanymi użytkownikami. Otwarte porty sÄ także interesujÄce przy skanowaniach nie zwiÄzanych z ocenÄ bezpieczeÅstwa, ponieważ pokazujÄ usÅugi dostÄpne w sieci.
zamkniÄty
ZamkniÄty port jest dostÄpny (odbiera i odpowiada na pakiety Nmapa), ale nie ma żadnej aplikacji, która by obsÅużyÅa poÅaczenie. Porty te mogÄ byÄ pomocne przy sprawdzaniu czy host jest aktywny (wykrywanie hostów lub skanowanie Ping) oraz przy wykrywaniu systemu operacyjnego. Ponieważ sÄ dostÄpne zamkniÄte porty, warto skanowaÄ dalej w poszukiwaniu otwartych. Administratorzy mogÄ chcieÄ blokowaÄ takie porty za pomocÄ systemów zaporowych, wtedy ich stan zostanie okreÅlony jako filtrowany, opisany dalej.
filtrowany
Nmap nie może okreÅliÄ czy port jest otwarty z powodu filtrowania komunikacji. Filtrowanie może byÄ przeprowadzane na dedykowanym urzÄdzeniu, za pomocÄ reguÅ routera lub programowego firewalla na hoÅcie. Takie porty sÄ frustrujÄce dla atakujÄcych, ponieważ dostarczajÄ znikomych iloÅci informacji. Porty czasami odpowiadajÄ komunikatami ICMP takim jak typ 3 kod 13 (destination unreachable: communication administratively prohibited), ale filtry blokujÄ wysyÅanie takiego komunikatu bez wysyÅania typowej odpowiedzi. Takie zachowanie zmusza Nmapa do kilkukrotnego powtarzania pakietów na wypadek ich zaginiÄcia na przykÅad na skutek przeciÄżenia sieci, co spowalnia skanowanie w sposób drastyczny.
niefiltrowany
Stan niefiltrowane oznacza że port jest dostÄpny, ale Nmap nie jest w stanie ustaliÄ czy port jest otwarty czy zamkniÄty. Tylko skanowanie ACK, które jest używane do mapowania reguÅ firewalla, może przypisaÄ portom taki stan. Skanowanie niefiltrowanych portów za pomocÄ innych typów skanowania takich jak Window, SYN czy FIN może pomóc okreÅliÄ czy port jest otwarty czy zamkniÄty.
otwarty|filtrowany
Nmap podaje taki stan w przypadku portów, dla których nie jest w stanie okreÅliÄ czy port jest otwarty, czy filtrowany. Taki zachowanie wystÄpuje podczas typów skanowania, przy których porty nie dajÄ odpowiedzi. Brak odpowiedzi może również oznaczaÄ, że filtr pakietów zablokowaÅ poÅÄczenie lub wysyÅanÄ odpowiedź. Z tego powodu Nmap nie ma pewnoÅci czy port jest otwarty, czy filtrowany. W ten sposób klasyfikujÄ porty skanowania UDP, FIN, Null, Xmas i skanowanie protokoÅów.
zamkniÄty|filtrowany
Ten stan jest używany przez Nmapa do oznaczania portów, dla których nie jest możliwe ustalenie czy port jest zamkniÄty czy filtrowany. Taki stan może siÄ pojawiaÄ tylko podczas skanowania IPID Idle.
TECHNIKI SKANOWANIA PORTÃW
Jako poczÄtkujÄcy mechanik samochodowy, mogÅem godzinami mÄczyÄ siÄ z wykonaniem naprawy posiadanymi narzÄdziami (mÅotek, taÅma izolacyjna, klucz francuski itp.). Kiedy popadÅem w depresjÄ i w koÅcu zaprowadziÅem mojego gruchota do prawdziwego mechanika, pogrzebaÅ w przepastnej skrzyni z narzÄdziami i wyciÄgnÄÅ specjalne narzÄdzie, którym wykonaÅ naprawÄ bÅyskawicznie i bez kÅopotów. Sztuka skanowania polega dokÅadnie na tym samym. Eksperci znajÄ dziesiÄtki typów skanowania i wybierajÄ jednÄ adekwatnÄ (lub kombinacjÄ kilku) do danego zadania. Z drugiej strony niedoÅwiadczeni użytkownicy i script kiddies próbujÄ rozwiÄzaÄ każdy problem za pomocÄ domyÅlnego skanowania SYN. Nmap jest darmowy i dostÄpny dla wszyskich, w zwiÄzku z tym jedynÄ barierÄ jest odpowiednia wiedza. To oczywiÅcie bije na gÅowÄ Åwiat motoryzacyjny, gdzie trzeba posiadaÄ duże umiejÄtnoÅci, żeby domyÅliÄ siÄ, że potrzebne jest bardzo specyficzne narzÄdzie, ale wtedy potrzeba jeszcze dużo pieniÄdzy na jego zakup.
WiÄkszoÅÄ typów skanowania jest dostÄpna tylko dla uprzywilejowanych użytkowników, ponieważ tylko oni mogÄ wysyÅaÄ pakiety raw. Takim użytkownikiem w przypadku systemów UNIX jest root. Używanie konta administratora w systemach Windows jest zalecane, jednak Nmap przeważnie dziaÅa poprawnie z konta zwykÅego użytkownika przy zainstalowanej w systemie bibliotece WinPcap. Wymóg posiadania uprawnieÅ użytkownika root byÅ poważnym ograniczeniem kiedy pojawiÅ siÄ Nmap w 1997 roku, jako że użytkownicy posiadali dostÄp gÅównie tylko do wspóÅdzielonych kont. Åwiat siÄ zmieniÅ. Komputery sÄ taÅsze, coraz wiÄcej ludzi ma bezpoÅredni dostÄp do Internetu i coraz powszechniejsze stajÄ siÄ komputery z systemami UNIX (wÅÄczajÄc Linuxa i MAC OS X). DostÄpna jest również Windowsowa wersja Nmapa, co powiÄksza możliwoÅci jego wykorzystywania. Z tych powodów coraz rzadziej zachodzi potrzeba uruchamiania Nmapa z ograniczonych wspóÅdzielonych kont. Na szczÄÅcie wiÄksze przywileje użytkowników przekÅadajÄ siÄ na wiÄkszÄ elastycznoÅÄ i możliwoÅci Nmapa.
Nmap stara siÄ podawaÄ jak najbardziej dokÅadne wyniki, jednak trzeba mieÄ na uwadze fakt, że wyniki sÄ oparte na pakietach zwracanych przez badane systemy (lub firewalle je ochraniajÄce). Dlatego też zwracane informacje nie muszÄ byÄ wiarygodne i mogÄ wprowadzaÄ Nmapa w bÅÄd. Bardzo powszechne sÄ hosty nie zachowujÄce siÄ zgodnie z RFC w odpowiedzi na zapytania Nmapa. RozwiÄzaniem sÄ skanowania FIN, Null czy Xmas. Tego typu problemy zostaÅy opisane oddzielnie w czÄÅciach poÅwiÄconych poszczególnym typom skanowania.
Ta sekcja opisuje dziesiÄtki typów skanowania dostÄpnych w Nmapie. JednoczeÅnie może byÄ wykorzystywana tylko jedna metoda, za wyjÄtkiem skanowania UDP (−sU), które może byÄ ÅÄczone z dowolnymi typami skanowania TCP. Dla Åatwiejszego zapamiÄtania, opcje skanowania portów posiadajÄ nazwy w formie −sC, gdzie C jest przeważnie pierwszÄ duÅ¼Ä literÄ angielskiej nazwy typu skanowania. WyjÄtkiem jest przestarzaÅa opcja skanowania FTP bouce (−b). DomyÅlnie Nmap wykonuje skanowanie SYN, które jest zastÄpowane connect(), jeÅli użytkownik nie ma odpowiednich uprawnieÅ do wysyÅania pakietów raw (co wymaga konta root w systemach UNIX) lub w przypadku skanowania sieci IPv6. Z poÅród przedstawionych poniżej typów skanowania użytkownicy nie uprzywilejowani mogÄ jedynie używaÄ typów connect() i FTP bounce.
−sS (Skanowanie TCP SYN)
Skanowanie SYN jest domyÅlnÄ i najpopularniejszÄ metodÄ skanowania. Jest to spowodowane tym, że może byÄ przeprowadzone szybko, możliwe jest skanowanie tysiÄcy portów na sekundÄ w szybkich sieciach nie chronionych systemami zaporowymi. Skanowanie SYN jest relatywnie dyskretne i niewidoczne, ponieważ nigdy nie otwiera poÅÄczeÅ do koÅca. DziaÅa to dobrze w stosunku do wszystkich stosów zgodnych z TCP, w przeciwieÅstwie do udziwnionych, dla których Nmap ma tryby FIN/Null/Xmas, Maimon i Idle. SYN pozwala na przejrzyste i wiarygodne rozróżnienie stanów portu pomiÄdzy otwartym, zamkniÄtym i filtrowanym.
Technika ta jest czÄsto okreÅlana jako skanowanie z poÅowicznym otwieraniem poÅÄczeÅ (ang. half−open), ponieważ nie otwiera peÅnego poÅÄczenia TCP. WysyÅany jest pakiet SYN, tak jak by miaÅo byÄ otwarte prawdziwe poÅÄczenie i czeka na odpowiedź. SYN/ACK oaznacza, że port oczekuje na poÅÄczenia (jest otwarty), a RST (reset) identyfikuje port jako zamkniÄty. JeÅli odpowiedź nie zostanie otrzymana pomimo kilku prób, port jest oznaczany jako filtrowany. Port jest również oznaczany jako filtrowany w przypadku otrzymania komunikatu bÅÄdu ICMP unreachable error (typ 3, kody 1, 2, 3, 9, 10 lub 13).
−sT (Skanowanie TCP connect())
Skanowanie TCP Connect() jest wybierane domyÅlne, jeÅli SYN nie jest dostÄne. Ma to miejsce kiedy użytkownik nie posiada uprawnieÅ do wysyÅania pakietów raw lub podczas skanowania sieci IPv6. Zamiast wysyÅaÄ pakiety raw, jak to ma miejsce przy innych typach skanowania, Nmap prosi system operacyjny o zestawienie poÅÄczenia z badanym hostem za pomocÄ wywoÅania funkcji systemowej connect(). Jest to taki sam wysoki poziom wywoÅaÅ systemowych, z jakich korzystajÄ przeglÄdarki internetowe, oprogramowanie Peer2Peer czy inne programy korzystajÄce z poÅÄczeÅ sieciowych. Jest to czÄÅÄ interfejsu programistycznego znanego jako Berkeley Sockets API. Zamiast odczytywaÄ odpowiedzi za pomocÄ odwoÅaÅ niskopoziomowych prosto z sieci, Nmap wykorzystuje ten sam wysokopoziomowy interfejs do otrzymania informacji o stanie operacji dla każdej próby poÅÄczenia oddzielnie.
Kiedy skanowanie SYN jest dostÄpne, przeważnie jest lepszym wyborem. Nmap ma dużo mniejszÄ kontrolÄ nad wywoÅaniem wysokopoziomowym connect() niż nad pakietami raw, co jest dużo mniej efektywne. WywoÅanie systemowe otwiera peÅne poÅÄczenie w przeciwieÅstwie do metody SYN korzystajÄcej z poÅowicznego poÅÄczenia. Nie tylko wymaga to wiÄcej czasu i wymaga wiÄcej pakietów do uzyskania takich samych informacji, ale również prawdopodobnie spowoduje zapisanie w logach badanego systemu próby poÅÄczenia. Nowoczesne systemy detekcji intruzów IDS potrafia wykrywaÄ takie poÅÄczenia, ale wiÄkszoÅÄ systemów nie posiada odpowiednich systemów alarmowych. Wiele usÅug w typowym systemie UNIX zapisze uwagÄ do logu systemowego i czasami zagadkowy komunikat bÅÄdu, kiedy Nmap poÅÄczy siÄ i natychmiast zamknie poÅÄczenie bez wysyÅania jakichkolwiek danych. NaprawdÄ Å¼aÅosne usÅugi przestanÄ dziaÅaÄ po otrzymaniu takiego pakietu, ale nie jest to czÄsto spotykane. Administrator widzÄcy w logach informacje o wielu próbach nawiÄzania poÅÄczenia z jednego adresu powinien wiedzieÄ, że jego system byÅ skanowany za pomocÄ metody connect().
−sU (Skanowanie UDP)
WiÄkszoÅÄ popularnych usÅug w sieci Internet wykorzystuje protokóŠTCP, ale również usÅugi UDP [8] sÄ czÄsto spotykane. Najpopularniesze z nich to DNS, SNMP i DHCP (porty 53, 161/162 i 67/68). Ponieważ skanowanie UDP jest ogólnie wolniejsze i trudniejsze niż TCP, wielu audytorów bezpieczeÅstwa ignoruje te porty. Jest to pomyÅka, jako że wiele usÅug UDP jest podatnych na zdalne ataki i atakujÄcy nie ignorujÄ tego protokoÅu. Na szczÄÅcie Nmap umożliwia inwentaryzacjÄ portów UDP.
Skanowanie UDP jest aktywowane za pomocÄ opcji −sU. Może byÄ ÅÄczone z innymi typami skanowania TCP, takimi jak SYN (−sS), dla sprawdzenia obu protokoÅów w jednym przebiegu.
Skanowanie UDP polega na wysyÅaniu pustych (bez danych) nagÅówków protokoÅu UDP do każdego portu docelowego. JeÅli w odpowiedzi zostanie zwrócony komunikat ICMP port uchreachable (typ 3, kod 3), port jest uznawany za zamkniÄty. Inne typy komunikatów ICMP unreachable (typ 3, kody 1, 2, 9, 10 lub 13) oznaczajÄ, że port jest filtrowany. Czasami w odpowiedzi zwrócony zostanie pakiet UDP, co oznacza, że porty jest otwarty. JeÅli pomimo powtarzania transmisji nie zostanie uzyskana żadna odpowiedź, port zostaje zaklasyfikowany jako otwarty|filtrowany. Oznacza to, że port może byÄ otwarty lub filtr pakietów blokuje do niego dostÄp. Wykorzystanie skanowania wersji usÅug (−sV) może pomóc w odróżnieniu portów na prawdÄ otwartych od filtrowanych.
NajwiÄkszym wyzwaniem przy skanowaniu UDP jest przeprowadzenie go odpowiednio szybko. Otwarte i filtrowane porty rzadko wysyÅajÄ jakÄkolwiek odpowiedź, zmuszajÄc Nmapa do oczekiwania na odpowiedź i ponawiania transmisji na wypadek zagubienia pakietów. ZamkniÄte porty sÄ czÄsto jeszcze wiÄkszym problemem. Zwykle wysyÅajÄ pakiet ICMP port unreachable, jednak w odróżnieniu od pakietów z flagÄ RST znanych ze skanowania SYN czy connect, wiele hostów domyÅlnie limituje szybkoÅÄ wysyÅania pakietów ICMP port unreachable. PrzykÅadami mogÄ byÄ systemy Linux i Solaris. Kernel Linuxa w wersji 2.4.20 limituje iloÅÄ pakietów o niedostÄpnoÅci portów do jednego na sekundÄ (w net/ipv4/icmp.c).
Nmap potrafi wykrywaÄ limitowanie odpowiedzi i zwalnia odpowiednio proces skanowania dla unikniÄcia zaÅmiecania sieci niepotrzebnymi pakietami, które i tak nie zostanÄ wykorzystane. Niestety, skanowanie wszystkich 65,536 portów UDP przy limicie Linuxowym jeden pakiet na sekundÄ powoduje, że skanowanie trwa ponad 18 godzin. Sposobami na przyspieszenie sÄ skanowanie wielu hostów równolegle, wykonywanie na poczÄtek szybkiego skanowania popularnych portów, skanowanie z poza systemu zaporowego i używanie opcji −−host−timeout do pomijania zbyt wolnych hostów.
−sN; −sF; −sX (Skanowania TCP Null, FIN i Xmas)
Te typy skanowania (wiÄksze możliwoÅci posiada opcja −−scanflags opisana w dalszej czÄÅci) wykorzystujÄ nieopisane w TCP RFC [9] kombinacje flag do rozróżnienia pomiÄdzy stanami portów otwarty oraz zamkniÄty. Strona 65 opisuje, że âjeÅli [docelowy] port jest ZAMKNIÄTY … w odpowiedzi na pakiet nie zawierajÄcy RST należy wysÅaÄ odpowiedź RST.” NastÄpna strona opisuje pakiety wysyÅane na porty bez flag SYN, RST lub ACK w nastÄpujÄcy sposób: âcoÅ takiego nie powinno mieÄ miejsca, jednak jeÅli siÄ zdarzy, pomiÅ taki pakiet”.
Podczas skanowania systemów zgodnych z zapisami w RFC, dowolny pakiet nie zawierajÄcy flag SYN, RST lub ACK powinien wywoÅywaÄ odpowiedź RST w przypadku portu zamkniÄtego i caÅkowity brak odpowiedzi w przypadku portu otwartego. Tak dÅugo jak żadna z wymienionych flag nie zostaÅa użyta, wszystkie inne kombinacje flag (FIN, PSH i URG) sÄ prawidÅowe. Nmap wykorzystuje to do przeprowadzania trzech typów skanowania:
Skanowanie Null (−sN)
Nie ustawia żadnych flag (pole flag w nagÅówku tcp zawiera 0).
Skanowanie FIN (−sF)
Ustawiona flaga FIN.
Skanowanie Xmas (−sX)
Ustawione flagi FIN, PSH i URG, pakiet podÅwietlony jak choinka.
Te trzy tryby skanowania sÄ takie same poza ustawionymi flagami w pakietach. JeÅli w odpowiedzi zostanie otrzymany pakiet RST, port jest uznawany za zamkniÄty, podczas gdy brak odpowiedzi oznacza otwarty|filtrowany. Port uznajemy za filtrowany, jeÅli otrzymany zostanie komunikat ICMP unreachable (typ 3, kod 1, 2, 3, 9, 10 lub 13).
GÅównÄ zaleta tych typów skanowania jest to, że potrafiÄ siÄ one przemykaÄ przez bezstanowe systemy zaporowe i filtrowanie na routerach. InnÄ zaletÄ jest tylko minimalnie wiÄksza wykrywalnoÅÄ niż skanowania SYN. Nie można jednak na to liczyÄ − wiÄkszoÅÄ nowych systemów IDS może zostaÄ skonfigurowana do ich wykrywania. UjemnÄ stronÄ jest to, że nie wszystkie systemy sÄ zgodne z RFC793. Wiele systemów wysyÅa odpowiedzi RST niezależnie od tego czy port jest otwarty czy nie. Powoduje to, że wszystkie porty pojawiajÄ siÄ jako zamkniÄty. NajczÄÅciej spotykane systemy, które siÄ tak zachowujÄ to Microsoft Windows, wiele urzÄdzeÅ Cisco, BSDI, i IBM OS/400. Skanowania dziaÅajÄ jednak dobrze w przypadku wiÄkszoÅci systemów UNIXowych. Kolejnym minusem tych metod jest to, że nie potrafiÄ rozróżniÄ portów oznaczonych jako otwarty od filtrowany, ujawniajÄc jedynie stan otwarty|filtrowany.
−sA (Skanowanie TCP ACK)
Ten typ skanowanie jest inny niż omawiane powyżej, bo nigdy nie wykrywa stanów portów otwarty (lub nawet otwarty|filtrowany). Jest wykorzystywany do mapowania reguÅ filtrowania, do sprawdzania czy fitrowanie jest oparte o stany (stateful) lub nie i które porty sÄ filtrowane.
Pakiety skanowania ACK posiadajÄ tylko flagÄ ACK (o ile nie zostaÅa użyta opcja −−scanflags). Podczas skanowania systemów nie posiadajÄcych filtrowania, porty o stanach otwarty i zamkniÄty zwrócÄ pakiet RST. W obu przypadkach Nmap oznaczy je jako niefiltrowane, co oznacza, że byÅy osiÄgalne dla pakietu ACK, ale nie zostaÅo okreÅlone, czy posiadajÄ stan otwarty czy zamkniÄty. Porty, które nie odpowiedzÄ lub odpowiedzÄ za pomocÄ komunikatu o bÅÄdzie ICMP (typ 3, kody 1, 2, 3, 9, 10 lub 13), zostanÄ oznaczone jako filtrowany.
−sW (Skanowanie TCP Window)
Skanowanie Window jest takie samo jak ACK, różnica polega na tym, że potrafi odróżniÄ porty otwarte od zamkniÄtych, zamiast zawsze podawaÄ stan niefiltrowany, kiedy otrzymano flagÄ RST. Jest to realizowane poprzez analizÄ pola Window pakietu zwrotnego RST. Na niektórych systemach, otwarte porty zwracajÄ dodatniÄ wartoÅÄ rozmiaru okna (także w pakietach RST), a przy zamkniÄtych o rozmiarze zero. Tak wiÄc zamiast zawsze przedstawiaÄ port jako niefiltrowany kiedy w odpowiedzi przyjdzie RST, skanowanie Window oznacza port jako otwarty lub zamkniÄty, w zależnoÅci czy odpowiednio otrzymano w odpowiedzi rozmiar okna o wartoÅci dodatniej lub zero.
Ten typ skanowania polega na szczególnej implementacji stosu TCP, wystÄpujÄcej w rzadko spotykanych systemach w internecie, a wiÄc nie można zawsze na niej polegaÄ. Zwykle systemy, które nie obsÅugujÄ tej metody bÄdÄ zwracaÅy porty oznaczone jako zamkniÄty. OczywiÅcie jest również możliwe, że host na prawdÄ nie ma otwartych portów. JeÅli wiÄkszoÅÄ przeskanowanych portów ma stan zamkniÄty, jednak niektóre (takie jak 22, 25 czy 53) majÄ stan filtrowany, system jest podejrzany. Czasami systemy potrafiÄ siÄ zachowywaÄ zupeÅnie przeciwnie. JeÅli skanowanie wykaże 1000 otwartych portów i tylko 3 zamkniÄte lub filtrowane, wtedy te trzy prawdopodobnie sÄ rzeczywiÅcie otwarte.
−sM (Skanowanie TCP Maimon)
Skanowanie Maimon zostaÅo nazwane na czeÅÄ jego odkrywcy, Uriela Maimona. OpisaÅ tÄ technikÄ w Phrack Magazine w wydaniu #49 (Listopad 1996). Nmap, który potrafiÅ wykorzystaÄ tÄ technikÄ zostaÅ wypuszczony dwa wydania później. Skanowanie to należy do rodziny Null, FIN i Xmass z tÄ różnicÄ, że używa flag FIN/ACK. Zgodnie z RFC 793 (TCP), dla takiej kombinacji flag, pakiet RST powinien byÄ wygenerowany niezależnie czy port jest otwarty czy zamkniÄty. Jednakże Uriel zauważyÅ, że wiele systemów opartych na BSD po prostu pomija odpowiedzi, jeÅli port jest otwarty.
−−scanflags (Skanowanie TCP z definiowanymi flagami)
Prawdziwie zaawansowani użytkownicy Nmapa nie mogÄ byÄ ograniczani iloÅciÄ oferowanych wbudowanych typów skanowania. Opcja −−scanflags pozwala na projektowanie wÅasnych typów skanowania z wykorzystaniem wybranych flag TCP. Cieszcie siÄ podczas wykorzystywania tej techniki do oszukiwania systemów IDS, których twórcy pobieżnie przeglÄdali dokumentacjÄ Nmapa dodajÄc specyficzne reguÅy!
Argument opcji −−scanflags może byÄ numerycznym zapisem flag, np 9 (PSH i FIN), lub dla uÅatwienia można wykorzystywaÄ symbliczne nazwy. Można podaÄ dowolnÄ kombinacjÄ flag URG, ACK, PSH, RST, SYN i FIN. Na przykÅad −−scanflags URGACKPSHRSTSYNFIN ustawia wszystkie flagi, choÄ nie jest to zbyt użyteczna metoda skanowania. KolejnoÅÄ podawania flag nie jest istotna.
Dodatkowo przy podawaniu wybranych flag możliwe jest podanie typu skanowania (takiego jak −sA lub −sF). Dodany typ skanowania informuje Nmapa jak ma interpretowaÄ otrzymane odpowiedzi. Na przykÅad skanowanie SYN zakÅada, że brak odpowiedzi oznacza stan portu filtrowany, podczas gdy skanowanie FIN potraktuje ten go jako otwarty|filtrowany. Nmap bÄdzie siÄ zachowywaÅ w taki sam sposób jak przy wybranym trybie skanowania, jednak wykorzystane zostanÄ podane flagi. JeÅli bazowy typ skanowania nie zostanie okreÅlony, zostanie wykorzystany domyÅlny typ SYN.
−sI
Ta zaawansowana technika skanowania pozwala na prawdziwie Ålepe skanowanie TCP (co oznacza, że żaden pakiet nie zostanie wysÅany do badanego systemu z prawdziwego adresu IP Nmapa). Zamiast tego wykorzystany zostanie host zombie, o przwidywalnym dziaÅaniu stosu TCP polegajÄcym na sekwencyjnym powiÄkszaniu numerów ID pakietów, do uzyskania informacji o otwartych portach w badanym systemie. Systemy detekcji intruzów pokaÅ¼Ä jako adres atakujÄcego zdefiniowany host zombie (musi speÅniaÄ okreÅlone warunki). Ten fascynujÄcy typ skanowania jest zbyt skomplikowany żeby go dokÅadnie opisaÄ w tej dokumentacji, dlatego napisaÅem oddzielny nieformalny dokument na ten temat ze szczegóÅowymi informacjami i jest on dostÄpny pod adresem https://nmap.org/book/idlescan.html.
Poza tym, że metoda ta jest niespotykanie poufna (z powodu jej Ålepej natury), ten typ skanowania pozwala na mapowanie reguÅ zaufania pomiÄdzy maszynami bazujÄcych na adresach IP. Wyniki zawierajÄ otwarte porty, z punktu widzenia hosta zombie . Tak wiÄc można próbowaÄ skanowania z wykorzystaniem różnych hostów zombie, które można traktowaÄ jako zaufane (poprzez router/reguÅy filtrowania pakietów).
Można po dwukropku dodaÄ numer portu, jeÅli chcemy go wykorzystaÄ na hoÅcie zombie do badania zmian IPID. W innym przypadku Nmap wykorzysta domyÅlnie port używany przez tcp ping (80).
−sO (Skanowanie protokoÅów IP)
Skanowanie to pozwala na wykrycie listy protokoÅów IP (TCP, ICMP, IGMP itp), które sÄ dostÄpne na danym hoÅcie. Technicznie nie jest to skanowanie portów, ponieważ sprawdza kolejne numery protokoÅów, a nie kolejne porty TCP czy UDP. Opcja ta nadal używa parametru −p do wybrania numerów protokoÅów do sprawdzenia, w formacie analogicznym do listy portów. Z tego powodu metoda ta zostaÅa zaklasyfikowana jako skanowanie portów i dlatego znajduje siÄ tutaj.
Poza swojÄ wÅasnÄ funkcjonalnoÅciÄ, skanowanie protokoÅów demonstruje potÄgÄ oprogramowania open source. Podczas gdy podstawowa idea jest caÅkiem prosta, nie pomyÅlaÅem o jej dodaniu, jak również nie otrzymaÅem żadnej proÅby o dodanie takiej funkcjonalnoÅci. Latem roku 2000, Gerhard Rieger opracowaÅ koncepcjÄ, stworzyÅ odpowiedniÄ poprawkÄ i wysÅaÅ jÄ na listÄ dyskusyjnÄ nmap−hackers. WÅÄczyÅem jÄ do drzewa Nmapa i wypuÅciÅem nowÄ wersjÄ nastÄpnego dnia. Niewiele komercyjnych programów posiada użytkowników na tyle entuzjastycznych, żeby zaprojektowaÄ i stworzyÄ ich wÅasne poprawki!
Skanowanie protokoÅów dziaÅa w sposób podobny do skanowania UDP, jednak zamiast iteracji po kolejnych numerach portu, w nagÅówkach pakietów zmienia siÄ 8−mio bitowy numer protokoÅu. NagÅówki sÄ przeważnie puste, nie zawierajÄ Å¼adnych danych ani nawet poprawnego dla danego protokoÅu nagÅówka. Trzema wyjÄtkami sÄ TCP, UDP i ICMP. Poprawne nagÅówki dla tych protokoÅów sÄ konieczne, ponieważ niektóre systemy nie bÄdÄ ich potrafiÅy wysÅaÄ oraz dlatego, że Nmap posiada już odpowiednie funkcje do ich tworzenia. Zamiast obserwowaÄ komunikaty ICMP unreachable, skanowanie protokoÅów nie polega na komunikatach ICMP protocol unreachable. JeÅli Nmap otrzyma jakÄkolwiek odpowiedź w jakimkolwiek protokole, ustala stan protokoÅu jako otwarty. Otrzymanie komunikatu ICMP protocol unreachable (typ 3, kod 2) powoduje oznaczenie protokoÅu jako zamkniÄty. Inne komuniakty ICMP protocol unreachable (typ 3, kody 1, 3, 9, 10 lub 13) powodujÄ oznaczenie protokoÅu jako filtrowany (oraz równoczeÅnie potwierdzajÄ, że protokóŠICMP jest również otwarty). JeÅli nie uzyskano odpowiedzi, protokóŠjest oznaczany jako otwarty|filtrowany.
−b
InteresujÄcÄ funkcjÄ protokoÅu FTP (RFC 959 [10] ) jest wspieranie tak zwanych poÅÄczeÅ proxy. Pozwala to użytkownikowi na poÅÄczenie z jednym serwerem FTP i poproszenie o wysÅanie plików do innego. Ta funkcjonalnoÅÄ byÅa przyczynÄ nadużyÄ na wielu poziomach, dlatego wiele serwerów porzuciÅo dla niej wsparcie. Jednym z możliwych nadużyÄ jest sposobnoÅÄ do zmuszenia serwera do skanowania portów na zewnÄtrznym hoÅcie. Wystarczy po prostu poprosiÄ serwer o wysÅanie pliku kolejno na każdy interesujÄcy port badanego systemu. Uzyskany komunikat o bÅÄdzie zwróci informacjÄ, czy porty byÅ otwarty czy zamkniÄty. Jest to dobra metoda do omijania systemów zaporowych, ponieważ korporacyjne serwery FTP czÄsto sÄ umieszczane w takim miejscu, że majÄ możliwoÅÄ komunikacji zarówno z hostami w internecie jak i w sieci lokalnej. Nmap obsÅuguje skanowanie FTP bounce z wykorzystaniem opcji −b. Opcja przyjmuje argument w postaci nazwa_użytkownika:hasÅo@serwer:port. Serwer jest nazwÄ lub adresem IP podatnego serwera FTP. Tak jak przy zwykÅym adresie URL, można pominÄÄ pola nazwa_użytkownika:hasÅo, w tym przypadku zostanie wykorzystana domyÅlna kombinacja dla użytkowników anonimowych (użytkownik anonymous hasÅo:−wwwuser@). Numer portu (i poprzedzajÄcy go dwukropek) również może zostaÄ pominiÄty, w tym przypadku przy poÅÄczeniu z wybranym adresem serwer, zostanie wykorzystany domyÅlny port serwera FTP (21).
PodatnoÅÄ ta byÅa szeroko spotykana w roku 1997, kiedy to Nmap zostaÅ wypuszczony, jednak z biegiem czasu jej znaczenie bardzo siÄ zmniejszyÅo. Dziurawe serwery FTP nadal siÄ zdarzajÄ, wiÄc warto wyprubowaÄ i tÄ metodÄ, jeÅli inne zawiodÄ. JeÅli potrzebne jest obejÅcie systemu zaporowego, można przeskanowaÄ sieÄ w poszukiwaniu otwartych portów 21 (lub poprzez wyszukanie ftp na innych portach z wykorzystaniem opcji do wykrywania wersji) i wypróbowaÄ na wykrytych portach metodÄ bounce. Nmap poinformuje, czy usÅuga jest podatna czy nie. JeÅli chcesz ukrywaÄ swoje dziaÅania, nie trzeba (i nie powinno) ograniczaÄ siÄ do hostów z badanej sieci. Przed rozpoczÄciem skanowania losowych adresów w sieci Internet w poszukiwaniu podatnych wersji serwerów FTP trzeba mieÄ na uwadze, że wielu administratorów nie bedzie zachwyconych wykorzystywaniem ich serwerów w ten sposób.
SPECYFIKACJA PORTÃW I KOLEJNOÅCI SKANOWANIA
Poza wszystkimi metodami skanowania opisanymi wczeÅniej, Nmap oferuje opcjÄ pozwalajÄcÄ na podanie numerów portów do skanowania i okreÅlenie, czy skanowanie ma przebiegaÄ w kolejnoÅci sekwencyjnej czy losowej. DomyÅlnie Nmap skanuje wszystkie porty do 1024 wÅÄcznie oraz wyższe porty wyszczególnione w pliku nmap−services.
−p
Opcja pozwala na zdefiniowanie listy portów do skanowania, zamiast domyÅlnej. Możliwe jest podanie pojedynczych portów jak i zakresów oddzielonych myÅlnikiem (np. 1−1023). Zakres można również pominÄÄ, co spowoduje użycie caÅego zakresu (1−65535). Można wiÄc po prostu podaÄ opcjÄ −p− do przeskanowania wszystkich portów od 1 do 65535 wÅÄcznie. Można również podaÄ port zero, ale trzeba to zrobic jawnie. W przypadku poÅÄczenia tej opcji ze skanowaniem protokoÅów (−sO), okreÅla ona numery protokoÅów do sprawdzenia (0−255).
Przy jednoczesnym skanowaniu portów TCP i UDP możliwe jest oddzielne zdefiniowanie portów dla obu protokoÅów poprzez poprzedzenie numerów znakami odpowiednio T: i U:. Jako argument opcji przyjmowany jest ciÄg znaków aż do nastÄpnej opcji. Na przykÅad, podanie −p U:53,111,137,T:21−25,80,139,8080 spowoduje przeskanowanie portów UDP o numerach 53,111 i 137 oraz podanych portów TCP. Przy skanowaniu zarówno portów TCP jak i UDP, nie można zapomnieÄ podaÄ odpowiednich typów skanowania: −sU oraz przynajmniej jednego TCP (np. −sS, −sF czy −sT). JeÅli nie podano protokoÅu skanowania, na czas skanowania numery portów zostanÄ dodane do domyÅlnej listy portów.
−F (Skanowanie Fast (ograniczona iloÅÄ portów))
Pozwala na okreÅlenie, że majÄ byÄ skanowane tylko porty zawarte w pliku nmap−services z pakietu Nmapa (lub z pliku protokoÅów dla opcji −sO). Opcja ta pozwala na szybsze skanowanie, niż w przypadku wszystkich 65535 portów. Ponieważ lista ta zawiera tylko nieco ponad 1200 portów, różnica w szybkoÅci w porównaniu do typowego skanowania TCP (okoÅo 1650 portów) nie jest duża. Różnica może byÄ wiÄksza, jeÅli zostanie podany wÅasny, maÅy plik nmap−services za pomocÄ opcji −−datadir.
−r (Nie używaj losowej kolejnoÅci)
DomyÅlnie Nmap skanuje porty w kolejnoÅci losowej (poza niektórymi najczÄÅciej wykorzystywanymi portami, które sÄ skanowane na poczÄtku ze wzglÄdów wydajnoÅciowych). Takie zachowanie jest normalnie pożÄdane, jednak można je wyÅÄczyÄ za pomocÄ opcji −r, wymuszajÄcej sekwencyjnÄ kolejnoÅÄ skanowania.
DETEKCJA USÅUG I WERSJI
Przy skanowaniu zdalnego systemu, Nmap może wykryÄ otwarte porty takie jak 25/tcp, 80/tcp czy 53/udp. WykorzystujÄc bazÄ danych zawierajÄcÄ okoÅo 2,200 popularnych usÅug, znajdujÄcÄ siÄ w pliku nmap−services, Nmap odczyta przypuszczalne nazwy usÅug dla wykrytych portów − odpowiednio serwer pocztowy (SMTP), serwer WWW (HTTP) i serwer nazw (DNS). Takie dziaÅanie jest zwykle poprawne, wiÄkszoÅÄ aplikacji sÅuchajÄcych na porcie 25, to rzeczywiÅcie serwery pocztowe. Jednakże, niech Twoja ocena bezpieczeÅstwa niepolega na tych podpowiedziach! Ludzie mogÄ i czÄsto umieszczajÄ usÅugi na dziwnych portach.
Nawet jeÅli Nmap sie nie myli i hipotetyczny serwer z przykÅadu powyżej udostÄpnia usÅugi SMTP, HTTP i DNS, nie jest to duża iloÅÄ informacji na temat tych usÅug. PrzeprowadzajÄc testy bezpieczeÅstwa (lub zwykÅÄ inwentaryzacjÄ zasobów) swojej firmy lub klienta, potrzeba uzyskaÄ dokÅadniejsze informacje na temat usÅug: jaka aplikacja i w jakiej wersji jest zainstalowana na serwerze SMTP czy DNS. Posiadanie tych informacji w znaczÄcy sposób wpÅywa na możliwoÅÄ ustalenia podatnoÅci danej aplikacji. Detekcja wersji pozwala na uzyskanie takiej informacji.
Po tym jak zostanÄ wykryte za pomocÄ innych technik skanowania dostÄpne usÅugi TCP i UDP, detekcja wersji odpytuje porty w celu okreÅlenia dalszych szczegóÅów na temat aplikacji. Baza danych nmap−service−probes zawiera opisy wielu usÅug i próbuje dopasowaÄ je do uzyskanych informacji. Nmap stara siÄ najpierw okreÅliÄ protokóŠwykorzystywany przez usÅugÄ (np. ftp, ssh, telnet, http), nastÄpnie nazwÄ aplikacji (np. ISC Bind, Apache httpd, Solaris telnetd), wersjÄ usÅugi, nazwÄ hosta, typ urzÄdzenia (np. drukarka, router), rodzinÄ systemów operacyjnych (np. Windows, Linux) i czasami uzyskuje dodatkowe informacje (takie jak czy X serwer przyjmuje poÅÄczenia, obsÅugiwane wersje protokoÅu SSH czy nazwÄ użytkownika KaZaA). OczywiÅcie wiÄkszoÅÄ usÅug nie dostarczy wszystkich tych informacji. JeÅli Nmap zostaÅ skompilowany z OpenSSL, bÄdzie potrafiÅ ÅÄczyÄ siÄ z serwerami SSL i uzyskiwaÄ informacje od usÅug ukrytych za szyfrowanÄ warstwÄ. Kiedy zostanÄ wykryte usÅugi RPC, odpowiedni skaner (−sR) zostanie automatycznie uruchomiony do ustalenia oprogramowania i wersji RPC. Z powodu specyfiki UDP, po zakoÅczeniu skanowania niektóre porty pozostajÄ w stanie otwarty|filtrowany, jako że ten typ skanowania nie potrafi okreÅliÄ, czy port jest otwarty czy filtrowany. Skanowanie wersji spróbuje uzyskaÄ odpowiedź od takiego portu (tak jak to robi przy otwartych portach) i jeÅli to siÄ uda, zmieni stan na otwarty. Porty TCP w stanie otwarty|filtrowany sÄ traktowane w ten sam sposób. Należy zwróciÄ uwagÄ, że opcja −A poza innymi rzeczami wÅÄcza wykrywanie wersji. Dodatkowa dokumentacja na temat dziaÅania detekcji wersji jest dostÄpna pod adresem https://nmap.org/vscan/.
JeÅli Nmap otrzyma odpowiedź, ale nie jest w stanie dopasowaÄ jej do żadnej znanej usÅugi, wyÅwietli specjalny odcisk palca (fingerprint) usÅugi wraz z adresem URL, pod którym można go nastÄpnie wysÅaÄ wraz ze stosownym opisem, jeÅli jesteÅmy pewni jakiej usÅudze odpowiada. ProszÄ poÅwiÄciÄ te kilka minut na wysÅanie informacji o nieznanych usÅugach, a bÄdÄ mogli z tego skorzystaÄ również inni użytkownicy Nmapa. DziÄki temu sposobowi wysyÅania Nmap rozpoznaje okoÅo 3,000 odcisków dla ponad 350 protokoÅów usÅug, takich jak smtp, ftp, http itp.
Detekcja wersji jest wÅÄczana i kontrolowana nastÄpujÄcymi opcjami:
−sV (Detekcja wersji usÅug)
WÅÄcza detekcjÄ wersji usÅug, opisanÄ powyżej. Alternatywnie można użyÄ opcji −A do jednoczesnego wÅÄczenia detekcji wersji usÅug i systemu operacyjnego.
−−allports (Nie pomijaj żadnych portów przy detekcji wersji)
Domyslnie, skanowanie wersji Nmapa pomija port TCP 9100, ponieważ niektóre drukarki po prostu drukujÄ wszystko, co zostanie przysÅane na ten port, powodujÄc wydruk setek stron z zapytaniami HTTP, binarnymi zapytaniami SSL itp. Takie zachowanie może zostaÄ wyÅÄczone poprzez modyfikacjÄ lub usuniÄcie dyrektywy Exclude w pliku nmap−service−probes, lub poprzez dodanie opcji −−allports, wymuszajÄcej skanowanie wszystkich portów niezależnie od dyrektywy Exclude.
−−version−intensity
Podczas przeprowadzania skanowania wersji (−sV), Nmap przeprowadza seriÄ testów, przy czym każdy z nich ma przypisany swój poziom pomiÄdzy 1 a 9. Niskie poziomy dziaÅajÄ poprawnie w stosunku do najpopularniejszych usÅug, wysokie numery obejmujÄ maÅo popularne. Poziom skanowania okreÅla które testy zostanÄ wykonane. Czym wyższy poziom, tym wiÄksza szansa na prawidÅowe rozpoznanie maÅo popularnych usÅug. DomyÅly poziom to 7. JeÅli test zostanie powiÄzany z wykrytÄ usÅugÄ z pliku nmap−service−probes, okreÅlonÄ dyrektywÄ ports, zostanie on wykonany niezależnie od ustalonego poziomu wykrywania wersji. Zachowanie takie ma na celu zawsze poprawne wykrywanie domyÅlnych usÅug na otwartych portach, wykrywanie serwera DNS na porcie 53, SSL na porcie 443 itp.
−−version−light (WÅÄcz tryb delikatny)
Jest wygodniejszym odpowiednikiem ustalajÄcym wartoÅÄ −−version−intensity 2. Opcja ta pozwala na znaczne przyspieszenie wykrywania wersji, kosztem dokÅadnoÅci.
−−version−all (Użyj wszystkich testów)
Odpowiednik opcji −−version−intensity 9, powodujÄcy wykonanie wszystkich możliwych testów na każdym porcie.
−−version−trace (Åledzenie aktywnoÅci skanowania wersji)
Opcja wÅÄcza opcje Åledzenia bÅÄdów podczas wykrywania wersji, powodujÄc wyÅwietlanie dodatkowych informacji na temat prowadzonych dziaÅaÅ. Opcja ta jest czÄÅciÄ wiÄkszej −−packet−trace.
−sR (Skanowanie RPC)
Metoda ta dziaÅa w poÅÄczeniu z różnymi metodami skanowania portów Nmapa. Na wszystkie wykryte wczeÅniej porty sÄ wysyÅane komendy NULL SunRPC i za ich pomocÄ sprawdzane jest, czy dany port należy do usÅug RPC. JeÅli tak, identyfikowana jest aplikacja i jej wersja. Opcja pobiera takie same informacje jak komenda rpcinfo −p, nawet jeÅli host jest chroniony za pomocÄ systemu zaporowego (lub TCP wrapperów). Hosty poÅrednie zombie nie sÄ obsÅugiwane przy tym trybie skanowania. Opcja jest automatycznie aktywowana jako czÄÅÄ wykrywania wersji usÅug (−sV). Jako że detekcja wersji jest daleko bardziej uniwersalna, opcja −sR jest wykorzystywana sporadycznie.
WYKRYWANIE SYSTEMU OPERACYJNEGO
Jedna z najbardziej znanych możliwoÅci Nmapa jest zdalna detekcja systemu operacyjnego za pomocÄ odcisków palca (fingerprint) stosu TCP/IP. Nmap wysyÅa seriÄ pakietów TCP i UDP do zdalnego systemu i analizuje praktycznie każdy bit z uzyskanych odpowiedzi. Po wykonaniu dziesiÄtek testów takich jak próbkowanie ISN TCP, analiza opcji protokoÅu TCP i kolejnoÅci, próbkowanie IPID i kontrola poczÄtkowych rozmiarów okna, Nmap porównuje uzyskane wyniki z bazÄ z pliku nmap−os−fingerprints zawierajÄcÄ ponad 1500 znanych odcisków systemów operacyjnych i wyÅwietla wynik, jeÅli udaÅo sie go odnaleźÄ. Każdy odcisk zawiera tekstowy opis systemu operacyjnego, nazwÄ jego producenta (np. Sun), nazwÄ systemu (np. Solaris), generacjÄ (np. 10) i typ urzÄdzenia (przeznaczenie ogólne, router, switch, konsola do gier itp).
JeÅli Nmap nie może ustaliÄ systemu i warunki do jego wykrycia sÄ wystarczajÄce (np. wykryto przynajmniej jeden otwarty i jeden zamkniÄty port), Nmap poda adres URL, dziÄki któremu, jeÅli jesteÅmy pewni, możliwe jest wysÅanie opisu nieznanego systemu, wraz z jego odciskiem. Wykonanie tej operacji przyczynia siÄ do rozbudowy bazy i poprawy wykrywania, na czym korzystajÄ wszyscy użytkownicy.
Detekcja systemu operacyjnego pozwala na uzyskanie innych informacji, które sÄ zbierane podczas tego procesu. JednÄ z nich jest czas od uruchomienia hosta, co jest uzyskiwane poprzez wykorzystanie opcji TCP timestamp (RFC 1323) do ustalenia kiedy host byÅ restartowany. Informacja ta jest podawana tylko wtedy, jeÅli host jej dostarcza. InnÄ informacjÄ jest klasyfikacja przewidywalnoÅci numerów sekwencyjnych TCP. Badane jest prawdopodobieÅstwo możliwoÅci wstrzykniÄcia pakietów w przechwycone poÅÄczenie. Informacja ta jest przydatna w przypadku testowania poÅÄczeÅ opartych na zaufaniu do adresu IP nadawcy (rlogin, filtry firewalla itp) lub podczas ukrywania źródÅa ataku. Ten typ ataków jest obecnie rzadko wykorzystywany, jednak niektóre systemy sÄ nadal na niego podatne. Podawany poziom trudnoÅci jest oparty na statystycznych próbkach i może siÄ zmieniaÄ. Ogólnie lepiej jest używaÄ angielskich okreÅleÅ dla poszczególnych klas, takich jak âworthy challenge” (stanowiÄcy wyzwanie) lub âtrivial joke” (trywialny dowcip). Taki sposób raportowania jest dostÄpny tylko przy domyÅlnym formacie raportu przy wÅÄczonej opcji zwiÄkszajÄcej szczegóÅowoÅÄ podawanych informacji (−v). JeÅli użyto opcji −v w poÅÄczeniu z −O, podane zostanÄ informacje o generowaniu numerów sekwencyjnych IPID. WiÄkszoÅÄ adresów należy do klasy âincremental” (rosnÄce) co oznacza, że wartoÅÄ pola ID w nagÅówkach pakietów IP jest zmieniana rosnÄco w kolejnych pakietach. Taki sposób powiÄkszania numerów powoduje podatnoÅÄ na szereg ataków.
Dokument opisujÄcy dziaÅanie i używanie detekcji wersji jest dostÄpny w wielu jÄzykach pod adresem https://nmap.org/osdetect/.
Wykrywanie systemu operacyjnego jest wÅÄczane i kontrolowane przez poniższe opcje:
−O (WÅÄczenie wykrywania systemu operacyjnego)
WÅÄcza wykrywanie systemu operacyjnego opisanego powyżej. Alternatywnie można używaÄ opcji −A, która wÅÄcza jednoczeÅnie wykrywanie systemu operacyjnego i wersji usÅug.
−−osscan−limit (Limitowanie wykrywania do obiecujÄcych celów)
Wykrywanie systemu operacyjnego jest dużo bardziej efektywne, jeÅli wykryto przynajmniej po jednym otwartym i zamkniÄtym porcie TCP. Użycie tej opcji spowoduje, że Nmap nie bÄdzie próbowaÅ okreÅlaÄ systemu operacyjnego, jeÅli nie zostaÅy speÅnione powyższe kryteria. Wykorzystanie tego ograniczenia pozwala na znaczne skrócenie czasu, zwÅaszcza w poÅÄczeniu z opcjÄ −P0 przy skanowaniu wielu adresów. Opcja ma znaczenie tylko w poÅÄczeniu z −O lub −A.
−−osscan−guess; −−fuzzy (Zgadywanie wersji systemu operacyjnego)
JeÅli Nmap nie może jednoznacznie dopasowaÄ systemu operacyjnego, czasami może sugerowaÄ kilka różnych, zbliżonych do siebie. PodobieÅstwo musi byÄ bardzo duże, żeby Nmap zachowaÅ siÄ w ten sposób przy domyÅlnej konfiguracji. Wykorzystanie tej opcji pozwala na wiÄkszÄ swobodnoÅÄ przy próbach ustalenia wersji systemu.
ZALEÅ»NOÅCI CZASOWE I WYDAJNOÅÄ
Zawsze najważniejszym priorytetem przy tworzeniu Nmapa byÅa wysoka wydajnoÅÄ. DomyÅlne skanowanie (nmap nazwahosta) hosta w sieci lokalnej zajmuje tylko jednÄ piÄtÄ sekundy. Jest to zadowalajÄcy czas, jednak przy skanowaniu setek tysiÄcy adresów sumaryczny czas staje siÄ bardzo duży. Dodatkowo niektóre typy skanowania, takie jak skanowanie UDP i detekcja wersji także wpÅywajÄ negatywnie na czas wykonania, podobnie jak konfiguracja systemów zaporowych, na przykÅad limitujÄca iloÅÄ pakietów. Nmap posiada możliwoÅci równolegÅego skanowania i odpowiednie zaawansowane algorytmy przyspieszajÄce skanowanie, a użytkownik posiada ogromne możliwoÅci wpÅywania na to jak sÄ one wykorzystywane. Zaawansowani użytkownicy uważnie przeglÄdajÄcy komendy Nmapa, nakazujÄ mu dostarczanie tylko istotnych informacji zgodnie z przyjÄtymi wymaganiami i zaÅożeniami czasowymi.
Techniki przyspieszajÄce skanowanie dotyczÄ ograniczenia wykonywania maÅo istotnych testów i czÄstej zmiany wersji Nmapa na najnowszÄ (zmiany dotyczÄce przyszpieszenia pracy sÄ wprowadzane dosyÄ czÄsto). Optymalizacja parametrów dotyczÄcych szybkoÅci skanowania również ma duży wpÅyw i zostaÅa opisana poniżej.
−−min−hostgroup
Nmap posiada możliwoÅÄ skanowania portów i wersji na wielu hostach równoczeÅnie. Jest to realizowane poprzez dzielenie listy adresów docelowych na grupy, które sÄ nastÄpnie kolejno skanowane. Ogólnie skanowanie wiÄkszych grup jest bardziej efektywne. WadÄ tego rozwiÄzania jest opóźnienie w podawaniu wyników testów do czasu przeskanowania caÅej grupy. PrzykÅadowo, jeÅli Nmap rozpoczÄÅ skanowanie w grupach po 50 adresów, żadne wyniki nie zostanÄ wyÅwietlone (poza informacjami podawanymi przez −v) do czasu zakoÅczenia skanowania pierwszych 50 adresów.
DomyÅlnie Nmap stosuje rozwiÄzanie kompromisowe. Rozpoczyna z grupÄ o rozmiarze 5, co pozwala szybko wyÅwietliÄ pierwsze wyniki, a nastÄpnie stopniowo powiÄksza rozmiar grupy aż do maksymalnie 1024. DokÅadne wykorzystywane rozmiary grup sÄ uzależnione od podania dodatkowych opcji. Dla uzyskania wiÄkszej efektywnoÅci Nmap używa wiÄkszych grup dla skanowaÅ UDP oraz przy skanowaniach TCP dotyczÄcych zaledwie kilku portów.
JeÅli maksymalny rozmiar grupy zostaÅ okreÅlony za pomocÄ opcji −−max−hostgroup, Nmap nigdy nie przekroczy tego limitu. Analogicznie podanie minimalnego rozmiaru za pomocÄ −−min−hostgroup wymusi stosowanie grup o przynajmniej takim rozmiarze. Nmap może użyÄ mniejszej grupy tylko w przypadku, kiedy iloÅÄ adresów do przeskanowania jest mniejsza niż zaÅożone minimum. Obie wymienione opcje pozwalajÄ na utrzymywanie rozmiaru grupy w podanym przedziale, jednak jest to rzadko potrzebne.
Podstawowym zastosowaniem tych opcji jest podawanie dużego minimalnego rozmiaru grupy tak, żeby peÅne skanowanie odbywaÅo siÄ szybciej. CzÄsto stosowanÄ wartoÅciÄ jest 256, co pozwala na skanowanie w kawaÅkach o rozmiarze klasy C. Przy skanowaniu wielu portów, stosowanie wiÄkszych wartoÅci minimalnych przeważnie nie poprawi wydajnoÅci. W przypadku skanowania maÅych iloÅci portów pomocne może byÄ stosowanie grup o rozmiarze 2048 lub nawet wiÄkszym.
−−min−parallelism
Opcja ta kontroluje iloÅÄ jednoczesnych dla danej grupy adresów testów i jest wykorzystywana podczas wykrywania hostów i skanowania portów. DomyÅlnie Nmap dobiera idealnÄ iloÅÄ testów w zależnoÅci od parametrów sieci. JeÅli jakiÅ pakiet zostanie zagubiony, zwalnia i zaczyna wykonywaÄ mniejszÄ iloÅÄ testów równolegle. Nmap próbuje powoli przyspieszaÄ, jeÅli nie sÄ gubione pakiety. Podane opcje pozwalajÄ na okreÅlenie minimalnego i maksymalnego limitu iloÅci jednoczeÅnie wykonywanych testów. Normalnie iloÅÄ ta może spaÅÄ do 1 przy zÅych warunkach sieciowych lub wzrosnÄÄ do kilkuset w idealnych warunkach.
NajczÄÅciej wykorzystywana jest opcja −−min−parallelism do ustawiania wyższej niż 1 wartoÅci przy skanowaniu sieci przy zÅych warunkach. Zmiana tej opcji może byÄ ryzykowna, ponieważ ustawienie zbyt wysokiej wartoÅci może sie odbiÄ na poprawnoÅci testów. Wykorzystanie jej także pociÄga za sobÄ zmniejszenie możliwoÅci Nmapa w zakresie dynamicznego dostosowywania siÄ do warunków panujÄcych w sieci. Ustalenie minimalnej iloÅci na 10 może byÄ sensowne, jednak powinno byÄ stosowane w ostatecznoÅci.
Opcja −−max−parallelism jest czasami wykorzystywana do zmuszenia Nmapa do nie przeprowadzania wiÄcej niż jednego testu równolegle, co może byÄ użyteczne w poÅÄczeniu z opcjÄ−−scan−delay (opisanÄ dalej).
−−min−rtt−timeout
Nmap posiada mechanizm kontrolujÄcy czas oczekiwania na wynik testu, zanim nie zostanie on ponowiony. Czas oczekiwania jest zależny od czasu wykonania poprzednich testów. JeÅli opóźnienia w sieci okaÅ¼Ä sie duże i zmienne, czas oczekiwania może zwiÄkszyÄ sie do kilku sekund. PoczÄtkowa wartoÅÄ jest dosyÄ konserwatywna (wysoka) i może taka pozostaÄ w przypadku skanowania nie odpowiadajÄcych hostów.
Opcje przyjmujÄ wartoÅci w milisekundach, ale można dodaÄ litery s, m lub h odnoszÄce siÄ odpowiednio do sekund, minut i godzin. Podanie niższych wartoÅci −−max−rtt−timeout i −−initial−rtt−timeout niż domyÅlne, może znaczÄco skróciÄ czas skanowania. Jest to gÅównie widoczne w przypadku skanowania bez wykorzystywania pinga (−P0) oraz przy skanowaniu dobrze filtrowanych sieci. Nie można również przesadzaÄ w drugÄ stronÄ, ustawienie zbyt maÅego czasu może przekÅadaÄ sie na dÅuższy czas skanowania przez niepotrzebne retransmisje spowodowane upÅywem czasu oczekiwania na odpowiedź.
JeÅli wszystkie skanowane hosty sÄ w sieci lokalnej, sensownym agresywnym ustawieniem opcje −−max−rtt−timeout jest 100 milisekund. JeÅli skanowany ma byÄ inny segment, warto sprawdziÄ czasy odpowiedzi dla protokoÅu ICMP − za pomocÄ narzÄdzia ping lub innego pozwalajÄcego na definiowanie pakietów mogÄcych omijaÄ system zaporowy, takiego jak hping2. InteresujÄcÄ nas wielkoÅciÄ jest maksymalny czas odpowiedzi dla 10 lub wiÄcej pakietów. Uzyskany czas może zostaÄ po podwojeniu wykorzystany jako wartoÅÄ dla −−initial−rtt−timeout, a po pomnożeniu przez trzy lub cztery dla −−max−rtt−timeout. Nie jest zalecane ustawianie maksymalnego rtt poniżej 100ms, niezależnie od czasów pingowania, podobnie wiÄkszego niż 1000ms.
−−min−rtt−timeout jest rzadko wykorzystywanÄ funkcjÄ, która może byÄ przydatna jeÅli komunikacja sieciowa jest tak niepewna, że nawet domyÅlne ustawienia Nmapa sÄ zbyt agresywne. Jako że Nmap redukuje czas oczekiwania tylko do momentu w którym sieÄ zacznie dziaÅaÄ poprawnie, potrzeba dodatkowego wydÅużania czasu oczekiwania nie jest normalna i powinna zostaÄ zaraportowana jako bÅÄd na liÅcie dyskusyjnej nmap−dev.
−−max−retries
Kiedy Nmap nie otrzyma odpowiedzi na skanowanie portu, może to oznaczaÄ, że port ten jest filtrowany. Możliwe jest jednak także, że pakiet testu lub odpowiedzi po prostu zaginÄÅ w sieci, albo że host limituje iloÅÄ możliwych odpowiedzi w jednostce czasu i wÅaÅnie tymczasowo je zablokowaÅ. WiÄkszÄ pewnoÅÄ uzyskuje siÄ dzieki powtarzaniu testu w przedstawionych przypadkach. JeÅli Nmap wykryje problemy z komunikacjÄ sieciowÄ, może ponawiaÄ próbÄ badania portu wiele razy, zanim sie podda. Z jednej strony zwiÄksza to dokÅadnoÅÄ testów, z drugiej wydÅuża czas ich wykonania. JeÅli wydajnoÅÄ jest krytycznym aspektem, skanowania mogÄ zostaÄ przyspieszone poprzez limitowanie dozwolonej iloÅci retransmisji. Ustawienie opcji −−max−retries 0 , caÅkowicie wyÅÄczajÄcej powtarzanie testów jest wykorzystywane sporadycznie.
DomyÅlnie (bez stosowania opcji −T) dozwolone jest maksymalnie 10 powtórzeÅ. JeÅli sieÄ dziaÅa prawidÅowo i skanowane hosty nie limitujÄ iloÅci pakietów, Nmap zwykle wykorzystuje jednÄ retransmisjÄ. Dlatego też wiÄkszoÅÄ skanowaÅ nie zostanie dotkniÄtych zmianÄ wartoÅci −−max−retries na trzy. Stosowanie tak niskich wartoÅci pozwala na znaczne przyspieszenie skanowania hostów limitujÄcych iloÅÄ odpowiedzi. JeÅli Nmap bÄdzie zbyt szybko poddawaÅ siÄ przy skanowaniu portów, czÄÅÄ informacji nie zostanie zebrana, dlatego byÄ może warto skorzystaÄ z opcji przerywajÄcej test −−host−timeout, która dotyczy caÅego hosta, a nie tylko pojedynczych testów.
−−host−timeout
Skanowanie niektórych hostów trwa bardzo dÅugo. Może to byÄ spowodowane niezbyt wydajnym sprzÄtem sieciowym lub oprogramowaniem, limitowaniem iloÅci pakietów czy restrykcjami systemu zaporowego. Niewielki procent hostów może zabraÄ wiÄkszoÅÄ czasu przeznaczonego na skanowanie. Czasami najlepszym rozwiÄzaniem jest ich pominiÄcie z wykorzystaniem opcji −−host−timeout z parametrem oznaczajÄcym iloÅÄ milisekund, jakie jesteÅmy w stanie poÅwiÄciÄ na czekanie per host. Parametr można również podawaÄ w sekundach, minutach lub godzinach dodajÄc odpowiednio litery s, m lub h. CzÄsto dodajÄ 30m żeby mieÄ pewnoÅÄ, że Nmap nie bÄdzie skanowaÅ jednego hosta dÅużej niż póŠgodziny. Trzeba pamiÄtaÄ, że Nmap może równolegle w tym czasie skanowaÄ inne hosty, wiÄc nie bedzie to czas kompletnie stracony. Host który przekroczy czas jest pomijany i nie sÄ dla niego wyÅwietlane wyniki takie jak lista portów, system operacyjny czy wersje usÅug.
−−scan−delay
Opcja pozwala na narzucenie czasu w milisekundach jaki musi minÄÄ pomiÄdzy kolejnymi testami dla badanego hosta. Podobnie jak przy innych opcjach pozwalajÄcych na okreÅlanie czasu, można dodaÄ s, m lub h do parametru do okreÅlenia go odpowiednio w sekundach, minutach lub godzinach. Opcja ta jest szczególnie użyteczna w przypadku systemów limitujÄcych iloÅÄ pakietów. Solaris zwykle odpowiada na skanowanie UDP poprzez wysyÅanie tylko jednego pakietu ICMP na sekundÄ, wiÄc wysyÅanie zapytaÅ szybciej jest zupeÅnie nie potrzebne. Wykorzystanie opcji −−scan−delay 1s pozwala na wymuszenie odpowiedniej prÄdkoÅci skanowania. Normalnie Nmap stara siÄ wykryÄ jaka powinna byÄ optymalna prÄdkoÅÄ skanowania dla każdego hosta, jednak rÄczne dodanie takiej opcji nie zaszkodzi, o ile znana jest optymalna prÄdkoÅÄ.
Kiedy Nmap zwiÄksza czas opóźnienia, dostosowujÄc go do limitu iloÅci otrzymywanych odpowiedzi, czas skanowania dramatycznie roÅnie. Opcja −−max−scan−delay pozwala na ustawienie maksymalnego limitu do którego może byÄ automatycznie zwiÄkszane opóźnienie. Ustawienie tej wartoÅci zbyt nisko może spowodowaÄ niepotrzebne retransmisje i pominiÄcie niektórych portów w przypadku hostów ÅciÅle limitujÄcych iloÅÄ pakietów.
InnÄ możliwoÅciÄ wykorzystanie opcji −−scan−delay jest omijanie systemów detekcji intruzów (IDS/IPS).
−T
Opisane wczeÅniej opcje do zmiany zależnoÅci czasowych pozwalajÄ na efektywne i precyzyjne sterowanie skanowaniem, jednak wiele osób uzna je za niepotrzebnie skomplikowane. Dodatkowo w wielu przypadkach dobranie odpowiedniej kombinacji parametrów może zajÄÄ wiÄcej czasu, niż samo skanowanie. Z tego powodu Nmap oferuje prostrze rozwiÄzanie w postaci szeÅciu szablonów. Ich wybór jest możliwy poprzez wykorzystanie opcji −T z parametrem oznaczajÄcym numer lub nazwÄ szablonu. DostÄpne szablony to paranoid (0, paranoidalny), sneaky (1, podstÄpny), polite (2, grzeczny), normal (3, normalny), aggressive (4, agresywny) i insane (5, szalony). Pierwsze dwa wykorzystywane sÄ do omijania systemów IDS. Szablon polite spowalnia skanowanie powodujÄc mniejsze obciÄżenie ÅÄcza i zmniejszajÄce wykorzystanie zasobów w badanym systemie. DomyÅlnie używany jest normal, wiÄc podawanie −T3 nic nie zmieni. Szablon agresywny przyspiesza skanowanie przy zaÅożeniu że korzystamy z szybkiej i nie przeciÄżonej sieci. Insane zakÅada wykorzystanie ponad przeciÄtnie szybkiej sieci lub jeÅli chcemy uzyskaÄ duÅ¼Ä szybkoÅÄ kosztem możliwej utraty dokÅadnoÅci.
Szablony pozwalajÄ poinformowaÄ Nmapa jak dużej agresywnoÅci od niego oczekujemy przy jednoczesnym pozwoleniu mu na automatyczne dobieranie pozostaÅych parametrów czasowych. Wprowadzane też sÄ inne drobne modyfikacje, do których nie istniejÄ odzielne opcje. Na przykÅad, −T4 zabrania wzrostu dynamicznego opóźnienia skanowania powyżej 10ms dla portów TCP, a w przypadku −T5 powyżej 5ms. Szablony mogÄ byÄ używane w poÅÄczeniu z innymi opcjami do ustawiania zależnoÅci czasowych o ile zostanÄ umieszczone przed pozostaÅymi opcjami w linii poleceÅ (inaczej domyÅlne ustawienia z szablonu zastÄpiÄ ustawione innymi opcjami). WiÄkszoÅÄ dzisiejszych sieci może byÄ z powodzeniem skanowana z wykorzystaniem opcji −T4.
JeÅli używasz ÅÄcza szerokopasmowego lub sieci ethernet, rekomendowane jest staÅe używanie szablonu −T4. Wiele osób lubi −T5, lecz jest ono jak dla mnie trochÄ za agresywne. Ludzie czasami używajÄ −T2 ponieważ myÅlÄ, że zminiejszajÄ szanse na zawieszenie serwera lub uważajÄ siÄ za bardziej kulturalnych z zaÅożenia, czÄsto nie zdajÄc sobie sprawy z tego, jak wolne jest −T Polite − ich skanowania może trwaÄ dziesiÄÄ razy dÅużej. Zawieszanie hostów i problemy z pasmem sÄ rzadko spotykane przy domyÅlym −T3, i ta opcja jest polecana dla ostrożnych skanujÄcych. Nie wÅÄczanie detekcji wersji jest daleko bardziej efektywnym sposobem na unikanie problemów.
Podczas gdy opcje −T0 i −T1 mogÄ byÄ użyteczne przy unikaniu wykrycia przez systemy IDS, sÄ niesamowicie powolne przy skanowaniu setek adresów lub portów. Przy tak dÅugich skanowaniach możesz raczej chcieÄ ustawiÄ rÄcznie poszczególne zależnoÅci czasowe, niż polegaÄ na predefiniowanych wartoÅciach z −T0 i −T1.
GÅównym efektem dziaÅania T0 jest ograniczenie iloÅci równolegle przeprowadzanych testów do jednego i wprowadzenie odstÄpu pomiÄdzy kolejnymi testami o dÅugoÅci 5 minut. Opcje T1 i T2 sÄ podobne, ale czakajÄ już tylko odpowiednio 15 i 0.4 sekundy pomiÄdzy testami. T3 jest domyÅlnym ustawieniem Nmapa wÅÄczajÄc w to zrównoleglanie testów. T4 jest odpowiednikiem podania opcji −−max−rtt−timeout 1250 −−initial−rtt−timeout 500 −−max−retries 6 i ustawienia maksymalnego opóźnienia przy skanowaniu TCP na 10 milisekund. Opcja T5 jest alternatywÄ dla −−max−rtt−timeout 300 −−min−rtt−timeout 50 −−initial−rtt−timeout 250 −−max−retries 2 −−host−timeout 900000 oraz ustawienia maksymalnego czasu opóźnienia dla skanowania TCP na 5ms.
FIREWALL/IDS I PODSZYWANIE SIÄ
Wielu pionierów ineternetu wykorzystywaÅo globalnÄ otwartÄ sieÄ opartÄ o uniwersalnÄ przestrzeÅ adresowÄ pozwalajÄcÄ na tworzenie wirtualnych poÅÄczeÅ pomiÄdzy dwoma dowolnymi wÄzÅami. PozwalaÅo to hostom na równoprawnÄ komunikacjÄ przy której każdy mógÅ serwowaÄ i pobieraÄ dane od drugiego. Ludzie mogli uzyskaÄ dostÄp do wszystkich swoich systemów z dowolnego miejsca w sieci. Wizja nieograniczonej ÅÄcznoÅci zostaÅa ograniczona przez wyczerpujÄce siÄ zapasy wolnych adresów IP i wzglÄdy bezpieczeÅstwa. We wczesnych latach 90−tych organizacje zaczÄÅy masowo wprowadzaÄ systemy zaporowe dla ograniczenia możliwoÅci komunikacji. Duże sieci zostaÅy otoczone kordonem zabezpieczeÅ w postaci proxy aplikacyjnych, translacji adresów i filtrowania pakietów. Niczym nie ograniczany przepÅyw informacji ustÄpiÅ ÅcisÅym regulacjom dotyczÄcym dozwolonych dróg komunikacji i treÅci nimi przesyÅanych.
Zabezpieczenia sieciowe takie jak systemy zaporowe mogÄ bardzo utrudniÄ uzyskiwanie informacji o sieci i jej architekturze. Nmap posiada wiele funkcji pozwalajÄcych zrozumieÄ dziaÅanie zÅożonych sieci i na weryfikacje dziaÅania filtrów pakietów i ich zgodnoÅci z zaÅożeniami. Pozwala nawet na omijanie źle zaimplementowanych zabezpieczeÅ. Jednym z najlepszych sposobów na poznanie bezpieczeÅstwa swojej sieci jest próba jego przeÅamania. Zacznij myÅleÄ jak atakujÄcy, który stosuje techniki z tej czÄÅci dokumentacji przeciwko Twojej sieci. Uruchom skanowania FTP bounce, Idle, dodaj fragmentacjÄ pakietów lub spróbuj uruchomiÄ tunel omijajÄcy lokalne proxy.
W poÅÄczeniu z ograniczeniami aktywnoÅci sieciowej, firmy coraz czÄÅciej rozpoczynajÄ monitorowanie ruchu sieciowego za pomocÄ systemów detekcji intruzów (IDS). Wszystkie popularne systemy IDS majÄ doÅÄczone reguÅy wykrywajÄce skanowania Nmapa, ponieważ skanowania takie czasami poprzedzajÄ ataki. Wiele z tych systemów ostatnio przeistoczyÅo siÄ w systemy prewencji (IPS), które aktywnie przeciwstawiajÄ siÄ niepożÄdanemu ruchowi. Niestety, dla administratorów sieci i producentów systemów IDS, wiarygodne wykrywanie zÅych intencji poprzez analizÄ pakietów jest ciÄżkim orzechem do zgryzienia. Cierpliwi atakujÄcy, posiadajÄcy odpowiednie umiejÄtnoÅci podparte możliwoÅciami Nmapa zwykle mogÄ ominÄÄ systemy detekcji intruzów i ich dziaÅania nie zostanÄ wykryte. W tym samym czasie administratorzy muszÄ siÄ zmagaÄ z ogromnÄ iloÅciÄ faÅszywych alarmów dotyczÄcych niepoprawnie zaklasyfikowanej zupeÅnie niewinnej komunikacji.
Co jakiÅ czas ktoÅ sugeruje, że Nmap nie powinien oferowaÄ możliwoÅci omijania systemów zaporowych czy systemów IDS. ArgumentujÄ to możliwoÅciÄ wykorzystania tych funkcji także przez atakujÄcych, a nie tylko przez administratorów podnoszÄcych bezpieczeÅstwo swoich sieci. Problemem jest sama logika, ponieważ atakujÄcy i tak bÄdÄ wykorzystywali tego typu metody używajÄc innych narzÄdzi lub samemu wprowadzajÄc odpowiedniÄ funkcjonalnoÅÄ do kodu Nmapa. RównoczeÅnie administratorzy bÄdÄ mieli utrudniony dostÄp do odpowiednich narzÄdzi i ich praca bÄdzie trudniejsza. Uruchomienie nowoczesnego, bezpiecznego serwera FTP jest dużo skuteczniejszÄ metodÄ ochrony niż ograniczanie dostÄpnoÅci do narzÄdzi pozwalajÄcych na przeprowadzanie ataków FTP bounce.
Nie ma magicznej kuli (lub opcji Nmapa) do przeÅamywania i obchodzenia systemów zaporowych i IDS. Wymaga to umiejÄtnoÅci i doÅwiadczenia. DokÅadne instrukcje wykraczajÄ poza zakres tej dokumentacji, która jest jedynie listÄ dostÄpnych opcji wraz z opisami jak one dziaÅajÄ.
−f (fragmentacja pakietów); −−mtu (Używanie wybranego MTU)
Opcja −f powoduje wykorzystywanie przy skanowaniu (wÅÄczajÄc w to skanowanie ping) maÅych pofragmentowanych pakietów. Idea polega na podzieleniu nagÅówka TCP na wiele pakietów, co powoduje utrudnienia w ich przetwarzaniu przez filtry pakietów, systemy detekcji intruzów oraz irytujÄce komplikacje przy ustalaniu co siÄ dzieje. Ale uwaga! Wiele programów ma problemy przy obsÅudze tego typu pakietów. PrzestarzaÅy sniffer Sniffit wykonuje nieprawidÅowÄ operacje i zostaje zamkniÄty zaraz po odebraniu już pierwszego z takich pakietów. Dodanie tej opcji spowoduje automatyczne dzielenie wszystkich pakietów wysyÅanych przez Nmapa na mniejsze o rozmiarze maksymalnie 8 bajtów. PrzykÅadowo 20 bajtowy nagÅówek TCP zostanie podzielony na 3 pakiety: najpierw dwa po 8 bajtów i ostatni 4 bajty. OczywiÅcie każdy fragment dostaje wÅasny nagÅówek IP. Dodanie drugiej opcji −f powiÄksza wykorzystywany rozmiar fragmentów z 8 do 16 (redukujÄc iloÅÄ fragmentów). Możliwe jest również podanie wÅasnego rozmiaru za pomocÄ opcji −−mtu. Nie używaj parametru −f, jeÅli używasz −−mtu. Podawany rozmiar musi byÄ wielokrotnoÅciÄ 8. W niektórych systemach filtry pakietów nie otrzymujÄ bezpoÅrednio pakietów, tylko sÄ one wstÄpnie kolejkowane, tak jak w Linuxie przy ustawieniu opcji CONFIG_IP_ALWAYS_DEFRAG w kernelu, jednak w wielu przypadkach takie opcje nie sÄ wÅÄczane ze wzglÄdów wydajnoÅciowych. Opcja taka nie jest również wÅÄczana jeÅli zachodzi możliwoÅÄ routowania poszczególnych pakietów różnymi Åcieżkami. Niektóre systemy operacyjne potrafiÄ defragmentowaÄ pakiety wysyÅane przez kernel, Linux z iptables i moduÅem Åledzenia poÅÄczeÅ jest jednym z przykÅadów. UruchamiajÄc skanowanie można podsÅuchaÄ za pomocÄ sniffera takiego jak Ethereal, czy wychodzÄce pakiety sÄ rzeczywiÅcie pofragmentowane. JeÅli system powoduje tego typu problemy, można wypróbowaÄ opcje −−send−eth, która pomija stos TCP/IP i wysyÅa bezpoÅrenio ramki ethernetowe.
−D
Powoduje skanowanie, wykrywane jako przychodzÄce z kilku miejsc równoczeÅnie. System IDS może wykryÄ 5−10 różnych skanowaÅ z różnych adresów, jednak nie bÄdzie w stanie oceniÄ który z nich jest prawdziwym źródÅem pochodzenia, a które tylko niewinnymi zasÅonami. Chociaż metoda ta może zostaÄ rozpoznana poprzez Åledzenie Åcieżki pakietów na routerach i innych aktywnych mechanizmów, ogólnie jest efektywnÄ technikÄ na ukrywanie swojego adresu IP.
PodwajÄc listÄ poszczególnych hostów−zasÅon, trzeba je oddzieliÄ przecinkami, można również na tej liÅcie umieÅcic ME oznaczajÄce pozycjÄ wÅasnego adresu IP na liÅcie. W przypadku wykorzystania przynajmniej 6−tej pozycji na liÅcie dla wÅasnego IP, wiele popularnych systemów wykrywajÄcych skanowania (na przykÅad scanlogd firmy Solar Designer) nawet nie pokaże prawdziwego źródÅa pochodzenia pakietów na liÅcie ataków. JeÅli ME nie zostanie dodane, Nmap umieÅci je losowo na liÅcie.
Należy zwróciÄ uwagÄ, ze hosty−przykrywki powinny byÄ dostÄpne, inaczej bÄdzie można Åatwo wykryÄ host skanujÄcy i że można niechcÄcy dokonaÄ ataku SYN flood na hosty skanowane. Bezpieczniej jest używaÄ adresów IP zamiast nazw systemów−przykrywek, bo nie zostawi to informacji w logach ich serwera nazw.
Przykrywki sÄ używane zarówno przy poczÄtkowym skanowaniu ping (z wykorzystaniem ICMP, SYN ACK itp), podczas skanowania portów jak i przy wykrywaniu systemu operacyjnego. Technika ta nie dziaÅa podczas wykrywania wersji i skanowania metodÄ connect().
Używanie zbyt wielu adresów hostów−przykrywek znacznie spowalnia skanowanie i może nawet spowodowaÄ zmniejszenie dokÅadnoÅci. Dodatkowo niektórzy dostawcy usÅug odfiltrowujÄ pakiety podszywajÄce siÄ pod adresy z innych sieci, jednak wielu nie robi tego wcale.
−S
W niektórych przypadkach Nmap nie potrafi ustaliÄ wÅaÅciwego adresu nadawcy (i wyÅwietli stosowny komunikat). W takim przypadku należy za pomocÄ opcji −S podaÄ adres lokalnego interfejsu przez który majÄ byÄ wysyÅane pakiety.
InnÄ możliwoÅciÄ tej opcji jest podmiana adresu nadawcy tak, by cel skanowania uważaÅ, że skanuje go ktoÅ inny. Wyobraź sobie, ze firmÄ nagle zacznie skanowaÄ konkurencja! W przypadku takiego użycia, zwykle bÄdzie wymagana opcja −e, a zalecana również −P0.
−e
Informuje Nmapa przez który interfejs ma wysyÅaÄ i odbieraÄ pakiety. Nmap powinien wykryÄ go automatycznie, ale jeÅli mu siÄ nie uda, można to zrobiÄ rÄcznie.
−−source−port
Jednym z najczÄÅciej spotykanych problemów konfiguracyjnych jest ufanie danym przychodzÄcym z okreÅlonego portu źródÅowego. Åatwo jest zrozumieÄ, czemu tak siÄ dzieje. Administrator instaluje nowiusieÅki system zaporowy, którego jedynÄ wadÄ sÄ zgÅoszenia od niepocieszonych użytkowników, którym nagle przestaÅy dziaÅaÄ aplikacje. PrzykÅadem może byÄ DNS, ponieważ odpowiedzi na zapytania z zewnÄtrznych serwerów przestaÅy dochodziÄ do sieci. Innym przykÅadem jest FTP, przy stosowaniu aktywnych poÅÄczeÅ zewnÄtrzne serwery próbujÄ utworzyÄ poÅÄczenia powrotne do klienta żÄdajÄcego przesÅania pliku.
Bezpieczne rozwiÄzanie dla tych problemów istnieje, czÄsto w formie aplikacyjnych serwerów proxy lub analizy protokoÅu przez systemy zaporowe. Niestety istniejÄ również inne Åatwiejsze, ale i mniej bezpieczne rozwiÄzania. Wielu administratorów wpada w puÅapkÄ zakÅadajÄc, że dane przychodzÄce z portu 53 sÄ zawsze odpowiedziami serwera DNS, a z 20 aktywnymi poÅÄczeniami FTP i zezwalajÄc na przechodzenie takiego ruchu przez system zaporowy. CzÄsto zakÅadajÄ, że żaden atakujÄcy nie spróbuje wykorzystaÄ takiej luki. Zdaża siÄ również, że problem taki zostaje wprowadzony do konfiguracji jako tymczasowe rozwiÄzanie, jednak zapominajÄ o jego zmianie na bardziej bezpieczne.
Przepracowani administratorzy nie sÄ jedynymi, którzy wpadajÄ w takÄ puÅapkÄ. Wiele komercyjnych produktów jest dostarczanych z podobnymi problemami. ZdarzyÅo siÄ to nawet firmie Microsoft, której filtry IPsec dostarczone z Windows 2000 i XP zawierajÄ reguÅÄ wpuszczajÄcÄ caÅy ruch TCP i UDP pochodzÄcy z portu 88 (Kerberos). Innym dobrze znanym przykÅadem jest Zone Alarm personal firewall, który do wersji 2.1.25 wÅÄcznie nie filtrowaÅ pakietów UDP z portów 53 (DNS) i 67 (DHCP).
Nmap oferuje dwie ekwiwalentne opcje −g i −−source−port pozwalajÄce na wykorzystanie opisanej wyżej funkcjonalnoÅci poprzez podanie numeru portu z którego wysyÅa dane, o ile jest to tylko możliwe. Nmap musi używaÄ różnych numerów portów dla poprawnego dziaÅania niektórych testów wykrywajÄcych system operacyjny, zapytania DNS również ignorujÄ opcjÄ −−source−port, ponieważ Nmap wykorzystuje do tego biblioteki systemowe. WiÄkszoÅÄ typów skanowania TCP, wÅÄczajÄc skanowanie SYN obsÅuguje tÄ opcjÄ we wszystkich przypadkach, podobnie jak i UDP.
−−data−length
DomyÅlnie Nmap wysyÅa pakiety o minimalnej wielkoÅci zawierajÄce jedynie sam nagÅówek. Pakiety TCP majÄ 40 bajtów, a ICMP tylko 28. Ta opcja pozwala doÅÄczaÄ do wiÄkszoÅci pakietów losowe dane o podanym rozmiarze. Pakiety używane do detekcji systemu operacyjnego (−O) pozostajÄ nie zmienione, ale przy wiÄkszoÅci pakietów ping i skanowania portów opcja ta jest wykorzystywana. PowiÄkszanie pakietów spowalnia proces skanowania, jednoczeÅnie czyniÄc go mniej podejrzanym.
−−ttl
Ustawia czas życia (TTL) pakietów na podanÄ wartoÅÄ.
−−randomize−hosts (Losowanie kolejnoÅci skanowania hostów)
Opcja powoduje wÅÄczenie losowania kolejnoÅci hostów w każdej grupie do 8096 hostów przed ich skanowaniem. Zachowanie takie czyni skanowanie mniej oczywistym dla wielu systemów monitorujÄcych sieci, zwÅaszcza w poÅÄczeniu z opcjÄ spowalniajÄcÄ skanowanie. Możliwe jest losowanie z jeszcze wiÄkszych grup, poprzez zmianÄ staÅej PING_GROUP_SZ w pliku nmap.h i rekompilacji. Innym rozwiÄzaniem jest wygenerowanie listy adresów IP za pomocÄ opcji lista skanowania (−sL −n −oN nazwapliku) i losowemu pomieszaniu adresów na niej za pomocÄ skryptu Perla, oraz podaniu jej Nmapowi za pomocÄ opcji −iL.
−−spoof−mac
Podaje Nmapowi adres MAC z użyciem którego bÄdÄ wysyÅane wszystkie pakiety ethernet. Opcja wÅÄcza również automatycznie −−send−eth dla uzyskania pewnoÅci wysyÅania pakietów na poziomie ethernetu. Podany adres MAC może przyjmowaÄ wiele postaci. JeÅli zostanie podany znak â0”, Nmap wybierze kompletnie losowy adres MAC na czas trwania danej sesji. Podanie parzystej iloÅci cyfr heksadecymalnych (mogÄ byÄ oddzielone dwukropkami), spowoduje wykorzystanie jej jako adresu MAC, przy czym jeÅli podano mniej niż 12 cyfr szestnastkowych, Nmap wypeÅni pozostaÅoÅÄ 6 bajtów losowymi wartoÅciami. JeÅli podany ciÄg nie jest 0 lub liczbÄ heksadecymalnÄ, Nmap poszuka w pliku nmap−mac−prefixes nazwy producenta zawierajÄcego podany ciÄg (duże i maÅe litery nie sÄ rozróżniane) i jeÅli znajdzie, użyje identyfikatora producenta OUI (3 bajty) wypeÅniajÄc pozostaÅe 3 bajty losowo. PrzykÅady poprawnych argumentów to Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2, Cisco itp.
−−badsum (WysyÅanie pakietów z nieprawidÅowÄ sumÄ kontrolnÄ TCP/UDP)
Powoduje wstawianie do nagÅówków wysyÅanych pakietów nieprawidÅowych sum kontrolnych. Jako że prawie każdy stos IP odrzuci tego typu pakiety, otrzymana odpowiedź najprawdopodobniej pochodzi od systemu zaporowego lub IDS, które nie przejmujÄ siÄ sumami kontrolnymi. DokÅadniejszy opis tej techniki znajduje siÄ pod adresem https://nmap.org/p60-12.txt
WYJÅCIE
Każde narzÄdzie jest tylko tak dobre, jak wyniki które siÄ za jego pomocÄ uzyskuje. ZÅożone testy i algorytmy nie sÄ nic warte, jeÅli ich wyniki nie sÄ zaprezentowane w odpowiedniej formie. Z zwiÄzku z tym, że użytkownicy Nmapa używajÄ go w różny sposób, także w poÅÄczeniu z innymi narzÄdziami, nie ma jednego formatu, który by wszystkich zadowoliÅ. Dlatego też Nmap oferuje kilka formatów, wÅÄczajÄc w to tryb interaktywny i tryb XML do lepszej integracji z innymi programami.
Dodatkowo poza różnymi formatami wyjÅciowymi, Nmap posiada opcje pozwalajÄce na kontrolowanie poziomu szczegóÅowoÅci dostarczanych informacji oraz komunikatów do Åledzenia bÅÄdów. Wyniki mogÄ byÄ przekazywane do standardowego wyjÅcia jak i do plików (w trybie zastÄpowania lub doÅÄczania). Wygenerowane pliki mogÄ również byÄ wykorzystywane do wznowienia przerwanych skanowaÅ.
Nmap pozwala na uzyskanie piÄciu różnych formatów raportów. DomyÅlny to format interaktywny i jest wykorzystywany w poÅÄczeniu ze standardowym wyjÅciem. Jest także format format normalny, podobny do interaktywnego, jednak wyÅwietla mniej rutynowych informacji i ostrzeżeÅ, ponieważ jest raczej przewidziany do poźniejszej analizy, niż do interaktywnego oglÄdania w trakcie skanowania.
Tryb XML jest jednym z najważniejszych, jako że może zostaÄ przekonwertowany na HTML lub bezporoblemowo przetworzony przez inne programy, takie jak graficzne interfejsy użytkownika lub zaimportowany do bazy danych.
PozostaÅe dwa najmniej skomplikowane to format pozwalajÄcy na Åatwe przetwarzanie za pomocÄ wyrażeÅ regularnych (grep), który zawiera wiÄkszoÅÄ informacji o hoÅcie w jednej linii, oraz format sCRiPt KiDDi3 0utPUt.
Podczas gdy format interaktywny jest domyÅlny i nie posiada dodatkowych opcji, pozostaÅe cztery formaty używajÄ tej samej skÅadni w postaci jednego argumentu, bÄdÄcego nazwÄ pliku do którego majÄ zostaÄ zapisane wyniki. Możliwe jest podawanie wielu formatów jednoczeÅnie, jednak każdy z nich może byÄ podany tylko raz. Na przykÅad, jeÅli chcesz zapisaÄ format normalny do późniejszego przegladania i równoczeÅnie XML do przetwarzania przez inne programy, używamy skÅadni −oX myscan.xml −oN myscan.nmap. W przykÅadach z tej dokumentacji dla uÅatwienia używamy prostych nazw, takich jak myscan.xml, jednak w codzinnym użyciu zalecane jest stosowanie nazw bardziej opisowych. Nazwy te mogÄ byÄ dowolnie wybierane, zgodnie z wÅasnymi preferencjami, osobiÅcie preferujÄ dÅugie nazwy zawierajÄce datÄ skanowania i sÅowo lub dwa opisujÄce skanowanie, umieszczone w katalogu zawierajÄcym nazwÄ firmy skanowaniej.
Podczas zapisywania wyników do pliku Nmap nadal wyÅwietla interaktywnÄ formÄ raportu na standardowe wyjÅcie. PrzykÅadowo, komenda nmap −oX myscan.xml cel zapisuje wyniki w formacie XML do pliku myscan.xml równoczeÅnie wyÅwietlajÄc je w trybie interaktywnym tak, jakby opcja −oX nie byÅa podana. Możliwa jest zmiana tego zachowania poprzez podanie znaku myÅlnika (−) zamiast nazwy pliku przy wybranym formacie, co spowoduje wyÅwietlanie go zamiast formy interaktywnej. Tak wiÄc komenda nmap −oX − cel spowoduje wyÅwietlenie tylko formatu XML na standardowym wyjÅciu stdout. Komunikaty o poważnych bÅÄdach sa nadal wyÅwietlane za pomocÄ standardowego wyjÅcia bÅÄdów stderr.
Inaczej niż przy innych opcjach, spacja pomiÄdzy opcjÄ (takÄ jak −oX), a nazwÄ pliku lub myÅlnika nie jest wymagana. JeÅli spacja zostanie pominiÄta przy opcjach takich jak −oG− lub −oXscan.xml, z powodów kompatybilnoÅci wstecznej Nmap zapisze wyniki w formacie normalnym w plikach odpowiednio G− i Xscan.xml.
Nmap posiada również opcje pozwalajÄce na ustalenie poziomu szczegóÅowoÅci podawanych informacji jak również pozwalajÄce na doÅÄczanie wyników do już istniejÄcych plików. Opcje te zostaÅy opisane poniżej.
Formaty wyjÅciowe Nmapa
−oN
Powoduje zapis w formacie normalnym do wskazanego pliku. Jak napisano wyżej, format ten różni siÄ nieco od formatu interaktywnego.
−oX
Powoduje zapis w formacie XML do wskazanego pliku. Nmap doÅÄcza definicje formatu dokumentu (DTD), który pozwala innym programom na weryfikacjÄ zawartoÅci tego pliku. Funkcja ta jest gÅównie przeznaczona do wykorzystania przez oprogramowanie dodatkowe, jednak może pomóc w rÄcznej analizie zawartych danych. DTD opisuje jakie elementy XML mogÄ byÄ legalnie uzywane w pliku i czÄsto podaje jakie wartoÅci mogÄ przyjmowaÄ poszczególne znaczniki. Zawsze aktualna DTD wersja jest dostÄpna pod adresem https://nmap.org/data/nmap.dtd.
XML jest stabilnym formatem, który może byÄ Åatwo przetwarzany przez inne programy. Darmowe biblioteki do przetwarzania XML sÄ dostÄpne dla wiÄkszoÅci jÄzyków programowania, takich jak C/C++, Perl, Python czy Java. Napisano nawet wiele procedur dostosowanych specjalnie do potrzeb Nmapa. PrzykÅadami sÄ Nmap::Scanner [11] i Nmap::Parser [12] dla Perla (CPAN). W wiekszoÅci dużych aplikacji korzystajÄcych z Nmapa preferowany jest wÅaÅnie format XML.
W formacie XML jest również opisany styl XSL, który może zostaÄ wykorzystany do konwersji do HTML. Najprostrzym sposobem jest po prostu wczytanie pliku XML do przeglÄdarki internetowej, takiej jak Firefox czy IE. DomyÅlnie zadziaÅa to tylko na komputerze na którym byÅ uruchamiany Nmap (lub skonfigurowanym podobnie), z powodu umieszczenia Åcieżki do pliku nmap.xsl wÅaÅciwej dla danego systemu. Za pomocÄ opcji −−webxml lub −−stylesheet można utworzyÄ przenoÅny raport XML, możliwy do obejrzenia w formacie HTML na każdym komputerze podÅÄczonym do Internetu.
−oS
Format script kiddie jest podobny do interaktywnego, jednak jest dodatkowo przetworzony na potrzeby l33t HaXXorZ, którzy nie byli zadowoleni z domyÅlnego, uporzÄdkowanego formatu Nmapa. Osoby bez poczucia humoru powinny wiedzieÄ przed zarzucaniem mi âpomagania script kiddies ”, że opcja ta jest tylko żartem, a nie pomocÄ.
−oG
Ten format zostaÅ opisany jako ostatni, jako że jest już przestarzaÅy. Format XML jest dużo lepszy i jest prawie tak samo wygodny dla zaawansowanych użytkowników. XML jest standardem, do którego napisano dziesiÄtki bibliotek, podczas gdy format grepowalny jest moim osobistym wymysÅem. XML pozwala również na Åatwe rozszerzanie o nowe funkcje Nmapa w miarÄ ich dodawania, podczas gdy w formacie grepowalnym muszÄ one byÄ pomijane z powodu braku miejsca.
Niezależnie od tego, format ten jest nadal caÅkiem popularny. Jest prostym formatem opisujÄcym każdy host w oddzielnej linii i umożliwiajÄcy bardzo proste wyszukiwanie i przetwarzanie za pomocÄ standardowych narzÄdzi systemów UNIX takich jak grep, awk, cut, sed, diff i Perl. Format ten jest wygodny do szybkiego odnajdywania potrzebnych danych, na przykÅad hostów z otwartym portem SSH lub używajÄcych systemu Solaris i jest to możliwe za pomocÄ wycinania interesujÄcych informacji za pomocÄ prostych poleceÅ awk czy cut.
Format grepowalny skÅada sie z linii komentarzy (rozpoczynajÄcych siÄ od znaku #) i linii wyników. Linia wyników skÅada siÄ z szeÅciu pól, oddzielonych znakami tabulacji i przecinkami. Polami tymi sÄ Host, Ports, Protocols, Ignored State, OS, Seq Index, IPID i Status.
Najważniejszymi z tych pól sÄ najczÄÅciej pola Ports, które zawierajÄ informacje o interesujÄcych portach, w postaci listy oddzielonej przecinkami. Każda pozycja na liÅcie reprezentuje jeden otwarty port i opisuje go siedmioma, oddzielonymi znakami (/) subpolami: Port number, State, Protocol, Owner, Service, SunRPC info i Version info.
Tak jak i w przypadku formaty XML, dokÅadny opis formatu grepowalnego przekracza zakres tej dokumentacji i jest dostÄpny pod adresem http://www.unspecific.com/nmap-oG-output.
−oA
Dla wygody można podaÄ opcjÄ −oAnazwa do zapisywania wyników w formacie normalnym, XML i grepowalnym równoczeÅnie. Wyniki zostanÄ zapisane odpowiednio w plikach o nazwach nazwa.nmap, nazwa.xml i nazwa.gnmap. Tak jak i w przypadku innych programów, nazwa może zostaÄ poprzedzona scieżkÄ, na przykÅad ~/nmaplogs/foocorp/ w systemach UNIX lub c:hackingsco pod Windows.
Poziom szczegóÅowoÅci i opcje diagnozowania bÅÄdów
−v (Podwyższenie poziomu raportowania)
Podwyższenie poziomu raportowania powoduje wyÅwietlanie przez Nmapa wiÄkszej iloÅci informacji na temat postÄpów skanowania. Otwarte porty sÄ pokazywane zaraz po ich wykryciu, podawany jest także przewidywany czas zakoÅczenia skanowania w przypadku kiedy Nmap zakÅada, że test potrwa dÅużej niż kilka minut. Dwukrotne użycie tej opcji powoduje dalsze powiÄkszenie poziomu szczegóÅowoÅci, trzykrotne i dalsze nie dajÄ już żadnego efektu.
WiÄkszoÅÄ zmian dotyczy trybu interaktywnego, niektóre odnoszÄ siÄ także do trybu normalnego i script kiddie. PozostaÅe formaty sÄ przystosowane do przetwarzania przez maszyny, wiÄc Nmap może zawsze podawaÄ szczegóÅowe informacje bez zmniejszania czytelnoÅci dla czÅowieka. SÄ jednak i drobne różnice w innych formatach, na przykÅad w formacie grepowalnym linia komentarza zawierajÄca listÄ skanowanych hostów jest dodawana tylko w trybie podwyższonej szczegóÅowoÅci, ze wzglÄdu na swojÄ dosyÄ znacznÄ dÅugoÅÄ.
−d [poziom] (Ustawianie poziomu Åledzenia bÅÄdów)
JeÅli dostÄpne poziomy szczegóÅowoÅci nie dostarczajÄ wystarczajÄcej iloÅci informacji, opcje Åledzenia bÅÄdów mogÄ CiÄ wrecz nimi zasypaÄ! Podobnie jak w przypadku wykorzystania opcji podwyższania szczegóÅowoÅci (−v), opcja wÅÄczajÄca umowanie nazwane Åledzenie bÅÄdów, wÅÄczana jest za pomocÄ parametru (−d) i możliwe jest jej wielokrotne dodawanie powiÄkszajÄce skutek. Alternatywnie można podaÄ poziom jako argument do opcji −d. Na przykÅad −d9 ustawia poziom na dziewiÄÄ. Jest to najwyższy możliwy poziom produkujÄcy setki linii, o ile nie jest to proste skanowanie kilku portów i hostów.
Format ten jest użyteczny jeÅli podejrzewamy istnienie bÅÄdu w Nmapie lub jeÅli po prostu chcemy wiedzieÄ co Nmap robi i czemu. Jako że opcja ta jest przeznaczona gÅównie dla autorów, wyÅwietlane linie nie zawsze sÄ do koÅca zrozumiaÅe. Można otrzymaÄ na przykÅad coÅ w stylu: Timeout vals: srtt: −1 rttvar: −1 to: 1000000 delta 14987 ==> srtt: 14987 rttvar: 14987 to: 100000. JeÅli nie rozumiesz takiego zapisu, możesz go po prostu zignorowaÄ, poszukaÄ w kodzie źródÅowym lub poprosiÄ o pomoc na liÅcie dyskusyjnej twórców Nmapa (nmap−dev). Niektóre linie sÄ dosyÄ czytelne, ale stajÄ siÄ coraz bardziej skomplikowane wraz ze wzrostem poziomu Åledzenia bÅÄdów.
−−packet−trace (Åledzenie wysyÅanych i odbieranych pakietów)
Powoduje wyÅwietlanie przez Nmapa krótkiej informacji na temat każdego wysyÅanego i odbieranego pakietu. Opcja ta jest czÄsto używana podczas Åledzenia bÅÄdów, ale zawiera również wartoÅciowe informacje dla nowych użytkowników, pozwalajÄce zrozumieÄ co Nmap robi. UnikniÄcie wyÅwietlania tysiÄcy linii możliwe jest poprzez ograniczenie iloÅci portów do skanowania, na przykÅad za pomocÄ −p20−30. JeÅli chcesz zobaczyÄ tylko to, co dzieje siÄ w trakcie wykrywania wersji, użyj raczej opcji −−version−trace.
−−iflist (Pokazuj interfejsy i tablicÄ routingu)
WyÅwietla listÄ interfejsów i tablice routingu wykryte przez Nmapa. Opcja jest przydatna przy Åledzeniu bÅÄdów w routingu lub niepoprawnym wykrywaniu typów interfejsów (na przykÅad jeÅli Nmap traktuje poÅÄczenie PPP jako ethernet).
PozostaÅe opcje
−−append−output (DoÅÄczaj wyniki do pliku)
JeÅli zostanie podana nazwa pliku jako argument do opcji takiej jak −oX czy −oN, domyÅlnie poprzednia zawartoÅÄ pliku zostanie usunÄta i zastÄpiona nowÄ. JeÅli zachodzi potrzeba zachowania poprzedniej zawartoÅci pliku i doÅÄczenie nowych wyników, należy dodaÄ opcjÄ −−append−output. Potraktowane tak zostanÄ wszystkie podane pliki. Opcja nie dziaÅa zbyt dobrze z formatem XML, jako że wynikowy plik nie może byÄ pożniej bezbÅÄdnie przetworzony bez rÄcznych poprawek.
−−resume
Niektóre skanowania Nmapa mogÄ trwaÄ bardzo dÅugo, nawet kilka dni. Problem pojawia siÄ wtedy, kiedy nie jest możliwe ciÄgÅe prowadzenie skanowania, na przykÅad z powodu potrzeby dziaÅania tylko w godzinach pracy, problemów z dostÄpnoÅciÄ sieci, (nie)przypadkowym restartem komputera na którym dziaÅa Nmap lub wykonaniem przez niego nieprawidÅowej operacji. Użytkownik może również przerwaÄ w każdej chwili skanowanie za pomocÄ kombinacji ctrl−C. W takich przypadkach ponowne rozpoczynanie testów od poczÄtku może nie byÄ pożÄdane. Na szczÄÅcie, jeÅli pozostaÅy wyniki przerwanych testów w formacie normalnym (−oN) lub grepowalnym (−oG), możliwe jest ich wznowienie od momentu przerwania. SÅuży do tego opcja −−resume dla której argumentem musi byc nazwa pliku w formacie normalnym lub grepowalnym. W tym przypadku nie jest możliwe podawanie żadnych innych opcji, jako że Nmap przetworzy podany plik i odtworzy wczeÅniej podane opcje. Po prostu uruchom nmap −−resume nazwapliku, a Nmap doÅÄczy do wskazanego pliku nowe wyniki. Opcja ta nie obsÅuguje formatu XML, jako że ÅÄczenie dwóch oddzielnych wynikÃ³Ä skanowaÅ w jeden plik jest dosyÄ trudne.
−−stylesheet <Åcieżka lub URL> (Styl XSL do transformacji formatu XML)
Nmap posiada domyÅlny styl XSL do przeglÄdania lub konwersji do formatu XML w pliku nmap.xsl. Plik wyjÅciowy XML zawiera dyrektywÄ xml−stylesheet wskazujÄcÄ na nmap.xml, ze ÅcieżkÄ do domyÅlej lokalizacji tego pliku (lub bierzÄcego katalogu pod Windows). DziÄki temu wystarczy po prostu zaÅadowaÄ plik XML Nmapa do przeglÄdarki, która sama odczyta sobie plik nmap.xsl i użyje go do prawidÅowego wyÅwietlenia wyników. Możliwe jest również użycie innego stylu poprzez podanie nazwy pliku jako argumentu dla opcji −−stylesheet. W tym przypadku konieczne jest podanie peÅnej Åcieżki lub adresu URL. Typowe wywoÅanie ma postaÄ −−stylesheet https://nmap.org/data/nmap.xsl. Dyrektywa ta nakazuje pobranie najnowszej wersji pliku ze stylem ze strony Insecure.Org. Opcja −−webxml robi dokÅadnie to samo, bÄdÄc ÅatwiejszÄ do wpisania i zapamiÄtania. Używanie pliku XSL ze strony Insecure.Org uÅatwia przeglÄdanie wyników na systemie nie posiadajÄcym zainstalowanego Nmapa (czyli nie posiadajÄcym pliku nmap.xsl). Podawanie adresu URL jest wygodniejsze, jednak domyÅlnie używany jest plik lokalny ze wzglÄdu za zachowanie poufnoÅci użytkownika.
−−webxml (Użyj stylu ze strony Insecure.Org)
Opcja jest wygodniejszym zapisem analogicznego −−stylesheet https://nmap.org/data/nmap.xsl.
−−no−stylesheet (Nie używaj deklaracji stylu XSL w formacie XML)
Dodanie tej opcji powoduje wyÅÄczenie doÅÄczania stylu XSL do pliku z wynikami w formacie XML. Zostaje pominiÄta dyrektywa xml−stylesheet.
RÃÅ»NE OPCJE
Sekcja ta opisuje istotne (i nie istotne) opcje, które nie pasowaÅy gdzie indziej.
−6 (WÅÄczenie skanowania IPv6)
Od roku 2002 Nmap obsÅuguje IPv6, w zakresie jego najpopularniejszych funkcji. W szczególnoÅci dostÄpne jest skanowanie ping (tylko TCP), connect() i wykrywanie wersji. SkÅadnia opcji jest taka sama jak zwykle, wystarczy tylko dodaÄ opcjÄ −6. OczywiÅcie w przypadku podawania adresów zamiast nazw, niezbÄdne jest podawanie ich zgodnie ze skÅadniÄ IPv6. Jako że adres może wyglÄdaÄ podobnie do 3ffe:7501:4819:2000:210:f3ff:fe03:14d0, zalecane jest używanie nazw hostów. Wyniki poza samym adresem wyglÄdajÄ tak samo jak i przy innych opcjach.
Adresacja IPv6 nie zawÅadnÄÅa jeszcze Åwiatem, jednak jest czÄsto wykorzystywana w niektórych krajach (zwykle azjatyckich) i wiÄkszoÅÄ obecnych systemów jÄ obsÅuguje. OczywiÅcie do używania IPv6 musi byÄ on prawidÅowo skonfigurowany i dostÄpny zarówno na hoÅcie skanowanym, jak i skanujÄcym. JeÅli dostawca usÅug nie umożliwia uzyskania adresów IP (najczÄÅciej tak wÅaÅnie jest), jest dużo dostawców darmowych tuneli, które dziaÅajÄ poprawnie z Nmapem. Jednymi z lepszych sÄ dostarczane przez BT Exact i Hurricane Electric na http://ipv6tb.he.net/. Tunele 6to4 sÄ innym popularnym i darmowym rozwiÄzaniem.
−A (Agresywne opcje skanowania)
WÅÄcza dodatkowe zaawansowane i agresywne opcje skanowania. Aktualnie sÄ nimi wykrywanie systemu operacyjnego (−O) i wykrywanie wersji (−sV). WiÄcej opcji byÄ może zostanie dodane w przyszÅoÅci. GÅównym celem jest proste wÅÄczenie najbardziej popularnych opcji skanowania bez koniecznoÅci zapamiÄtywania wielu parametrów. WÅÄczane sÄ tylko opcje wÅÄczajÄce okreÅlonÄ funkcjonalnoÅÄ, nie zaÅ te dotyczÄce zależnoÅci czasowych (takie jak −T4) czy poziomu szczegóÅowoÅci (−v), które można dodaÄ niezależnie.
−−datadir
Podczas pracy Nmap pobiera dodatkowe informacje z plików nmap−service−probes, nmap−services, nmap−protocols, nmap−rpc, nmap−mac−prefixes i nmap−os−fingerprints. Nmap rozpoczyna poszukiwania tych plików od katalogu podanego jako parametr dla opcji −−datadir, jeÅli zostaÅa dodana. JeÅli nie znajdzie plików w podanej lokalizacji, poszukuje ich w katalogu okreÅlonych w zmiennej Årodowiskowej NMAPDIR, a nastÄpnie w katalogu ~/.nmap dla rzeczywistego i efektywnego UID (tylko systemy POSIX) i katalogu z programem Nmap (tylko Win32). JeÅli i to nie przyniesie skutku, poszukiwane sÄ w lokalizacji podanej przy kompilacji, takiej jak /usr/local/share/nmap lub /usr/share/nmap. Na koÅcu sprawdzany jest aktualny katalog.
−−send−eth (Używanie niskopoziomowych ramek ethernet)
Opcja powoduje wysyÅanie bezpoÅrednio ramek niskiego poziomu ethernet (warstwa danych), zamiast poprzez stos IP (warstwa sieci). DomyÅlnie Nmap wybiera metodÄ, która jest ogólnie lepsza dla danej platformy, na której jest uruchomiony. Gniazda raw (warstwa IP) sÄ efektywniejsze w przypadku systemów UNIX, podczas gdy ramki ethernet sÄ niezbÄdne w przypadku systemów Windows, od czasu kiedy to Microsoft wyÅÄczyÅ obsÅugÄ gniazd raw. JeÅli nie ma innej możliwoÅci, Nmap w systemach UNIX wybierze metodÄ ethernet, pomijajÄc wybranÄ przez użytkownika i niedostÄpnÄ opcjÄ.
−−send−ip (WysyÅaj pakiety raw IP)
WÅÄcza wysyÅanie pakietów przez gniazda raw IP, zamiast przez ramki ethernet. Opcja jest przeciwieÅstwem opisanej wyżej opcji −−send−eth.
−−privileged (ZakÅadaj że użytkownik ma odpowiednie uprawnienia)
Informuje Nmapa, że użytkownik jest wystarczajÄco uprzywilejowany aby korzystaÄ z wysyÅania pakietów za pomocÄ gniazd raw, podsÅuchiwania pakietów i podobnych operacji zwykle wymagajÄcych uprwawnieÅ roota w systemach UNIX. DomyÅlnie Nmap przerywa dziaÅanie w momencie wykrycia próby wykonania takich operacji i funkcja geteuid() nie zwraca wartoÅci zero. Opcja −−privileged jest użyteczna w systemach Linux posiadajÄcych możliwoÅci odpowiedniego przywilejowania użytkowników do przeprowadzania wymienionych operacji. Upewnij siÄ, że opcja zostaÅa podana przed innymi opcjami wymagajÄcymi podwyższonych uprwanieÅ (skanowanie SYN, wykrywanie systemu operacyjnego itp). Zmienna NMAP_PRIVILEGED może zostaÄ ustawiona jako alternatywa dla wykorzystania opcji −−privileged.
−V; −−version (WyÅwietl numer wersji)
WyÅwietla tylko numer wersji Nmapa.
−h; −−help (WyÅwietl pomoc)
WyÅwietla krótki ekran pomocy opisujÄcy najpopularniejsze opcje, podobnie jak uruchomienie Nmapa bez parametrów.
INTERAKCJA W CZASIE PRACY
Podczas pracy Nmapa, przechwytywane sÄ wszystkie naciÅniÄcia klawiszy. Pozwala to na interakcjÄ z programem bez przerywania go lub restartowania. Niektóre specjalne klawisze zmieniajÄ opcje, inne wyÅwietlajÄ status skanowania. Konwencja zakÅada, że maÅe litery zmniejszajÄ iloÅÄ informacji, a duże litery powiÄkszajÄ. Można również nacisnÄÄ ‘?’ dla
v / V
ZwiÄkszenia / Zmniejszenia poziomu szczegóÅowoÅci
d / D
ZwiÄkszenia / Zmniejszenia poziomu Åledzenia bÅÄdów
p / P
WÅÄczenia / WyÅÄczenia Åledzenia pakietów
?
WyÅwietlenia ekranu pomocy
Wszystko inne
WyÅwietla status w postaci:
Stats: 0:00:08 elapsed; 111 hosts completed (5 up), 5 undergoing Service Scan
Service scan Timing: About 28.00% done; ETC: 16:18 (0:00:15 remaining)
PRZYKÅADY
Poniżej przedstawiono przykÅady wykorzystania Nmapa, od prostych i rutynowych do trochÄ bardziej skomplikowanych i ezoterycznych. PrzykÅadowe adresy IP i nazwy domen powinny zostaÄ zastÄpione adresami/nazwami z twojej wÅasnej sieci. Nie uważam, że skanowanie portów powinno byÄ nielegalne, jednak niektórzy administratorzy nie tolerujÄ nie autoryzowanego skanowania ich sieci i mogÄ zgÅaszaÄ swoje protesty. Uzyskanie zgody jest pierwszym wyzwaniem.
Do celu testów, masz zgodÄ do skanowania hosta scanme.nmap.org. Zgoda pozwala jedynie na skanowanie za pomocÄ Nmapa, nie zaÅ na testowanie exploitów czy przeprowadzanie ataków typu Denial of Service. Dla oszczÄdnoÅci pasma, proszÄ nie uruchamiaj wiÄcej niż tuzina skanowaÅ tego hosta dziennie. W przypadku nadużyÄ, host zostanie wyÅÄczony, a Nmap bÄdzie zwracaÅ komunikat Failed to resolve given hostname/IP: scanme.nmap.org. pozwolenie dotyczy także adresów scanme2.nmap.org, scanme3.nmap.org i nastÄpnych, choÄ hosty te jeszcze nie istniejÄ.
nmap −v scanme.nmap.org
Pozwoli na przeskanowanie wszystkich portów TCP adresu scanme.nmap.org. Opcja −v podwyższy poziom szczegóÅowoÅci zwracanych informacji.
nmap −sS −O scanme.nmap.org/24
Uruchamia skanowanie SYN wszystkich 255 hostów znajdujÄcych siÄ w tej samej klasie âC”, co host scanme.nmap.org. Dodatkowo wykonywana jest próba detekcji systemu operacyjnego dla każdego hosta, który jest aktywny. Wymaga to uprawnieÅ użytkownika root, z powodu wykorzystania skanowania SYN i wykrywania systemu operacyjnego.
nmap −sV −p 22,53,110,143,4564 198.116.0−255.1−127
Uruchamia enumeracjÄ hostów i skanowanie TCP pierwszej poÅowy każej z 255 możliwych 8−mio bitowych podsieci klasy B 198.116. Wykrywane jest dziaÅanie usÅug sshd, DNS, pop3d, imapd i portu 4564. Dla każdego z tych portów, który zostaÅ wykryty jako otwarty przeprowadzane jest wykrywanie wersji dziaÅajÄcej aplikacji.
nmap −v −iR 100000 −P0 −p 80
Poleca Nmapowi na wybranie 100,000 losowych hostów i przeskanowanie ich w poszukiwaniu serwerów WWW (port 80). Enumeracja hostów jest wyÅÄczona za pomocÄ opcji −P0, ponieważ wysyÅanie najpierw pakietów w celu okreÅlenia czy host jest aktywny nie ma sensu, jako że i tak jest wykonywany test tylko na jednym porcie per host.
nmap −P0 −p80 −oX logs/pb−port80scan.xml −oG logs/pb−port80scan.gnmap 216.163.128.20/20
Skanuje 4096 adresów IP w poszukiwaniu serwerów WWW (bez pingowania ich) i zapisuje wyniki w plikach XML i grepowalnym.
BÅÄDY
Jak i jego autor, Nmap nie jest doskonaÅy. Możesz jednak pomóc przysyÅajÄc raporty dotyczÄce bÅÄdów lub nawet wysyÅajÄc wÅasne poprawki. JeÅli Nmap nie zachowuje sie w sposób którego oczekujesz, zacznij od aktualizacji do najnowszej wersji dostÄpnej pod adresem https://nmap.org/. JeÅli problem nadal wystÄpuje, wykonaj trochÄ testów dla okreÅlenia czy podobny problem nie zostaÅ już wykryty i oznaczony. Spróbuj poszukaÄ Googlem komunikatu bÅÄdu lub poprzeglÄdaj archiwa listy dyskusyjnej Nmap−dev pod adresem http://seclists.org/. Przeczytaj również caÅa dokumentacjÄ. JeÅli nic nie pomoże, wyÅlij raport opisujÄcy bÅÄd po angielsku na adres
Poprawki bÅÄdnego kodu sÄ milej widziane, niż opisy bÅedów. Podstawowe instrukcje tworzenia poprawek sÄ opisane na stronie https://nmap.org/data/HACKING. Poprawki mogÄ byÄ wysyÅane na nmap−dev (rekomendowane) lub bezpoÅrednio do Fyodora.
AUTOR
Fyodor
Setki ludzi wniosÅy wartoÅciowy wkÅad w rozwój Nmapa. SzczegóÅy sÄ zamieszczane w pliku CHANGELOG, który jest rozpowszechniany z Nmapem i jest również dostÄpny pod adresem https://nmap.org/changelog.html.
UWARUNKOWANIA PRAWNE
Unofficial Translation Disclaimer / OÅwiadczenie dotyczÄce tÅumaczenia
This is an unnofficial translation of the Nmap license details [13] into polish. It was not written by Insecure.Com LLC, and does not legally state the distribution terms for Nmap −− only the original English text does that. However, we hope that this translation helps polish speakers understand the Nmap license better.
To jest nieoficjalne tÅumaczenie licencji Nmapa [13] na jÄzyk polski. Nie zostaÅo ono napisane przez Insecure.Com LLC, i przez to nie może byÄ uważane za wiÄżÄce, tak jak jego angielska wersja, jednakże uważamy, że tÅumaczenie to pozwoli lepiej zrozumieÄ licencjÄ Nmapa.
Prawa autorskie i licencjonowanie Nmap
Prawa autorskie (1996−2005) do programu Nmap Security Scanner posiada Insecure.Com LLC. Nmap jest także zastrzeżonym znakiem towarowym Insecure.Com LLC. Ten program jest wolnym oprogramowaniem; możliwa jest jego redystrybucja i/lub modyfikowanie zgodnie z zasadami licencji GNU General Public License opublikowanej przez Free Software Foundation; Wersja 2. Gwarantuje ona prawo do używania, modyfikowania i redystrybucji tego oprogramowania pod pewnymi warunkami. JeÅli technologia Nmapa jest integrowana z innymi programami, możliwa jest sprzedaż alternatywnych licencji (kontakt
GPL nakÅada isotne ograniczenia w stosunku do âproduktów pochodnych ”, jednak nie jest jeszcze dostÄpna dokÅadna ich definicja. Dla unikniÄcia nieporozumieÅ zakÅadamy, że aplikacja jest produktem pochodnym w przypadku gdy speÅnia któryÅ z warunków:
• Integruje kod źródÅowy Nmapa
• Odczytuje lub doÅÄcza chronione prawami autorskimi pliki Nmapa, takie jak nmap−os−fingerprints czy nmap−service−probes.
• Uruchamia Nmapa i przetwarza jego wyniki (w odróżnieniu od aplikacji, które uruchamiajÄ Nmapa i wyÅwietlajÄ nie przetworzone raporty i przez to nie sÄ produktami pochodnymi).
• IntegrujÄ/wÅÄczajÄ/agregujÄ Nmapa w wykonywalnym instalatorze, tak jak stworzone za pomocÄ InstallShield.
• WykorzystujÄ bibliotekÄ lub program wykonujÄcy jedno z powyższych.
Warunki âNmapa” powinny dotyczyÄ czÄÅci i pochodnych programu Nmap. Powyższa lista ma na celu klarowne przedstawienie naszej interpretacji programów pochodnych z przykÅadami. Ograniczenia dotyczÄ tylko przypadków, w których Nmap jest rozpowszechniany razem z programem pochodnym. Na przykÅad nic nie stoi na przeszkodzie napisania i sprzedawania wÅasnego interfejsu do Nmapa. Wystarczy rozprowadzaÄ go oddzielnie podajÄc użytkownikom adres https://nmap.org/ do pobierania Nmapa.
Nie uważamy tego za ograniczenia dodane do GPL, ale jako klarownÄ interpretacjÄ âprogramów pochodnych”, jako że dotyczy to naszego produktu opartego na GPL. Jest to zbliżone do sposobu w jaki Linus Torvalds opublikowaÅ swojÄ interpretacjÄ dotyczÄcÄ âprogramów pochodnych”, opartych na moduÅach kernela Linuxa. Nasza interpretacja odnosi siÄ tylko do Nmapa − nie mówimy o żadnym innym produkcie GPL.
JeÅli masz jakiekolwiek pytania dotyczÄce ograniczeÅ licencji GPL przy zastosowaniach Nmapa w produktach nie opartych na GPL, chÄtnie pomożemy. Jak wspomniano wyżej, oferujemy także alternatywnÄ licencjÄ do integrowania Nmapa we wÅasnych aplikacjach i urzÄdzeniach. Licencje na integracjÄ Nmapa zostaÅy sprzedane wielu producentom oprogramowania zwiÄzanego z bezpieczeÅstwem i ogólnie zawierajÄ dożywotniÄ licencjÄ oraz dostarczajÄ priorytetowego wsparcia technicznego wraz z aktualizacjami i pomagajÄ opÅaciÄ dalszy rozwój Nmapa. ProszÄ o kontakt z
Jako specjalny wyjÄtek dla warunków GPL, Insecure.Com LLC zezwala na linkowanie kodu tego programu z dowolnÄ wersjÄ biblioteki OpenSSL, która jest dystrybuowana na licencji identycznej do umieszczonej w pliku Copying.OpenSSL oraz na dystrybucjÄ obu w postaci zlinkowanej. Musisz przestrzegaÄ licencji GPL we wszystkich aspektach wykorzystania kodu, innym niż OpenSSL. JeÅli zmodyfikujesz wspomniany plik, możesz rozszerzyÄ ten wyjÄtek o TwojÄ wersjÄ, ale nie jesteÅ do tego zobligowany.
JeÅli otrzymaÅeÅ(aÅ) te pliki z pisemnÄ licencjÄ lub kontraktem zmieniajÄcym powyższe zapisy, majÄ one pierwszeÅstwo nad umieszczonymi tutaj.
Licencja Creative Commons dla tego podrÄcznika Nmap
Prawa (2005) do tego podrÄcznika Nmapa posiada Insecure.Com LLC. Jest on udostÄpniany w oparciu o wersjÄ 2.5 licencji Creative Commons Attribution License [2] . Pozwala ona na redystrybucjÄ i modyfikowanie w potrzebnym zakresie tak dÅugo, jak zostanie podane oryginalne źródÅo. Alternatywnie możesz traktowaÄ ten dokument jako udostÄpniany na takiej samej licencji jak Nmap (opisanej wczeÅniej).
DostÄpnoÅÄ kodu źródÅowego i wkÅad spoÅecznoÅci
Kod źródÅowy dla tego programowania jest dostÄpny, ponieważ uważamy, że użytkownicy majÄ prawo wiedzieÄ dokÅadnie co program robi, zanim go uruchomiÄ. Pozwala to także na przeprowadzenie audytu kodu pod kÄtem bezpieczeÅstwa (jak dotÄd nie wykryto problemu tego typu).
Kod źródÅowy pozwala również na przenoszenie Nmapa na nowe platformy, na poprawianie bÅÄdów i dodawanie nowych funkcji. Mocno zachÄcamy do wysyÅania swoich zmian na adres
Brak gwarancji
Program ten jest rozpowszechniany z nadziejÄ, że bÄdzie użyteczny, jednak BEZ Å»ADNEJ GWARANCJI; także bez zaÅożonej gwarancji PRZYDATNOÅCI HANDLOWEJ lub PRZYDATNOÅCI DO OKREÅLONYCH ZASTOSOWAÅ. Zobacz licencjÄ GNU General Public License dla dalszych szczegóÅów pod adresem http://www.gnu.org/copyleft/gpl.html, jej polskie nieoficjalne tÅumaczenie http://www.gnu.org.pl/text/licencja-gnu.html lub w pliku COPYING doÅÄczanym do Nmapa.
Należy również zwróciÄ uwagÄ, że Nmap okazjonalnie potrafi spowodowaÄ zaprzestanie dziaÅania źle napisanych aplikacji, stosu TCP/IP lub nawet caÅego systemu operacyjnego. Jest to bardzo rzadko spotykane, ale ważne jest, aby o tym pamiÄtaÄ. Nmap nie powinien byÄ nigdy uruchamiany przeciwko systemom krytycznym, o ile nie jesteÅ przygotowany(a) na ewentualnÄ przerwÄ w dziaÅaniu. Potwierdzamy, że Nmap może spowodowaÄ awariÄ systemów lub sieci i wypieramy siÄ jakiejkolwiek odpowiedzialnoÅci za uszkodzenia lub problemy spowodowane przez jego dziaÅanie.
Nieodpowiednie użycie
Z powodu istnienia niewielkiego ryzyka spowodowania awarii i ponieważ niektóre czarne kapelusze lubiÄ używaÄ Nmapa do wykonania rekonesansu przed atakiem systemu, administratorzy mogÄ siÄ denerwowaÄ i zgÅaszaÄ swoje protesty z powodu skanowania ich systemów. Z tego powodu, najczÄÅciej zalecane jest uzyskanie odpowiedniej zgody przed wykonaniem nawet delikatnego skanowania sieci.
Z powodów bezpieczeÅstwa, Nmap nie powinien byÄ nigdy instalowany ze specjalnymi uprawnieniami (np. suid root).
Oprogramowanie firm trzecich
Ten produkt zawiera oprogramowanie stworzone przez Apache Software Foundation [14] . Zmodyfikowana wersja biblioteki Libpcap portable packet capture library [15] jest doÅÄczana do dystrybucji Nmapa. Wersja Nmapa dla systemu Windows wykorzystuje opartÄ na libpcap bibliotekÄ WinPcap [16] (zamiast libpcap). ObsÅugÄ wyrażeÅ regularnych zapewnia biblioteka PCRE [17] , która jest oprogramowaniem open source, napisanym przez Philip Hazel. Niektóre funkcje dotyczÄce niskiego poziomu sieci wykorzystujÄ bibliotekÄ Libdnet [18] , napisanÄ przez Dug Songa. Zmodyfikowana jej wersja jest doÅÄczana do dystrybucji Nmapa. Nmap może byÄ opcjonalnie linkowany z bibliotekÄ kryptograficznÄ OpenSSL [19] , używanÄ do detekcji wersji SSL. Wszystkie opisane w tym paragrafie programy firm trzecich sÄ rozpowszechniane na licencji BSD.
Klasyfikacja eksportowa Stanów Zjednoczonych Ameryki PóÅnocnej
US Export Control: Insecure.Com LLC wierzy, że Nmap kwalifikuje siÄ pod oznaczenie US ECCN (export control classification number) 5D992. Kategoria ta jest opisana jako âOprogramowanie dotyczÄce bezpieczeÅstwa informacji nie objÄte 5D002”. Jedynym ograniczeniem tej kategorii jest AT (anty−terroryzm), która odnosi siÄ do wiÄkszoÅci dóbr i zabrania eksportu do niektórych awanturniczych krajów takich jak Iran czy PóÅnocna Korea. Z tego powodu Nmap nie wymaga żadnej specjalnej licencji, zgody lub innych autoryzacji rzÄdu USA.
PRZYPISY
1. |
oryginalnej dokumentacji Nmapa |
https://nmap.org/man/
2. |
Creative Commons Attribution License |
http://creativecommons.org/licenses/by/2.5/
3. |
HTML |
https://nmap.org/man/pl/
4. |
NROFF |
https://nmap.org/data/man-xlate/nmap-pl.1
5. |
XML |
https://nmap.org/data/man-xlate/nmap-man-pl.xml
6. |
RFC 1122 |
http://www.rfc-editor.org/rfc/rfc1122.txt
7. |
RFC 792 |
http://www.rfc-editor.org/rfc/rfc792.txt
8. |
UDP |
http://www.rfc-editor.org/rfc/rfc768.txt
9. |
TCP RFC |
http://www.rfc-editor.org/rfc/rfc793.txt
10. |
RFC 959 |
http://www.rfc-editor.org/rfc/rfc959.txt
11. |
Nmap::Scanner |
http://sourceforge.net/projects/nmap-scanner/
12. |
Nmap::Parser |
http://www.nmapparser.com
13. |
Nmap license details |
https://nmap.org/man/man-legal.html
14. |
Apache Software Foundation |
http://www.apache.org
15. |
Libpcap portable packet capture library |
http://www.tcpdump.org
16. |
WinPcap |
http://www.winpcap.org
17. |
PCRE |
http://www.pcre.org
18. |
Libdnet |
http://libdnet.sourceforge.net
19. |
OpenSSL |
http://www.openssl.org