mirror of
https://github.com/nmap/nmap.git
synced 2025-12-10 09:49:05 +00:00
3279 lines
198 KiB
XML
3279 lines
198 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!-- $Id: manhtml.xml 2991 2005-12-12 10:21:33Z fyodor $ -->
|
|
<article id="man" lang="pl">
|
|
<artheader>
|
|
<title>Opis programu Nmap</title>
|
|
</artheader>
|
|
<refentry id="man-nmap1">
|
|
<refmeta>
|
|
<refentrytitle>nmap</refentrytitle>
|
|
<manvolnum>1</manvolnum>
|
|
<refmiscinfo class="source">Nmap</refmiscinfo>
|
|
<refmiscinfo class="manual">Opis programu Nmap</refmiscinfo>
|
|
</refmeta>
|
|
<refnamediv id="man-name">
|
|
<refname>nmap</refname>
|
|
<refpurpose>Narzędzie do eksploracji sieci i skaner portów/zabezpieczeń</refpurpose>
|
|
</refnamediv>
|
|
<!-- body begins here -->
|
|
<refsynopsisdiv id="man-synopsis">
|
|
<cmdsynopsis sepchar=" ">
|
|
<command moreinfo="none">nmap</command>
|
|
<arg choice="opt" rep="repeat">
|
|
<replaceable>Typ Skanowania</replaceable>
|
|
</arg>
|
|
<arg choice="opt" rep="norepeat">
|
|
<replaceable>Opcje</replaceable>
|
|
</arg>
|
|
<arg choice="req" rep="norepeat">
|
|
<replaceable>specyfikacja celu</replaceable>
|
|
</arg>
|
|
</cmdsynopsis>
|
|
</refsynopsisdiv>
|
|
<refsect1 id="man-description">
|
|
<title>Opis</title>
|
|
<web>
|
|
<note><para>
|
|
Dokument ten opisuje Nmap wersji 3.95. Najnowsza dokumentacja jest dostępna w języku angielskim na
|
|
<ulink url="https://nmap.org/book/man.html" />.</para></note>
|
|
</web>
|
|
|
|
<para>Nmap (ang. <quote>Network Mapper</quote>) 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).</para>
|
|
|
|
<para>Wynikiem działania Nmapa jest lista przeskanowanych adresów z
|
|
dodatkowymi informacjami zależnymi od wykorzystanych opcji. Jedną z
|
|
głównych informacji jest <quote>lista interesujących portów</quote>.
|
|
Zawiera ona numery portów wraz z protokołami, nazwami usługi i
|
|
wykrytym stanem. Stan może zostać opisany jako
|
|
<literal moreinfo="none">otwarty</literal>,
|
|
<literal moreinfo="none">filtrowany</literal>,
|
|
<literal moreinfo="none">zamknięty</literal>, lub
|
|
<literal moreinfo="none">niefiltrowany</literal>.
|
|
Otwarty oznacza, że aplikacja na badanym adresie oczekuje na
|
|
połączenia/pakiety przychodzące na ten port.
|
|
<literal moreinfo="none">Filtrowany</literal> 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 <literal moreinfo="none">otwarty</literal> czy
|
|
<literal moreinfo="none">zamknięty</literal>.
|
|
<literal moreinfo="none">Zamknięty</literal> port nie posiada aplikacji,
|
|
która obsługuje komunikację sieciową. Porty sklasyfikowane jako
|
|
<literal moreinfo="none">niefiltrowane</literal> 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
|
|
<literal moreinfo="none">otwarty|filtrowany</literal> i
|
|
<literal moreinfo="none">zamknięty|filtrowany</literal> 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 (<option>-sO</option>),
|
|
Nmap zamiast listy portów dostarczy informacji na temat dostępności
|
|
poszczególnych protokołów IP.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Typowy wynik skanowania Nmapa jest przedstawiony w
|
|
<xref linkend="man-ex-repscan"/>. W tym przypadku wykorzystano tylko opcję
|
|
<option>-A</option>, wykrywającą wersje systemu operacyjnego,
|
|
<option>-T4</option> dla szybszego działania i dwa adresy docelowe.</para>
|
|
|
|
<example id="man-ex-repscan"><title>Przykładowe wyniki skanowania Nmapa</title>
|
|
<screen format="linespecific">
|
|
# 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
|
|
|
|
</screen>
|
|
</example>
|
|
|
|
<para>Najnowszą wersję Nmapa można pobrać z
|
|
<ulink url="https://nmap.org/"/>. Najnowsza wersja dokumentacji man
|
|
jest dostępna pod adresem
|
|
<ulink url="https://nmap.org/man/"/>.</para>
|
|
|
|
</refsect1>
|
|
|
|
<refsect1 id="man-translator">
|
|
<title>Uwagi do tłumaczenia</title>
|
|
<para>Przemysław Galczewski
|
|
<email>sako(at)avet.com.pl</email>
|
|
(<ulink url="http://www.avet.com.pl"/>)
|
|
</para>
|
|
|
|
<para>Dokument ten zawiera nieoficjalne polskie tłumaczenie
|
|
<ulink url="https://nmap.org/man/">oryginalnej dokumentacji
|
|
Nmapa</ulink> 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 <ulink
|
|
url="http://creativecommons.org/licenses/by/2.5/">Creative
|
|
Commons Attribution License</ulink>.
|
|
Polska wersja tego dokumentu jest dostępna w formatach
|
|
<ulink url="https://nmap.org/man/pl/">HTML</ulink>,
|
|
<ulink url="https://nmap.org/data/man-xlate/nmap-pl.1">NROFF</ulink> i
|
|
<ulink url="https://nmap.org/data/man-xlate/nmap-man-pl.xml">XML</ulink>.
|
|
Wszelkie uwagi
|
|
dotyczące tłumaczenia proszę kierować bezpośrednio do mnie.</para>
|
|
|
|
</refsect1>
|
|
|
|
<refsect1 id="man-briefoptions">
|
|
<title>Skrócona lista opcji</title>
|
|
|
|
<para>Skrócona lista opcji jest wyświetlana przy uruchomieniu Nmapa bez
|
|
dodatkowych parametrów, a jej najnowsza wersja jest zawsze dostępna pod adresem
|
|
<ulink url="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.</para>
|
|
|
|
<para>
|
|
<literallayout format="linespecific" class="normal">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
|
|
</literallayout>
|
|
|
|
</para>
|
|
|
|
</refsect1>
|
|
|
|
<refsect1 id="man-target-specification">
|
|
<title>Specyfikacja celu</title>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Czasami chcesz przeskanować całą sieć, dlatego Nmap obsługuje format
|
|
CDIR. Możesz dołączyć do adresu /<replaceable>ilośćbitów</replaceable> 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: <literal moreinfo="none">11000000 10101000 00001010
|
|
00000000</literal>) i 192.168.10.255 (binarnie:
|
|
<literal moreinfo="none">11000000 10101000 00001010 11111111</literal>)
|
|
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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Nmap akceptuje podawanie wielu hostów w linii poleceń i nie muszą one
|
|
być tego samego typu. Komenda <command moreinfo="none">nmap scanme.nmap.org
|
|
192.168.0.0/8 10.0.0,1,3-7.0-255</command> zrobi to co powinna.</para>
|
|
|
|
<para>Zwykle adresy są podawane w linii poleceń, jednak poniższe opcje
|
|
pozwalają na alternatywną specyfikację celu:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<option>-iL <plik_wejściowy></option> (Odczytanie z pliku)
|
|
</term>
|
|
<listitem>
|
|
<para>odczytuje specyfikację celu z pliku
|
|
<replaceable>plik-wejściowy</replaceable>. 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 <emphasis>wykluczeniem</emphasis>
|
|
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 <option>-iL</option>.
|
|
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
|
|
(<literal moreinfo="none">-</literal>) zamiast nazwy pliku jeśli
|
|
chesz aby Nmap pobrał adresy ze standardowego wejścia zamiast z
|
|
pliku.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-iR <ilość hostów></option> (Wybierz losowe cele)
|
|
</term>
|
|
<listitem>
|
|
<para>Do przeprowadzania badań Internetu, możesz używać wyboru
|
|
losowych adresów. Argument <replaceable>ilość hostów</replaceable>
|
|
informuje Nmapa ile losowych adresów ma wygenerować. Adresy prywatne,
|
|
typu multicast lub niewykorzystywane są automatycznie pomijane
|
|
przy generowaniu. Argument <literal moreinfo="none">0</literal>
|
|
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ę <command moreinfo="none">nmap -sS -PS80 -iR 0 -p
|
|
80</command> do wykrycia losowych serwerów WWW do przeglądania
|
|
udostępnianych przez nie stron.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--exclude
|
|
<host1[,host2][,host3],...></option> (Wyłączenie hostów/sieci)
|
|
</term>
|
|
<listitem>
|
|
<para>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.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--excludefile <plik_wyłączeń></option> (Lista wyłączeń z pliku)
|
|
</term>
|
|
<listitem>
|
|
<para>Opcja ta oferuje taką samą funkcjonalność jak
|
|
<option>--exclude</option> z tą rożnicą, że wykluczone cele
|
|
(oddzielone spacjami, znakami tabulacji lub nowej linii) są pobierane
|
|
z pliku <replaceable>plik_wyłączeń</replaceable>, a nie z linii
|
|
poleceń.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</refsect1>
|
|
|
|
<refsect1 id="man-host-discovery">
|
|
<title>Wykrywanie hostów</title>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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 <application moreinfo="none">ping</application>.
|
|
Użytkownik może pominąć etap wykrywania poprzez wykorzystanie opcji skanowania
|
|
listy (<option>-sL</option>), poprzez wyłączenie pingowania
|
|
(<option>-P0</option>) 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.</para>
|
|
|
|
<para>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 <function moreinfo="none">connect()</function>.
|
|
Ustawienia domyślne są tożsame z opcjami <option>-PA -PE</option>.
|
|
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.</para>
|
|
|
|
<para>Opcje <option>-P*</option> (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 (<option>-PR</option>) jest
|
|
z założenia włączane podczas testów sieci lokalnej w ramach tego samego
|
|
segmentu, nawet jeśli podasz inne opcje <option>-P*</option>, ponieważ
|
|
praktycznie zawsze tak jest szybciej i efektywniej.</para>
|
|
|
|
<para>Opcje kontroli wykrywania hostów.</para>
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sL</option> (Lista skanowania)</term>
|
|
<listitem>
|
|
<para>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
|
|
<literal moreinfo="none">fw.chi.playboy.com</literal> 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.</para>
|
|
|
|
<para>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
|
|
<option>-P0</option>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sP</option> (Skanowanie Ping)</term>
|
|
<listitem>
|
|
|
|
<para>Ta opcja nakazuje Nmapowi przeprowadzać <emphasis>tylko</emphasis>
|
|
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.</para>
|
|
|
|
<para>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ć.</para>
|
|
|
|
<para>Domyślnie opcja <option>-sP</option> 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
|
|
<function moreinfo="none">connect()</function>) na port 80 badanego
|
|
hosta. Jeśli uprzywilejowany użytkownik próbuje przeskanować adresy
|
|
w lokalnej sieci ethernet, wykorzystywane są zapytania ARP
|
|
(<option>-PR</option>), chyba że dodano opcję
|
|
<option>--send-ip</option>.
|
|
Dla większej wygody opcja <option>-sP</option> może być łączona w
|
|
dowolny sposób z innymi metodami wykrywania hostów (opcje
|
|
<option>-P*</option>, nie dotyczy <option>-P0</option>).
|
|
|
|
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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-P0</option> (Bez pinga)
|
|
</term>
|
|
<listitem>
|
|
<para>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 <option>-P0</option> powoduje,
|
|
że Nmap próbuje wykonać wszystkie żadane typy skanowania na
|
|
<emphasis>każdym</emphasis> 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 <option>-P0</option> 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.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-PS [listaportów]</option> (TCP SYN Ping)</term>
|
|
<listitem>
|
|
|
|
<para>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
|
|
<filename moreinfo="none">nmap.h</filename>), ale inny port może być
|
|
podany jako parametr. Możliwe jest również podanie listy portów,
|
|
odzielonych przecinkami
|
|
(np. <option>-PS22,23,25,80,113,1050,35000</option>), co spowoduje
|
|
przeprowadzenie testów na wszystkich podanych portach równolegle.
|
|
</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>W systemach UNIX, tylko użytkownik uprzywilejowany -
|
|
<literal moreinfo="none">root</literal> - 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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-PA [lista portów]</option> (TCP ACK Ping)</term>
|
|
<listitem>
|
|
<para>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.</para>
|
|
|
|
<para>Opcja <option>-PA</option>, 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.</para>
|
|
|
|
<para>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ę <option>--syn</option>, która implementuje takie właśnie
|
|
bezstanowe filtrowanie. W przypadku takiego systemu zaporowego testy
|
|
wykorzystujące metodę SYN ping (<option>-PS</option>) zostaną
|
|
prawdopodobnie zablokowane w przypadku zamkniętych portów. W tym
|
|
przypadku metoda ACK pozwoli na obejście tych zabezpieczeń.</para>
|
|
|
|
<para>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ę <option>--state</option>, 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
|
|
<option>-PS</option> i <option>-PA</option>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-PU [listaportów]</option> (UDP Ping)</term>
|
|
<listitem>
|
|
|
|
<para>Kolejną metodą wykrywania hostów jest UDP ping, który wysyła
|
|
puste (o ile nie wykorzystano opcji <option>--data-length</option>)
|
|
pakiety UDP na wskazane porty. Lista portów jest podawana w takim
|
|
samym formacie jak dla wcześniej opisanych opcji <option>-PS</option>
|
|
i <option>-PA</option>. 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
|
|
<filename moreinfo="none">nmap.h</filename>. 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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-PE</option>;
|
|
<option>-PP</option>;
|
|
<option>-PM</option> (Typy ICMP Ping)</term>
|
|
<listitem>
|
|
|
|
<para>Dodatkowo poza opisanymi wcześniej metodami wykrywania hostów
|
|
TCP i UDP, Nmap może wysyłać standardowe pakiety ICMP znane z
|
|
typowego programu <application moreinfo="none">ping</application>.
|
|
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
|
|
<ulink url="http://www.rfc-editor.org/rfc/rfc1122.txt">RFC
|
|
1122</ulink>. 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
|
|
<option>-PE</option>.</para>
|
|
|
|
<para>Zapytanie echo request jest standardowym zapytaniem ICMP ping,
|
|
jednak Nmap nie poprzestaje na tym. Standard ICMP
|
|
(<ulink url="http://www.rfc-editor.org/rfc/rfc792.txt">RFC
|
|
792</ulink>) 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
|
|
<quote>host NIE POWINIEN obsługiwać tych zapytań</quote>.
|
|
Zapytania timestamp i address mask mogą być wysyłane z wykorzystaniem
|
|
opcji odpowiednio <option>-PP</option> i <option>-PM</option>.
|
|
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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-PR</option> (ARP Ping)</term>
|
|
<listitem>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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 <option>-PE</option> lub
|
|
<option>-PS</option>), 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ę <option>--send-ip</option>.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-n</option> (Wyłącz zapytania DNS)
|
|
</term>
|
|
<listitem>
|
|
<para>Nakazuje Nmapowi <emphasis>nigdy</emphasis> 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ę.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-R</option> (Wymuś zapytania DNS)
|
|
</term>
|
|
<listitem>
|
|
<para>Nakazuje Nmapowi <emphasis>zawsze</emphasis> wykonywać
|
|
odwrotne zapytania do serwera DNS o nazwy dla skanowanych adresów
|
|
IP. Domyślnie zapytania są wykonywane tylko dla aktywnych
|
|
hostów.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--system-dns</option> (Używaj systemowego DNS)
|
|
</term>
|
|
<listitem>
|
|
<para>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.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--dns-servers <server1[,server2],...>
|
|
</option> (Serwery do wykonywania zapytań DNS)
|
|
</term>
|
|
<listitem>
|
|
<para>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 <option>--system-dns</option>
|
|
lub skanowane są adresy IPv6. Używanie wielu serwerów DNS jest często
|
|
dużo szybsze, niż tylko jednego.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</refsect1>
|
|
|
|
<refsect1 id="man-port-scanning-basics">
|
|
<title>Podstawy skanowania portów</title>
|
|
|
|
<para>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 <command moreinfo="none">nmap
|
|
<replaceable>target</replaceable></command> skanuje ponad 1660 portów
|
|
TCP na wybranym <replaceable>celu skanowania</replaceable>. 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:
|
|
<literal moreinfo="none">otwarty</literal>,
|
|
<literal moreinfo="none">zamknięty</literal>,
|
|
<literal moreinfo="none">filtrowany</literal>,
|
|
<literal moreinfo="none">niefiltrowany</literal>,
|
|
<literal moreinfo="none">otwarty|filtrowany</literal>, or
|
|
<literal moreinfo="none">zamknięty|filtrowany</literal>.</para>
|
|
|
|
<para>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 <literal moreinfo="none">filtrowany</literal>.</para>
|
|
|
|
<variablelist><title>Sześć stanów portów Nmapa</title>
|
|
|
|
<varlistentry><term>otwarty</term>
|
|
<listitem><para>Aplikacja aktywnie akceptuje na tym porcie połączenia TCP
|
|
lub pakiety UDP. Znalezienie takich portów jest głównym celem skanowania.
|
|
Osoby obeznane z bezpieczeństwem wiedzą, że każdy otwarty port to potencjalny
|
|
cel ataku. Atakujący i wykonujący testy penetracyjne chcą wykorzystać luki w
|
|
oprogramowaniu poprzez otwarte porty, podczas gdy administratorzy starają się
|
|
zamykać lub chronić je za pomocą systemów zaporowych przed niepożądanymi
|
|
użytkownikami. Otwarte porty są także interesujące przy skanowaniach nie
|
|
związanych z oceną bezpieczeństwa, ponieważ pokazują usługi dostępne w sieci.
|
|
</para></listitem></varlistentry>
|
|
|
|
<varlistentry><term>zamknięty</term>
|
|
|
|
<listitem><para>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.</para></listitem></varlistentry>
|
|
|
|
<varlistentry><term>filtrowany</term>
|
|
|
|
<listitem><para>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.
|
|
</para></listitem></varlistentry>
|
|
|
|
<varlistentry><term>niefiltrowany</term>
|
|
<listitem><para>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.</para></listitem></varlistentry>
|
|
|
|
<varlistentry><term>otwarty|filtrowany</term>
|
|
<listitem><para>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.</para></listitem></varlistentry>
|
|
|
|
<varlistentry><term>zamknięty|filtrowany</term>
|
|
<listitem><para>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.
|
|
</para></listitem></varlistentry>
|
|
</variablelist>
|
|
</refsect1>
|
|
|
|
<refsect1 id="man-port-scanning-techniques">
|
|
<title>Techniki skanowania portów</title>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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 (<option>-sU</option>), które może być łączone z dowolnymi typami skanowania
|
|
TCP. Dla łatwiejszego zapamiętania, opcje skanowania portów posiadają nazwy
|
|
w formie <option>-s<replaceable>C</replaceable></option>, gdzie
|
|
<replaceable>C</replaceable> jest przeważnie pierwszą dużą literą angielskiej
|
|
nazwy typu skanowania. Wyjątkiem jest przestarzała opcja skanowania FTP bouce
|
|
(<option>-b</option>). 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.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sS</option> (Skanowanie TCP SYN)</term>
|
|
<listitem>
|
|
|
|
<para>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
|
|
<literal moreinfo="none">otwartym</literal>,
|
|
<literal moreinfo="none">zamkniętym</literal> i
|
|
<literal moreinfo="none">filtrowanym</literal>.</para>
|
|
|
|
<para>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).</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sT</option> (Skanowanie TCP connect())</term>
|
|
<listitem>
|
|
|
|
<para>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
|
|
<literal moreinfo="none">connect()</literal>. 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.</para>
|
|
|
|
<para>Kiedy skanowanie SYN jest dostępne, przeważnie jest lepszym wyborem. Nmap
|
|
ma dużo mniejszą kontrolę nad wywołaniem wysokopoziomowym
|
|
<literal moreinfo="none">connect()</literal> 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().</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sU</option> (Skanowanie UDP)</term>
|
|
<listitem>
|
|
|
|
<para>Większość popularnych usług w sieci Internet wykorzystuje protokół TCP,
|
|
ale również usługi <ulink url="http://www.rfc-editor.org/rfc/rfc768.txt">UDP</ulink>
|
|
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.</para>
|
|
|
|
<para>Skanowanie UDP jest aktywowane za pomocą opcji
|
|
<option>-sU</option>. Może być łączone z innymi typami skanowania TCP, takimi
|
|
jak SYN (<option>-sS</option>), dla sprawdzenia obu protokołów w jednym
|
|
przebiegu.</para>
|
|
|
|
<para>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
|
|
<literal moreinfo="none">zamknięty</literal>. Inne typy komunikatów ICMP
|
|
unreachable (typ 3, kody 1, 2, 9, 10 lub 13) oznaczają, że port jest
|
|
<literal moreinfo="none">filtrowany</literal>. Czasami w odpowiedzi zwrócony
|
|
zostanie pakiet UDP, co oznacza, że porty jest
|
|
<literal moreinfo="none">otwarty</literal>. Jeśli pomimo powtarzania transmisji
|
|
nie zostanie uzyskana żadna odpowiedź, port zostaje zaklasyfikowany jako
|
|
<literal moreinfo="none">otwarty|filtrowany</literal>. Oznacza to, że port może
|
|
być otwarty lub filtr pakietów blokuje do niego dostęp. Wykorzystanie
|
|
skanowania wersji usług (<option>-sV</option>) może pomóc w odróżnieniu portów
|
|
na prawdę otwartych od filtrowanych.</para>
|
|
|
|
<para>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 <filename moreinfo="none">net/ipv4/icmp.c</filename>).</para>
|
|
|
|
<para>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 <option>--host-timeout</option> do pomijania
|
|
zbyt wolnych hostów.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sN</option>; <option>-sF</option>; <option>-sX</option> (Skanowania TCP Null, FIN i Xmas)</term>
|
|
<listitem>
|
|
|
|
<para>Te typy skanowania (większe możliwości posiada opcja
|
|
<option>--scanflags</option> opisana w dalszej części) wykorzystują nieopisane
|
|
w <ulink url="http://www.rfc-editor.org/rfc/rfc793.txt">TCP RFC</ulink>
|
|
kombinacje flag do rozróżnienia pomiędzy stanami portów
|
|
<literal moreinfo="none">otwarty</literal> oraz
|
|
<literal moreinfo="none">zamknięty</literal>. Strona 65 opisuje, że <quote>jeśli
|
|
[docelowy] port jest ZAMKNIĘTY ... w odpowiedzi na pakiet nie zawierający RST należy
|
|
wysłać odpowiedź RST.</quote> Następna strona opisuje pakiety wysyłane na porty bez
|
|
flag SYN, RST lub ACK w następujący sposób: <quote>coś takiego nie powinno mieć
|
|
miejsca, jednak jeśli się zdarzy, pomiń taki pakiet</quote>.</para>
|
|
|
|
<para>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:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry><term>Skanowanie Null (<option>-sN</option>)</term>
|
|
<listitem><para>Nie ustawia żadnych flag (pole flag w nagłówku tcp zawiera 0).</para></listitem></varlistentry>
|
|
|
|
<varlistentry><term>Skanowanie FIN (<option>-sF</option>)</term>
|
|
<listitem><para>Ustawiona flaga FIN.</para></listitem></varlistentry>
|
|
|
|
<varlistentry><term>Skanowanie Xmas (<option>-sX</option>)</term>
|
|
<listitem><para>Ustawione flagi FIN, PSH i URG, pakiet podświetlony jak choinka.</para></listitem></varlistentry>
|
|
</variablelist>
|
|
|
|
<para>Te trzy tryby skanowania są takie same poza ustawionymi flagami w
|
|
pakietach. Jeśli w odpowiedzi zostanie otrzymany pakiet RST, port jest
|
|
uznawany za <literal moreinfo="none">zamknięty</literal>, podczas gdy brak
|
|
odpowiedzi oznacza <literal moreinfo="none">otwarty|filtrowany</literal>.
|
|
Port uznajemy za <literal moreinfo="none">filtrowany</literal>, jeśli
|
|
otrzymany zostanie komunikat ICMP unreachable (typ 3, kod 1, 2, 3, 9, 10 lub
|
|
13).</para>
|
|
|
|
<para>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 <literal moreinfo="none">zamknięty</literal>. 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 <literal moreinfo="none">otwarty</literal>
|
|
od <literal moreinfo="none">filtrowany</literal>, ujawniając jedynie stan
|
|
<literal moreinfo="none">otwarty|filtrowany</literal>.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sA</option> (Skanowanie TCP ACK)</term>
|
|
<listitem>
|
|
|
|
<para>Ten typ skanowanie jest inny niż omawiane powyżej, bo nigdy nie wykrywa
|
|
stanów portów <literal moreinfo="none">otwarty</literal> (lub nawet
|
|
<literal moreinfo="none">otwarty|filtrowany</literal>). Jest wykorzystywany
|
|
do mapowania reguł filtrowania, do sprawdzania czy fitrowanie jest oparte
|
|
o stany (stateful) lub nie i które porty są filtrowane.</para>
|
|
|
|
<para>Pakiety skanowania ACK posiadają tylko flagę ACK (o ile nie została
|
|
użyta opcja <option>--scanflags</option>). Podczas skanowania systemów nie
|
|
posiadających filtrowania, porty o stanach
|
|
<literal moreinfo="none">otwarty</literal> i
|
|
<literal moreinfo="none">zamknięty</literal>
|
|
zwrócą pakiet RST. W obu przypadkach Nmap oznaczy je jako
|
|
<literal moreinfo="none">niefiltrowane</literal>, co oznacza, że były
|
|
osiągalne dla pakietu ACK, ale nie zostało określone, czy posiadają stan
|
|
<literal moreinfo="none">otwarty</literal> czy
|
|
<literal moreinfo="none">zamknięty</literal>. 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 <literal moreinfo="none">filtrowany</literal>.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sW</option> (Skanowanie TCP Window)</term>
|
|
<listitem>
|
|
|
|
<para>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
|
|
<literal moreinfo="none">niefiltrowany</literal>, 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 <literal moreinfo="none">niefiltrowany</literal>
|
|
kiedy w odpowiedzi przyjdzie RST, skanowanie Window oznacza port jako
|
|
<literal moreinfo="none">otwarty</literal> lub
|
|
<literal moreinfo="none">zamknięty</literal>, w zależności czy odpowiednio
|
|
otrzymano w odpowiedzi rozmiar okna o wartości dodatniej lub zero.</para>
|
|
|
|
<para>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 <literal moreinfo="none">zamknięty</literal>.
|
|
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
|
|
<literal moreinfo="none">zamknięty</literal>, jednak niektóre (takie jak 22,
|
|
25 czy 53) mają stan <literal moreinfo="none">filtrowany</literal>, 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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sM</option> (Skanowanie TCP Maimon)</term>
|
|
<listitem>
|
|
|
|
<para>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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--scanflags</option> (Skanowanie TCP z definiowanymi flagami)</term>
|
|
<listitem>
|
|
|
|
<para>Prawdziwie zaawansowani użytkownicy Nmapa nie mogą być ograniczani
|
|
ilością oferowanych wbudowanych typów skanowania. Opcja
|
|
<option>--scanflags</option> 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!</para>
|
|
|
|
<para>Argument opcji <option>--scanflags</option> 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 <literal moreinfo="none">URG</literal>,
|
|
<literal moreinfo="none">ACK</literal>, <literal moreinfo="none">PSH</literal>,
|
|
<literal moreinfo="none">RST</literal>, <literal moreinfo="none">SYN</literal> i
|
|
<literal moreinfo="none">FIN</literal>. Na przykład <option>--scanflags
|
|
URGACKPSHRSTSYNFIN</option> ustawia wszystkie flagi, choć nie jest to zbyt
|
|
użyteczna metoda skanowania. Kolejność podawania flag nie jest istotna.</para>
|
|
|
|
<para>Dodatkowo przy podawaniu wybranych flag możliwe jest podanie typu
|
|
skanowania (takiego jak <option>-sA</option> lub <option>-sF</option>).
|
|
Dodany typ skanowania informuje Nmapa jak ma interpretować otrzymane odpowiedzi.
|
|
Na przykład skanowanie SYN zakłada, że brak odpowiedzi oznacza stan portu
|
|
<literal moreinfo="none">filtrowany</literal>, podczas gdy skanowanie FIN
|
|
potraktuje ten go jako <literal moreinfo="none">otwarty|filtrowany</literal>.
|
|
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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sI <zombie
|
|
host[:probeport]></option> (Skanowanie Idle)</term>
|
|
|
|
<listitem>
|
|
|
|
<para>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
|
|
<ulink url="https://nmap.org/book/idlescan.html"/>.</para>
|
|
|
|
<para>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, <emphasis>z punktu widzenia hosta zombie
|
|
</emphasis>. 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).</para>
|
|
|
|
<para>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).</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sO</option> (Skanowanie protokołów IP)</term>
|
|
<listitem>
|
|
|
|
<para>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 <option>-p</option> 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.</para>
|
|
|
|
<para>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!
|
|
</para>
|
|
|
|
<para>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 <emphasis>protocol</emphasis> unreachable. Jeśli Nmap
|
|
otrzyma jakąkolwiek odpowiedź w jakimkolwiek protokole, ustala stan protokołu
|
|
jako <literal moreinfo="none">otwarty</literal>. Otrzymanie komunikatu ICMP
|
|
protocol unreachable (typ 3, kod 2) powoduje oznaczenie protokołu jako
|
|
<literal moreinfo="none">zamknięty</literal>. Inne komuniakty ICMP protocol
|
|
unreachable (typ 3, kody 1, 3, 9, 10 lub 13) powodują oznaczenie protokołu jako
|
|
<literal moreinfo="none">filtrowany</literal> (oraz równocześnie potwierdzają,
|
|
że protokół ICMP jest również <literal moreinfo="none">otwarty</literal>).
|
|
Jeśli nie uzyskano odpowiedzi, protokół jest oznaczany jako
|
|
<literal moreinfo="none">otwarty|filtrowany</literal>.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-b <pośredniczący host ftp></option> (Skanowanie FTP bounce)</term>
|
|
<listitem>
|
|
|
|
<para>Interesującą funkcją protokołu FTP
|
|
(<ulink url="http://www.rfc-editor.org/rfc/rfc959.txt">RFC 959</ulink>) 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
|
|
<option>-b</option>. Opcja przyjmuje argument w postaci
|
|
<replaceable>nazwa_użytkownika</replaceable>:<replaceable>hasło</replaceable>@<replaceable>serwer</replaceable>:<replaceable>port</replaceable>.
|
|
|
|
<replaceable>Serwer</replaceable> jest nazwą lub adresem IP podatnego serwera
|
|
FTP. Tak jak przy zwykłym adresie URL, można pominąć pola
|
|
<replaceable>nazwa_użytkownika</replaceable>:<replaceable>hasło</replaceable>,
|
|
w tym przypadku zostanie wykorzystana domyślna kombinacja dla użytkowników
|
|
anonimowych (użytkownik <literal moreinfo="none">anonymous</literal>
|
|
hasło:<literal moreinfo="none">-wwwuser@</literal>). Numer portu (i
|
|
poprzedzający go dwukropek) również może zostać pominięty, w tym przypadku
|
|
przy połączeniu z wybranym adresem <replaceable>serwer</replaceable>, zostanie
|
|
wykorzystany domyślny port serwera FTP (21).</para>
|
|
|
|
<para>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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</refsect1>
|
|
|
|
<refsect1 id="man-port-specification">
|
|
<title>Specyfikacja portów i kolejności skanowania</title>
|
|
|
|
<para>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
|
|
<filename moreinfo="none">nmap-services</filename>.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<option>-p <zakres portów></option> (Skanuj tylko wybrane porty)
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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ę <option>-p-</option> 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 (<option>-sO</option>), określa ona numery
|
|
protokołów do sprawdzenia (0-255).</para>
|
|
|
|
<para>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
|
|
<literal moreinfo="none">T:</literal> i
|
|
<literal moreinfo="none">U:</literal>. Jako argument opcji przyjmowany
|
|
jest ciąg znaków aż do następnej opcji. Na przykład, podanie <option>-p
|
|
U:53,111,137,T:21-25,80,139,8080</option> 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: <option>-sU</option>
|
|
oraz przynajmniej jednego TCP (np. <option>-sS</option>,
|
|
<option>-sF</option> czy <option>-sT</option>). Jeśli nie podano
|
|
protokołu skanowania, na czas skanowania numery portów zostaną
|
|
dodane do domyślnej listy portów.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-F</option> (Skanowanie Fast (ograniczona ilość portów))
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Pozwala na określenie, że mają być skanowane tylko porty
|
|
zawarte w pliku <filename moreinfo="none">nmap-services</filename>
|
|
z pakietu Nmapa (lub z pliku protokołów dla opcji
|
|
<option>-sO</option>). 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
|
|
<filename moreinfo="none">nmap-services</filename> za pomocą
|
|
opcji <option>--datadir</option>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-r</option> (Nie używaj losowej kolejności)
|
|
</term>
|
|
<listitem>
|
|
<para>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
|
|
<option>-r</option>, wymuszającej sekwencyjną kolejność skanowania.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</refsect1>
|
|
|
|
<refsect1 id="man-version-detection">
|
|
<title>Detekcja usług i wersji</title>
|
|
|
|
<para>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
|
|
<filename moreinfo="none">nmap-services</filename>, 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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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
|
|
<filename moreinfo="none">nmap-service-probes</filename> 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 (<option>-sR</option>) zostanie
|
|
automatycznie uruchomiony do ustalenia oprogramowania i wersji RPC.
|
|
Z powodu specyfiki UDP, po zakończeniu skanowania niektóre porty pozostają
|
|
w stanie <literal moreinfo="none">otwarty|filtrowany</literal>, 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 <literal moreinfo="none">otwarty|filtrowany</literal> są
|
|
traktowane w ten sam sposób. Należy zwrócić uwagę, że opcja
|
|
<option>-A</option> poza innymi rzeczami włącza wykrywanie wersji. Dodatkowa
|
|
dokumentacja na temat działania detekcji wersji jest dostępna pod adresem
|
|
<ulink url="https://nmap.org/vscan/"/>.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Detekcja wersji jest włączana i kontrolowana następującymi opcjami:</para>
|
|
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sV</option> (Detekcja wersji usług)</term>
|
|
<listitem>
|
|
|
|
<para>Włącza detekcję wersji usług, opisaną powyżej. Alternatywnie
|
|
można użyć opcji <option>-A</option> do jednoczesnego włączenia
|
|
detekcji wersji usług i systemu operacyjnego.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--allports</option> (Nie pomijaj żadnych portów przy detekcji wersji)
|
|
</term>
|
|
<listitem>
|
|
<para>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
|
|
<literal moreinfo="none">Exclude</literal> w pliku
|
|
<filename moreinfo="none">nmap-service-probes</filename>, lub poprzez
|
|
dodanie opcji <option>--allports</option>, wymuszającej skanowanie
|
|
wszystkich portów niezależnie od dyrektywy
|
|
<literal moreinfo="none">Exclude</literal>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--version-intensity <poziom></option> (Ustaw poziom skanowania wersji)
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Podczas przeprowadzania skanowania wersji (<option>-sV</option>),
|
|
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
|
|
<filename moreinfo="none">nmap-service-probes</filename>, określoną
|
|
dyrektywą <literal moreinfo="none">ports</literal>, 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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--version-light</option> (Włącz tryb delikatny)
|
|
</term>
|
|
<listitem>
|
|
<para>Jest wygodniejszym odpowiednikiem ustalającym wartość
|
|
<option>--version-intensity 2</option>. Opcja ta pozwala na znaczne
|
|
przyspieszenie wykrywania wersji, kosztem dokładności.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--version-all</option> (Użyj wszystkich testów)
|
|
</term>
|
|
<listitem>
|
|
<para>Odpowiednik opcji <option>--version-intensity 9</option>,
|
|
powodujący wykonanie wszystkich możliwych testów na każdym porcie.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--version-trace</option> (Śledzenie aktywności skanowania wersji)
|
|
</term>
|
|
<listitem>
|
|
<para>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 <option>--packet-trace</option>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-sR</option> (Skanowanie RPC)</term>
|
|
<listitem>
|
|
<para>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
|
|
<command moreinfo="none">rpcinfo -p</command>, 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 (<option>-sV</option>). Jako że detekcja wersji jest daleko
|
|
bardziej uniwersalna, opcja <option>-sR</option> jest wykorzystywana
|
|
sporadycznie.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</refsect1>
|
|
|
|
<refsect1 id="man-os-detection">
|
|
|
|
<title>Wykrywanie systemu operacyjnego</title>
|
|
|
|
<para>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
|
|
<filename moreinfo="none">nmap-os-fingerprints</filename>
|
|
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).</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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 <quote>worthy challenge</quote> (stanowiący
|
|
wyzwanie) lub <quote>trivial joke</quote> (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
|
|
(<option>-v</option>). Jeśli użyto opcji <option>-v</option> w połączeniu z
|
|
<option>-O</option>, podane zostaną informacje o generowaniu numerów
|
|
sekwencyjnych IPID. Większość adresów należy do klasy
|
|
<quote>incremental</quote> (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.</para>
|
|
|
|
<para>Dokument opisujący działanie i używanie detekcji wersji jest
|
|
dostępny w wielu językach pod adresem
|
|
<ulink url="https://nmap.org/osdetect/"/>.</para>
|
|
|
|
<para>Wykrywanie systemu operacyjnego jest włączane i kontrolowane przez
|
|
poniższe opcje:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<option>-O</option> (Włączenie wykrywania systemu operacyjnego)
|
|
</term>
|
|
<listitem>
|
|
<para>Włącza wykrywanie systemu operacyjnego opisanego powyżej.
|
|
Alternatywnie można używać opcji <option>-A</option>, która włącza
|
|
jednocześnie wykrywanie systemu operacyjnego i wersji usług.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--osscan-limit</option> (Limitowanie wykrywania do
|
|
obiecujących celów)
|
|
</term>
|
|
<listitem>
|
|
<para>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ą <option>-P0</option> przy skanowaniu
|
|
wielu adresów. Opcja ma znaczenie tylko w połączeniu z
|
|
<option>-O</option> lub <option>-A</option>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--osscan-guess</option>; <option>--fuzzy</option>
|
|
(Zgadywanie wersji systemu operacyjnego)
|
|
</term>
|
|
<listitem>
|
|
<para>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.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
|
|
</variablelist>
|
|
</refsect1>
|
|
|
|
<refsect1 id="man-performance">
|
|
<title>Zależności czasowe i wydajność</title>
|
|
<para>Zawsze najważniejszym priorytetem przy tworzeniu Nmapa była
|
|
wysoka wydajność. Domyślne skanowanie (<command moreinfo="none">nmap
|
|
<replaceable>nazwahosta</replaceable></command>) 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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--min-hostgroup <ilość_hostów></option>;
|
|
<option>--max-hostgroup
|
|
<numhosts></option> (Zmiana ilości hostów w grupie)</term>
|
|
<listitem>
|
|
<para>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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Jeśli maksymalny rozmiar grupy został określony za pomocą opcji
|
|
<option>--max-hostgroup</option>, Nmap nigdy nie przekroczy tego limitu.
|
|
Analogicznie podanie minimalnego rozmiaru za pomocą
|
|
<option>--min-hostgroup</option> 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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--min-parallelism <ilość_prób></option>;
|
|
<option>--max-parallelism
|
|
<ilość_prób></option> (Kontrola współbierzności testów)</term>
|
|
<listitem>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Najczęściej wykorzystywana jest opcja
|
|
<option>--min-parallelism</option> 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.</para>
|
|
|
|
<para>Opcja <option>--max-parallelism</option> 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ą<option>--scan-delay</option> (opisaną
|
|
dalej).</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--min-rtt-timeout <czas></option>,
|
|
<option>--max-rtt-timeout <czas></option>,
|
|
<option>--initial-rtt-timeout
|
|
<czas></option> (Kontrola czasu oczekiwania na wykonanie testu)</term>
|
|
<listitem>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Opcje przyjmują wartości w milisekundach, ale można dodać litery
|
|
<literal moreinfo="none">s</literal>, <literal moreinfo="none">m</literal>
|
|
lub <literal moreinfo="none">h</literal> odnoszące się odpowiednio do sekund,
|
|
minut i godzin. Podanie niższych wartości <option>--max-rtt-timeout</option> i
|
|
<option>--initial-rtt-timeout</option> niż domyślne, może znacząco skrócić czas
|
|
skanowania. Jest to głównie widoczne w przypadku skanowania bez wykorzystywania
|
|
pinga (<option>-P0</option>) 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ź.</para>
|
|
|
|
<para>Jeśli wszystkie skanowane hosty są w sieci lokalnej, sensownym agresywnym
|
|
ustawieniem opcje <option>--max-rtt-timeout</option> 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
|
|
<option>--initial-rtt-timeout</option>, a po pomnożeniu przez trzy lub cztery
|
|
dla <option>--max-rtt-timeout</option>. Nie jest zalecane ustawianie
|
|
maksymalnego rtt poniżej 100ms, niezależnie od czasów pingowania, podobnie
|
|
większego niż 1000ms.</para>
|
|
|
|
<para><option>--min-rtt-timeout</option> 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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--max-retries <ilość></option> (Maksymalna ilość prób ponawiania skanowania portów)
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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 <option>--max-retries 0</option> ,
|
|
całkowicie wyłączającej powtarzanie testów jest wykorzystywane sporadycznie.
|
|
</para>
|
|
|
|
<para>Domyślnie (bez stosowania opcji <option>-T</option>) 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
|
|
<option>--max-retries</option> 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 <option>--host-timeout</option>, która dotyczy całego hosta,
|
|
a nie tylko pojedynczych testów.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--host-timeout <czas></option> (Pomijaj powolne hosty)
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Skanowanie niektórych hostów trwa <emphasis>bardzo długo</emphasis>.
|
|
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 <option>--host-timeout</option> 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 <literal moreinfo="none">s</literal>,
|
|
<literal moreinfo="none">m</literal> lub <literal moreinfo="none">h</literal>.
|
|
Często dodaję <literal moreinfo="none">30m</literal> ż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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--scan-delay <czas></option>;
|
|
<option>--max-scan-delay
|
|
<czas></option> (Ustaw opóźnienie pomiędzy testami)</term>
|
|
<listitem>
|
|
|
|
<para>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ć
|
|
<literal moreinfo="none">s</literal>,
|
|
<literal moreinfo="none">m</literal> lub <literal moreinfo="none">h</literal>
|
|
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 <option>--scan-delay 1s</option> 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ść.</para>
|
|
|
|
<para>Kiedy Nmap zwiększa czas opóźnienia, dostosowując go do
|
|
limitu ilości otrzymywanych odpowiedzi, czas skanowania dramatycznie rośnie.
|
|
Opcja <option>--max-scan-delay</option> 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.</para>
|
|
|
|
<para>Inną możliwością wykorzystanie opcji <option>--scan-delay</option>
|
|
jest omijanie systemów detekcji intruzów (IDS/IPS).</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-T
|
|
<Paranoid|Sneaky|Polite|Normal|Aggressive|Insane></option>
|
|
(Ustawnienie szablonu zależności czasowych skanowania)
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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
|
|
<option>-T</option> 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 <option>-T3</option> 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.</para>
|
|
|
|
<para>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, <option>-T4</option>
|
|
zabrania wzrostu dynamicznego opóźnienia skanowania powyżej 10ms dla portów
|
|
TCP, a w przypadku <option>-T5</option> 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 <option>-T4</option>.</para>
|
|
|
|
<para>Jeśli używasz łącza szerokopasmowego lub sieci ethernet, rekomendowane
|
|
jest stałe używanie szablonu <option>-T4</option>. Wiele osób lubi
|
|
<option>-T5</option>, lecz jest ono jak dla mnie trochę za agresywne. Ludzie
|
|
czasami używają <option>-T2</option> 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 <option>-T Polite</option>
|
|
- ich skanowania może trwać dziesięć razy dłużej. Zawieszanie hostów i problemy
|
|
z pasmem są rzadko spotykane przy domyślym <option>-T3</option>, i ta opcja jest
|
|
polecana dla ostrożnych skanujących. Nie włączanie detekcji wersji jest daleko
|
|
bardziej efektywnym sposobem na unikanie problemów.</para>
|
|
|
|
<para>Podczas gdy opcje <option>-T0</option> i <option>-T1</option> 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 <option>-T0</option> i <option>-T1</option>.
|
|
</para>
|
|
|
|
<para>Głównym efektem działania <option>T0</option> 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 <option>T1</option> i
|
|
<option>T2</option> są podobne, ale czakają już tylko odpowiednio 15 i 0.4
|
|
sekundy pomiędzy testami. <option>T3</option> jest domyślnym ustawieniem Nmapa
|
|
włączając w to zrównoleglanie testów. <option>T4</option> jest odpowiednikiem
|
|
podania opcji <option>--max-rtt-timeout 1250 --initial-rtt-timeout 500
|
|
--max-retries 6</option> i ustawienia maksymalnego opóźnienia przy skanowaniu
|
|
TCP na 10 milisekund. Opcja <option>T5</option> jest alternatywą dla
|
|
<option>--max-rtt-timeout 300 --min-rtt-timeout 50 --initial-rtt-timeout 250
|
|
--max-retries 2 --host-timeout 900000</option> oraz ustawienia maksymalnego
|
|
czasu opóźnienia dla skanowania TCP na 5ms.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</refsect1>
|
|
|
|
<refsect1 id="man-bypass-firewalls-ids">
|
|
<title>Firewall/IDS i podszywanie się</title>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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 <emphasis>prewencji</emphasis>
|
|
(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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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ą.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<option>-f</option> (fragmentacja pakietów);
|
|
<option>--mtu</option> (Używanie wybranego MTU)
|
|
</term>
|
|
|
|
<listitem>
|
|
<para>Opcja <option>-f</option> 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 <option>-f</option> 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 <option>--mtu</option>. Nie używaj parametru
|
|
<option>-f</option>, jeśli używasz <option>--mtu</option>. 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 <option>--send-eth</option>, która pomija stos
|
|
TCP/IP i wysyła bezpośrenio ramki ethernetowe.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-D <decoy1 [,decoy2][,ME],...></option>
|
|
(Ukrywaj skanowanie za pomocą innych hostów)
|
|
</term>
|
|
<listitem>
|
|
<para>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.</para>
|
|
|
|
<para>Podwając listę poszczególnych hostów-zasłon, trzeba je
|
|
oddzielić przecinkami, można również na tej liście umieścic
|
|
<literal moreinfo="none">ME</literal> 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 <literal moreinfo="none">ME</literal> nie zostanie
|
|
dodane, Nmap umieści je losowo na liście.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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().</para>
|
|
|
|
<para>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.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-S <adres_ip></option> (Ustawienie adresu nadawcy)
|
|
</term>
|
|
<listitem>
|
|
<para>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 <option>-S</option> podać adres lokalnego
|
|
interfejsu przez który mają być wysyłane pakiety.</para>
|
|
|
|
<para>Inną możliwością tej opcji jest podmiana adresu nadawcy tak,
|
|
by cel skanowania uważał, że skanuje go <emphasis>ktoś inny</emphasis>.
|
|
Wyobraź sobie, ze firmę nagle zacznie skanować konkurencja! W
|
|
przypadku takiego użycia, zwykle będzie wymagana opcja
|
|
<option>-e</option>, a zalecana również <option>-P0</option>.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-e <interfejs></option> (Użyj wybranego interfejsu)
|
|
</term>
|
|
<listitem>
|
|
<para>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.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--source-port <numerportu>;</option>
|
|
<option>-g <numerportu></option> (Używaj podanego portu źródłowego)
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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.
|
|
</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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).</para>
|
|
|
|
<para>Nmap oferuje dwie ekwiwalentne opcje <option>-g</option> i
|
|
<option>--source-port</option> 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ę <option>--source-port</option>, 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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--data-length <rozmiar></option> (Dodawaj losowe dane
|
|
do wysyłanych pakietów)
|
|
</term>
|
|
<listitem>
|
|
<para>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 (<option>-O</option>) 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.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--ttl <wartość></option> (Ustaw czas życia pakietu IP)
|
|
</term>
|
|
<listitem>
|
|
<para>Ustawia czas życia (TTL) pakietów na podaną wartość.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--randomize-hosts</option> (Losowanie kolejności skanowania hostów)
|
|
</term>
|
|
<listitem>
|
|
<para>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 <filename moreinfo="none">nmap.h</filename>
|
|
i rekompilacji. Innym rozwiązaniem jest wygenerowanie listy adresów
|
|
IP za pomocą opcji lista skanowania (<option>-sL -n -oN
|
|
<replaceable>nazwapliku</replaceable></option>) i losowemu
|
|
pomieszaniu adresów na niej za pomocą skryptu Perla, oraz podaniu jej
|
|
Nmapowi za pomocą opcji <option>-iL</option>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--spoof-mac <adres mac, prefiks, lub nazwa producenta
|
|
></option> (Podmieniaj adres MAC)
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>Podaje Nmapowi adres MAC z użyciem którego będą wysyłane
|
|
wszystkie pakiety ethernet. Opcja włącza również automatycznie
|
|
<option>--send-eth</option> dla uzyskania pewności wysyłania
|
|
pakietów na poziomie ethernetu. Podany adres MAC może przyjmować
|
|
wiele postaci. Jeśli zostanie podany znak <quote>0</quote>,
|
|
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 <filename moreinfo="none">nmap-mac-prefixes</filename> 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
|
|
<literal moreinfo="none">Apple</literal>, <literal moreinfo="none">0</literal>,
|
|
<literal moreinfo="none">01:02:03:04:05:06</literal>,
|
|
<literal moreinfo="none">deadbeefcafe</literal>,
|
|
<literal moreinfo="none">0020F2</literal>, <literal moreinfo="none">Cisco</literal> itp.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--badsum</option> (Wysyłanie pakietów z nieprawidłową sumą kontrolną TCP/UDP)
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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 <ulink url="https://nmap.org/p60-12.txt"/></para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
</refsect1>
|
|
|
|
<refsect1 id="man-output">
|
|
<title>Wyjście</title>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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ń.</para>
|
|
|
|
<para>Nmap pozwala na uzyskanie pięciu różnych formatów raportów. Domyślny
|
|
to <literal moreinfo="none">format interaktywny</literal> i jest
|
|
wykorzystywany w połączeniu ze standardowym wyjściem. Jest także format
|
|
<literal moreinfo="none">format normalny</literal>, podobny do
|
|
<literal moreinfo="none">interaktywnego</literal>, 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.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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
|
|
<literal moreinfo="none">sCRiPt KiDDi3 0utPUt</literal>.</para>
|
|
|
|
<para>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 <option>-oX myscan.xml -oN myscan.nmap</option>.
|
|
W przykładach z tej dokumentacji dla ułatwienia używamy prostych nazw, takich
|
|
jak <literal moreinfo="none">myscan.xml</literal>, 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.</para>
|
|
|
|
<para>Podczas zapisywania wyników do pliku Nmap nadal wyświetla interaktywną
|
|
formę raportu na standardowe wyjście. Przykładowo, komenda
|
|
<command moreinfo="none">nmap -oX myscan.xml cel</command> zapisuje wyniki w
|
|
formacie XML do pliku <filename moreinfo="none">myscan.xml</filename>
|
|
równocześnie wyświetlając je w trybie interaktywnym tak, jakby opcja
|
|
<option>-oX</option> 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 <command moreinfo="none">nmap -oX - cel</command> 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.</para>
|
|
|
|
<para>Inaczej niż przy innych opcjach, spacja pomiędzy opcją (taką jak
|
|
<option>-oX</option>), a nazwą pliku lub myślnika nie jest wymagana.
|
|
Jeśli spacja zostanie pominięta przy opcjach takich jak
|
|
<option>-oG-</option> lub <option>-oXscan.xml</option>, z powodów
|
|
kompatybilności wstecznej Nmap zapisze wyniki w formacie normalnym w plikach
|
|
odpowiednio <filename moreinfo="none">G-</filename> i
|
|
<filename moreinfo="none">Xscan.xml</filename>.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<variablelist><title>Formaty wyjściowe Nmapa</title>
|
|
<varlistentry>
|
|
<term>
|
|
<option>-oN <nazwapliku></option> (Format normalny)</term>
|
|
<listitem>
|
|
<para>Powoduje zapis w <literal moreinfo="none">formacie normalnym</literal>
|
|
do wskazanego pliku. Jak napisano wyżej, format ten różni się nieco od
|
|
<literal moreinfo="none">formatu interaktywnego</literal>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-oX <nazwapliku></option> (Format XML)</term>
|
|
<listitem>
|
|
|
|
<para>Powoduje zapis w <literal moreinfo="none">formacie XML</literal>
|
|
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 <ulink url="https://nmap.org/data/nmap.dtd"/>.</para>
|
|
|
|
<para>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ą
|
|
<ulink url="http://sourceforge.net/projects/nmap-scanner/">Nmap::Scanner</ulink>
|
|
i <ulink url="http://www.nmapparser.com">Nmap::Parser</ulink> dla
|
|
Perla (CPAN). W wiekszości dużych aplikacji korzystających z
|
|
Nmapa preferowany jest właśnie format XML.</para>
|
|
|
|
<para>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 <filename moreinfo="none">nmap.xsl</filename>
|
|
właściwej dla danego systemu. Za pomocą opcji <option>--webxml</option>
|
|
lub <option>--stylesheet</option> można utworzyć przenośny raport
|
|
XML, możliwy do obejrzenia w formacie HTML na każdym komputerze
|
|
podłączonym do Internetu.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-oS <nazwapliku></option> (Format ScRipT KIdd|3)</term>
|
|
<listitem>
|
|
<para>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 <quote>pomagania script kiddies
|
|
</quote>, że opcja ta jest tylko żartem, a nie pomocą.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-oG <nazwapliku></option> (Format "grepowalny")</term>
|
|
<listitem>
|
|
|
|
<para>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.
|
|
</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>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ą
|
|
<literal moreinfo="none">Host</literal>, <literal moreinfo="none">Ports</literal>,
|
|
<literal moreinfo="none">Protocols</literal>, <literal moreinfo="none">Ignored State</literal>,
|
|
<literal moreinfo="none">OS</literal>, <literal moreinfo="none">Seq Index</literal>,
|
|
<literal moreinfo="none">IPID</literal> i <literal moreinfo="none">Status</literal>.</para>
|
|
|
|
<para>Najważniejszymi z tych pól są najczęściej pola
|
|
<literal moreinfo="none">Ports</literal>, 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: <literal moreinfo="none">Port number</literal>,
|
|
<literal moreinfo="none">State</literal>, <literal moreinfo="none">Protocol</literal>,
|
|
<literal moreinfo="none">Owner</literal>, <literal moreinfo="none">Service</literal>,
|
|
<literal moreinfo="none">SunRPC info</literal> i <literal moreinfo="none">Version info</literal>.</para>
|
|
|
|
<para>Tak jak i w przypadku formaty XML, dokładny opis formatu grepowalnego
|
|
przekracza zakres tej dokumentacji i jest dostępny pod adresem
|
|
<ulink url="http://www.unspecific.com/nmap-oG-output"/>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-oA <nazwa></option> (Wyjście we wszystkich formatach)</term>
|
|
<listitem><para>
|
|
Dla wygody można podać opcję <option>-oA<replaceable>nazwa</replaceable></option>
|
|
do zapisywania wyników w formacie normalnym, XML i grepowalnym
|
|
równocześnie. Wyniki zostaną zapisane odpowiednio w plikach o
|
|
nazwach <replaceable>nazwa</replaceable>.nmap,
|
|
<replaceable>nazwa</replaceable>.xml i
|
|
<replaceable>nazwa</replaceable>.gnmap. Tak jak i w przypadku innych
|
|
programów, nazwa może zostać poprzedzona scieżką, na przykład
|
|
<filename moreinfo="none">~/nmaplogs/foocorp/</filename> w systemach
|
|
UNIX lub <filename moreinfo="none">c:\hacking\sco</filename> pod Windows.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
<variablelist><title>Poziom szczegółowości i opcje diagnozowania błędów</title>
|
|
<varlistentry>
|
|
<term>
|
|
<option>-v</option> (Podwyższenie poziomu raportowania)
|
|
</term>
|
|
<listitem>
|
|
<para>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.</para>
|
|
|
|
<para>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ść.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-d [poziom]</option> (Ustawianie poziomu śledzenia błędów)
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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
|
|
(<option>-v</option>), opcja włączająca umowanie nazwane śledzenie błędów,
|
|
włączana jest za pomocą parametru (<option>-d</option>) i możliwe jest jej
|
|
wielokrotne dodawanie powiększające skutek. Alternatywnie można podać poziom
|
|
jako argument do opcji <option>-d</option>. Na przykład
|
|
<option>-d9</option> 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.</para>
|
|
|
|
<para>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:
|
|
<computeroutput moreinfo="none">Timeout vals: srtt: -1 rttvar: -1 to:
|
|
1000000 delta 14987 ==> srtt: 14987 rttvar: 14987 to: 100000</computeroutput>.
|
|
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.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--packet-trace</option> (Śledzenie wysyłanych i odbieranych pakietów)
|
|
</term>
|
|
<listitem>
|
|
<para>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ą
|
|
<option>-p20-30</option>. Jeśli chcesz zobaczyć tylko to, co dzieje
|
|
się w trakcie wykrywania wersji, użyj raczej opcji
|
|
<option>--version-trace</option>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--iflist</option> (Pokazuj interfejsy i tablicę routingu)
|
|
</term>
|
|
<listitem>
|
|
<para>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).</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
<variablelist><title>Pozostałe opcje</title>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--append-output</option> (Dołączaj wyniki do pliku)
|
|
</term>
|
|
<listitem>
|
|
<para>Jeśli zostanie podana nazwa pliku jako argument do opcji
|
|
takiej jak <option>-oX</option> czy <option>-oN</option>,
|
|
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ę
|
|
<option>--append-output</option>. 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.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--resume <nazwapliku></option> (Wznowienie przerwanego skanowania)
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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
|
|
<keycap moreinfo="none">ctrl-C</keycap>. 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
|
|
(<option>-oN</option>) lub grepowalnym (<option>-oG</option>),
|
|
możliwe jest ich wznowienie od momentu przerwania. Służy do tego
|
|
opcja <option>--resume</option> 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
|
|
<command moreinfo="none">nmap --resume
|
|
<replaceable>nazwapliku</replaceable></command>, 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.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--stylesheet <ścieżka lub URL></option> (Styl XSL do
|
|
transformacji formatu XML)
|
|
</term>
|
|
<listitem>
|
|
<para>Nmap posiada domyślny styl XSL do przeglądania lub konwersji do
|
|
formatu XML w pliku <filename moreinfo="none">nmap.xsl</filename>.
|
|
Plik wyjściowy XML zawiera dyrektywę
|
|
<literal moreinfo="none">xml-stylesheet</literal> wskazującą na
|
|
<filename moreinfo="none">nmap.xml</filename>, 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
|
|
<filename moreinfo="none">nmap.xsl</filename> 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
|
|
<option>--stylesheet</option>. W tym przypadku konieczne jest podanie
|
|
pełnej ścieżki lub adresu URL. Typowe wywołanie ma postać
|
|
<option>--stylesheet
|
|
https://nmap.org/data/nmap.xsl</option>.
|
|
Dyrektywa ta nakazuje pobranie najnowszej wersji pliku ze stylem ze
|
|
strony Insecure.Org. Opcja <option>--webxml</option> 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
|
|
<filename moreinfo="none">nmap.xsl</filename>). Podawanie adresu URL
|
|
jest wygodniejsze, jednak domyślnie używany jest plik lokalny ze
|
|
względu za zachowanie poufności użytkownika.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--webxml</option> (Użyj stylu ze strony Insecure.Org)
|
|
</term>
|
|
<listitem>
|
|
<para>Opcja jest wygodniejszym zapisem analogicznego
|
|
<option>--stylesheet https://nmap.org/data/nmap.xsl</option>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--no-stylesheet</option> (Nie używaj deklaracji stylu XSL w formacie XML)
|
|
</term>
|
|
<listitem>
|
|
<para>Dodanie tej opcji powoduje wyłączenie dołączania stylu XSL
|
|
do pliku z wynikami w formacie XML. Zostaje pominięta dyrektywa
|
|
<literal moreinfo="none">xml-stylesheet</literal>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
|
|
</variablelist>
|
|
</refsect1>
|
|
|
|
<refsect1 id="man-misc-options">
|
|
<title>Różne opcje</title>
|
|
<para>Sekcja ta opisuje istotne (i nie istotne) opcje, które nie pasowały
|
|
gdzie indziej.</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<option>-6</option> (Włączenie skanowania IPv6)
|
|
</term>
|
|
<listitem>
|
|
|
|
<para>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ę
|
|
<option>-6</option>. 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
|
|
<literal moreinfo="none">3ffe:7501:4819:2000:210:f3ff:fe03:14d0</literal>,
|
|
zalecane jest używanie nazw hostów. Wyniki poza samym adresem
|
|
wyglądają tak samo jak i przy innych opcjach.</para>
|
|
|
|
<para>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 <ulink url="http://ipv6tb.he.net/"/>. Tunele
|
|
6to4 są innym popularnym i darmowym rozwiązaniem.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-A</option> (Agresywne opcje skanowania)
|
|
</term>
|
|
<listitem>
|
|
<para>Włącza dodatkowe zaawansowane i agresywne opcje skanowania.
|
|
Aktualnie są nimi wykrywanie systemu operacyjnego (<option>-O</option>)
|
|
i wykrywanie wersji (<option>-sV</option>). 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 <option>-T4</option>) czy poziomu szczegółowości
|
|
(<option>-v</option>), które można dodać niezależnie.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--datadir <nazwakatalogu></option> (Określenie lokalizacji plików z danymi)
|
|
</term>
|
|
<listitem>
|
|
<para>Podczas pracy Nmap pobiera dodatkowe informacje z plików
|
|
<filename moreinfo="none">nmap-service-probes</filename>,
|
|
<filename moreinfo="none">nmap-services</filename>,
|
|
<filename moreinfo="none">nmap-protocols</filename>,
|
|
<filename moreinfo="none">nmap-rpc</filename>,
|
|
<filename moreinfo="none">nmap-mac-prefixes</filename> i
|
|
<filename moreinfo="none">nmap-os-fingerprints</filename>.
|
|
Nmap rozpoczyna poszukiwania tych plików od katalogu podanego jako
|
|
parametr dla opcji <option>--datadir</option>, 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 <filename moreinfo="none">~/.nmap</filename> 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
|
|
<filename moreinfo="none">/usr/local/share/nmap</filename> lub
|
|
<filename moreinfo="none">/usr/share/nmap</filename>. Na końcu
|
|
sprawdzany jest aktualny katalog.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--send-eth</option> (Używanie niskopoziomowych ramek ethernet)
|
|
</term>
|
|
<listitem>
|
|
<para>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ę.</para>
|
|
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--send-ip</option> (Wysyłaj pakiety raw IP)
|
|
</term>
|
|
<listitem>
|
|
<para>Włącza wysyłanie pakietów przez gniazda raw IP, zamiast przez
|
|
ramki ethernet. Opcja jest przeciwieństwem opisanej wyżej opcji
|
|
<option>--send-eth</option>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>--privileged</option> (Zakładaj że użytkownik ma odpowiednie uprawnienia)
|
|
</term>
|
|
<listitem>
|
|
<para>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 <option>--privileged</option> 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 <option>--privileged</option>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-V</option>; <option>--version</option> (Wyświetl numer wersji)
|
|
</term>
|
|
<listitem>
|
|
<para>Wyświetla tylko numer wersji Nmapa.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term>
|
|
<option>-h</option>; <option>--help</option> (Wyświetl pomoc)
|
|
</term>
|
|
<listitem>
|
|
<para>Wyświetla krótki ekran pomocy opisujący najpopularniejsze
|
|
opcje, podobnie jak uruchomienie Nmapa bez parametrów.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</refsect1>
|
|
|
|
<refsect1 id="man-runtime-interaction">
|
|
<title>Interakcja w czasie pracy</title>
|
|
|
|
<para>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
|
|
<emphasis>małe litery zmniejszają</emphasis> ilość informacji, a
|
|
<emphasis>duże litery powiększają</emphasis>. Można również nacisnąć
|
|
‘<emphasis>?</emphasis>’ dla </para>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>
|
|
<option>v</option> / <option>V</option>
|
|
</term>
|
|
<listitem>
|
|
<para>Zwiększenia / Zmniejszenia poziomu szczegółowości</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<option>d</option> / <option>D</option>
|
|
</term>
|
|
<listitem>
|
|
<para>Zwiększenia / Zmniejszenia poziomu śledzenia błędów</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<option>p</option> / <option>P</option>
|
|
</term>
|
|
<listitem>
|
|
<para>Włączenia / Wyłączenia śledzenia pakietów</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
<option>?</option>
|
|
</term>
|
|
<listitem>
|
|
<para>Wyświetlenia ekranu pomocy</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>
|
|
Wszystko inne
|
|
</term>
|
|
<listitem>
|
|
<para>Wyświetla status w postaci:</para>
|
|
<para>Stats: 0:00:08 elapsed; 111 hosts completed (5 up),
|
|
5 undergoing Service Scan</para>
|
|
<para>Service scan Timing: About 28.00% done; ETC: 16:18
|
|
(0:00:15 remaining)</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</refsect1>
|
|
|
|
<refsect1 id="man-examples">
|
|
<title>Przykłady</title>
|
|
<para>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
|
|
<emphasis>twojej własnej sieci</emphasis>. 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.</para>
|
|
|
|
<para>Do celu testów, masz zgodę do skanowania hosta
|
|
<literal moreinfo="none">scanme.nmap.org</literal>. 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 <computeroutput moreinfo="none">Failed to resolve given hostname/IP:
|
|
scanme.nmap.org</computeroutput>. pozwolenie dotyczy także adresów
|
|
<literal moreinfo="none">scanme2.nmap.org</literal>,
|
|
<literal moreinfo="none">scanme3.nmap.org</literal> i następnych, choć
|
|
hosty te jeszcze nie istnieją.</para>
|
|
|
|
<para>
|
|
<userinput moreinfo="none">nmap -v scanme.nmap.org</userinput>
|
|
</para>
|
|
<para>Pozwoli na przeskanowanie wszystkich portów TCP adresu
|
|
<literal moreinfo="none">scanme.nmap.org</literal>. Opcja
|
|
<option>-v</option> podwyższy poziom szczegółowości zwracanych informacji.
|
|
</para>
|
|
<para>
|
|
<userinput moreinfo="none">nmap -sS -O scanme.nmap.org/24</userinput>
|
|
</para>
|
|
<para>Uruchamia skanowanie SYN wszystkich 255 hostów znajdujących się
|
|
w tej samej klasie <quote>C</quote>, 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.</para>
|
|
<para>
|
|
<userinput moreinfo="none">nmap -sV -p 22,53,110,143,4564
|
|
198.116.0-255.1-127</userinput>
|
|
</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>
|
|
<userinput moreinfo="none">nmap -v -iR 100000 -P0 -p 80</userinput>
|
|
</para>
|
|
|
|
<para>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 <option>-P0</option>, 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.</para>
|
|
|
|
<para>
|
|
<userinput moreinfo="none">nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG
|
|
logs/pb-port80scan.gnmap 216.163.128.20/20</userinput>
|
|
</para>
|
|
<para>Skanuje 4096 adresów IP w poszukiwaniu serwerów WWW (bez pingowania
|
|
ich) i zapisuje wyniki w plikach XML i grepowalnym.</para>
|
|
|
|
</refsect1>
|
|
|
|
<refsect1 id="man-bugs">
|
|
<title>Błędy</title>
|
|
|
|
<para>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
|
|
<ulink url="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
|
|
<ulink url="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>dev@nmap.org</email>. 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
|
|
dev@nmap.org z większym prawdopodobieństwem doczekają sie
|
|
szybkiej odpowiedzi, niż wysłane bezpośrednio do Fyodora.</para>
|
|
|
|
<para>Poprawki błędnego kodu są milej widziane, niż opisy błedów.
|
|
Podstawowe instrukcje tworzenia poprawek są opisane na stronie
|
|
<ulink url="https://nmap.org/data/HACKING"/>. Poprawki
|
|
mogą być wysyłane na nmap-dev (rekomendowane) lub bezpośrednio do
|
|
Fyodora.</para>
|
|
</refsect1>
|
|
|
|
<refsect1 id="man-author">
|
|
<title>Autor</title>
|
|
<para>Fyodor
|
|
<email>fyodor@nmap.org</email>
|
|
(<ulink url="http://www.insecure.org"/>)
|
|
</para>
|
|
|
|
<para>Setki ludzi wniosły wartościowy wkład w rozwój Nmapa. Szczegóły są
|
|
zamieszczane w pliku <filename moreinfo="none">CHANGELOG</filename>, który
|
|
jest rozpowszechniany z Nmapem i jest również dostępny pod adresem
|
|
<ulink url="https://nmap.org/changelog.html"/>.</para>
|
|
|
|
</refsect1>
|
|
|
|
|
|
<refsect1 id="man-legal">
|
|
<title>Uwarunkowania prawne</title>
|
|
|
|
<refsect2 id="translation-disclaimer">
|
|
<title>Unofficial Translation Disclaimer / Oświadczenie dotyczące tłumaczenia</title>
|
|
|
|
<para>This is an unnofficial translation of the <ulink
|
|
url="https://nmap.org/man/man-legal.html">Nmap
|
|
license details</ulink> 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.</para>
|
|
|
|
<para>To jest nieoficjalne tłumaczenie <ulink
|
|
url="https://nmap.org/man/man-legal.html">licencji Nmapa
|
|
</ulink> 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.
|
|
</para>
|
|
</refsect2>
|
|
|
|
|
|
<refsect2 id="nmap-copyright">
|
|
<title>Prawa autorskie i licencjonowanie Nmap</title>
|
|
|
|
<para>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>sales@insecure.com</email>).
|
|
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.</para>
|
|
|
|
<para>GPL nakłada isotne ograniczenia w stosunku do <quote>produktów pochodnych
|
|
</quote>, 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:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>Integruje kod źródłowy Nmapa</para></listitem>
|
|
<listitem><para>Odczytuje lub dołącza chronione prawami autorskimi pliki Nmapa,
|
|
takie jak <filename moreinfo="none">nmap-os-fingerprints</filename> czy
|
|
<filename moreinfo="none">nmap-service-probes</filename>.</para></listitem>
|
|
<listitem><para>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).</para></listitem>
|
|
<listitem><para>Integrują/włączają/agregują Nmapa w wykonywalnym instalatorze,
|
|
tak jak stworzone za pomocą InstallShield.</para></listitem>
|
|
<listitem><para>Wykorzystują bibliotekę lub program wykonujący jedno z
|
|
powyższych.</para></listitem>
|
|
</itemizedlist>
|
|
|
|
<para>Warunki <quote>Nmapa</quote> 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 <ulink url="https://nmap.org/"/> do pobierania Nmapa.</para>
|
|
|
|
<para>Nie uważamy tego za ograniczenia dodane do GPL, ale jako klarowną
|
|
interpretację <quote>programów pochodnych</quote>, jako że dotyczy to naszego
|
|
produktu opartego na GPL. Jest to zbliżone do sposobu w jaki Linus Torvalds
|
|
opublikował swoją interpretację dotyczącą <quote>programów pochodnych</quote>,
|
|
opartych na modułach kernela Linuxa. Nasza interpretacja odnosi się tylko do
|
|
Nmapa - nie mówimy o żadnym innym produkcie GPL.</para>
|
|
|
|
<para>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>sales@insecure.com</email> w celu uzyskania
|
|
dalszych informacji.</para>
|
|
|
|
<para>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.</para>
|
|
|
|
<para>Jeśli otrzymałeś(aś) te pliki z pisemną licencją lub kontraktem
|
|
zmieniającym powyższe zapisy, mają one pierwszeństwo nad umieszczonymi tutaj.
|
|
</para>
|
|
</refsect2>
|
|
|
|
<refsect2 id="man-copyright">
|
|
<title>Licencja Creative Commons dla tego podręcznika Nmap</title>
|
|
<para>Prawa (2005) do tego podręcznika Nmapa posiada Insecure.Com LLC. Jest on
|
|
udostępniany w oparciu o wersję 2.5 licencji
|
|
<ulink url="http://creativecommons.org/licenses/by/2.5/">Creative Commons
|
|
Attribution License</ulink>. 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).</para>
|
|
</refsect2>
|
|
|
|
<refsect2 id="source-contrib">
|
|
<title>Dostępność kodu źródłowego i wkład społeczności</title>
|
|
|
|
<para>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).</para>
|
|
|
|
<para>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>fyodor@nmap.org</email> 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.</para>
|
|
</refsect2>
|
|
|
|
<refsect2 id="no-warranty"><title>Brak gwarancji</title>
|
|
|
|
<para>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
|
|
<ulink url="http://www.gnu.org/copyleft/gpl.html"/>, jej polskie nieoficjalne
|
|
tłumaczenie <ulink url="http://www.gnu.org.pl/text/licencja-gnu.html"/>
|
|
lub w pliku COPYING dołączanym do Nmapa.</para>
|
|
|
|
<para>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ć. <emphasis>Nmap nie powinien być nigdy uruchamiany przeciwko systemom
|
|
krytycznym</emphasis>, 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.</para>
|
|
</refsect2>
|
|
|
|
<refsect2 id="inappropriate-usage"><title>Nieodpowiednie użycie</title>
|
|
<para>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.</para>
|
|
|
|
<para>Z powodów bezpieczeństwa, Nmap nie powinien być nigdy instalowany ze
|
|
specjalnymi uprawnieniami (np. suid root).</para>
|
|
</refsect2>
|
|
|
|
<refsect2 id="third-party-soft"><title>Oprogramowanie firm trzecich</title>
|
|
<para>Ten produkt zawiera oprogramowanie stworzone przez
|
|
<ulink url="http://www.apache.org">Apache Software Foundation</ulink>.
|
|
Zmodyfikowana wersja biblioteki <ulink url="http://www.tcpdump.org">Libpcap
|
|
portable packet capture library</ulink> jest dołączana do dystrybucji Nmapa.
|
|
Wersja Nmapa dla systemu Windows wykorzystuje opartą na libpcap bibliotekę
|
|
<ulink url="http://www.winpcap.org">WinPcap</ulink> (zamiast libpcap). Obsługę
|
|
wyrażeń regularnych zapewnia biblioteka
|
|
<ulink url="http://www.pcre.org">PCRE</ulink>, która jest oprogramowaniem
|
|
open source, napisanym przez Philip Hazel. Niektóre funkcje dotyczące niskiego
|
|
poziomu sieci wykorzystują bibliotekę
|
|
<ulink url="http://libdnet.sourceforge.net">Libdnet</ulink>, napisaną przez Dug
|
|
Songa. Zmodyfikowana jej wersja jest dołączana do dystrybucji Nmapa. Nmap może
|
|
być opcjonalnie linkowany z biblioteką kryptograficzną
|
|
<ulink url="http://www.openssl.org">OpenSSL</ulink>, używaną do detekcji wersji
|
|
SSL. Wszystkie opisane w tym paragrafie programy firm trzecich są
|
|
rozpowszechniane na licencji BSD.</para>
|
|
</refsect2>
|
|
|
|
<refsect2 id="us-export"><title>Klasyfikacja eksportowa Stanów Zjednoczonych
|
|
Ameryki Północnej</title>
|
|
<para>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 <quote>Oprogramowanie dotyczące bezpieczeństwa informacji
|
|
nie objęte 5D002</quote>. 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.</para>
|
|
</refsect2>
|
|
|
|
</refsect1>
|
|
</refentry>
|
|
|
|
</article>
|