NMAP(1) Opis programu Nmap NMAP(1) NAZWA nmap - Narzedzie do eksploracji sieci i skaner portow/zabezpieczen STRESZCZENIE nmap [Typ Skanowania...] [Opcje] {specyfikacja celu} OPIS Nmap (ang. ,,Network Mapper") jest narzedziem open source do eksploracji sieci i audytow bezpieczenstwa. Zostal zaprojektowany do szybkiego skanowania duzych sieci, ale rowniez dziala dobrze w stosunku do pojedynczych adresow. Nmap wykorzystuje niskopoziomowe pakiety IP do wykrywania ktore adresy sa dostepne w sieci, jakie udostepniaja uslugi (nazwa aplikacji i wersja), na jakich systemach operacyjnych pracuja (wersja systemu), jakie typy systemow zaporowych (firewall) sa wykorzystywane i dziesiatek innych cech. Nmap jest powszechnie wykorzystywany do audytow bezpieczenstwa, rowniez wielu administratorow sieci i systemow wykorzystuje go wykonywania rutynowych czynnosci, takich jak inwentaryzacja zasobow sieci, zarzadzanie aktualizacjami oprogramowania i monitorowania systemow oraz ich czasu dzialania (uptime). Wynikiem dzialania Nmapa jest lista przeskanowanych adresow z dodatkowymi informacjami zaleznymi od wykorzystanych opcji. Jedna z glownych informacji jest ,,lista interesujacych portow". Zawiera ona numery portow wraz z protokolami, nazwami uslugi i wykrytym stanem. Stan moze zostac opisany jako otwarty, filtrowany, zamkniety, lub niefiltrowany. Otwarty oznacza, ze aplikacja na badanym adresie oczekuje na polaczenia/pakiety przychodzace na ten port. Filtrowany oznacza, ze system zaporowy lub inne urzadzenie blokujace ruch sieciowy nie dopuszcza komunikacji do tego portu i z tego powodu Nmap nie jest w stanie okreslic czy badany port jest otwarty czy zamkniety. Zamkniety port nie posiada aplikacji, ktora obsluguje komunikacje sieciowa. Porty sklasyfikowane jako niefiltrowane odpowiadaly na zapytania Nmapa, jednak nie bylo mozliwe okreslenie, czy byly one otwarte czy zamkniete. Nmap raportuje kombinacje stanow otwarty|filtrowany i zamkniety|filtrowany jesli nie jest w stanie okreslic, ktory z dwoch podanych stanow lepiej opisuje stan portu. Lista portow moze rowniez zawierac informacje o wykrytych wersjach oprogramowania, jesli zostala wlaczona detekcja wersji. Jesli zostala wybrana opcja skanowania dostepnych protokolow (-sO), Nmap zamiast listy portow dostarczy informacji na temat dostepnosci poszczegolnych protokolow IP. Poza lista interesujacych portow, Nmap moze dostarczyc dodatkowych informacje na temat badanych adresow, takich jak odwrotne nazwy DNS, prawdopodobne systemy operacyjne, typu urzadzen i adresy sprzetowe MAC. Typowy wynik skanowania Nmapa jest przedstawiony w Przyklad 1, ,,Przykladowe wyniki skanowania Nmapa". W tym przypadku wykorzystano tylko opcje -A, wykrywajaca wersje systemu operacyjnego, -T4 dla szybszego dzialania i dwa adresy docelowe. Przyklad 1. Przykladowe 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 400x250; 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 Najnowsza wersje Nmapa mozna pobrac z https://nmap.org/. Najnowsza wersja dokumentacji man jest dostepna pod adresem https://nmap.org/man/. UWAGI DO TLUMACZENIA Przemyslaw Galczewski (http://www.avet.com.pl) Dokument ten zawiera nieoficjalne polskie tlumaczenie oryginalnej dokumentacji Nmapa[1] w wersji 2991. Dolozylem wszelkich staran, aby bylo ono jak najbardziej zblizone do oryginalu, a przy tym fachowe i zrozumiale. Nie jest przy tym gwarantowane, ze jest ono tak samo dokladne i aktualne jak oficjalna wersja angielska. Dokument ten moze byc modyfikowany i rozpowszechniany na zasadach Creative Commons Attribution License[2]. Polska wersja tego dokumentu jest dostepna w formatach HTML[3], NROFF[4] i XML[5]. Wszelkie uwagi dotyczace tlumaczenia prosze kierowac bezposrednio do mnie. SKROCONA LISTA OPCJI Skrocona lista opcji jest wyswietlana przy uruchomieniu Nmapa bez dodatkowych parametrow, a jej najnowsza wersja jest zawsze dostepna pod adresem https://nmap.org/data/nmap.usage.txt. Skrocona lista pozwala latwiej zapamietac najpopularniejsze opcje, ale nie zastapi wglebienia sie w reszte tej dokumentacji. Wiele z pozostalych opcji nie jest nawet zawartych na liscie skroconej. Uzycie: nmap [Typ(y) skanowania] [Opcje] {specyfikacja celu} SPECYFIKACJA CELU: Mozna podac nazwy hostow, adresy IP, sieci, itp. Przyklady: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254 -iL : Odczytanie listy hostow/sieci z pliku -iR : Wybranie losowych adresow --exclude : Wylaczenie hostow/sieci --excludefile : Wylaczenie listy hostow/sieci z pliku WYKRYWANIE HOSTOW: -sL: Lista skanowania - tylko wyswietla liste hostow do skanowania -sP: Skanowanie Ping - tylko wykrywanie dostepnosci hostow -P0: Traktuj wszystkie hosty jako dostepne - pomijanie wykrywania -PS/PA/PU [lista_portow]: Wykrywanie TCP SYN/ACK lub UDP na wybranych portach -PE/PP/PM: Zykrywanie za pomoca ICMP echo, timestamp, zapytania o maske sieci -n/-R: Nie uzywaj zapytan DNS/Zawsze odpytuj DNS [domyslnie: czasami] --dns-servers : Uzywaj okreslonych serwerow DNS --system-dns: Uzywaj systemowych ustawien 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 : Reczne narzucanie flag TCP -sI : Idlescan -sO: Skanowanie protokolow IP -b : Skanowanie FTP bounce SPECYFIKACJA PORTOW I KOLEJNOSCI SKANOWANIA: -p : Skanuj tylko podane porty Przyklad: -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 - wylaczenie losowania kolejnosci DETEKCJA USLUG/WERSJI: -sV: Wykrywaj wersje uslugi na otwartych portach --version-intensity : Od 0 (tylko niektore) do 9 (Uzywaj wszystkich testow) --version-light: Limituj do najpopularniejszych testow (poziom 2) --version-all: Uzywaj wszystkich testow (poziom 9) --version-trace: Pokazuj dokladne informacje podczas skanowania (do usuwania bledow) DETEKCJA OS: -O: Wlaczenie wykrywania systemu operacyjnego --osscan-limit: Limitowanie wykrywania OS do obiecujacych hostow --osscan-guess: Zgaduj wersje OS bardziej agresywnie WYDAJNOSC I ZALEZNOSCI CZASOWE: -T[0-5]: Ustaw szablon (wyzszy jest szybszy) --min-hostgroup/max-hostgroup : Rozmiary grup do rownoleglego skanowania --min-parallelism/max-parallelism : Zrownoleglenie testow --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout : Specyfikuje czas testow --max-retries : Ustala ilosc mozliwych powtorzen testu --host-timeout : Pomijaj po zadanym czasie --scan-delay/--max-scan-delay : Ustalenie opoznienia pomiedzy testami OPCJE FIREWALL/IDS: -f; --mtu : fragmentacja pakietow (opcjonalnie z podanym MTU) -D : Ukrywaj skanowanie za pomoca innych hostow -S : Podmieniaj adres nadawcy -e : Uzywaj podanego interfejsu -g/--source-port : Uzywaj podanego portu zrodlowego --data-length : Dodawaj losowe dane do wysylanych pakietow --ttl : Ustaw czas zycia pakietow --spoof-mac : Podmieniaj adres MAC --badsum: Wysylaj pakiety z nieprawidlowa suma kontrolna TCP/UDP WYJSCIE: -oN/-oX/-oS/-oG : Zapisz wyniki w podanym pliku normalnie, w XML, s|: Zapisz wyniki w trzech formatach jednoczesnie -v: Podwyzszenie poziomu raportowania (podwojne uzycie powieksza efekt) -d[poziom]: Ustaw lub podwyzsz poziom debugowania (do najwyzszego 9) --packet-trace: Pokazuj wszystkie wysylane i odbierane pakiety --iflist: Wyswietl liste interfejsow i routingu (do wykrywania bledow) --append-output: Dolacz nowe wyniki do juz istniejacych w pliku --resume : Wznow przerwane skanowanie --stylesheet : plik styli XSL do konwersji wynikow w XML do formatu HTML --webxml: Domyslny styl z Insecure.Org --no-stylesheet: Wylaczenie dodawania styli do plikow z wynikami XML ROZNE: -6: Wlaczenie skanowania IPv6 -A: Wlaczenie detekcji OS i wersji uslug --datadir : Podanie katalogu z plikami danych Nmapa --send-eth/--send-ip: Wysylaj za pomoca ramek ethernet lub pakietow IP --privileged: Zakladaj ze uzytkownik ma odpowiednie uprawnienia -V: Wyswietl numer wersji Nmapa -h: Wyswietl strone pomocy PRZYKLADY: 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 opcja Nmapa w parametrach wywolania (lub jej argumentem) jest traktowane jako specyfikacja celu skanowania. Najprostszym przypadkiem jest sam adres do przeskanowania. Czasami chcesz przeskanowac cala siec, dlatego Nmap obsluguje format CDIR. Mozesz dolaczyc do adresu /iloscbitow i nmap przeskanuje kazdy adres, ktory zawiera sie w podanym zakresie. Na przyklad, 192.168.10.0/24 przeskanuje 256 adresow pomiedzy 192.168.10.0 (binarnie: 11000000 10101000 00001010 00000000) i 192.168.10.255 (binarnie: 11000000 10101000 00001010 11111111) wlacznie. Podanie 192.168.10.40/24 spowoduje dokladnie takie samo zachowanie. Zalozmy, ze host scanme.nmap.org ma adres 205.217.153.62, podanie scanme.nmap.org/16 spowoduje przeskanowanie 65,536 adresow IP pomiedzy 205.217.0.0 i 205.217.255.255. Najmniejsza dopuszczalna wartosc to /1, co stanowi polowe Internetu. Najwieksza wartosc to 32, ktora oznacza skanowanie pojedynczego adresu IP. Notacja CIDR jest krotka i zwiezla, jednak nie zawsze wystarczajaco elastyczna. Na przyklad, chcesz przeskanowac 192.168.0.0/16 z pominieciem wszystkich adresow konczacych sie .0 i .255, poniewaz sa one najczesciej adresami typu broadcast. Nmap obsluguje to poprzez podawanie zakresow adresow za pomoca oktetow. Zamiast podawac normalny adres IP, mozesz podac liste adresow lub zakresow oddzielona przecinkami. Na przyklad 192.168.0-255.1-254 pominie wszystkie adresy konczace sie .0 lub .255. Zakresy nie sa limitowane do koncowych oktetow: podanie 0-255.0-255.13.37 pozwoli na przeskanowanie wszystkich adresow konczacych sie 13.37. Tego typu skanowania moga byc przydatne podczas przeprowadzania badan Internetu. Adresy IPv6 moga byc podawane jedynie w pelnej formie IPv6 lub nazwy hosta. Zapis z wykorzystaniem CIDR i zakresow nie jest obslugiwany przy IPV6, jednak rzadko byloby to przydatne. Nmap akceptuje podawanie wielu hostow w linii polecen i nie musza one byc 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 sa podawane w linii polecen, jednak ponizsze opcje pozwalaja na alternatywna specyfikacje celu: -iL (Odczytanie z pliku) odczytuje specyfikacje celu z pliku plik-wejsciowy. Podawanie dlugiej listy adresow z linii polecen jest dosyc niewygodne. Na przyklad Twoj serwer DHCP moze posiadac liste 10,000 aktualnie dzierzawionych adresow, ktore chcesz przeskanowac. Mozliwe rowniez, ze chcesz przeskanowac wszystkie adresy IP z wykluczeniem aktualnie dzierzawionych aby uzyskac liste nielegalnie przypisanych adresow statycznych. Po prostu wygeneruj liste adresow i podaj ja Nmapowi jako argument do parametru -iL. Poszczegolne definicje moga byc zgodne z dowolnym formatem akceptowanym przez Nmapa w linii polecen (adres IP, nazwa, CIDR, IPv6 lub zakres). Kazdy wpis musi byc oddzielony od nastepnego za pomoca jednej (lub wiecej) spacji, znakow tabulacji lub znakow nowej linii. Mozesz rowniez podac znak (-) zamiast nazwy pliku jesli chesz aby Nmap pobral adresy ze standardowego wejscia zamiast z pliku. -iR (Wybierz losowe cele) Do przeprowadzania badan Internetu, mozesz uzywac wyboru losowych adresow. Argument ilosc hostow informuje Nmapa ile losowych adresow ma wygenerowac. Adresy prywatne, typu multicast lub niewykorzystywane sa automatycznie pomijane przy generowaniu. Argument 0 pozwala na przeprowadzanie skanowania bez konca. Pamietaj, ze niektorzy administratorzy nie lubia skanowania ich sieci i moze sie im to nie spodobac. Uzywaj tej opcji na wlasne ryzyko! Jesli poczujesz sie naprawde znudzony w deszczowe popoludnie, wyprubuj komende nmap -sS -PS80 -iR 0 -p 80 do wykrycia losowych serwerow WWW do przegladania udostepnianych przez nie stron. --exclude (Wylaczenie hostow/sieci) Podana lista celow do wylaczenia z zakresu skanowania, jesli wchodza w zakres aktualnego skanowania. Lista musi byc podana zgodnie ze standardowym formatem akceptowanycm przez Nmapa, wiec moze zawierac nazwy, adresy w formacie CDIR, zakresy, itp. Opcja ta jest przydatna, jesli siec ktora chcesz przeskanowac zawiera systemy nietykalne lub krytyczne, o ktorych wiadomo, ze nie toleruja dobrze skanowania lub tez sieci administrowane przez innych ludzi. --excludefile (Lista wylaczen z pliku) Opcja ta oferuje taka sama funkcjonalnosc jak --exclude z ta roznica, ze wykluczone cele (oddzielone spacjami, znakami tabulacji lub nowej linii) sa pobierane z pliku plik_wylaczen, a nie z linii polecen. WYKRYWANIE HOSTOW Jednym z pierwszych krokow rekonesansu sieciowego jest redukcja (czasami ogromnych) zakresow adresow IP do listy aktywnych lub interesujacych hostow. Skanowanie kazdego portu na kazdym adresie IP jest wolne i przewaznie niepotrzebne. Oczywiscie to co czyni host interesujacym glownie zalezy od celu skanowania. Administratorzy sieci moga byc zainteresowani hostami udostepniajacymi okreslona usluge podczas gdy audytorzy bezpieczenstwa moga chciec przyjrzec sie kazdemu urzadzeniu posiadajacemu adres IP. Administratorowi moze wystarczac wykorzystanie pinga ICMP do zlokalizowania hostow w jego wewnetrznej sieci, podczas gdy audytor przeprowadzajacy zewnetrzne testy penetracyjne moze wykorzystywac dziesiatki roznych testow do ominiecia regul filtrowania systemu zaporowego. Poniewaz niezbedne sa rozne metody wykrywania hostow, Nmap oferuje szeroki wachlarz opcji pozwalajacych na wybieranie wykorzystywanych technik. Wykrywanie hostow czesto jest zwane skanowaniem Ping, jednak wykracza daleko poza proste wysylanie zapytania ICMP echo request znanego z programu ping. Uzytkownik moze pominac etap wykrywania poprzez wykorzystanie opcji skanowania listy (-sL), poprzez wylaczenie pingowania (-P0) lub wykorzystania roznych kombinacji wieloportowego badania za pomoca testow TCP SYN/ACK, UDP, i ICMP. Celem tych testow jest uzyskanie informacji o adresach IP, ktore sa aktualnie dostepne (sa wykorzystywane przez urzadzenie sieciowe lub komputer). W przypadku wielu sieci tylko maly procent wykorzystywanych adresow IP jest rownoczesnie aktywnych. Jest to szczegolnie powszechne w sieciach prywatnych zgodnych z adresacja RFC1918, takich jak 10.0.0.0/8. Ta siec zawiera 16 milionow adresow IP, ale widzialem nie raz firmy wykorzystujace niecaly tysiac z nich. Opcja wykrywania hostow pozwala na szybkie wykrycie rzeczywiscie wykorzystywanych adresow IP z calej dostepnej puli. Jesli nie podano opcji wybierajacej metode wykrywania hostow, Nmap wysyla pakiety TCP ACK na port 80 i zapytanie ICMP Echo Request query do kazdego badanego adresu. Wyjatkiem od tej reguly jest skanowanie ARP przeprowadzane dla aktualnego segmentu sieci ethernet. W przypadku uruchamiania przez nie uprzywilejowanych uzytkownikow systemow UNIX, wysylany jest pakiet SYN zamiast ACK z wykorzystaniem wywolania systemowego connect(). Ustawienia domyslne sa tozsame z opcjami -PA -PE. Takie wykrywanie hostow jest najczesciej wystarczajace podczas skanowania sieci lokalnej, jednak podczas audytow bezpieczenstwa zalecane jest wykorzystywanie bardziej zaawansowanych opcji. Opcje -P* (ktore wybieraja sposob pingowania) moga byc laczone. Mozesz poprawic dokladnosc wykrywania hostow za systemem zaporowym poprzez stosowanie wielu roznych portow/flag TCP i typow ICMP. Zwracam uwage, ze wykrywanie hostow ARP (-PR) jest z zalozenia wlaczane podczas testow sieci lokalnej w ramach tego samego segmentu, nawet jesli podasz inne opcje -P*, poniewaz praktycznie zawsze tak jest szybciej i efektywniej. Opcje kontroli wykrywania hostow. -sL (Lista skanowania) Lista skanowania jest okrojona funkcja wykrywania hostow, ktora po prostu wyswietla wszystkie adresy z podanych zakresow skanowania i nie wysyla zadnych pakietow do nich. Domyslnie Nmap wykonuje odwrotne zapytania DNS o badane adresy aby poznac ich nazwy. Czesto niespodzianka jest jak duzo informacji moga udzielic juz same nazwy hostow. Na przyklad fw.chi.playboy.com jest systemem zaporowym w biurze Playboy Enterprises w Chicago. Na koncu Nmap podaje takze calkowita liczbe adresow IP. Lista skanowania jest dobrym sposobem na sprawdzenie i uzyskanie pewnosci, ze prawidlowo podano zakres skanowania. Jesli nie rozpoznajesz nazw domen na uzyskanej liscie, warto sprawdzic podany zakres, co pozwala unikac niepotrzebnego skanowania sieci nieznanej firmy. Idea tej opcji jest wyswietlanie prostej listy adresow, z tego powodu bardziej zaawansowana funkcjonalnosc taka jak skanowanie portow, wykrywanie systemu operacyjnego czy pingowanie nie moze byc laczone z ta metoda. Jesli chcesz wylaczyc pingowanie podczas skanowania, poczytaj na ten temat w opisie opcji -P0. -sP (Skanowanie Ping) Ta opcja nakazuje Nmapowi przeprowadzac tylko skanowanie typu Ping (wykrywanie hostow), a wynikiem jej dzialania jest lista aktywnych hostow. Dodatkowe testy (takie jak skanowanie portow lub wykrywanie systemu operacyjnego) nie sa przeprowadzane. Metoda ta idzie krok dalej niz lista skanowania i moze byc wykorzystywana w podobnym celu. Pozwala na przeprowadzenie delikatnego rekonesansu bez zwracania zbytniej uwagi. Posiadanie wiedzy na temat ilosci aktywnych hostow jest bardziej wartosciowe dla atakujacych niz sama lista adresow zawierajaca adres IP i nazwe hosta. Rowniez administratorzy systemow czesto korzystaja z tej opcji. Pozwala ona na latwe i szybkie okreslenie liczby hostow w sieci lub monitorowanie dostepnosci serwerow. Opcja ta czesto jest nazywna Ping Sweep i daje bardziej wiarygodne wyniki niz pingowanie adresu broadcast, poniewaz niektore adresy moga na niego nie odpowiedziec. Domyslnie opcja -sP wysyla pakiety ICMP echo request i pakiety TCP na port 80. W przypadku wykonywania z konta nie uprzywilejowanego uzytkownika wysylane sa pakiety SYN (z wykorzystaniem funkcji systemowej connect()) na port 80 badanego hosta. Jesli uprzywilejowany uzytkownik probuje przeskanowac adresy w lokalnej sieci ethernet, wykorzystywane sa zapytania ARP (-PR), chyba ze dodano opcje --send-ip. Dla wiekszej wygody opcja -sP moze byc laczona w dowolny sposob z innymi metodami wykrywania hostow (opcje -P*, nie dotyczy -P0). Jesli wybrano ktorys z typow testow i numer portu, nie sa wykorzystywne domyslne ustawienia (ACK i echo request). Wykorzystywanie tych opcji jest szczegolnie zalecane, jesli pomiedzy badanym systemem, a hostem na ktorym jest uruchomiony Nmap jest system zaporowy, inaczej niektore (lub wszystkie) hosty nie zostana wykryte. -P0 (Bez pinga) Ta opcja wylacza calkowicie wykrywanie hostow. Normalnie Nmap probuje wykryc aktywne adresy przed rozpoczeciem wlasciwego skanowania. Domyslnie Nmap przeprowadza tylko testy takie jak skanowanie portow, wykrywanie wersji i systemu operacyjnego tylko dla hostow, ktore zostaly wczesniej wykryte jako aktywne. Wylaczenie wykrywania hostow za pomoca opcji -P0 powoduje, ze Nmap probuje wykonac wszystkie zadane typy skanowania na kazdym podanym adresie IP. Jesli wiec jako cel w linii plecen podano klase B (/16), wszystkie 65,536 adresow zostanie przeskanowane. Drugi znak w opcji -P0 jest zerem, a nie litera O. Wykrywanie hostow jest pomijane jak przy wyswietlaniu listy skanowania, jednak zamiast zatrzymac sie i wyswietlic liste, Nmap kontynuuje i przeprowadza zalozone testy na kazym adresie IP, tak jak by byl wykryty jako aktywny. -PS [listaportow] (TCP SYN Ping) Opcja ta powoduje wysylanie pustych pakietow TCP z ustawiona flaga SYN. Domyslnie port docelowy to 80 (konfigurowalne przed kompilacja za pomoca stalej DEFAULT_TCP_PROBE_PORT w pliku nmap.h), ale inny port moze byc podany jako parametr. Mozliwe jest rowniez podanie listy portow, odzielonych przecinkami (np. -PS22,23,25,80,113,1050,35000), co spowoduje przeprowadzenie testow na wszystkich podanych portach rownolegle. Ustawiona flaga SYN sugeruje badanemu systemowi, ze probujesz nawiazac z nim polaczenie. Normalnie zdalny port bedzie zamkniety i zostanie wyslany z powrotem pakiet z flaga RST (reset). Jesli port bedzie otwarty, host bedzie probowal wykonac drugi krok z trojstopniowego procesu nawiazywania polaczenia odpowiadajac za pomoca pakietu TCP SYN/ACK. Nmap zamiast wyslac pakiet ACK, ktory by pomyslnie zakonczyl nawiazywanie polaczenia, w tym momencie przerwie polaczenie wysylajac pakiet RST. Pakiet RST jest wysylany przez kernel systemu na ktorym pracuje Nmap automatycznie, w odpowiedzi na niespodziwany pakiet SYN/ACK, a nie przez samego Nmapa. Nmap nie zwraca uwagi czy port jest otwarty czy zamkniety. W zaleznosci od uzyskanej omowionej wczesniej odpowiedzi (RST lub SYN/ACK) host jest uznawany za dostepny. W systemach UNIX, tylko uzytkownik uprzywilejowany - root - moze wysylac niskopoziomowe pakiety raw TCP. W przypadku uzytkownikow nie posiadajacych odpowiednich uprawnien wykorzystywane jest obejscie w postaci wykorzystania funkcji systemowej connect() do wykonania polaczen ze wskazanymi portami. Jesli connect() zwroci poprawnosc wykonania operacji lub blad odmowy polaczenia ECONNREFUSED, stos TCP musial otrzymac pakiet z flagami SYN/ACK lub RST i host jest uznawany za dostepny. Jesli proba nawiazania polaczenia zostala przerwana po przekroczeniu maksymalnego czasu oczekiwania, host jest oznaczany jako niedostepny. To obejscie jest rowniez wykorzystywane dla protokolu IPv6, poniewaz wysylanie niskopoziomowych pakietow raw TCP nie jest jeszcze dostepne w Nmapie. -PA [lista portow] (TCP ACK Ping) Metoda TCP ACK ping jest dosyc podobna do powyzej opisanego SYN ping. Roznica, jak latwo zgadnac, polega na wykorzystaniu flagi ACK zamiast SYN. Flaga ACK jest wykorzystywana do potwierdzania otrzymania danych za pomoca utworzonego wczesniej polaczenia TCP, jednak w tym wypadku polaczenie takie nie istnieje. Z tego powodu badany system powinien zawsze odpowiedziec pakietem z flaga RST, swiadczaca o nie isnieniu takiego polaczenia. Opcja -PA, tak jak SYN, uzywa portu numer 80 i rowniez moze przyjmowac liste portow jako argument (w takim samym formacie). Jesli program zostal uruchomiony przez nie uprzywilejowanego uzytkownika lub badany jest adres IPv6, wykorzystywane jest opisane wczesniej obejscie za pomoca connect(). Obejscie to nie jest idealne, poniewaz funkcja connect() wysyla pakiet SYN zamiast oczekiwanego ACK. Powodem udostepniania zarowno metody SYN jak i ACK jest zwiekszenie szansy na ominiecie systemu zaporowego. Wielu administratorow konfiguruje routery i proste systemy zaporowe tak, zeby blokowaly przychodzace pakiety SYN, poza przychodzacymi do publicznych serwerow takich jak WWW czy pocztowych. Zabezpiecza to przed przychodzeniem innych polaczen przy jednoczesnym nie zaklucaniu pozostalej transmisji wychodzacej do Internetu. Takie bezstanowe (non-stateful) rozwiazanie zajmuje malo zasobow systemu zaporowego/routera i jest szeroko wspierane przez filtry sprzetowe i programowe. Linuxowy firewall Netfilter/iptables dla wygody posiada opcje --syn, ktora implementuje takie wlasnie bezstanowe filtrowanie. W przypadku takiego systemu zaporowego testy wykorzystujace metode SYN ping (-PS) zostana prawdopodobnie zablokowane w przypadku zamknietych portow. W tym przypadku metoda ACK pozwoli na obejscie tych zabezpieczen. Innym popularnym typem jest firewall wykorzystujacy stany (stateful) do blokowania niechcianych pakietow. Taka funkcjonalnosc jest najczesciej spotykana w wysokiej klasy systemach zaporowych, ktore staja sie z roku na rok coraz popularniejsze. Linuxowy Netfilter/iptables posiada opcje --state, ktora kategoryzuje pakiety na podstawie stanu polaczenia. Metoda SYN prawdopodobnie bedzie dzialala poprawnie dla tego typu systemow, ale juz pakiet z ACK zostanie rozpoznany jako nieprawidlowy i zostanie zablokowany. Rozwiazaniem tego problemu jest wykorzystywanie jednoczesnie obu metod SYN i ACK poprzez podanie parametrow -PS i -PA. -PU [listaportow] (UDP Ping) Kolejna metoda wykrywania hostow jest UDP ping, ktory wysyla puste (o ile nie wykorzystano opcji --data-length) pakiety UDP na wskazane porty. Lista portow jest podawana w takim samym formacie jak dla wczesniej opisanych opcji -PS i -PA. Jesli nie podano numerow portow, domyslnie uzywany jest port 32338. Port ten moze byc zmieniony przed kompilacja poprzez zmiane stalej DEFAULT_UDP_PROBE_PORT w pliku nmap.h. Wybor tak malo popularnego portu zostal podyktowany checia unikniecia wysylania pakietow do otwartych portow, co w przypadku tego testu nie przynioslo by oczekiwanego efektu. W przypakdu kiedy port jest zamkniety na badaniej maszynie, w odpowiedzi na pakiet UDP powinien zostac odeslany pakiet ICMP port unreachable oznaczajacy brak mozliwosci komunikacji z wybranym portem. Po otrzymaniu takiej odpowiedzi Nmap oznacza host jako dostepny. Inne typy odpowiedzi ICMP, takie jak host/siec niedostepna czy przekroczony czas zycia TTL oznaczaja, ze badany host nie jest dostepny, podobnie interpretowany jest brak odpowiedzi. Jesli badany port jest otwarty, wiekszosc typowych uslug zignoruje pusty pakiet i nie zostanie wyslana zadna informacja zwrotna. Wlasnie dla tego domyslnie testowanym portem jest 31338, ktory jest bardzo rzadko wykorzystywany. Wiele uslug, takich jak chargen, odpowie na pusty pakiet co spowoduje, ze Nmap uzna host za dostepny. Glowna zaleta tego typu skanowania jest fakt, ze omija systemy zaporowe i filtry skupiajace sie tylko na TCP. Przykladowo, mialem kiedys szerokopasmowy router bezprzewodowy Linksys BEFW11S4. Zewnetrzny interfejs tego urzadzenia filtrowal domyslnie wszystkie porty TCP, za to testy UDP zwracaly odpowiedzi ICMP port unreachable, co ujawnia istnienie urzadzenia. -PE; -PP; -PM (Typy ICMP Ping) Dodatkowo poza opisanymi wczesniej metodami wykrywania hostow TCP i UDP, Nmap moze wysylac standardowe pakiety ICMP znane z typowego programu ping. Nmap wysyla pakiety ICMP typu 8 (echo request) do badanego hosta i oczekuje typu 0 (echo reply) w odpowiedzi. Niestety wiele hostow i systemow zaporowych blokuje tego typu pakiety, zamiast odpowiadac prawidlowo i zgodnie z RFC 1122[6]. Z tego powodu skanowania nieznanych hostow w internecie za pomoca tej metody przewaznie nie sa wiarygodne. Jednakze administratorzy systemow monitorujacy wewnetrzne sieci moga z powodzeniem efektywnie wykorzystywac ta metode. Takie wykorzystanie zapytan ICMP echo request jest mozliwe za pomoca opcji -PE. Zapytanie echo request jest standardowym zapytaniem ICMP ping, jednak Nmap nie poprzestaje na tym. Standard ICMP (RFC 792[7]) opisuje takze zapytania timestamp request, information request, i address mask request o kodach odpowiednio 13, 15 i 17. Podczas kiedy zalozonym efektem dzialania tych zapytan jest uzyskanie informacji typu maska sieci czy aktualny czas, moga byc one wykorzystane do wykrywania aktywnosci hostow. System ktory odpowiada, jest uznawany za aktywny. Nmap nie obsluguje zapytan information request, jako ze nie sa one czesto spotykane. RFC 1122 zaleca, ze ,,host NIE POWINIEN obslugiwac tych zapytan". Zapytania timestamp i address mask moga byc wysylane z wykorzystaniem opcji odpowiednio -PP i -PM. Odpowiedzi timestamp reply (ICMP kod 14) lub address mask reply (kod 18) ujawniaja aktywnosc hosta. Te dwa zapytania moga byc pomocne, kiedy administrator specyficznie blokuje zapytania echo request zapominajac przy tym blokowac inne typy ICMP, ktore moga byc wykorzystane w tym samym celu. -PR (ARP Ping) Jednym z najczesciej spotykanych scenariuszy wykorzystania Nmapa jest skanowanie sieci lokalnej ethernet. W wiekszosci sieci LAN, w szczegolnosci wykorzystujacych adresacje prywatna zalecana przez RFC1918, wiekszosc adresow IP nie jest wykorzystywana. Kiedy Nmap probuje wyslac pakiet raw IP taki jak ICMP echo request, by poprawnie zaadresowac ramke ethernet system operacyjny musi okreslic (ARP) docelowy adres sprzetowy korespondujacy z docelowym adresem IP. Takie zachowanie jest czesto powolne i problematyczne, poniewaz systemy operacyjne nie zostaly napisane z uwzglednieniem potrzeby wysylania milionow zapytan ARP o niedostepne hosty w krotkim czasie. Skanowanie ARP wykorzystuje zoptymalizowany algorytm Nmapa do wysylania zapytan ARP. Po otrzymaniu odpowiedzi Nmap nie musi sie nawet martwic o oparte na IP pakiety ping, poniewaz juz wie, ze host jest aktywny. Takie zachowanie pozwala na duzo szybsze i bardziej wiarygodne skanowanie. Z tego powodu zachowanie takie jest domyslne podczas skanowania sieci, ktora Nmap wykryje jako siec lokalna nalezaca do tego samego segmentu. Nawet jesli zostana podane inne typy skanowania ping (takie jak -PE lub -PS), Nmap uzywa ARP zamiast nich do wykrywaia hostow w lokalnej sieci ethernet. Jesli nie chcesz uzywac ARP do skanowania, dodaj opcje --send-ip. -n (Wylacz zapytania DNS) Nakazuje Nmapowi nigdy nie uzywac zapytan odrotnych do serwerow DNS o nazwy przypisane do adresow IP. Jako ze zapytania DNS sa najczesciej dlugo trwaja, opcja ta przyspiesza prace. -R (Wymus zapytania DNS) Nakazuje Nmapowi zawsze wykonywac odwrotne zapytania do serwera DNS o nazwy dla skanowanych adresow IP. Domyslnie zapytania sa wykonywane tylko dla aktywnych hostow. --system-dns (Uzywaj systemowego DNS) Domyslnie Nmap okresla nazwy dla adresow IP poprzez wysylanie zapytan bezposrednio do serwerow DNS skonfigurowanych w systemie, o ile sa dostepne. Wiele zapytan (czesto dziesiatki) jest wykonywanych rownolegle dla uzyskania wiekszej szybkosci. Dodanie tej opcji wymusza wykorzystywanie rozwiazywania nazw za posrednictwem systemu operacyjnego (kazdorazowo o pojedyncze IP za pomoca funkcji getnameinfo()). Ta opcja jest wolniejsza i jest uzyteczna tylko w sporadycznych przypadkach, chyba ze w Nmapie jest blad w kodzie DNS - prosze sie z nami skontaktowac w tym przypadku. W przypadku skanowania sieci IPv6, rozwiazywanie nazw jest zawsze wykonywane z wykorzystaniem systemu operacyjnego. --dns-servers (Serwery do wykonywania zapytan DNS) Domyslnie Nmap probuje odczytac serwery DNS wpisane do pliku resolv.conf (UNIX) lub rejestru (Win32). Alternatywnie, mozesz uzyc tej opcji do podania wlasnych serwerow. Opcja ta nie jest uwzgledniana, jesli uzyto rowniez opcji --system-dns lub skanowane sa adresy IPv6. Uzywanie wielu serwerow DNS jest czesto duzo szybsze, niz tylko jednego. PODSTAWY SKANOWANIA PORTOW Przez lata funkcjonalnosc Nmapa byla sukcesywnie powiekszana, z poczatku byl tylko efektywnym skanerem portow i to nadal pozostaje jego glowna funkcja. Prosta komenda nmap target skanuje ponad 1660 portow TCP na wybranym celu skanowania. Podczas kiedy wiekszosc skanerow tradycyjnie zalicza wszystkie porty do kategorii otwarty lub zamkniety, Nmap jest duzo dokladniejszy. Rozroznia szesc mozliwych stanow kazdego portu: otwarty, zamkniety, filtrowany, niefiltrowany, otwarty|filtrowany, or zamkniety|filtrowany. Te stany nie sa rzeczywistymi stanami portow, opisuja jak Nmap je widzi. Na przyklad, skanowanie Nmapa z wnetrza sieci pokazuje port 135/TCP jako otwarty, podczas kiedy skanowanie przez Internet moze okreslic stan portu jako filtrowany. Szesc stanow portow Nmapa otwarty Aplikacja aktywnie akceptuje na tym porcie polaczenia TCP lub pakiety UDP. Znalezienie takich portow jest glownym celem skanowania. Osoby obeznane z bezpieczenstwem wiedza, ze kazdy otwarty port to potencjalny cel ataku. Atakujacy i wykonujacy testy penetracyjne chca wykorzystac luki w oprogramowaniu poprzez otwarte porty, podczas gdy administratorzy staraja sie zamykac lub chronic je za pomoca systemow zaporowych przed niepozadanymi uzytkownikami. Otwarte porty sa takze interesujace przy skanowaniach nie zwiazanych z ocena bezpieczenstwa, poniewaz pokazuja uslugi dostepne w sieci. zamkniety Zamkniety port jest dostepny (odbiera i odpowiada na pakiety Nmapa), ale nie ma zadnej aplikacji, ktora by obsluzyla polaczenie. Porty te moga byc pomocne przy sprawdzaniu czy host jest aktywny (wykrywanie hostow lub skanowanie Ping) oraz przy wykrywaniu systemu operacyjnego. Poniewaz sa dostepne zamkniete porty, warto skanowac dalej w poszukiwaniu otwartych. Administratorzy moga chciec blokowac takie porty za pomoca systemow zaporowych, wtedy ich stan zostanie okreslony jako filtrowany, opisany dalej. filtrowany Nmap nie moze okreslic czy port jest otwarty z powodu filtrowania komunikacji. Filtrowanie moze byc przeprowadzane na dedykowanym urzadzeniu, za pomoca regul routera lub programowego firewalla na hoscie. Takie porty sa frustrujace dla atakujacych, poniewaz dostarczaja znikomych ilosci informacji. Porty czasami odpowiadaja komunikatami ICMP takim jak typ 3 kod 13 (destination unreachable: communication administratively prohibited), ale filtry blokuja wysylanie takiego komunikatu bez wysylania typowej odpowiedzi. Takie zachowanie zmusza Nmapa do kilkukrotnego powtarzania pakietow na wypadek ich zaginiecia na przyklad na skutek przeciazenia sieci, co spowalnia skanowanie w sposob drastyczny. niefiltrowany Stan niefiltrowane oznacza ze port jest dostepny, ale Nmap nie jest w stanie ustalic czy port jest otwarty czy zamkniety. Tylko skanowanie ACK, ktore jest uzywane do mapowania regul firewalla, moze przypisac portom taki stan. Skanowanie niefiltrowanych portow za pomoca innych typow skanowania takich jak Window, SYN czy FIN moze pomoc okreslic czy port jest otwarty czy zamkniety. otwarty|filtrowany Nmap podaje taki stan w przypadku portow, dla ktorych nie jest w stanie okreslic czy port jest otwarty, czy filtrowany. Taki zachowanie wystepuje podczas typow skanowania, przy ktorych porty nie daja odpowiedzi. Brak odpowiedzi moze rowniez oznaczac, ze filtr pakietow zablokowal polaczenie lub wysylana odpowiedz. Z tego powodu Nmap nie ma pewnosci czy port jest otwarty, czy filtrowany. W ten sposob klasyfikuja porty skanowania UDP, FIN, Null, Xmas i skanowanie protokolow. zamkniety|filtrowany Ten stan jest uzywany przez Nmapa do oznaczania portow, dla ktorych nie jest mozliwe ustalenie czy port jest zamkniety czy filtrowany. Taki stan moze sie pojawiac tylko podczas skanowania IPID Idle. TECHNIKI SKANOWANIA PORTOW Jako poczatkujacy mechanik samochodowy, moglem godzinami meczyc sie z wykonaniem naprawy posiadanymi narzedziami (mlotek, tasma izolacyjna, klucz francuski itp.). Kiedy popadlem w depresje i w koncu zaprowadzilem mojego gruchota do prawdziwego mechanika, pogrzebal w przepastnej skrzyni z narzedziami i wyciagnal specjalne narzedzie, ktorym wykonal naprawe blyskawicznie i bez klopotow. Sztuka skanowania polega dokladnie na tym samym. Eksperci znaja dziesiatki typow skanowania i wybieraja jedna adekwatna (lub kombinacje kilku) do danego zadania. Z drugiej strony niedoswiadczeni uzytkownicy i script kiddies probuja rozwiazac kazdy problem za pomoca domyslnego skanowania SYN. Nmap jest darmowy i dostepny dla wszyskich, w zwiazku z tym jedyna bariera jest odpowiednia wiedza. To oczywiscie bije na glowe swiat motoryzacyjny, gdzie trzeba posiadac duze umiejetnosci, zeby domyslic sie, ze potrzebne jest bardzo specyficzne narzedzie, ale wtedy potrzeba jeszcze duzo pieniedzy na jego zakup. Wiekszosc typow skanowania jest dostepna tylko dla uprzywilejowanych uzytkownikow, poniewaz tylko oni moga wysylac pakiety raw. Takim uzytkownikiem w przypadku systemow UNIX jest root. Uzywanie konta administratora w systemach Windows jest zalecane, jednak Nmap przewaznie dziala poprawnie z konta zwyklego uzytkownika przy zainstalowanej w systemie bibliotece WinPcap. Wymog posiadania uprawnien uzytkownika root byl powaznym ograniczeniem kiedy pojawil sie Nmap w 1997 roku, jako ze uzytkownicy posiadali dostep glownie tylko do wspoldzielonych kont. Swiat sie zmienil. Komputery sa tansze, coraz wiecej ludzi ma bezposredni dostep do Internetu i coraz powszechniejsze staja sie komputery z systemami UNIX (wlaczajac Linuxa i MAC OS X). Dostepna jest rowniez Windowsowa wersja Nmapa, co powieksza mozliwosci jego wykorzystywania. Z tych powodow coraz rzadziej zachodzi potrzeba uruchamiania Nmapa z ograniczonych wspoldzielonych kont. Na szczescie wieksze przywileje uzytkownikow przekladaja sie na wieksza elastycznosc i mozliwosci Nmapa. Nmap stara sie podawac jak najbardziej dokladne wyniki, jednak trzeba miec na uwadze fakt, ze wyniki sa oparte na pakietach zwracanych przez badane systemy (lub firewalle je ochraniajace). Dlatego tez zwracane informacje nie musza byc wiarygodne i moga wprowadzac Nmapa w blad. Bardzo powszechne sa hosty nie zachowujace sie zgodnie z RFC w odpowiedzi na zapytania Nmapa. Rozwiazaniem sa skanowania FIN, Null czy Xmas. Tego typu problemy zostaly opisane oddzielnie w czesciach poswieconych poszczegolnym typom skanowania. Ta sekcja opisuje dziesiatki typow skanowania dostepnych w Nmapie. Jednoczesnie moze byc wykorzystywana tylko jedna metoda, za wyjatkiem skanowania UDP (-sU), ktore moze byc laczone z dowolnymi typami skanowania TCP. Dla latwiejszego zapamietania, opcje skanowania portow posiadaja nazwy w formie -sC, gdzie C jest przewaznie pierwsza duza litera angielskiej nazwy typu skanowania. Wyjatkiem jest przestarzala opcja skanowania FTP bouce (-b). Domyslnie Nmap wykonuje skanowanie SYN, ktore jest zastepowane connect(), jesli uzytkownik nie ma odpowiednich uprawnien do wysylania pakietow raw (co wymaga konta root w systemach UNIX) lub w przypadku skanowania sieci IPv6. Z posrod przedstawionych ponizej typow skanowania uzytkownicy nie uprzywilejowani moga jedynie uzywac typow connect() i FTP bounce. -sS (Skanowanie TCP SYN) Skanowanie SYN jest domyslna i najpopularniejsza metoda skanowania. Jest to spowodowane tym, ze moze byc przeprowadzone szybko, mozliwe jest skanowanie tysiecy portow na sekunde w szybkich sieciach nie chronionych systemami zaporowymi. Skanowanie SYN jest relatywnie dyskretne i niewidoczne, poniewaz nigdy nie otwiera polaczen do konca. Dziala to dobrze w stosunku do wszystkich stosow zgodnych z TCP, w przeciwienstwie do udziwnionych, dla ktorych Nmap ma tryby FIN/Null/Xmas, Maimon i Idle. SYN pozwala na przejrzyste i wiarygodne rozroznienie stanow portu pomiedzy otwartym, zamknietym i filtrowanym. Technika ta jest czesto okreslana jako skanowanie z polowicznym otwieraniem polaczen (ang. half-open), poniewaz nie otwiera pelnego polaczenia TCP. Wysylany jest pakiet SYN, tak jak by mialo byc otwarte prawdziwe polaczenie i czeka na odpowiedz. SYN/ACK oaznacza, ze port oczekuje na polaczenia (jest otwarty), a RST (reset) identyfikuje port jako zamkniety. Jesli odpowiedz nie zostanie otrzymana pomimo kilku prob, port jest oznaczany jako filtrowany. Port jest rowniez oznaczany jako filtrowany w przypadku otrzymania komunikatu bledu ICMP unreachable error (typ 3, kody 1, 2, 3, 9, 10 lub 13). -sT (Skanowanie TCP connect()) Skanowanie TCP Connect() jest wybierane domyslne, jesli SYN nie jest dostene. Ma to miejsce kiedy uzytkownik nie posiada uprawnien do wysylania pakietow raw lub podczas skanowania sieci IPv6. Zamiast wysylac pakiety raw, jak to ma miejsce przy innych typach skanowania, Nmap prosi system operacyjny o zestawienie polaczenia z badanym hostem za pomoca wywolania funkcji systemowej connect(). Jest to taki sam wysoki poziom wywolan systemowych, z jakich korzystaja przegladarki internetowe, oprogramowanie Peer2Peer czy inne programy korzystajace z polaczen sieciowych. Jest to czesc interfejsu programistycznego znanego jako Berkeley Sockets API. Zamiast odczytywac odpowiedzi za pomoca odwolan niskopoziomowych prosto z sieci, Nmap wykorzystuje ten sam wysokopoziomowy interfejs do otrzymania informacji o stanie operacji dla kazdej proby polaczenia oddzielnie. Kiedy skanowanie SYN jest dostepne, przewaznie jest lepszym wyborem. Nmap ma duzo mniejsza kontrole nad wywolaniem wysokopoziomowym connect() niz nad pakietami raw, co jest duzo mniej efektywne. Wywolanie systemowe otwiera pelne polaczenie w przeciwienstwie do metody SYN korzystajacej z polowicznego polaczenia. Nie tylko wymaga to wiecej czasu i wymaga wiecej pakietow do uzyskania takich samych informacji, ale rowniez prawdopodobnie spowoduje zapisanie w logach badanego systemu proby polaczenia. Nowoczesne systemy detekcji intruzow IDS potrafia wykrywac takie polaczenia, ale wiekszosc systemow nie posiada odpowiednich systemow alarmowych. Wiele uslug w typowym systemie UNIX zapisze uwage do logu systemowego i czasami zagadkowy komunikat bledu, kiedy Nmap polaczy sie i natychmiast zamknie polaczenie bez wysylania jakichkolwiek danych. Naprawde zalosne uslugi przestana dzialac po otrzymaniu takiego pakietu, ale nie jest to czesto spotykane. Administrator widzacy w logach informacje o wielu probach nawiazania polaczenia z jednego adresu powinien wiedziec, ze jego system byl skanowany za pomoca metody connect(). -sU (Skanowanie UDP) Wiekszosc popularnych uslug w sieci Internet wykorzystuje protokol TCP, ale rowniez uslugi UDP[8] sa czesto spotykane. Najpopularniesze z nich to DNS, SNMP i DHCP (porty 53, 161/162 i 67/68). Poniewaz skanowanie UDP jest ogolnie wolniejsze i trudniejsze niz TCP, wielu audytorow bezpieczenstwa ignoruje te porty. Jest to pomylka, jako ze wiele uslug UDP jest podatnych na zdalne ataki i atakujacy nie ignoruja tego protokolu. Na szczescie Nmap umozliwia inwentaryzacje portow UDP. Skanowanie UDP jest aktywowane za pomoca opcji -sU. Moze byc laczone z innymi typami skanowania TCP, takimi jak SYN (-sS), dla sprawdzenia obu protokolow w jednym przebiegu. Skanowanie UDP polega na wysylaniu pustych (bez danych) naglowkow protokolu UDP do kazdego portu docelowego. Jesli w odpowiedzi zostanie zwrocony komunikat ICMP port uchreachable (typ 3, kod 3), port jest uznawany za zamkniety. Inne typy komunikatow ICMP unreachable (typ 3, kody 1, 2, 9, 10 lub 13) oznaczaja, ze port jest filtrowany. Czasami w odpowiedzi zwrocony zostanie pakiet UDP, co oznacza, ze porty jest otwarty. Jesli pomimo powtarzania transmisji nie zostanie uzyskana zadna odpowiedz, port zostaje zaklasyfikowany jako otwarty|filtrowany. Oznacza to, ze port moze byc otwarty lub filtr pakietow blokuje do niego dostep. Wykorzystanie skanowania wersji uslug (-sV) moze pomoc w odroznieniu portow na prawde otwartych od filtrowanych. Najwiekszym wyzwaniem przy skanowaniu UDP jest przeprowadzenie go odpowiednio szybko. Otwarte i filtrowane porty rzadko wysylaja jakakolwiek odpowiedz, zmuszajac Nmapa do oczekiwania na odpowiedz i ponawiania transmisji na wypadek zagubienia pakietow. Zamkniete porty sa czesto jeszcze wiekszym problemem. Zwykle wysylaja pakiet ICMP port unreachable, jednak w odroznieniu od pakietow z flaga RST znanych ze skanowania SYN czy connect, wiele hostow domyslnie limituje szybkosc wysylania pakietow ICMP port unreachable. Przykladami moga byc systemy Linux i Solaris. Kernel Linuxa w wersji 2.4.20 limituje ilosc pakietow o niedostepnosci portow do jednego na sekunde (w net/ipv4/icmp.c). Nmap potrafi wykrywac limitowanie odpowiedzi i zwalnia odpowiednio proces skanowania dla unikniecia zasmiecania sieci niepotrzebnymi pakietami, ktore i tak nie zostana wykorzystane. Niestety, skanowanie wszystkich 65,536 portow UDP przy limicie Linuxowym jeden pakiet na sekunde powoduje, ze skanowanie trwa ponad 18 godzin. Sposobami na przyspieszenie sa skanowanie wielu hostow rownolegle, wykonywanie na poczatek szybkiego skanowania popularnych portow, skanowanie z poza systemu zaporowego i uzywanie opcji --host-timeout do pomijania zbyt wolnych hostow. -sN; -sF; -sX (Skanowania TCP Null, FIN i Xmas) Te typy skanowania (wieksze mozliwosci posiada opcja --scanflags opisana w dalszej czesci) wykorzystuja nieopisane w TCP RFC[9] kombinacje flag do rozroznienia pomiedzy stanami portow otwarty oraz zamkniety. Strona 65 opisuje, ze ,,jesli [docelowy] port jest ZAMKNIETY ... w odpowiedzi na pakiet nie zawierajacy RST nalezy wyslac odpowiedz RST." Nastepna strona opisuje pakiety wysylane na porty bez flag SYN, RST lub ACK w nastepujacy sposob: ,,cos takiego nie powinno miec miejsca, jednak jesli sie zdarzy, pomin taki pakiet". Podczas skanowania systemow zgodnych z zapisami w RFC, dowolny pakiet nie zawierajacy flag SYN, RST lub ACK powinien wywolywac odpowiedz RST w przypadku portu zamknietego i calkowity brak odpowiedzi w przypadku portu otwartego. Tak dlugo jak zadna z wymienionych flag nie zostala uzyta, wszystkie inne kombinacje flag (FIN, PSH i URG) sa prawidlowe. Nmap wykorzystuje to do przeprowadzania trzech typow skanowania: Skanowanie Null (-sN) Nie ustawia zadnych flag (pole flag w naglowku tcp zawiera 0). Skanowanie FIN (-sF) Ustawiona flaga FIN. Skanowanie Xmas (-sX) Ustawione flagi FIN, PSH i URG, pakiet podswietlony jak choinka. Te trzy tryby skanowania sa takie same poza ustawionymi flagami w pakietach. Jesli w odpowiedzi zostanie otrzymany pakiet RST, port jest uznawany za zamkniety, podczas gdy brak odpowiedzi oznacza otwarty|filtrowany. Port uznajemy za filtrowany, jesli otrzymany zostanie komunikat ICMP unreachable (typ 3, kod 1, 2, 3, 9, 10 lub 13). Glowna zaleta tych typow skanowania jest to, ze potrafia sie one przemykac przez bezstanowe systemy zaporowe i filtrowanie na routerach. Inna zaleta jest tylko minimalnie wieksza wykrywalnosc niz skanowania SYN. Nie mozna jednak na to liczyc - wiekszosc nowych systemow IDS moze zostac skonfigurowana do ich wykrywania. Ujemna strona jest to, ze nie wszystkie systemy sa zgodne z RFC793. Wiele systemow wysyla odpowiedzi RST niezaleznie od tego czy port jest otwarty czy nie. Powoduje to, ze wszystkie porty pojawiaja sie jako zamkniety. Najczesciej spotykane systemy, ktore sie tak zachowuja to Microsoft Windows, wiele urzadzen Cisco, BSDI, i IBM OS/400. Skanowania dzialaja jednak dobrze w przypadku wiekszosci systemow UNIXowych. Kolejnym minusem tych metod jest to, ze nie potrafia rozroznic portow oznaczonych jako otwarty od filtrowany, ujawniajac jedynie stan otwarty|filtrowany. -sA (Skanowanie TCP ACK) Ten typ skanowanie jest inny niz omawiane powyzej, bo nigdy nie wykrywa stanow portow otwarty (lub nawet otwarty|filtrowany). Jest wykorzystywany do mapowania regul filtrowania, do sprawdzania czy fitrowanie jest oparte o stany (stateful) lub nie i ktore porty sa filtrowane. Pakiety skanowania ACK posiadaja tylko flage ACK (o ile nie zostala uzyta opcja --scanflags). Podczas skanowania systemow nie posiadajacych filtrowania, porty o stanach otwarty i zamkniety zwroca pakiet RST. W obu przypadkach Nmap oznaczy je jako niefiltrowane, co oznacza, ze byly osiagalne dla pakietu ACK, ale nie zostalo okreslone, czy posiadaja stan otwarty czy zamkniety. Porty, ktore nie odpowiedza lub odpowiedza za pomoca komunikatu o bledzie ICMP (typ 3, kody 1, 2, 3, 9, 10 lub 13), zostana oznaczone jako filtrowany. -sW (Skanowanie TCP Window) Skanowanie Window jest takie samo jak ACK, roznica polega na tym, ze potrafi odroznic porty otwarte od zamknietych, zamiast zawsze podawac stan niefiltrowany, kiedy otrzymano flage RST. Jest to realizowane poprzez analize pola Window pakietu zwrotnego RST. Na niektorych systemach, otwarte porty zwracaja dodatnia wartosc rozmiaru okna (takze w pakietach RST), a przy zamknietych o rozmiarze zero. Tak wiec zamiast zawsze przedstawiac port jako niefiltrowany kiedy w odpowiedzi przyjdzie RST, skanowanie Window oznacza port jako otwarty lub zamkniety, w zaleznosci czy odpowiednio otrzymano w odpowiedzi rozmiar okna o wartosci dodatniej lub zero. Ten typ skanowania polega na szczegolnej implementacji stosu TCP, wystepujacej w rzadko spotykanych systemach w internecie, a wiec nie mozna zawsze na niej polegac. Zwykle systemy, ktore nie obsluguja tej metody beda zwracaly porty oznaczone jako zamkniety. Oczywiscie jest rowniez mozliwe, ze host na prawde nie ma otwartych portow. Jesli wiekszosc przeskanowanych portow ma stan zamkniety, jednak niektore (takie jak 22, 25 czy 53) maja stan filtrowany, system jest podejrzany. Czasami systemy potrafia sie zachowywac zupelnie przeciwnie. Jesli skanowanie wykaze 1000 otwartych portow i tylko 3 zamkniete lub filtrowane, wtedy te trzy prawdopodobnie sa rzeczywiscie otwarte. -sM (Skanowanie TCP Maimon) Skanowanie Maimon zostalo nazwane na czesc jego odkrywcy, Uriela Maimona. Opisal te technike w Phrack Magazine w wydaniu #49 (Listopad 1996). Nmap, ktory potrafil wykorzystac te technike zostal wypuszczony dwa wydania pozniej. Skanowanie to nalezy do rodziny Null, FIN i Xmass z ta roznica, ze uzywa flag FIN/ACK. Zgodnie z RFC 793 (TCP), dla takiej kombinacji flag, pakiet RST powinien byc wygenerowany niezaleznie czy port jest otwarty czy zamkniety. Jednakze Uriel zauwazyl, ze wiele systemow opartych na BSD po prostu pomija odpowiedzi, jesli port jest otwarty. --scanflags (Skanowanie TCP z definiowanymi flagami) Prawdziwie zaawansowani uzytkownicy Nmapa nie moga byc ograniczani iloscia oferowanych wbudowanych typow skanowania. Opcja --scanflags pozwala na projektowanie wlasnych typow skanowania z wykorzystaniem wybranych flag TCP. Cieszcie sie podczas wykorzystywania tej techniki do oszukiwania systemow IDS, ktorych tworcy pobieznie przegladali dokumentacje Nmapa dodajac specyficzne reguly! Argument opcji --scanflags moze byc numerycznym zapisem flag, np 9 (PSH i FIN), lub dla ulatwienia mozna wykorzystywac symbliczne nazwy. Mozna podac dowolna kombinacje flag URG, ACK, PSH, RST, SYN i FIN. Na przyklad --scanflags URGACKPSHRSTSYNFIN ustawia wszystkie flagi, choc nie jest to zbyt uzyteczna metoda skanowania. Kolejnosc podawania flag nie jest istotna. Dodatkowo przy podawaniu wybranych flag mozliwe jest podanie typu skanowania (takiego jak -sA lub -sF). Dodany typ skanowania informuje Nmapa jak ma interpretowac otrzymane odpowiedzi. Na przyklad skanowanie SYN zaklada, ze brak odpowiedzi oznacza stan portu filtrowany, podczas gdy skanowanie FIN potraktuje ten go jako otwarty|filtrowany. Nmap bedzie sie zachowywal w taki sam sposob jak przy wybranym trybie skanowania, jednak wykorzystane zostana podane flagi. Jesli bazowy typ skanowania nie zostanie okreslony, zostanie wykorzystany domyslny typ SYN. -sI (Skanowanie Idle) Ta zaawansowana technika skanowania pozwala na prawdziwie slepe skanowanie TCP (co oznacza, ze zaden pakiet nie zostanie wyslany do badanego systemu z prawdziwego adresu IP Nmapa). Zamiast tego wykorzystany zostanie host zombie, o przwidywalnym dzialaniu stosu TCP polegajacym na sekwencyjnym powiekszaniu numerow ID pakietow, do uzyskania informacji o otwartych portach w badanym systemie. Systemy detekcji intruzow pokaza jako adres atakujacego zdefiniowany host zombie (musi spelniac okreslone warunki). Ten fascynujacy typ skanowania jest zbyt skomplikowany zeby go dokladnie opisac w tej dokumentacji, dlatego napisalem oddzielny nieformalny dokument na ten temat ze szczegolowymi informacjami i jest on dostepny pod adresem https://nmap.org/book/idlescan.html. Poza tym, ze metoda ta jest niespotykanie poufna (z powodu jej slepej natury), ten typ skanowania pozwala na mapowanie regul zaufania pomiedzy maszynami bazujacych na adresach IP. Wyniki zawieraja otwarte porty, z punktu widzenia hosta zombie . Tak wiec mozna probowac skanowania z wykorzystaniem roznych hostow zombie, ktore mozna traktowac jako zaufane (poprzez router/reguly filtrowania pakietow). Mozna po dwukropku dodac numer portu, jesli chcemy go wykorzystac na hoscie zombie do badania zmian IPID. W innym przypadku Nmap wykorzysta domyslnie port uzywany przez tcp ping (80). -sO (Skanowanie protokolow IP) Skanowanie to pozwala na wykrycie listy protokolow IP (TCP, ICMP, IGMP itp), ktore sa dostepne na danym hoscie. Technicznie nie jest to skanowanie portow, poniewaz sprawdza kolejne numery protokolow, a nie kolejne porty TCP czy UDP. Opcja ta nadal uzywa parametru -p do wybrania numerow protokolow do sprawdzenia, w formacie analogicznym do listy portow. Z tego powodu metoda ta zostala zaklasyfikowana jako skanowanie portow i dlatego znajduje sie tutaj. Poza swoja wlasna funkcjonalnoscia, skanowanie protokolow demonstruje potege oprogramowania open source. Podczas gdy podstawowa idea jest calkiem prosta, nie pomyslalem o jej dodaniu, jak rowniez nie otrzymalem zadnej prosby o dodanie takiej funkcjonalnosci. Latem roku 2000, Gerhard Rieger opracowal koncepcje, stworzyl odpowiednia poprawke i wyslal ja na liste dyskusyjna nmap-hackers. Wlaczylem ja do drzewa Nmapa i wypuscilem nowa wersje nastepnego dnia. Niewiele komercyjnych programow posiada uzytkownikow na tyle entuzjastycznych, zeby zaprojektowac i stworzyc ich wlasne poprawki! Skanowanie protokolow dziala w sposob podobny do skanowania UDP, jednak zamiast iteracji po kolejnych numerach portu, w naglowkach pakietow zmienia sie 8-mio bitowy numer protokolu. Naglowki sa przewaznie puste, nie zawieraja zadnych danych ani nawet poprawnego dla danego protokolu naglowka. Trzema wyjatkami sa TCP, UDP i ICMP. Poprawne naglowki dla tych protokolow sa konieczne, poniewaz niektore systemy nie beda ich potrafily wyslac oraz dlatego, ze Nmap posiada juz odpowiednie funkcje do ich tworzenia. Zamiast obserwowac komunikaty ICMP unreachable, skanowanie protokolow nie polega na komunikatach ICMP protocol unreachable. Jesli Nmap otrzyma jakakolwiek odpowiedz w jakimkolwiek protokole, ustala stan protokolu jako otwarty. Otrzymanie komunikatu ICMP protocol unreachable (typ 3, kod 2) powoduje oznaczenie protokolu jako zamkniety. Inne komuniakty ICMP protocol unreachable (typ 3, kody 1, 3, 9, 10 lub 13) powoduja oznaczenie protokolu jako filtrowany (oraz rownoczesnie potwierdzaja, ze protokol ICMP jest rowniez otwarty). Jesli nie uzyskano odpowiedzi, protokol jest oznaczany jako otwarty|filtrowany. -b (Skanowanie FTP bounce) Interesujaca funkcja protokolu FTP (RFC 959[10]) jest wspieranie tak zwanych polaczen proxy. Pozwala to uzytkownikowi na polaczenie z jednym serwerem FTP i poproszenie o wyslanie plikow do innego. Ta funkcjonalnosc byla przyczyna naduzyc na wielu poziomach, dlatego wiele serwerow porzucilo dla niej wsparcie. Jednym z mozliwych naduzyc jest sposobnosc do zmuszenia serwera do skanowania portow na zewnetrznym hoscie. Wystarczy po prostu poprosic serwer o wyslanie pliku kolejno na kazdy interesujacy port badanego systemu. Uzyskany komunikat o bledzie zwroci informacje, czy porty byl otwarty czy zamkniety. Jest to dobra metoda do omijania systemow zaporowych, poniewaz korporacyjne serwery FTP czesto sa umieszczane w takim miejscu, ze maja mozliwosc komunikacji zarowno z hostami w internecie jak i w sieci lokalnej. Nmap obsluguje skanowanie FTP bounce z wykorzystaniem opcji -b. Opcja przyjmuje argument w postaci nazwa_uzytkownika:haslo@serwer:port. Serwer jest nazwa lub adresem IP podatnego serwera FTP. Tak jak przy zwyklym adresie URL, mozna pominac pola nazwa_uzytkownika:haslo, w tym przypadku zostanie wykorzystana domyslna kombinacja dla uzytkownikow anonimowych (uzytkownik anonymous haslo:-wwwuser@). Numer portu (i poprzedzajacy go dwukropek) rowniez moze zostac pominiety, w tym przypadku przy polaczeniu z wybranym adresem serwer, zostanie wykorzystany domyslny port serwera FTP (21). Podatnosc ta byla szeroko spotykana w roku 1997, kiedy to Nmap zostal wypuszczony, jednak z biegiem czasu jej znaczenie bardzo sie zmniejszylo. Dziurawe serwery FTP nadal sie zdarzaja, wiec warto wyprubowac i te metode, jesli inne zawioda. Jesli potrzebne jest obejscie systemu zaporowego, mozna przeskanowac siec w poszukiwaniu otwartych portow 21 (lub poprzez wyszukanie ftp na innych portach z wykorzystaniem opcji do wykrywania wersji) i wyprobowac na wykrytych portach metode bounce. Nmap poinformuje, czy usluga jest podatna czy nie. Jesli chcesz ukrywac swoje dzialania, nie trzeba (i nie powinno) ograniczac sie do hostow z badanej sieci. Przed rozpoczeciem skanowania losowych adresow w sieci Internet w poszukiwaniu podatnych wersji serwerow FTP trzeba miec na uwadze, ze wielu administratorow nie bedzie zachwyconych wykorzystywaniem ich serwerow w ten sposob. SPECYFIKACJA PORTOW I KOLEJNOSCI SKANOWANIA Poza wszystkimi metodami skanowania opisanymi wczesniej, Nmap oferuje opcje pozwalajaca na podanie numerow portow do skanowania i okreslenie, czy skanowanie ma przebiegac w kolejnosci sekwencyjnej czy losowej. Domyslnie Nmap skanuje wszystkie porty do 1024 wlacznie oraz wyzsze porty wyszczegolnione w pliku nmap-services. -p (Skanuj tylko wybrane porty) Opcja pozwala na zdefiniowanie listy portow do skanowania, zamiast domyslnej. Mozliwe jest podanie pojedynczych portow jak i zakresow oddzielonych myslnikiem (np. 1-1023). Zakres mozna rowniez pominac, co spowoduje uzycie calego zakresu (1-65535). Mozna wiec po prostu podac opcje -p- do przeskanowania wszystkich portow od 1 do 65535 wlacznie. Mozna rowniez podac port zero, ale trzeba to zrobic jawnie. W przypadku polaczenia tej opcji ze skanowaniem protokolow (-sO), okresla ona numery protokolow do sprawdzenia (0-255). Przy jednoczesnym skanowaniu portow TCP i UDP mozliwe jest oddzielne zdefiniowanie portow dla obu protokolow poprzez poprzedzenie numerow znakami odpowiednio T: i U:. Jako argument opcji przyjmowany jest ciag znakow az do nastepnej opcji. Na przyklad, podanie -p U:53,111,137,T:21-25,80,139,8080 spowoduje przeskanowanie portow UDP o numerach 53,111 i 137 oraz podanych portow TCP. Przy skanowaniu zarowno portow TCP jak i UDP, nie mozna zapomniec podac odpowiednich typow skanowania: -sU oraz przynajmniej jednego TCP (np. -sS, -sF czy -sT). Jesli nie podano protokolu skanowania, na czas skanowania numery portow zostana dodane do domyslnej listy portow. -F (Skanowanie Fast (ograniczona ilosc portow)) Pozwala na okreslenie, ze maja byc skanowane tylko porty zawarte w pliku nmap-services z pakietu Nmapa (lub z pliku protokolow dla opcji -sO). Opcja ta pozwala na szybsze skanowanie, niz w przypadku wszystkich 65535 portow. Poniewaz lista ta zawiera tylko nieco ponad 1200 portow, roznica w szybkosci w porownaniu do typowego skanowania TCP (okolo 1650 portow) nie jest duza. Roznica moze byc wieksza, jesli zostanie podany wlasny, maly plik nmap-services za pomoca opcji --datadir. -r (Nie uzywaj losowej kolejnosci) Domyslnie Nmap skanuje porty w kolejnosci losowej (poza niektorymi najczesciej wykorzystywanymi portami, ktore sa skanowane na poczatku ze wzgledow wydajnosciowych). Takie zachowanie jest normalnie pozadane, jednak mozna je wylaczyc za pomoca opcji -r, wymuszajacej sekwencyjna kolejnosc skanowania. DETEKCJA USLUG I WERSJI Przy skanowaniu zdalnego systemu, Nmap moze wykryc otwarte porty takie jak 25/tcp, 80/tcp czy 53/udp. Wykorzystujac baze danych zawierajaca okolo 2,200 popularnych uslug, znajdujaca sie w pliku nmap-services, Nmap odczyta przypuszczalne nazwy uslug dla wykrytych portow - odpowiednio serwer pocztowy (SMTP), serwer WWW (HTTP) i serwer nazw (DNS). Takie dzialanie jest zwykle poprawne, wiekszosc aplikacji sluchajacych na porcie 25, to rzeczywiscie serwery pocztowe. Jednakze, niech Twoja ocena bezpieczenstwa niepolega na tych podpowiedziach! Ludzie moga i czesto umieszczaja uslugi na dziwnych portach. Nawet jesli Nmap sie nie myli i hipotetyczny serwer z przykladu powyzej udostepnia uslugi SMTP, HTTP i DNS, nie jest to duza ilosc informacji na temat tych uslug. Przeprowadzajac testy bezpieczenstwa (lub zwykla inwentaryzacje zasobow) swojej firmy lub klienta, potrzeba uzyskac dokladniejsze informacje na temat uslug: jaka aplikacja i w jakiej wersji jest zainstalowana na serwerze SMTP czy DNS. Posiadanie tych informacji w znaczacy sposob wplywa na mozliwosc ustalenia podatnosci danej aplikacji. Detekcja wersji pozwala na uzyskanie takiej informacji. Po tym jak zostana wykryte za pomoca innych technik skanowania dostepne uslugi TCP i UDP, detekcja wersji odpytuje porty w celu okreslenia dalszych szczegolow na temat aplikacji. Baza danych nmap-service-probes zawiera opisy wielu uslug i probuje dopasowac je do uzyskanych informacji. Nmap stara sie najpierw okreslic protokol wykorzystywany przez usluge (np. ftp, ssh, telnet, http), nastepnie nazwe aplikacji (np. ISC Bind, Apache httpd, Solaris telnetd), wersje uslugi, nazwe hosta, typ urzadzenia (np. drukarka, router), rodzine systemow operacyjnych (np. Windows, Linux) i czasami uzyskuje dodatkowe informacje (takie jak czy X serwer przyjmuje polaczenia, obslugiwane wersje protokolu SSH czy nazwe uzytkownika KaZaA). Oczywiscie wiekszosc uslug nie dostarczy wszystkich tych informacji. Jesli Nmap zostal skompilowany z OpenSSL, bedzie potrafil laczyc sie z serwerami SSL i uzyskiwac informacje od uslug ukrytych za szyfrowana warstwa. Kiedy zostana wykryte uslugi RPC, odpowiedni skaner (-sR) zostanie automatycznie uruchomiony do ustalenia oprogramowania i wersji RPC. Z powodu specyfiki UDP, po zakonczeniu skanowania niektore porty pozostaja w stanie otwarty|filtrowany, jako ze ten typ skanowania nie potrafi okreslic, czy port jest otwarty czy filtrowany. Skanowanie wersji sprobuje uzyskac odpowiedz od takiego portu (tak jak to robi przy otwartych portach) i jesli to sie uda, zmieni stan na otwarty. Porty TCP w stanie otwarty|filtrowany sa traktowane w ten sam sposob. Nalezy zwrocic uwage, ze opcja -A poza innymi rzeczami wlacza wykrywanie wersji. Dodatkowa dokumentacja na temat dzialania detekcji wersji jest dostepna pod adresem https://nmap.org/vscan/. Jesli Nmap otrzyma odpowiedz, ale nie jest w stanie dopasowac jej do zadnej znanej uslugi, wyswietli specjalny odcisk palca (fingerprint) uslugi wraz z adresem URL, pod ktorym mozna go nastepnie wyslac wraz ze stosownym opisem, jesli jestesmy pewni jakiej usludze odpowiada. Prosze poswiecic te kilka minut na wyslanie informacji o nieznanych uslugach, a beda mogli z tego skorzystac rowniez inni uzytkownicy Nmapa. Dzieki temu sposobowi wysylania Nmap rozpoznaje okolo 3,000 odciskow dla ponad 350 protokolow uslug, takich jak smtp, ftp, http itp. Detekcja wersji jest wlaczana i kontrolowana nastepujacymi opcjami: -sV (Detekcja wersji uslug) Wlacza detekcje wersji uslug, opisana powyzej. Alternatywnie mozna uzyc opcji -A do jednoczesnego wlaczenia detekcji wersji uslug i systemu operacyjnego. --allports (Nie pomijaj zadnych portow przy detekcji wersji) Domyslnie, skanowanie wersji Nmapa pomija port TCP 9100, poniewaz niektore drukarki po prostu drukuja wszystko, co zostanie przyslane na ten port, powodujac wydruk setek stron z zapytaniami HTTP, binarnymi zapytaniami SSL itp. Takie zachowanie moze zostac wylaczone poprzez modyfikacje lub usuniecie dyrektywy Exclude w pliku nmap-service-probes, lub poprzez dodanie opcji --allports, wymuszajacej skanowanie wszystkich portow niezaleznie od dyrektywy Exclude. --version-intensity (Ustaw poziom skanowania wersji) Podczas przeprowadzania skanowania wersji (-sV), Nmap przeprowadza serie testow, przy czym kazdy z nich ma przypisany swoj poziom pomiedzy 1 a 9. Niskie poziomy dzialaja poprawnie w stosunku do najpopularniejszych uslug, wysokie numery obejmuja malo popularne. Poziom skanowania okresla ktore testy zostana wykonane. Czym wyzszy poziom, tym wieksza szansa na prawidlowe rozpoznanie malo popularnych uslug. Domysly poziom to 7. Jesli test zostanie powiazany z wykryta usluga z pliku nmap-service-probes, okreslona dyrektywa ports, zostanie on wykonany niezaleznie od ustalonego poziomu wykrywania wersji. Zachowanie takie ma na celu zawsze poprawne wykrywanie domyslnych uslug na otwartych portach, wykrywanie serwera DNS na porcie 53, SSL na porcie 443 itp. --version-light (Wlacz tryb delikatny) Jest wygodniejszym odpowiednikiem ustalajacym wartosc --version-intensity 2. Opcja ta pozwala na znaczne przyspieszenie wykrywania wersji, kosztem dokladnosci. --version-all (Uzyj wszystkich testow) Odpowiednik opcji --version-intensity 9, powodujacy wykonanie wszystkich mozliwych testow na kazdym porcie. --version-trace (Sledzenie aktywnosci skanowania wersji) Opcja wlacza opcje sledzenia bledow podczas wykrywania wersji, powodujac wyswietlanie dodatkowych informacji na temat prowadzonych dzialan. Opcja ta jest czescia wiekszej --packet-trace. -sR (Skanowanie RPC) Metoda ta dziala w polaczeniu z roznymi metodami skanowania portow Nmapa. Na wszystkie wykryte wczesniej porty sa wysylane komendy NULL SunRPC i za ich pomoca sprawdzane jest, czy dany port nalezy do uslug RPC. Jesli tak, identyfikowana jest aplikacja i jej wersja. Opcja pobiera takie same informacje jak komenda rpcinfo -p, nawet jesli host jest chroniony za pomoca systemu zaporowego (lub TCP wrapperow). Hosty posrednie zombie nie sa obslugiwane przy tym trybie skanowania. Opcja jest automatycznie aktywowana jako czesc wykrywania wersji uslug (-sV). Jako ze detekcja wersji jest daleko bardziej uniwersalna, opcja -sR jest wykorzystywana sporadycznie. WYKRYWANIE SYSTEMU OPERACYJNEGO Jedna z najbardziej znanych mozliwosci Nmapa jest zdalna detekcja systemu operacyjnego za pomoca odciskow palca (fingerprint) stosu TCP/IP. Nmap wysyla serie pakietow TCP i UDP do zdalnego systemu i analizuje praktycznie kazdy bit z uzyskanych odpowiedzi. Po wykonaniu dziesiatek testow takich jak probkowanie ISN TCP, analiza opcji protokolu TCP i kolejnosci, probkowanie IPID i kontrola poczatkowych rozmiarow okna, Nmap porownuje uzyskane wyniki z baza z pliku nmap-os-fingerprints zawierajaca ponad 1500 znanych odciskow systemow operacyjnych i wyswietla wynik, jesli udalo sie go odnalezc. Kazdy odcisk zawiera tekstowy opis systemu operacyjnego, nazwe jego producenta (np. Sun), nazwe systemu (np. Solaris), generacje (np. 10) i typ urzadzenia (przeznaczenie ogolne, router, switch, konsola do gier itp). Jesli Nmap nie moze ustalic systemu i warunki do jego wykrycia sa wystarczajace (np. wykryto przynajmniej jeden otwarty i jeden zamkniety port), Nmap poda adres URL, dzieki ktoremu, jesli jestesmy pewni, mozliwe jest wyslanie opisu nieznanego systemu, wraz z jego odciskiem. Wykonanie tej operacji przyczynia sie do rozbudowy bazy i poprawy wykrywania, na czym korzystaja wszyscy uzytkownicy. Detekcja systemu operacyjnego pozwala na uzyskanie innych informacji, ktore sa zbierane podczas tego procesu. Jedna z nich jest czas od uruchomienia hosta, co jest uzyskiwane poprzez wykorzystanie opcji TCP timestamp (RFC 1323) do ustalenia kiedy host byl restartowany. Informacja ta jest podawana tylko wtedy, jesli host jej dostarcza. Inna informacja jest klasyfikacja przewidywalnosci numerow sekwencyjnych TCP. Badane jest prawdopodobienstwo mozliwosci wstrzykniecia pakietow w przechwycone polaczenie. Informacja ta jest przydatna w przypadku testowania polaczen opartych na zaufaniu do adresu IP nadawcy (rlogin, filtry firewalla itp) lub podczas ukrywania zrodla ataku. Ten typ atakow jest obecnie rzadko wykorzystywany, jednak niektore systemy sa nadal na niego podatne. Podawany poziom trudnosci jest oparty na statystycznych probkach i moze sie zmieniac. Ogolnie lepiej jest uzywac angielskich okreslen dla poszczegolnych klas, takich jak ,,worthy challenge" (stanowiacy wyzwanie) lub ,,trivial joke" (trywialny dowcip). Taki sposob raportowania jest dostepny tylko przy domyslnym formacie raportu przy wlaczonej opcji zwiekszajacej szczegolowosc podawanych informacji (-v). Jesli uzyto opcji -v w polaczeniu z -O, podane zostana informacje o generowaniu numerow sekwencyjnych IPID. Wiekszosc adresow nalezy do klasy ,,incremental" (rosnace) co oznacza, ze wartosc pola ID w naglowkach pakietow IP jest zmieniana rosnaco w kolejnych pakietach. Taki sposob powiekszania numerow powoduje podatnosc na szereg atakow. Dokument opisujacy dzialanie i uzywanie detekcji wersji jest dostepny w wielu jezykach pod adresem https://nmap.org/osdetect/. Wykrywanie systemu operacyjnego jest wlaczane i kontrolowane przez ponizsze opcje: -O (Wlaczenie wykrywania systemu operacyjnego) Wlacza wykrywanie systemu operacyjnego opisanego powyzej. Alternatywnie mozna uzywac opcji -A, ktora wlacza jednoczesnie wykrywanie systemu operacyjnego i wersji uslug. --osscan-limit (Limitowanie wykrywania do obiecujacych celow) Wykrywanie systemu operacyjnego jest duzo bardziej efektywne, jesli wykryto przynajmniej po jednym otwartym i zamknietym porcie TCP. Uzycie tej opcji spowoduje, ze Nmap nie bedzie probowal okreslac systemu operacyjnego, jesli nie zostaly spelnione powyzsze kryteria. Wykorzystanie tego ograniczenia pozwala na znaczne skrocenie czasu, zwlaszcza w polaczeniu z opcja -P0 przy skanowaniu wielu adresow. Opcja ma znaczenie tylko w polaczeniu z -O lub -A. --osscan-guess; --fuzzy (Zgadywanie wersji systemu operacyjnego) Jesli Nmap nie moze jednoznacznie dopasowac systemu operacyjnego, czasami moze sugerowac kilka roznych, zblizonych do siebie. Podobienstwo musi byc bardzo duze, zeby Nmap zachowal sie w ten sposob przy domyslnej konfiguracji. Wykorzystanie tej opcji pozwala na wieksza swobodnosc przy probach ustalenia wersji systemu. ZALEZNOSCI CZASOWE I WYDAJNOSC Zawsze najwazniejszym priorytetem przy tworzeniu Nmapa byla wysoka wydajnosc. Domyslne skanowanie (nmap nazwahosta) hosta w sieci lokalnej zajmuje tylko jedna piata sekundy. Jest to zadowalajacy czas, jednak przy skanowaniu setek tysiecy adresow sumaryczny czas staje sie bardzo duzy. Dodatkowo niektore typy skanowania, takie jak skanowanie UDP i detekcja wersji takze wplywaja negatywnie na czas wykonania, podobnie jak konfiguracja systemow zaporowych, na przyklad limitujaca ilosc pakietow. Nmap posiada mozliwosci rownoleglego skanowania i odpowiednie zaawansowane algorytmy przyspieszajace skanowanie, a uzytkownik posiada ogromne mozliwosci wplywania na to jak sa one wykorzystywane. Zaawansowani uzytkownicy uwaznie przegladajacy komendy Nmapa, nakazuja mu dostarczanie tylko istotnych informacji zgodnie z przyjetymi wymaganiami i zalozeniami czasowymi. Techniki przyspieszajace skanowanie dotycza ograniczenia wykonywania malo istotnych testow i czestej zmiany wersji Nmapa na najnowsza (zmiany dotyczace przyszpieszenia pracy sa wprowadzane dosyc czesto). Optymalizacja parametrow dotyczacych szybkosci skanowania rowniez ma duzy wplyw i zostala opisana ponizej. --min-hostgroup ; --max-hostgroup (Zmiana ilosci hostow w grupie) Nmap posiada mozliwosc skanowania portow i wersji na wielu hostach rownoczesnie. Jest to realizowane poprzez dzielenie listy adresow docelowych na grupy, ktore sa nastepnie kolejno skanowane. Ogolnie skanowanie wiekszych grup jest bardziej efektywne. Wada tego rozwiazania jest opoznienie w podawaniu wynikow testow do czasu przeskanowania calej grupy. Przykladowo, jesli Nmap rozpoczal skanowanie w grupach po 50 adresow, zadne wyniki nie zostana wyswietlone (poza informacjami podawanymi przez -v) do czasu zakonczenia skanowania pierwszych 50 adresow. Domyslnie Nmap stosuje rozwiazanie kompromisowe. Rozpoczyna z grupa o rozmiarze 5, co pozwala szybko wyswietlic pierwsze wyniki, a nastepnie stopniowo powieksza rozmiar grupy az do maksymalnie 1024. Dokladne wykorzystywane rozmiary grup sa uzaleznione od podania dodatkowych opcji. Dla uzyskania wiekszej efektywnosci Nmap uzywa wiekszych grup dla skanowan UDP oraz przy skanowaniach TCP dotyczacych zaledwie kilku portow. Jesli maksymalny rozmiar grupy zostal okreslony za pomoca opcji --max-hostgroup, Nmap nigdy nie przekroczy tego limitu. Analogicznie podanie minimalnego rozmiaru za pomoca --min-hostgroup wymusi stosowanie grup o przynajmniej takim rozmiarze. Nmap moze uzyc mniejszej grupy tylko w przypadku, kiedy ilosc adresow do przeskanowania jest mniejsza niz zalozone minimum. Obie wymienione opcje pozwalaja na utrzymywanie rozmiaru grupy w podanym przedziale, jednak jest to rzadko potrzebne. Podstawowym zastosowaniem tych opcji jest podawanie duzego minimalnego rozmiaru grupy tak, zeby pelne skanowanie odbywalo sie szybciej. Czesto stosowana wartoscia jest 256, co pozwala na skanowanie w kawalkach o rozmiarze klasy C. Przy skanowaniu wielu portow, stosowanie wiekszych wartosci minimalnych przewaznie nie poprawi wydajnosci. W przypadku skanowania malych ilosci portow pomocne moze byc stosowanie grup o rozmiarze 2048 lub nawet wiekszym. --min-parallelism ; --max-parallelism (Kontrola wspolbierznosci testow) Opcja ta kontroluje ilosc jednoczesnych dla danej grupy adresow testow i jest wykorzystywana podczas wykrywania hostow i skanowania portow. Domyslnie Nmap dobiera idealna ilosc testow w zaleznosci od parametrow sieci. Jesli jakis pakiet zostanie zagubiony, zwalnia i zaczyna wykonywac mniejsza ilosc testow rownolegle. Nmap probuje powoli przyspieszac, jesli nie sa gubione pakiety. Podane opcje pozwalaja na okreslenie minimalnego i maksymalnego limitu ilosci jednoczesnie wykonywanych testow. Normalnie ilosc ta moze spasc do 1 przy zlych warunkach sieciowych lub wzrosnac do kilkuset w idealnych warunkach. Najczesciej wykorzystywana jest opcja --min-parallelism do ustawiania wyzszej niz 1 wartosci przy skanowaniu sieci przy zlych warunkach. Zmiana tej opcji moze byc ryzykowna, poniewaz ustawienie zbyt wysokiej wartosci moze sie odbic na poprawnosci testow. Wykorzystanie jej takze pociaga za soba zmniejszenie mozliwosci Nmapa w zakresie dynamicznego dostosowywania sie do warunkow panujacych w sieci. Ustalenie minimalnej ilosci na 10 moze byc sensowne, jednak powinno byc stosowane w ostatecznosci. Opcja --max-parallelism jest czasami wykorzystywana do zmuszenia Nmapa do nie przeprowadzania wiecej niz jednego testu rownolegle, co moze byc uzyteczne w polaczeniu z opcja--scan-delay (opisana dalej). --min-rtt-timeout , --max-rtt-timeout , --initial-rtt-timeout (Kontrola czasu oczekiwania na wykonanie testu) Nmap posiada mechanizm kontrolujacy czas oczekiwania na wynik testu, zanim nie zostanie on ponowiony. Czas oczekiwania jest zalezny od czasu wykonania poprzednich testow. Jesli opoznienia w sieci okaza sie duze i zmienne, czas oczekiwania moze zwiekszyc sie do kilku sekund. Poczatkowa wartosc jest dosyc konserwatywna (wysoka) i moze taka pozostac w przypadku skanowania nie odpowiadajacych hostow. Opcje przyjmuja wartosci w milisekundach, ale mozna dodac litery s, m lub h odnoszace sie odpowiednio do sekund, minut i godzin. Podanie nizszych wartosci --max-rtt-timeout i --initial-rtt-timeout niz domyslne, moze znaczaco skrocic czas skanowania. Jest to glownie widoczne w przypadku skanowania bez wykorzystywania pinga (-P0) oraz przy skanowaniu dobrze filtrowanych sieci. Nie mozna rowniez przesadzac w druga strone, ustawienie zbyt malego czasu moze przekladac sie na dluzszy czas skanowania przez niepotrzebne retransmisje spowodowane uplywem czasu oczekiwania na odpowiedz. Jesli wszystkie skanowane hosty sa w sieci lokalnej, sensownym agresywnym ustawieniem opcje --max-rtt-timeout jest 100 milisekund. Jesli skanowany ma byc inny segment, warto sprawdzic czasy odpowiedzi dla protokolu ICMP - za pomoca narzedzia ping lub innego pozwalajacego na definiowanie pakietow mogacych omijac system zaporowy, takiego jak hping2. Interesujaca nas wielkoscia jest maksymalny czas odpowiedzi dla 10 lub wiecej pakietow. Uzyskany czas moze zostac po podwojeniu wykorzystany jako wartosc dla --initial-rtt-timeout, a po pomnozeniu przez trzy lub cztery dla --max-rtt-timeout. Nie jest zalecane ustawianie maksymalnego rtt ponizej 100ms, niezaleznie od czasow pingowania, podobnie wiekszego niz 1000ms. --min-rtt-timeout jest rzadko wykorzystywana funkcja, ktora moze byc przydatna jesli komunikacja sieciowa jest tak niepewna, ze nawet domyslne ustawienia Nmapa sa zbyt agresywne. Jako ze Nmap redukuje czas oczekiwania tylko do momentu w ktorym siec zacznie dzialac poprawnie, potrzeba dodatkowego wydluzania czasu oczekiwania nie jest normalna i powinna zostac zaraportowana jako blad na liscie dyskusyjnej nmap-dev. --max-retries (Maksymalna ilosc prob ponawiania skanowania portow) Kiedy Nmap nie otrzyma odpowiedzi na skanowanie portu, moze to oznaczac, ze port ten jest filtrowany. Mozliwe jest jednak takze, ze pakiet testu lub odpowiedzi po prostu zaginal w sieci, albo ze host limituje ilosc mozliwych odpowiedzi w jednostce czasu i wlasnie tymczasowo je zablokowal. Wieksza pewnosc uzyskuje sie dzieki powtarzaniu testu w przedstawionych przypadkach. Jesli Nmap wykryje problemy z komunikacja sieciowa, moze ponawiac probe badania portu wiele razy, zanim sie podda. Z jednej strony zwieksza to dokladnosc testow, z drugiej wydluza czas ich wykonania. Jesli wydajnosc jest krytycznym aspektem, skanowania moga zostac przyspieszone poprzez limitowanie dozwolonej ilosci retransmisji. Ustawienie opcji --max-retries 0 , calkowicie wylaczajacej powtarzanie testow jest wykorzystywane sporadycznie. Domyslnie (bez stosowania opcji -T) dozwolone jest maksymalnie 10 powtorzen. Jesli siec dziala prawidlowo i skanowane hosty nie limituja ilosci pakietow, Nmap zwykle wykorzystuje jedna retransmisje. Dlatego tez wiekszosc skanowan nie zostanie dotknietych zmiana wartosci --max-retries na trzy. Stosowanie tak niskich wartosci pozwala na znaczne przyspieszenie skanowania hostow limitujacych ilosc odpowiedzi. Jesli Nmap bedzie zbyt szybko poddawal sie przy skanowaniu portow, czesc informacji nie zostanie zebrana, dlatego byc moze warto skorzystac z opcji przerywajacej test --host-timeout, ktora dotyczy calego hosta, a nie tylko pojedynczych testow. --host-timeout (Pomijaj powolne hosty) Skanowanie niektorych hostow trwa bardzo dlugo. Moze to byc spowodowane niezbyt wydajnym sprzetem sieciowym lub oprogramowaniem, limitowaniem ilosci pakietow czy restrykcjami systemu zaporowego. Niewielki procent hostow moze zabrac wiekszosc czasu przeznaczonego na skanowanie. Czasami najlepszym rozwiazaniem jest ich pominiecie z wykorzystaniem opcji --host-timeout z parametrem oznaczajacym ilosc milisekund, jakie jestesmy w stanie poswiecic na czekanie per host. Parametr mozna rowniez podawac w sekundach, minutach lub godzinach dodajac odpowiednio litery s, m lub h. Czesto dodaje 30m zeby miec pewnosc, ze Nmap nie bedzie skanowal jednego hosta dluzej niz pol godziny. Trzeba pamietac, ze Nmap moze rownolegle w tym czasie skanowac inne hosty, wiec nie bedzie to czas kompletnie stracony. Host ktory przekroczy czas jest pomijany i nie sa dla niego wyswietlane wyniki takie jak lista portow, system operacyjny czy wersje uslug. --scan-delay ; --max-scan-delay (Ustaw opoznienie pomiedzy testami) Opcja pozwala na narzucenie czasu w milisekundach jaki musi minac pomiedzy kolejnymi testami dla badanego hosta. Podobnie jak przy innych opcjach pozwalajacych na okreslanie czasu, mozna dodac s, m lub h do parametru do okreslenia go odpowiednio w sekundach, minutach lub godzinach. Opcja ta jest szczegolnie uzyteczna w przypadku systemow limitujacych ilosc pakietow. Solaris zwykle odpowiada na skanowanie UDP poprzez wysylanie tylko jednego pakietu ICMP na sekunde, wiec wysylanie zapytan szybciej jest zupelnie nie potrzebne. Wykorzystanie opcji --scan-delay 1s pozwala na wymuszenie odpowiedniej predkosci skanowania. Normalnie Nmap stara sie wykryc jaka powinna byc optymalna predkosc skanowania dla kazdego hosta, jednak reczne dodanie takiej opcji nie zaszkodzi, o ile znana jest optymalna predkosc. Kiedy Nmap zwieksza czas opoznienia, dostosowujac go do limitu ilosci otrzymywanych odpowiedzi, czas skanowania dramatycznie rosnie. Opcja --max-scan-delay pozwala na ustawienie maksymalnego limitu do ktorego moze byc automatycznie zwiekszane opoznienie. Ustawienie tej wartosci zbyt nisko moze spowodowac niepotrzebne retransmisje i pominiecie niektorych portow w przypadku hostow scisle limitujacych ilosc pakietow. Inna mozliwoscia wykorzystanie opcji --scan-delay jest omijanie systemow detekcji intruzow (IDS/IPS). -T (Ustawnienie szablonu zaleznosci czasowych skanowania) Opisane wczesniej opcje do zmiany zaleznosci czasowych pozwalaja na efektywne i precyzyjne sterowanie skanowaniem, jednak wiele osob uzna je za niepotrzebnie skomplikowane. Dodatkowo w wielu przypadkach dobranie odpowiedniej kombinacji parametrow moze zajac wiecej czasu, niz samo skanowanie. Z tego powodu Nmap oferuje prostrze rozwiazanie w postaci szesciu szablonow. Ich wybor jest mozliwy poprzez wykorzystanie opcji -T z parametrem oznaczajacym numer lub nazwe szablonu. Dostepne szablony to paranoid (0, paranoidalny), sneaky (1, podstepny), polite (2, grzeczny), normal (3, normalny), aggressive (4, agresywny) i insane (5, szalony). Pierwsze dwa wykorzystywane sa do omijania systemow IDS. Szablon polite spowalnia skanowanie powodujac mniejsze obciazenie lacza i zmniejszajace wykorzystanie zasobow w badanym systemie. Domyslnie uzywany jest normal, wiec podawanie -T3 nic nie zmieni. Szablon agresywny przyspiesza skanowanie przy zalozeniu ze korzystamy z szybkiej i nie przeciazonej sieci. Insane zaklada wykorzystanie ponad przecietnie szybkiej sieci lub jesli chcemy uzyskac duza szybkosc kosztem mozliwej utraty dokladnosci. Szablony pozwalaja poinformowac Nmapa jak duzej agresywnosci od niego oczekujemy przy jednoczesnym pozwoleniu mu na automatyczne dobieranie pozostalych parametrow czasowych. Wprowadzane tez sa inne drobne modyfikacje, do ktorych nie istnieja odzielne opcje. Na przyklad, -T4 zabrania wzrostu dynamicznego opoznienia skanowania powyzej 10ms dla portow TCP, a w przypadku -T5 powyzej 5ms. Szablony moga byc uzywane w polaczeniu z innymi opcjami do ustawiania zaleznosci czasowych o ile zostana umieszczone przed pozostalymi opcjami w linii polecen (inaczej domyslne ustawienia z szablonu zastapia ustawione innymi opcjami). Wiekszosc dzisiejszych sieci moze byc z powodzeniem skanowana z wykorzystaniem opcji -T4. Jesli uzywasz lacza szerokopasmowego lub sieci ethernet, rekomendowane jest stale uzywanie szablonu -T4. Wiele osob lubi -T5, lecz jest ono jak dla mnie troche za agresywne. Ludzie czasami uzywaja -T2 poniewaz mysla, ze zminiejszaja szanse na zawieszenie serwera lub uwazaja sie za bardziej kulturalnych z zalozenia, czesto nie zdajac sobie sprawy z tego, jak wolne jest -T Polite - ich skanowania moze trwac dziesiec razy dluzej. Zawieszanie hostow i problemy z pasmem sa rzadko spotykane przy domyslym -T3, i ta opcja jest polecana dla ostroznych skanujacych. Nie wlaczanie detekcji wersji jest daleko bardziej efektywnym sposobem na unikanie problemow. Podczas gdy opcje -T0 i -T1 moga byc uzyteczne przy unikaniu wykrycia przez systemy IDS, sa niesamowicie powolne przy skanowaniu setek adresow lub portow. Przy tak dlugich skanowaniach mozesz raczej chciec ustawic recznie poszczegolne zaleznosci czasowe, niz polegac na predefiniowanych wartosciach z -T0 i -T1. Glownym efektem dzialania T0 jest ograniczenie ilosci rownolegle przeprowadzanych testow do jednego i wprowadzenie odstepu pomiedzy kolejnymi testami o dlugosci 5 minut. Opcje T1 i T2 sa podobne, ale czakaja juz tylko odpowiednio 15 i 0.4 sekundy pomiedzy testami. T3 jest domyslnym ustawieniem Nmapa wlaczajac w to zrownoleglanie testow. T4 jest odpowiednikiem podania opcji --max-rtt-timeout 1250 --initial-rtt-timeout 500 --max-retries 6 i ustawienia maksymalnego opoznienia przy skanowaniu TCP na 10 milisekund. Opcja T5 jest alternatywa dla --max-rtt-timeout 300 --min-rtt-timeout 50 --initial-rtt-timeout 250 --max-retries 2 --host-timeout 900000 oraz ustawienia maksymalnego czasu opoznienia dla skanowania TCP na 5ms. FIREWALL/IDS I PODSZYWANIE SIE Wielu pionierow ineternetu wykorzystywalo globalna otwarta siec oparta o uniwersalna przestrzen adresowa pozwalajaca na tworzenie wirtualnych polaczen pomiedzy dwoma dowolnymi wezlami. Pozwalalo to hostom na rownoprawna komunikacje przy ktorej kazdy mogl serwowac i pobierac dane od drugiego. Ludzie mogli uzyskac dostep do wszystkich swoich systemow z dowolnego miejsca w sieci. Wizja nieograniczonej lacznosci zostala ograniczona przez wyczerpujace sie zapasy wolnych adresow IP i wzgledy bezpieczenstwa. We wczesnych latach 90-tych organizacje zaczely masowo wprowadzac systemy zaporowe dla ograniczenia mozliwosci komunikacji. Duze sieci zostaly otoczone kordonem zabezpieczen w postaci proxy aplikacyjnych, translacji adresow i filtrowania pakietow. Niczym nie ograniczany przeplyw informacji ustapil scislym regulacjom dotyczacym dozwolonych drog komunikacji i tresci nimi przesylanych. Zabezpieczenia sieciowe takie jak systemy zaporowe moga bardzo utrudnic uzyskiwanie informacji o sieci i jej architekturze. Nmap posiada wiele funkcji pozwalajacych zrozumiec dzialanie zlozonych sieci i na weryfikacje dzialania filtrow pakietow i ich zgodnosci z zalozeniami. Pozwala nawet na omijanie zle zaimplementowanych zabezpieczen. Jednym z najlepszych sposobow na poznanie bezpieczenstwa swojej sieci jest proba jego przelamania. Zacznij myslec jak atakujacy, ktory stosuje techniki z tej czesci dokumentacji przeciwko Twojej sieci. Uruchom skanowania FTP bounce, Idle, dodaj fragmentacje pakietow lub sprobuj uruchomic tunel omijajacy lokalne proxy. W polaczeniu z ograniczeniami aktywnosci sieciowej, firmy coraz czesciej rozpoczynaja monitorowanie ruchu sieciowego za pomoca systemow detekcji intruzow (IDS). Wszystkie popularne systemy IDS maja dolaczone reguly wykrywajace skanowania Nmapa, poniewaz skanowania takie czasami poprzedzaja ataki. Wiele z tych systemow ostatnio przeistoczylo sie w systemy prewencji (IPS), ktore aktywnie przeciwstawiaja sie niepozadanemu ruchowi. Niestety, dla administratorow sieci i producentow systemow IDS, wiarygodne wykrywanie zlych intencji poprzez analize pakietow jest ciezkim orzechem do zgryzienia. Cierpliwi atakujacy, posiadajacy odpowiednie umiejetnosci podparte mozliwosciami Nmapa zwykle moga ominac systemy detekcji intruzow i ich dzialania nie zostana wykryte. W tym samym czasie administratorzy musza sie zmagac z ogromna iloscia falszywych alarmow dotyczacych niepoprawnie zaklasyfikowanej zupelnie niewinnej komunikacji. Co jakis czas ktos sugeruje, ze Nmap nie powinien oferowac mozliwosci omijania systemow zaporowych czy systemow IDS. Argumentuja to mozliwoscia wykorzystania tych funkcji takze przez atakujacych, a nie tylko przez administratorow podnoszacych bezpieczenstwo swoich sieci. Problemem jest sama logika, poniewaz atakujacy i tak beda wykorzystywali tego typu metody uzywajac innych narzedzi lub samemu wprowadzajac odpowiednia funkcjonalnosc do kodu Nmapa. Rownoczesnie administratorzy beda mieli utrudniony dostep do odpowiednich narzedzi i ich praca bedzie trudniejsza. Uruchomienie nowoczesnego, bezpiecznego serwera FTP jest duzo skuteczniejsza metoda ochrony niz ograniczanie dostepnosci do narzedzi pozwalajacych na przeprowadzanie atakow FTP bounce. Nie ma magicznej kuli (lub opcji Nmapa) do przelamywania i obchodzenia systemow zaporowych i IDS. Wymaga to umiejetnosci i doswiadczenia. Dokladne instrukcje wykraczaja poza zakres tej dokumentacji, ktora jest jedynie lista dostepnych opcji wraz z opisami jak one dzialaja. -f (fragmentacja pakietow); --mtu (Uzywanie wybranego MTU) Opcja -f powoduje wykorzystywanie przy skanowaniu (wlaczajac w to skanowanie ping) malych pofragmentowanych pakietow. Idea polega na podzieleniu naglowka TCP na wiele pakietow, co powoduje utrudnienia w ich przetwarzaniu przez filtry pakietow, systemy detekcji intruzow oraz irytujace komplikacje przy ustalaniu co sie dzieje. Ale uwaga! Wiele programow ma problemy przy obsludze tego typu pakietow. Przestarzaly sniffer Sniffit wykonuje nieprawidlowa operacje i zostaje zamkniety zaraz po odebraniu juz pierwszego z takich pakietow. Dodanie tej opcji spowoduje automatyczne dzielenie wszystkich pakietow wysylanych przez Nmapa na mniejsze o rozmiarze maksymalnie 8 bajtow. Przykladowo 20 bajtowy naglowek TCP zostanie podzielony na 3 pakiety: najpierw dwa po 8 bajtow i ostatni 4 bajty. Oczywiscie kazdy fragment dostaje wlasny naglowek IP. Dodanie drugiej opcji -f powieksza wykorzystywany rozmiar fragmentow z 8 do 16 (redukujac ilosc fragmentow). Mozliwe jest rowniez podanie wlasnego rozmiaru za pomoca opcji --mtu. Nie uzywaj parametru -f, jesli uzywasz --mtu. Podawany rozmiar musi byc wielokrotnoscia 8. W niektorych systemach filtry pakietow nie otrzymuja bezposrednio pakietow, tylko sa one wstepnie kolejkowane, tak jak w Linuxie przy ustawieniu opcji CONFIG_IP_ALWAYS_DEFRAG w kernelu, jednak w wielu przypadkach takie opcje nie sa wlaczane ze wzgledow wydajnosciowych. Opcja taka nie jest rowniez wlaczana jesli zachodzi mozliwosc routowania poszczegolnych pakietow roznymi sciezkami. Niektore systemy operacyjne potrafia defragmentowac pakiety wysylane przez kernel, Linux z iptables i modulem sledzenia polaczen jest jednym z przykladow. Uruchamiajac skanowanie mozna podsluchac za pomoca sniffera takiego jak Ethereal, czy wychodzace pakiety sa rzeczywiscie pofragmentowane. Jesli system powoduje tego typu problemy, mozna wyprobowac opcje --send-eth, ktora pomija stos TCP/IP i wysyla bezposrenio ramki ethernetowe. -D (Ukrywaj skanowanie za pomoca innych hostow) Powoduje skanowanie, wykrywane jako przychodzace z kilku miejsc rownoczesnie. System IDS moze wykryc 5-10 roznych skanowan z roznych adresow, jednak nie bedzie w stanie ocenic ktory z nich jest prawdziwym zrodlem pochodzenia, a ktore tylko niewinnymi zaslonami. Chociaz metoda ta moze zostac rozpoznana poprzez sledzenie sciezki pakietow na routerach i innych aktywnych mechanizmow, ogolnie jest efektywna technika na ukrywanie swojego adresu IP. Podwajac liste poszczegolnych hostow-zaslon, trzeba je oddzielic przecinkami, mozna rowniez na tej liscie umiescic ME oznaczajace pozycje wlasnego adresu IP na liscie. W przypadku wykorzystania przynajmniej 6-tej pozycji na liscie dla wlasnego IP, wiele popularnych systemow wykrywajacych skanowania (na przyklad scanlogd firmy Solar Designer) nawet nie pokaze prawdziwego zrodla pochodzenia pakietow na liscie atakow. Jesli ME nie zostanie dodane, Nmap umiesci je losowo na liscie. Nalezy zwrocic uwage, ze hosty-przykrywki powinny byc dostepne, inaczej bedzie mozna latwo wykryc host skanujacy i ze mozna niechcacy dokonac ataku SYN flood na hosty skanowane. Bezpieczniej jest uzywac adresow IP zamiast nazw systemow-przykrywek, bo nie zostawi to informacji w logach ich serwera nazw. Przykrywki sa uzywane zarowno przy poczatkowym skanowaniu ping (z wykorzystaniem ICMP, SYN ACK itp), podczas skanowania portow jak i przy wykrywaniu systemu operacyjnego. Technika ta nie dziala podczas wykrywania wersji i skanowania metoda connect(). Uzywanie zbyt wielu adresow hostow-przykrywek znacznie spowalnia skanowanie i moze nawet spowodowac zmniejszenie dokladnosci. Dodatkowo niektorzy dostawcy uslug odfiltrowuja pakiety podszywajace sie pod adresy z innych sieci, jednak wielu nie robi tego wcale. -S (Ustawienie adresu nadawcy) W niektorych przypadkach Nmap nie potrafi ustalic wlasciwego adresu nadawcy (i wyswietli stosowny komunikat). W takim przypadku nalezy za pomoca opcji -S podac adres lokalnego interfejsu przez ktory maja byc wysylane pakiety. Inna mozliwoscia tej opcji jest podmiana adresu nadawcy tak, by cel skanowania uwazal, ze skanuje go ktos inny. Wyobraz sobie, ze firme nagle zacznie skanowac konkurencja! W przypadku takiego uzycia, zwykle bedzie wymagana opcja -e, a zalecana rowniez -P0. -e (Uzyj wybranego interfejsu) Informuje Nmapa przez ktory interfejs ma wysylac i odbierac pakiety. Nmap powinien wykryc go automatycznie, ale jesli mu sie nie uda, mozna to zrobic recznie. --source-port ; -g (Uzywaj podanego portu zrodlowego) Jednym z najczesciej spotykanych problemow konfiguracyjnych jest ufanie danym przychodzacym z okreslonego portu zrodlowego. Latwo jest zrozumiec, czemu tak sie dzieje. Administrator instaluje nowiusienki system zaporowy, ktorego jedyna wada sa zgloszenia od niepocieszonych uzytkownikow, ktorym nagle przestaly dzialac aplikacje. Przykladem moze byc DNS, poniewaz odpowiedzi na zapytania z zewnetrznych serwerow przestaly dochodzic do sieci. Innym przykladem jest FTP, przy stosowaniu aktywnych polaczen zewnetrzne serwery probuja utworzyc polaczenia powrotne do klienta zadajacego przeslania pliku. Bezpieczne rozwiazanie dla tych problemow istnieje, czesto w formie aplikacyjnych serwerow proxy lub analizy protokolu przez systemy zaporowe. Niestety istnieja rowniez inne latwiejsze, ale i mniej bezpieczne rozwiazania. Wielu administratorow wpada w pulapke zakladajac, ze dane przychodzace z portu 53 sa zawsze odpowiedziami serwera DNS, a z 20 aktywnymi polaczeniami FTP i zezwalajac na przechodzenie takiego ruchu przez system zaporowy. Czesto zakladaja, ze zaden atakujacy nie sprobuje wykorzystac takiej luki. Zdaza sie rowniez, ze problem taki zostaje wprowadzony do konfiguracji jako tymczasowe rozwiazanie, jednak zapominaja o jego zmianie na bardziej bezpieczne. Przepracowani administratorzy nie sa jedynymi, ktorzy wpadaja w taka pulapke. Wiele komercyjnych produktow jest dostarczanych z podobnymi problemami. Zdarzylo sie to nawet firmie Microsoft, ktorej filtry IPsec dostarczone z Windows 2000 i XP zawieraja regule wpuszczajaca caly ruch TCP i UDP pochodzacy z portu 88 (Kerberos). Innym dobrze znanym przykladem jest Zone Alarm personal firewall, ktory do wersji 2.1.25 wlacznie nie filtrowal pakietow UDP z portow 53 (DNS) i 67 (DHCP). Nmap oferuje dwie ekwiwalentne opcje -g i --source-port pozwalajace na wykorzystanie opisanej wyzej funkcjonalnosci poprzez podanie numeru portu z ktorego wysyla dane, o ile jest to tylko mozliwe. Nmap musi uzywac roznych numerow portow dla poprawnego dzialania niektorych testow wykrywajacych system operacyjny, zapytania DNS rowniez ignoruja opcje --source-port, poniewaz Nmap wykorzystuje do tego biblioteki systemowe. Wiekszosc typow skanowania TCP, wlaczajac skanowanie SYN obsluguje te opcje we wszystkich przypadkach, podobnie jak i UDP. --data-length (Dodawaj losowe dane do wysylanych pakietow) Domyslnie Nmap wysyla pakiety o minimalnej wielkosci zawierajace jedynie sam naglowek. Pakiety TCP maja 40 bajtow, a ICMP tylko 28. Ta opcja pozwala dolaczac do wiekszosci pakietow losowe dane o podanym rozmiarze. Pakiety uzywane do detekcji systemu operacyjnego (-O) pozostaja nie zmienione, ale przy wiekszosci pakietow ping i skanowania portow opcja ta jest wykorzystywana. Powiekszanie pakietow spowalnia proces skanowania, jednoczesnie czyniac go mniej podejrzanym. --ttl (Ustaw czas zycia pakietu IP) Ustawia czas zycia (TTL) pakietow na podana wartosc. --randomize-hosts (Losowanie kolejnosci skanowania hostow) Opcja powoduje wlaczenie losowania kolejnosci hostow w kazdej grupie do 8096 hostow przed ich skanowaniem. Zachowanie takie czyni skanowanie mniej oczywistym dla wielu systemow monitorujacych sieci, zwlaszcza w polaczeniu z opcja spowalniajaca skanowanie. Mozliwe jest losowanie z jeszcze wiekszych grup, poprzez zmiane stalej PING_GROUP_SZ w pliku nmap.h i rekompilacji. Innym rozwiazaniem jest wygenerowanie listy adresow IP za pomoca opcji lista skanowania (-sL -n -oN nazwapliku) i losowemu pomieszaniu adresow na niej za pomoca skryptu Perla, oraz podaniu jej Nmapowi za pomoca opcji -iL. --spoof-mac (Podmieniaj adres MAC) Podaje Nmapowi adres MAC z uzyciem ktorego beda wysylane wszystkie pakiety ethernet. Opcja wlacza rowniez automatycznie --send-eth dla uzyskania pewnosci wysylania pakietow na poziomie ethernetu. Podany adres MAC moze przyjmowac wiele postaci. Jesli zostanie podany znak ,,0", Nmap wybierze kompletnie losowy adres MAC na czas trwania danej sesji. Podanie parzystej ilosci cyfr heksadecymalnych (moga byc oddzielone dwukropkami), spowoduje wykorzystanie jej jako adresu MAC, przy czym jesli podano mniej niz 12 cyfr szestnastkowych, Nmap wypelni pozostalosc 6 bajtow losowymi wartosciami. Jesli podany ciag nie jest 0 lub liczba heksadecymalna, Nmap poszuka w pliku nmap-mac-prefixes nazwy producenta zawierajacego podany ciag (duze i male litery nie sa rozrozniane) i jesli znajdzie, uzyje identyfikatora producenta OUI (3 bajty) wypelniajac pozostale 3 bajty losowo. Przyklady poprawnych argumentow to Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2, Cisco itp. --badsum (Wysylanie pakietow z nieprawidlowa suma kontrolna TCP/UDP) Powoduje wstawianie do naglowkow wysylanych pakietow nieprawidlowych sum kontrolnych. Jako ze prawie kazdy stos IP odrzuci tego typu pakiety, otrzymana odpowiedz najprawdopodobniej pochodzi od systemu zaporowego lub IDS, ktore nie przejmuja sie sumami kontrolnymi. Dokladniejszy opis tej techniki znajduje sie pod adresem https://nmap.org/p60-12.txt WYJSCIE Kazde narzedzie jest tylko tak dobre, jak wyniki ktore sie za jego pomoca uzyskuje. Zlozone testy i algorytmy nie sa nic warte, jesli ich wyniki nie sa zaprezentowane w odpowiedniej formie. Z zwiazku z tym, ze uzytkownicy Nmapa uzywaja go w rozny sposob, takze w polaczeniu z innymi narzedziami, nie ma jednego formatu, ktory by wszystkich zadowolil. Dlatego tez Nmap oferuje kilka formatow, wlaczajac w to tryb interaktywny i tryb XML do lepszej integracji z innymi programami. Dodatkowo poza roznymi formatami wyjsciowymi, Nmap posiada opcje pozwalajace na kontrolowanie poziomu szczegolowosci dostarczanych informacji oraz komunikatow do sledzenia bledow. Wyniki moga byc przekazywane do standardowego wyjscia jak i do plikow (w trybie zastepowania lub dolaczania). Wygenerowane pliki moga rowniez byc wykorzystywane do wznowienia przerwanych skanowan. Nmap pozwala na uzyskanie pieciu roznych formatow raportow. Domyslny to format interaktywny i jest wykorzystywany w polaczeniu ze standardowym wyjsciem. Jest takze format format normalny, podobny do interaktywnego, jednak wyswietla mniej rutynowych informacji i ostrzezen, poniewaz jest raczej przewidziany do pozniejszej analizy, niz do interaktywnego ogladania w trakcie skanowania. Tryb XML jest jednym z najwazniejszych, jako ze moze zostac przekonwertowany na HTML lub bezporoblemowo przetworzony przez inne programy, takie jak graficzne interfejsy uzytkownika lub zaimportowany do bazy danych. Pozostale dwa najmniej skomplikowane to format pozwalajacy na latwe przetwarzanie za pomoca wyrazen regularnych (grep), ktory zawiera wiekszosc informacji o hoscie w jednej linii, oraz format sCRiPt KiDDi3 0utPUt. Podczas gdy format interaktywny jest domyslny i nie posiada dodatkowych opcji, pozostale cztery formaty uzywaja tej samej skladni w postaci jednego argumentu, bedacego nazwa pliku do ktorego maja zostac zapisane wyniki. Mozliwe jest podawanie wielu formatow jednoczesnie, jednak kazdy z nich moze byc podany tylko raz. Na przyklad, jesli chcesz zapisac format normalny do pozniejszego przegladania i rownoczesnie XML do przetwarzania przez inne programy, uzywamy skladni -oX myscan.xml -oN myscan.nmap. W przykladach z tej dokumentacji dla ulatwienia uzywamy prostych nazw, takich jak myscan.xml, jednak w codzinnym uzyciu zalecane jest stosowanie nazw bardziej opisowych. Nazwy te moga byc dowolnie wybierane, zgodnie z wlasnymi preferencjami, osobiscie preferuje dlugie nazwy zawierajace date skanowania i slowo lub dwa opisujace skanowanie, umieszczone w katalogu zawierajacym nazwe firmy skanowaniej. Podczas zapisywania wynikow do pliku Nmap nadal wyswietla interaktywna forme raportu na standardowe wyjscie. Przykladowo, komenda nmap -oX myscan.xml cel zapisuje wyniki w formacie XML do pliku myscan.xml rownoczesnie wyswietlajac je w trybie interaktywnym tak, jakby opcja -oX nie byla podana. Mozliwa jest zmiana tego zachowania poprzez podanie znaku myslnika (-) zamiast nazwy pliku przy wybranym formacie, co spowoduje wyswietlanie go zamiast formy interaktywnej. Tak wiec komenda nmap -oX - cel spowoduje wyswietlenie tylko formatu XML na standardowym wyjsciu stdout. Komunikaty o powaznych bledach sa nadal wyswietlane za pomoca standardowego wyjscia bledow stderr. Inaczej niz przy innych opcjach, spacja pomiedzy opcja (taka jak -oX), a nazwa pliku lub myslnika nie jest wymagana. Jesli spacja zostanie pominieta przy opcjach takich jak -oG- lub -oXscan.xml, z powodow kompatybilnosci wstecznej Nmap zapisze wyniki w formacie normalnym w plikach odpowiednio G- i Xscan.xml. Nmap posiada rowniez opcje pozwalajace na ustalenie poziomu szczegolowosci podawanych informacji jak rowniez pozwalajace na dolaczanie wynikow do juz istniejacych plikow. Opcje te zostaly opisane ponizej. Formaty wyjsciowe Nmapa -oN (Format normalny) Powoduje zapis w formacie normalnym do wskazanego pliku. Jak napisano wyzej, format ten rozni sie nieco od formatu interaktywnego. -oX (Format XML) Powoduje zapis w formacie XML do wskazanego pliku. Nmap dolacza definicje formatu dokumentu (DTD), ktory pozwala innym programom na weryfikacje zawartosci tego pliku. Funkcja ta jest glownie przeznaczona do wykorzystania przez oprogramowanie dodatkowe, jednak moze pomoc w recznej analizie zawartych danych. DTD opisuje jakie elementy XML moga byc legalnie uzywane w pliku i czesto podaje jakie wartosci moga przyjmowac poszczegolne znaczniki. Zawsze aktualna DTD wersja jest dostepna pod adresem https://nmap.org/data/nmap.dtd. XML jest stabilnym formatem, ktory moze byc latwo przetwarzany przez inne programy. Darmowe biblioteki do przetwarzania XML sa dostepne dla wiekszosci jezykow programowania, takich jak C/C++, Perl, Python czy Java. Napisano nawet wiele procedur dostosowanych specjalnie do potrzeb Nmapa. Przykladami sa Nmap::Scanner[11] i Nmap::Parser[12] dla Perla (CPAN). W wiekszosci duzych aplikacji korzystajacych z Nmapa preferowany jest wlasnie format XML. W formacie XML jest rowniez opisany styl XSL, ktory moze zostac wykorzystany do konwersji do HTML. Najprostrzym sposobem jest po prostu wczytanie pliku XML do przegladarki internetowej, takiej jak Firefox czy IE. Domyslnie zadziala to tylko na komputerze na ktorym byl uruchamiany Nmap (lub skonfigurowanym podobnie), z powodu umieszczenia sciezki do pliku nmap.xsl wlasciwej dla danego systemu. Za pomoca opcji --webxml lub --stylesheet mozna utworzyc przenosny raport XML, mozliwy do obejrzenia w formacie HTML na kazdym komputerze podlaczonym do Internetu. -oS (Format ScRipT KIdd|3) Format script kiddie jest podobny do interaktywnego, jednak jest dodatkowo przetworzony na potrzeby l33t HaXXorZ, ktorzy nie byli zadowoleni z domyslnego, uporzadkowanego formatu Nmapa. Osoby bez poczucia humoru powinny wiedziec przed zarzucaniem mi ,,pomagania script kiddies ", ze opcja ta jest tylko zartem, a nie pomoca. -oG (Format "grepowalny") Ten format zostal opisany jako ostatni, jako ze jest juz przestarzaly. Format XML jest duzo lepszy i jest prawie tak samo wygodny dla zaawansowanych uzytkownikow. XML jest standardem, do ktorego napisano dziesiatki bibliotek, podczas gdy format grepowalny jest moim osobistym wymyslem. XML pozwala rowniez na latwe rozszerzanie o nowe funkcje Nmapa w miare ich dodawania, podczas gdy w formacie grepowalnym musza one byc pomijane z powodu braku miejsca. Niezaleznie od tego, format ten jest nadal calkiem popularny. Jest prostym formatem opisujacym kazdy host w oddzielnej linii i umozliwiajacy bardzo proste wyszukiwanie i przetwarzanie za pomoca standardowych narzedzi systemow UNIX takich jak grep, awk, cut, sed, diff i Perl. Format ten jest wygodny do szybkiego odnajdywania potrzebnych danych, na przyklad hostow z otwartym portem SSH lub uzywajacych systemu Solaris i jest to mozliwe za pomoca wycinania interesujacych informacji za pomoca prostych polecen awk czy cut. Format grepowalny sklada sie z linii komentarzy (rozpoczynajacych sie od znaku #) i linii wynikow. Linia wynikow sklada sie z szesciu pol, oddzielonych znakami tabulacji i przecinkami. Polami tymi sa Host, Ports, Protocols, Ignored State, OS, Seq Index, IPID i Status. Najwazniejszymi z tych pol sa najczesciej pola Ports, ktore zawieraja informacje o interesujacych portach, w postaci listy oddzielonej przecinkami. Kazda pozycja na liscie 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, dokladny opis formatu grepowalnego przekracza zakres tej dokumentacji i jest dostepny pod adresem http://www.unspecific.com/nmap-oG-output. -oA (Wyjscie we wszystkich formatach) Dla wygody mozna podac opcje -oAnazwa do zapisywania wynikow w formacie normalnym, XML i grepowalnym rownoczesnie. Wyniki zostana zapisane odpowiednio w plikach o nazwach nazwa.nmap, nazwa.xml i nazwa.gnmap. Tak jak i w przypadku innych programow, nazwa moze zostac poprzedzona sciezka, na przyklad ~/nmaplogs/foocorp/ w systemach UNIX lub c:\hacking\sco pod Windows. Poziom szczegolowosci i opcje diagnozowania bledow -v (Podwyzszenie poziomu raportowania) Podwyzszenie poziomu raportowania powoduje wyswietlanie przez Nmapa wiekszej ilosci informacji na temat postepow skanowania. Otwarte porty sa pokazywane zaraz po ich wykryciu, podawany jest takze przewidywany czas zakonczenia skanowania w przypadku kiedy Nmap zaklada, ze test potrwa dluzej niz kilka minut. Dwukrotne uzycie tej opcji powoduje dalsze powiekszenie poziomu szczegolowosci, trzykrotne i dalsze nie daja juz zadnego efektu. Wiekszosc zmian dotyczy trybu interaktywnego, niektore odnosza sie takze do trybu normalnego i script kiddie. Pozostale formaty sa przystosowane do przetwarzania przez maszyny, wiec Nmap moze zawsze podawac szczegolowe informacje bez zmniejszania czytelnosci dla czlowieka. Sa jednak i drobne roznice w innych formatach, na przyklad w formacie grepowalnym linia komentarza zawierajaca liste skanowanych hostow jest dodawana tylko w trybie podwyzszonej szczegolowosci, ze wzgledu na swoja dosyc znaczna dlugosc. -d [poziom] (Ustawianie poziomu sledzenia bledow) Jesli dostepne poziomy szczegolowosci nie dostarczaja wystarczajacej ilosci informacji, opcje sledzenia bledow moga Cie wrecz nimi zasypac! Podobnie jak w przypadku wykorzystania opcji podwyzszania szczegolowosci (-v), opcja wlaczajaca umowanie nazwane sledzenie bledow, wlaczana jest za pomoca parametru (-d) i mozliwe jest jej wielokrotne dodawanie powiekszajace skutek. Alternatywnie mozna podac poziom jako argument do opcji -d. Na przyklad -d9 ustawia poziom na dziewiec. Jest to najwyzszy mozliwy poziom produkujacy setki linii, o ile nie jest to proste skanowanie kilku portow i hostow. Format ten jest uzyteczny jesli podejrzewamy istnienie bledu w Nmapie lub jesli po prostu chcemy wiedziec co Nmap robi i czemu. Jako ze opcja ta jest przeznaczona glownie dla autorow, wyswietlane linie nie zawsze sa do konca zrozumiale. Mozna otrzymac na przyklad cos w stylu: Timeout vals: srtt: -1 rttvar: -1 to: 1000000 delta 14987 ==> srtt: 14987 rttvar: 14987 to: 100000. Jesli nie rozumiesz takiego zapisu, mozesz go po prostu zignorowac, poszukac w kodzie zrodlowym lub poprosic o pomoc na liscie dyskusyjnej tworcow Nmapa (nmap-dev). Niektore linie sa dosyc czytelne, ale staja sie coraz bardziej skomplikowane wraz ze wzrostem poziomu sledzenia bledow. --packet-trace (Sledzenie wysylanych i odbieranych pakietow) Powoduje wyswietlanie przez Nmapa krotkiej informacji na temat kazdego wysylanego i odbieranego pakietu. Opcja ta jest czesto uzywana podczas sledzenia bledow, ale zawiera rowniez wartosciowe informacje dla nowych uzytkownikow, pozwalajace zrozumiec co Nmap robi. Unikniecie wyswietlania tysiecy linii mozliwe jest poprzez ograniczenie ilosci portow do skanowania, na przyklad za pomoca -p20-30. Jesli chcesz zobaczyc tylko to, co dzieje sie w trakcie wykrywania wersji, uzyj raczej opcji --version-trace. --iflist (Pokazuj interfejsy i tablice routingu) Wyswietla liste interfejsow i tablice routingu wykryte przez Nmapa. Opcja jest przydatna przy sledzeniu bledow w routingu lub niepoprawnym wykrywaniu typow interfejsow (na przyklad jesli Nmap traktuje polaczenie PPP jako ethernet). Pozostale opcje --append-output (Dolaczaj wyniki do pliku) Jesli zostanie podana nazwa pliku jako argument do opcji takiej jak -oX czy -oN, domyslnie poprzednia zawartosc pliku zostanie usuneta i zastapiona nowa. Jesli zachodzi potrzeba zachowania poprzedniej zawartosci pliku i dolaczenie nowych wynikow, nalezy dodac opcje --append-output. Potraktowane tak zostana wszystkie podane pliki. Opcja nie dziala zbyt dobrze z formatem XML, jako ze wynikowy plik nie moze byc pozniej bezblednie przetworzony bez recznych poprawek. --resume (Wznowienie przerwanego skanowania) Niektore skanowania Nmapa moga trwac bardzo dlugo, nawet kilka dni. Problem pojawia sie wtedy, kiedy nie jest mozliwe ciagle prowadzenie skanowania, na przyklad z powodu potrzeby dzialania tylko w godzinach pracy, problemow z dostepnoscia sieci, (nie)przypadkowym restartem komputera na ktorym dziala Nmap lub wykonaniem przez niego nieprawidlowej operacji. Uzytkownik moze rowniez przerwac w kazdej chwili skanowanie za pomoca kombinacji ctrl-C. W takich przypadkach ponowne rozpoczynanie testow od poczatku moze nie byc pozadane. Na szczescie, jesli pozostaly wyniki przerwanych testow w formacie normalnym (-oN) lub grepowalnym (-oG), mozliwe jest ich wznowienie od momentu przerwania. Sluzy do tego opcja --resume dla ktorej argumentem musi byc nazwa pliku w formacie normalnym lub grepowalnym. W tym przypadku nie jest mozliwe podawanie zadnych innych opcji, jako ze Nmap przetworzy podany plik i odtworzy wczesniej podane opcje. Po prostu uruchom nmap --resume nazwapliku, a Nmap dolaczy do wskazanego pliku nowe wyniki. Opcja ta nie obsluguje formatu XML, jako ze laczenie dwoch oddzielnych wynikoe skanowan w jeden plik jest dosyc trudne. --stylesheet (Styl XSL do transformacji formatu XML) Nmap posiada domyslny styl XSL do przegladania lub konwersji do formatu XML w pliku nmap.xsl. Plik wyjsciowy XML zawiera dyrektywe xml-stylesheet wskazujaca na nmap.xml, ze sciezka do domyslej lokalizacji tego pliku (lub bierzacego katalogu pod Windows). Dzieki temu wystarczy po prostu zaladowac plik XML Nmapa do przegladarki, ktora sama odczyta sobie plik nmap.xsl i uzyje go do prawidlowego wyswietlenia wynikow. Mozliwe jest rowniez uzycie innego stylu poprzez podanie nazwy pliku jako argumentu dla opcji --stylesheet. W tym przypadku konieczne jest podanie pelnej sciezki lub adresu URL. Typowe wywolanie ma postac --stylesheet https://nmap.org/data/nmap.xsl. Dyrektywa ta nakazuje pobranie najnowszej wersji pliku ze stylem ze strony Insecure.Org. Opcja --webxml robi dokladnie to samo, bedac latwiejsza do wpisania i zapamietania. Uzywanie pliku XSL ze strony Insecure.Org ulatwia przegladanie wynikow na systemie nie posiadajacym zainstalowanego Nmapa (czyli nie posiadajacym pliku nmap.xsl). Podawanie adresu URL jest wygodniejsze, jednak domyslnie uzywany jest plik lokalny ze wzgledu za zachowanie poufnosci uzytkownika. --webxml (Uzyj stylu ze strony Insecure.Org) Opcja jest wygodniejszym zapisem analogicznego --stylesheet https://nmap.org/data/nmap.xsl. --no-stylesheet (Nie uzywaj deklaracji stylu XSL w formacie XML) Dodanie tej opcji powoduje wylaczenie dolaczania stylu XSL do pliku z wynikami w formacie XML. Zostaje pominieta dyrektywa xml-stylesheet. ROZNE OPCJE Sekcja ta opisuje istotne (i nie istotne) opcje, ktore nie pasowaly gdzie indziej. -6 (Wlaczenie skanowania IPv6) Od roku 2002 Nmap obsluguje IPv6, w zakresie jego najpopularniejszych funkcji. W szczegolnosci dostepne jest skanowanie ping (tylko TCP), connect() i wykrywanie wersji. Skladnia opcji jest taka sama jak zwykle, wystarczy tylko dodac opcje -6. Oczywiscie w przypadku podawania adresow zamiast nazw, niezbedne jest podawanie ich zgodnie ze skladnia IPv6. Jako ze adres moze wygladac podobnie do 3ffe:7501:4819:2000:210:f3ff:fe03:14d0, zalecane jest uzywanie nazw hostow. Wyniki poza samym adresem wygladaja tak samo jak i przy innych opcjach. Adresacja IPv6 nie zawladnela jeszcze swiatem, jednak jest czesto wykorzystywana w niektorych krajach (zwykle azjatyckich) i wiekszosc obecnych systemow ja obsluguje. Oczywiscie do uzywania IPv6 musi byc on prawidlowo skonfigurowany i dostepny zarowno na hoscie skanowanym, jak i skanujacym. Jesli dostawca uslug nie umozliwia uzyskania adresow IP (najczesciej tak wlasnie jest), jest duzo dostawcow darmowych tuneli, ktore dzialaja poprawnie z Nmapem. Jednymi z lepszych sa dostarczane przez BT Exact i Hurricane Electric na http://ipv6tb.he.net/. Tunele 6to4 sa innym popularnym i darmowym rozwiazaniem. -A (Agresywne opcje skanowania) Wlacza dodatkowe zaawansowane i agresywne opcje skanowania. Aktualnie sa nimi wykrywanie systemu operacyjnego (-O) i wykrywanie wersji (-sV). Wiecej opcji byc moze zostanie dodane w przyszlosci. Glownym celem jest proste wlaczenie najbardziej popularnych opcji skanowania bez koniecznosci zapamietywania wielu parametrow. Wlaczane sa tylko opcje wlaczajace okreslona funkcjonalnosc, nie zas te dotyczace zaleznosci czasowych (takie jak -T4) czy poziomu szczegolowosci (-v), ktore mozna dodac niezaleznie. --datadir (Okreslenie lokalizacji plikow z danymi) Podczas pracy Nmap pobiera dodatkowe informacje z plikow nmap-service-probes, nmap-services, nmap-protocols, nmap-rpc, nmap-mac-prefixes i nmap-os-fingerprints. Nmap rozpoczyna poszukiwania tych plikow od katalogu podanego jako parametr dla opcji --datadir, jesli zostala dodana. Jesli nie znajdzie plikow w podanej lokalizacji, poszukuje ich w katalogu okreslonych w zmiennej srodowiskowej NMAPDIR, a nastepnie w katalogu ~/.nmap dla rzeczywistego i efektywnego UID (tylko systemy POSIX) i katalogu z programem Nmap (tylko Win32). Jesli i to nie przyniesie skutku, poszukiwane sa w lokalizacji podanej przy kompilacji, takiej jak /usr/local/share/nmap lub /usr/share/nmap. Na koncu sprawdzany jest aktualny katalog. --send-eth (Uzywanie niskopoziomowych ramek ethernet) Opcja powoduje wysylanie bezposrednio ramek niskiego poziomu ethernet (warstwa danych), zamiast poprzez stos IP (warstwa sieci). Domyslnie Nmap wybiera metode, ktora jest ogolnie lepsza dla danej platformy, na ktorej jest uruchomiony. Gniazda raw (warstwa IP) sa efektywniejsze w przypadku systemow UNIX, podczas gdy ramki ethernet sa niezbedne w przypadku systemow Windows, od czasu kiedy to Microsoft wylaczyl obsluge gniazd raw. Jesli nie ma innej mozliwosci, Nmap w systemach UNIX wybierze metode ethernet, pomijajac wybrana przez uzytkownika i niedostepna opcje. --send-ip (Wysylaj pakiety raw IP) Wlacza wysylanie pakietow przez gniazda raw IP, zamiast przez ramki ethernet. Opcja jest przeciwienstwem opisanej wyzej opcji --send-eth. --privileged (Zakladaj ze uzytkownik ma odpowiednie uprawnienia) Informuje Nmapa, ze uzytkownik jest wystarczajaco uprzywilejowany aby korzystac z wysylania pakietow za pomoca gniazd raw, podsluchiwania pakietow i podobnych operacji zwykle wymagajacych uprwawnien roota w systemach UNIX. Domyslnie Nmap przerywa dzialanie w momencie wykrycia proby wykonania takich operacji i funkcja geteuid() nie zwraca wartosci zero. Opcja --privileged jest uzyteczna w systemach Linux posiadajacych mozliwosci odpowiedniego przywilejowania uzytkownikow do przeprowadzania wymienionych operacji. Upewnij sie, ze opcja zostala podana przed innymi opcjami wymagajacymi podwyzszonych uprwanien (skanowanie SYN, wykrywanie systemu operacyjnego itp). Zmienna NMAP_PRIVILEGED moze zostac ustawiona jako alternatywa dla wykorzystania opcji --privileged. -V; --version (Wyswietl numer wersji) Wyswietla tylko numer wersji Nmapa. -h; --help (Wyswietl pomoc) Wyswietla krotki ekran pomocy opisujacy najpopularniejsze opcje, podobnie jak uruchomienie Nmapa bez parametrow. INTERAKCJA W CZASIE PRACY Podczas pracy Nmapa, przechwytywane sa wszystkie nacisniecia klawiszy. Pozwala to na interakcje z programem bez przerywania go lub restartowania. Niektore specjalne klawisze zmieniaja opcje, inne wyswietlaja status skanowania. Konwencja zaklada, ze male litery zmniejszaja ilosc informacji, a duze litery powiekszaja. Mozna rowniez nacisnac `?' dla v / V Zwiekszenia / Zmniejszenia poziomu szczegolowosci d / D Zwiekszenia / Zmniejszenia poziomu sledzenia bledow p / P Wlaczenia / Wylaczenia sledzenia pakietow ? Wyswietlenia ekranu pomocy Wszystko inne Wyswietla 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) PRZYKLADY Ponizej przedstawiono przyklady wykorzystania Nmapa, od prostych i rutynowych do troche bardziej skomplikowanych i ezoterycznych. Przykladowe adresy IP i nazwy domen powinny zostac zastapione adresami/nazwami z twojej wlasnej sieci. Nie uwazam, ze skanowanie portow powinno byc nielegalne, jednak niektorzy administratorzy nie toleruja nie autoryzowanego skanowania ich sieci i moga zglaszac swoje protesty. Uzyskanie zgody jest pierwszym wyzwaniem. Do celu testow, masz zgode do skanowania hosta scanme.nmap.org. Zgoda pozwala jedynie na skanowanie za pomoca Nmapa, nie zas na testowanie exploitow czy przeprowadzanie atakow typu Denial of Service. Dla oszczednosci pasma, prosze nie uruchamiaj wiecej niz tuzina skanowan tego hosta dziennie. W przypadku naduzyc, host zostanie wylaczony, a Nmap bedzie zwracal komunikat Failed to resolve given hostname/IP: scanme.nmap.org. pozwolenie dotyczy takze adresow scanme2.nmap.org, scanme3.nmap.org i nastepnych, choc hosty te jeszcze nie istnieja. nmap -v scanme.nmap.org Pozwoli na przeskanowanie wszystkich portow TCP adresu scanme.nmap.org. Opcja -v podwyzszy poziom szczegolowosci zwracanych informacji. nmap -sS -O scanme.nmap.org/24 Uruchamia skanowanie SYN wszystkich 255 hostow znajdujacych sie w tej samej klasie ,,C", co host scanme.nmap.org. Dodatkowo wykonywana jest proba detekcji systemu operacyjnego dla kazdego hosta, ktory jest aktywny. Wymaga to uprawnien uzytkownika 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 enumeracje hostow i skanowanie TCP pierwszej polowy kazej z 255 mozliwych 8-mio bitowych podsieci klasy B 198.116. Wykrywane jest dzialanie uslug sshd, DNS, pop3d, imapd i portu 4564. Dla kazdego z tych portow, ktory zostal wykryty jako otwarty przeprowadzane jest wykrywanie wersji dzialajacej aplikacji. nmap -v -iR 100000 -P0 -p 80 Poleca Nmapowi na wybranie 100,000 losowych hostow i przeskanowanie ich w poszukiwaniu serwerow WWW (port 80). Enumeracja hostow jest wylaczona za pomoca opcji -P0, poniewaz wysylanie najpierw pakietow w celu okreslenia czy host jest aktywny nie ma sensu, jako ze 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 adresow IP w poszukiwaniu serwerow WWW (bez pingowania ich) i zapisuje wyniki w plikach XML i grepowalnym. BLEDY Jak i jego autor, Nmap nie jest doskonaly. Mozesz jednak pomoc przysylajac raporty dotyczace bledow lub nawet wysylajac wlasne poprawki. Jesli Nmap nie zachowuje sie w sposob ktorego oczekujesz, zacznij od aktualizacji do najnowszej wersji dostepnej pod adresem https://nmap.org/. Jesli problem nadal wystepuje, wykonaj troche testow dla okreslenia czy podobny problem nie zostal juz wykryty i oznaczony. Sprobuj poszukac Googlem komunikatu bledu lub poprzegladaj archiwa listy dyskusyjnej Nmap-dev pod adresem https://seclists.org/. Przeczytaj rowniez cala dokumentacje. Jesli nic nie pomoze, wyslij raport opisujacy blad po angielsku na adres . Prosze dolacz wszystko co udalo Ci sie ustalic na temat tego problemu, jak rowniez informacje o uzywanej wersji Nmapa i systemie operacyjnym na ktorym jest uruchamiany. Opisy problemow i pytania dotyczace uzywania Nmapa wyslane na adres dev@nmap.org z wiekszym prawdopodobienstwem doczekaja sie szybkiej odpowiedzi, niz wyslane bezposrednio do Fyodora. Poprawki blednego kodu sa milej widziane, niz opisy bledow. Podstawowe instrukcje tworzenia poprawek sa opisane na stronie https://nmap.org/data/HACKING. Poprawki moga byc wysylane na nmap-dev (rekomendowane) lub bezposrednio do Fyodora. AUTOR Fyodor (http://www.insecure.org) Setki ludzi wniosly wartosciowy wklad w rozwoj Nmapa. Szczegoly sa zamieszczane w pliku CHANGELOG, ktory jest rozpowszechniany z Nmapem i jest rowniez dostepny pod adresem https://nmap.org/changelog.html. UWARUNKOWANIA PRAWNE Unofficial Translation Disclaimer / Oswiadczenie dotyczace tlumaczenia 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 tlumaczenie licencji Nmapa[13] na jezyk polski. Nie zostalo ono napisane przez Insecure.Com LLC, i przez to nie moze byc uwazane za wiazace, tak jak jego angielska wersja, jednakze uwazamy, ze tlumaczenie to pozwoli lepiej zrozumiec licencje Nmapa. Prawa autorskie i licencjonowanie Nmap Prawa autorskie (1996-2005) do programu Nmap Security Scanner posiada Insecure.Com LLC. Nmap jest takze zastrzezonym znakiem towarowym Insecure.Com LLC. Ten program jest wolnym oprogramowaniem; mozliwa 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 uzywania, modyfikowania i redystrybucji tego oprogramowania pod pewnymi warunkami. Jesli technologia Nmapa jest integrowana z innymi programami, mozliwa jest sprzedaz alternatywnych licencji (kontakt ). Wielu producentow skanerow bezpieczenstwa licencjonuje technologie Nmapa takie jak wykrywanie hostow, skanowanie portow, wykrywanie systemow operacyjnych i wykrywanie uslug/wersji. GPL naklada isotne ograniczenia w stosunku do ,,produktow pochodnych ", jednak nie jest jeszcze dostepna dokladna ich definicja. Dla unikniecia nieporozumien zakladamy, ze aplikacja jest produktem pochodnym w przypadku gdy spelnia ktorys z warunkow: o Integruje kod zrodlowy Nmapa o Odczytuje lub dolacza chronione prawami autorskimi pliki Nmapa, takie jak nmap-os-fingerprints czy nmap-service-probes. o Uruchamia Nmapa i przetwarza jego wyniki (w odroznieniu od aplikacji, ktore uruchamiaja Nmapa i wyswietlaja nie przetworzone raporty i przez to nie sa produktami pochodnymi). o Integruja/wlaczaja/agreguja Nmapa w wykonywalnym instalatorze, tak jak stworzone za pomoca InstallShield. o Wykorzystuja biblioteke lub program wykonujacy jedno z powyzszych. Warunki ,,Nmapa" powinny dotyczyc czesci i pochodnych programu Nmap. Powyzsza lista ma na celu klarowne przedstawienie naszej interpretacji programow pochodnych z przykladami. Ograniczenia dotycza tylko przypadkow, w ktorych Nmap jest rozpowszechniany razem z programem pochodnym. Na przyklad nic nie stoi na przeszkodzie napisania i sprzedawania wlasnego interfejsu do Nmapa. Wystarczy rozprowadzac go oddzielnie podajac uzytkownikom adres https://nmap.org/ do pobierania Nmapa. Nie uwazamy tego za ograniczenia dodane do GPL, ale jako klarowna interpretacje ,,programow pochodnych", jako ze dotyczy to naszego produktu opartego na GPL. Jest to zblizone do sposobu w jaki Linus Torvalds opublikowal swoja interpretacje dotyczaca ,,programow pochodnych", opartych na modulach kernela Linuxa. Nasza interpretacja odnosi sie tylko do Nmapa - nie mowimy o zadnym innym produkcie GPL. Jesli masz jakiekolwiek pytania dotyczace ograniczen licencji GPL przy zastosowaniach Nmapa w produktach nie opartych na GPL, chetnie pomozemy. Jak wspomniano wyzej, oferujemy takze alternatywna licencje do integrowania Nmapa we wlasnych aplikacjach i urzadzeniach. Licencje na integracje Nmapa zostaly sprzedane wielu producentom oprogramowania zwiazanego z bezpieczenstwem i ogolnie zawieraja dozywotnia licencje oraz dostarczaja priorytetowego wsparcia technicznego wraz z aktualizacjami i pomagaja oplacic dalszy rozwoj Nmapa. Prosze o kontakt z w celu uzyskania dalszych informacji. Jako specjalny wyjatek dla warunkow GPL, Insecure.Com LLC zezwala na linkowanie kodu tego programu z dowolna wersja biblioteki OpenSSL, ktora jest dystrybuowana na licencji identycznej do umieszczonej w pliku Copying.OpenSSL oraz na dystrybucje obu w postaci zlinkowanej. Musisz przestrzegac licencji GPL we wszystkich aspektach wykorzystania kodu, innym niz OpenSSL. Jesli zmodyfikujesz wspomniany plik, mozesz rozszerzyc ten wyjatek o Twoja wersje, ale nie jestes do tego zobligowany. Jesli otrzymales(as) te pliki z pisemna licencja lub kontraktem zmieniajacym powyzsze zapisy, maja one pierwszenstwo nad umieszczonymi tutaj. Licencja Creative Commons dla tego podrecznika Nmap Prawa (2005) do tego podrecznika Nmapa posiada Insecure.Com LLC. Jest on udostepniany w oparciu o wersje 2.5 licencji Creative Commons Attribution License[2]. Pozwala ona na redystrybucje i modyfikowanie w potrzebnym zakresie tak dlugo, jak zostanie podane oryginalne zrodlo. Alternatywnie mozesz traktowac ten dokument jako udostepniany na takiej samej licencji jak Nmap (opisanej wczesniej). Dostepnosc kodu zrodlowego i wklad spolecznosci Kod zrodlowy dla tego programowania jest dostepny, poniewaz uwazamy, ze uzytkownicy maja prawo wiedziec dokladnie co program robi, zanim go uruchomia. Pozwala to takze na przeprowadzenie audytu kodu pod katem bezpieczenstwa (jak dotad nie wykryto problemu tego typu). Kod zrodlowy pozwala rowniez na przenoszenie Nmapa na nowe platformy, na poprawianie bledow i dodawanie nowych funkcji. Mocno zachecamy do wysylania swoich zmian na adres w celu mozliwej integracji z glowna dystrybucja. Wyslanie tych zmian do Fyodora lub na jedna z list dyskusyjnych dla deweloperow Insecure.Org, powoduje przekazanie praw do nielimitowanego, nie wylacznego prawa do ponownego wykorzystania, modyfikacji i relicencjonowania tego kodu. Nmap zawsze bedzie dostepny jako Open Source, lecz jest to istotne z powodu dewastujacych problemow jakie pojawialy sie w innych projektach Free Software (takich jak KDE i NASM). Okazjonalnie licencjonujemy kod do firm trzecich, jak to wspomniano wyzej. Jesli chcesz dodac specjalna licencje dla swojego wkladu, wystarczy dolaczyc odpowiednia informacje przy wysylaniu kodu do nas. Brak gwarancji Program ten jest rozpowszechniany z nadzieja, ze bedzie uzyteczny, jednak BEZ ZADNEJ GWARANCJI; takze bez zalozonej gwarancji PRZYDATNOSCI HANDLOWEJ lub PRZYDATNOSCI DO OKRESLONYCH ZASTOSOWAN. Zobacz licencje GNU General Public License dla dalszych szczegolow pod adresem http://www.gnu.org/copyleft/gpl.html, jej polskie nieoficjalne tlumaczenie http://www.gnu.org.pl/text/licencja-gnu.html lub w pliku COPYING dolaczanym do Nmapa. Nalezy rowniez zwrocic uwage, ze Nmap okazjonalnie potrafi spowodowac zaprzestanie dzialania zle napisanych aplikacji, stosu TCP/IP lub nawet calego systemu operacyjnego. Jest to bardzo rzadko spotykane, ale wazne jest, aby o tym pamietac. Nmap nie powinien byc nigdy uruchamiany przeciwko systemom krytycznym, o ile nie jestes przygotowany(a) na ewentualna przerwe w dzialaniu. Potwierdzamy, ze Nmap moze spowodowac awarie systemow lub sieci i wypieramy sie jakiejkolwiek odpowiedzialnosci za uszkodzenia lub problemy spowodowane przez jego dzialanie. Nieodpowiednie uzycie Z powodu istnienia niewielkiego ryzyka spowodowania awarii i poniewaz niektore czarne kapelusze lubia uzywac Nmapa do wykonania rekonesansu przed atakiem systemu, administratorzy moga sie denerwowac i zglaszac swoje protesty z powodu skanowania ich systemow. Z tego powodu, najczesciej zalecane jest uzyskanie odpowiedniej zgody przed wykonaniem nawet delikatnego skanowania sieci. Z powodow bezpieczenstwa, Nmap nie powinien byc 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 dolaczana do dystrybucji Nmapa. Wersja Nmapa dla systemu Windows wykorzystuje oparta na libpcap biblioteke WinPcap[16] (zamiast libpcap). Obsluge wyrazen regularnych zapewnia biblioteka PCRE[17], ktora jest oprogramowaniem open source, napisanym przez Philip Hazel. Niektore funkcje dotyczace niskiego poziomu sieci wykorzystuja biblioteke Libdnet[18], napisana przez Dug Songa. Zmodyfikowana jej wersja jest dolaczana do dystrybucji Nmapa. Nmap moze byc opcjonalnie linkowany z biblioteka kryptograficzna OpenSSL[19], uzywana do detekcji wersji SSL. Wszystkie opisane w tym paragrafie programy firm trzecich sa rozpowszechniane na licencji BSD. Klasyfikacja eksportowa Stanow Zjednoczonych Ameryki Polnocnej US Export Control: Insecure.Com LLC wierzy, ze Nmap kwalifikuje sie pod oznaczenie US ECCN (export control classification number) 5D992. Kategoria ta jest opisana jako ,,Oprogramowanie dotyczace bezpieczenstwa informacji nie objete 5D002". Jedynym ograniczeniem tej kategorii jest AT (anty-terroryzm), ktora odnosi sie do wiekszosci dobr i zabrania eksportu do niektorych awanturniczych krajow takich jak Iran czy Polnocna Korea. Z tego powodu Nmap nie wymaga zadnej specjalnej licencji, zgody lub innych autoryzacji rzadu 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 Nmap 05/17/2023 NMAP(1)