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