mirror of
https://github.com/nmap/nmap.git
synced 2025-12-06 04:31:29 +00:00
4859 lines
264 KiB
XML
4859 lines
264 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<article id="man" lang="it">
|
||
<artheader>
|
||
<title>Guida di riferimento di Nmap (pagina del manuale)</title>
|
||
</artheader>
|
||
|
||
<refentry id="man-nmap1">
|
||
<refmeta>
|
||
<refentrytitle>nmap</refentrytitle>
|
||
|
||
<manvolnum>1</manvolnum>
|
||
<refmiscinfo class="source">Nmap</refmiscinfo>
|
||
<refmiscinfo class="manual">Guida di riferimento di Nmap</refmiscinfo>
|
||
</refmeta>
|
||
|
||
<refnamediv id="man-name">
|
||
<refname>nmap</refname>
|
||
|
||
<refpurpose>Strumento di network exploration e security / port
|
||
scanner</refpurpose>
|
||
</refnamediv>
|
||
|
||
<!-- body begins here -->
|
||
|
||
<refsynopsisdiv id="man-synopsis">
|
||
<cmdsynopsis sepchar=" ">
|
||
<command moreinfo="none">nmap</command>
|
||
|
||
<arg choice="opt" rep="repeat">
|
||
<replaceable>Tipo di Scansione</replaceable>
|
||
</arg>
|
||
|
||
<arg choice="opt" rep="norepeat">
|
||
<replaceable>Opzioni</replaceable>
|
||
</arg>
|
||
|
||
<arg choice="req" rep="norepeat">
|
||
<replaceable>Obiettivo</replaceable>
|
||
</arg>
|
||
</cmdsynopsis>
|
||
</refsynopsisdiv>
|
||
|
||
<refsect1 id="man-description">
|
||
<title>Descrizione</title>
|
||
<web>
|
||
<note><para>
|
||
Questo documento descrive la versione di Nmap 6.47. L'ultima
|
||
documentazione è disponibile in inglese all'indirizzo
|
||
<ulink url="https://nmap.org/book/man.html" />.</para></note>
|
||
</web>
|
||
|
||
<para>Nmap (<quote>Network Mapper</quote>) è uno strumento open-source
|
||
per la network exploration e l'auditing. È stato progettato per
|
||
scansionare rapidamente reti di grandi dimensioni, ma è indicato anche
|
||
per l'utilizzo verso singoli host. Nmap usa pacchetti IP "raw" (grezzi,
|
||
non formattati) in varie modalità per determinare quali host sono
|
||
disponibili su una rete, che servizi (nome dell'applicazione e versione)
|
||
vengono offerti da questi host, che sistema operativo (e che versione
|
||
del sistema operativo) è in esecuzione, che tipo di firewall e packet
|
||
filters sono usati, e molte altre caratteristiche. Nonostante Nmap sia
|
||
comunemente usato per audits di sicurezza, molti sistemisti e
|
||
amministratori di rete lo trovano utile per tutte le attività
|
||
giornaliere come ad esempio l'inventario delle macchine presenti in
|
||
rete, per gestire gli aggiornamenti programmati dei servizi e per
|
||
monitorare gli host o il loro uptime.</para>
|
||
|
||
<para>L'output di Nmap è un elenco di obiettivi scansionati, con
|
||
informazioni supplementari per ognuno a seconda delle opzioni usate. Tra
|
||
queste informazioni è vitale la <quote>tabella delle porte interessanti
|
||
</quote>. Questa tabella elenca il numero della porta e il protocollo,
|
||
il nome del servizio e lo stato attuale. Lo stato può essere <literal
|
||
moreinfo="none">open (aperto)</literal>, <literal
|
||
moreinfo="none">filtered (filtrato)</literal>, <literal
|
||
moreinfo="none">closed (chiuso)</literal>, o <literal
|
||
moreinfo="none">unfiltered (non filtrato)</literal>. Aperto significa
|
||
che vi è sulla macchina obiettivo un'applicazione in ascolto su quella
|
||
porta per connessioni o pacchetti in entrata. <literal
|
||
moreinfo="none">Filtrato</literal> significa che un firewall, un filtro
|
||
o qualche altro ostacolo di rete sta bloccando la porta al punto che
|
||
Nmap non riesce a distinguere tra <literal
|
||
moreinfo="none">aperta</literal> o <literal
|
||
moreinfo="none">chiusa</literal>. Le porte <literal
|
||
moreinfo="none">chiuse</literal> non hanno alcuna applicazione in
|
||
ascolto, anche se potrebbero aprirsi in ogni momento. Le porte vengono
|
||
classificate come <literal moreinfo="none">non filtrate</literal> quando
|
||
rispondono ad una scansione di Nmap, ma non è stato possibile
|
||
determinare se sono aperte o chiuse. Nmap mostra le combinazioni
|
||
<literal moreinfo="none">aperta|filtrata</literal> e <literal
|
||
moreinfo="none">chiusa|filtrata</literal> quando non può determinare
|
||
quale dei due stati descrive una porta. La tabella delle porte può
|
||
anche includere dettagli quali le versioni dei software disponibili se
|
||
è stata usata l'opzione appropriata. Quando viene richiesta una
|
||
scansione IP (<option>-sO</option>), Nmap fornisce informazioni sui
|
||
protocolli IP supportati anziché sulle porte in ascolto.</para>
|
||
|
||
<para>In aggiunta alla tabella delle porte notevoli, Nmap può fornire
|
||
ulteriori informazioni sugli obiettivi come ad esempio i nomi DNS
|
||
risolti (reverse DNS names), il probabile sistema operativo in uso, il
|
||
tipo di device e l'indirizzo fisico (MAC address).</para>
|
||
|
||
<para>Una tipica scansione con Nmap è mostrata su <xref
|
||
linkend="man-ex-repscan" />. Le uniche opzioni usate di Nmap in questo
|
||
esempio sono <option>-A</option>, per abilitare la rilevazione del
|
||
sistema operativo e della versione, lo script scanning e il traceroute,
|
||
<option>-T4</option> per un'esecuzione più rapida e infine l'host
|
||
obiettivo.</para>
|
||
|
||
<example id="man-ex-repscan">
|
||
<title>Una scansione di esempio</title>
|
||
|
||
<screen>
|
||
# nmap -A -T4 scanme.nmap.org
|
||
|
||
Nmap scan report for scanme.nmap.org (74.207.244.221)
|
||
Host is up (0.029s latency).
|
||
rDNS record for 74.207.244.221: li86-221.members.linode.com
|
||
Not shown: 995 closed ports
|
||
PORT STATE SERVICE VERSION
|
||
22/tcp open ssh OpenSSH 5.3p1 Debian 3ubuntu7 (protocol 2.0)
|
||
| ssh-hostkey: 1024 8d:60:f1:7c:ca:b7:3d:0a:d6:67:54:9d:69:d9:b9:dd (DSA)
|
||
|_2048 79:f8:09:ac:d4:e2:32:42:10:49:d3:bd:20:82:85:ec (RSA)
|
||
80/tcp open http Apache httpd 2.2.14 ((Ubuntu))
|
||
|_http-title: Go ahead and ScanMe!
|
||
646/tcp filtered ldp
|
||
1720/tcp filtered H.323/Q.931
|
||
9929/tcp open nping-echo Nping echo
|
||
Device type: general purpose
|
||
Running: Linux 2.6.X
|
||
OS CPE: cpe:/o:linux:linux_kernel:2.6.39
|
||
OS details: Linux 2.6.39
|
||
Network Distance: 11 hops
|
||
Service Info: OS: Linux; CPE: cpe:/o:linux:kernel
|
||
|
||
TRACEROUTE (using port 53/tcp)
|
||
HOP RTT ADDRESS
|
||
[Cut first 10 hops for brevity]
|
||
11 17.65 ms li86-221.members.linode.com (74.207.244.221)
|
||
|
||
Nmap done: 1 IP address (1 host up) scanned in 14.40 seconds
|
||
</screen>
|
||
</example>
|
||
|
||
<para>L'ultima versione di Nmap si può ottenere dal sito <ulink
|
||
url="https://nmap.org" />. L'ultima versione di questa pagina del manuale
|
||
è disponibile al sito <ulink url="https://nmap.org/book/man.html" />. È
|
||
anche inclusa come capitolo di <quote>Nmap Network Scanning: The Official
|
||
Nmap Project Guide to Network Discovery and Security Scanning</quote>
|
||
(<ulink url="https://nmap.org/book/" />).</para>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-briefoptions">
|
||
<title>Elenco delle opzioni</title>
|
||
|
||
<para>Questo elenco delle possibili opzioni viene stampato quando Nmap
|
||
viene eseguito senza argomenti; una versione aggiornata di questo elenco
|
||
è sempre disponibile sul sito <ulink
|
||
url="https://svn.nmap.org/nmap/docs/nmap.usage.txt" />. È utile per
|
||
ricordarsi le opzioni più comuni ma non dev'essere inteso come
|
||
un'alternativa alla documentazione approfondita presente in questa
|
||
pagina di manuale. Alcune opzioni "oscure" non sono neanche incluse
|
||
qui.</para>
|
||
|
||
<para>
|
||
<literallayout class="normal">Nmap 6.47SVN ( https://nmap.org )
|
||
Usage: nmap [Scan Type(s)] [Options] {target specification}
|
||
TARGET SPECIFICATION:
|
||
Can pass hostnames, IP addresses, networks, etc.
|
||
Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
|
||
-iL <inputfilename>: Input from list of hosts/networks
|
||
-iR <num hosts>: Choose random targets
|
||
--exclude <host1[,host2][,host3],...>: Exclude hosts/networks
|
||
--excludefile <exclude_file>: Exclude list from file
|
||
HOST DISCOVERY:
|
||
-sL: List Scan - simply list targets to scan
|
||
-sn: Ping Scan - disable port scan
|
||
-Pn: Treat all hosts as online -- skip host discovery
|
||
-PS/PA/PU/PY[portlist]: TCP SYN/ACK, UDP or SCTP discovery to given ports
|
||
-PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes
|
||
-PO[protocol list]: IP Protocol Ping
|
||
-n/-R: Never do DNS resolution/Always resolve [default: sometimes]
|
||
--dns-servers <serv1[,serv2],...>: Specify custom DNS servers
|
||
--system-dns: Use OS's DNS resolver
|
||
--traceroute: Trace hop path to each host
|
||
SCAN TECHNIQUES:
|
||
-sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans
|
||
-sU: UDP Scan
|
||
-sN/sF/sX: TCP Null, FIN, and Xmas scans
|
||
--scanflags <flags>: Customize TCP scan flags
|
||
-sI <zombie host[:probeport]>: Idle scan
|
||
-sY/sZ: SCTP INIT/COOKIE-ECHO scans
|
||
-sO: IP protocol scan
|
||
-b <FTP relay host>: FTP bounce scan
|
||
PORT SPECIFICATION AND SCAN ORDER:
|
||
-p <port ranges>: Only scan specified ports
|
||
Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
|
||
--exclude-ports <port ranges>: Exclude the specified ports from scanning
|
||
-F: Fast mode - Scan fewer ports than the default scan
|
||
-r: Scan ports sequentially - don't randomize
|
||
--top-ports <number>: Scan <number> most common ports
|
||
--port-ratio <ratio>: Scan ports more common than <ratio>
|
||
SERVICE/VERSION DETECTION:
|
||
-sV: Probe open ports to determine service/version info
|
||
--version-intensity <level>: Set from 0 (light) to 9 (try all probes)
|
||
--version-light: Limit to most likely probes (intensity 2)
|
||
--version-all: Try every single probe (intensity 9)
|
||
--version-trace: Show detailed version scan activity (for debugging)
|
||
SCRIPT SCAN:
|
||
-sC: equivalent to --script=default
|
||
--script=<Lua scripts>: <Lua scripts> is a comma separated list of
|
||
directories, script-files or script-categories
|
||
--script-args=<n1=v1,[n2=v2,...]>: provide arguments to scripts
|
||
--script-args-file=filename: provide NSE script args in a file
|
||
--script-trace: Show all data sent and received
|
||
--script-updatedb: Update the script database.
|
||
--script-help=<Lua scripts>: Show help about scripts.
|
||
<Lua scripts> is a comma-separated list of script-files or
|
||
script-categories.
|
||
OS DETECTION:
|
||
-O: Enable OS detection
|
||
--osscan-limit: Limit OS detection to promising targets
|
||
--osscan-guess: Guess OS more aggressively
|
||
TIMING AND PERFORMANCE:
|
||
Options which take <time> are in seconds, or append 'ms' (milliseconds),
|
||
's' (seconds), 'm' (minutes), or 'h' (hours) to the value (e.g. 30m).
|
||
-T<0-5>: Set timing template (higher is faster)
|
||
--min-hostgroup/max-hostgroup <size>: Parallel host scan group sizes
|
||
--min-parallelism/max-parallelism <numprobes>: Probe parallelization
|
||
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>: Specifies
|
||
probe round trip time.
|
||
--max-retries <tries>: Caps number of port scan probe retransmissions.
|
||
--host-timeout <time>: Give up on target after this long
|
||
--scan-delay/--max-scan-delay <time>: Adjust delay between probes
|
||
--min-rate <number>: Send packets no slower than <number> per second
|
||
--max-rate <number>: Send packets no faster than <number> per second
|
||
FIREWALL/IDS EVASION AND SPOOFING:
|
||
-f; --mtu <val>: fragment packets (optionally w/given MTU)
|
||
-D <decoy1,decoy2[,ME],...>: Cloak a scan with decoys
|
||
-S <IP_Address>: Spoof source address
|
||
-e <iface>: Use specified interface
|
||
-g/--source-port <portnum>: Use given port number
|
||
--proxies <url1,[url2],...>: Relay connections through HTTP/SOCKS4 proxies
|
||
--data <hex string>: Append a custom payload to sent packets
|
||
--data-string <string>: Append a custom ASCII string to sent packets
|
||
--data-length <num>: Append random data to sent packets
|
||
--ip-options <options>: Send packets with specified ip options
|
||
--ttl <val>: Set IP time-to-live field
|
||
--spoof-mac <mac address/prefix/vendor name>: Spoof your MAC address
|
||
--badsum: Send packets with a bogus TCP/UDP/SCTP checksum
|
||
OUTPUT:
|
||
-oN/-oX/-oS/-oG <file>: Output scan in normal, XML, s|<rIpt kIddi3,
|
||
and Grepable format, respectively, to the given filename.
|
||
-oA <basename>: Output in the three major formats at once
|
||
-v: Increase verbosity level (use -vv or more for greater effect)
|
||
-d: Increase debugging level (use -dd or more for greater effect)
|
||
--reason: Display the reason a port is in a particular state
|
||
--open: Only show open (or possibly open) ports
|
||
--packet-trace: Show all packets sent and received
|
||
--iflist: Print host interfaces and routes (for debugging)
|
||
--log-errors: Log errors/warnings to the normal-format output file
|
||
--append-output: Append to rather than clobber specified output files
|
||
--resume <filename>: Resume an aborted scan
|
||
--stylesheet <path/URL>: XSL stylesheet to transform XML output to HTML
|
||
--webxml: Reference stylesheet from Nmap.Org for more portable XML
|
||
--no-stylesheet: Prevent associating of XSL stylesheet w/XML output
|
||
MISC:
|
||
-6: Enable IPv6 scanning
|
||
-A: Enable OS detection, version detection, script scanning, and traceroute
|
||
--datadir <dirname>: Specify custom Nmap data file location
|
||
--send-eth/--send-ip: Send using raw ethernet frames or IP packets
|
||
--privileged: Assume that the user is fully privileged
|
||
--unprivileged: Assume the user lacks raw socket privileges
|
||
-V: Print version number
|
||
-h: Print this help summary page.
|
||
EXAMPLES:
|
||
nmap -v -A scanme.nmap.org
|
||
nmap -v -sn 192.168.0.0/16 10.0.0.0/8
|
||
nmap -v -iR 10000 -Pn -p 80
|
||
SEE THE MAN PAGE (https://nmap.org/book/man.html) FOR MORE OPTIONS AND EXAMPLES
|
||
</literallayout>
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-target-specification">
|
||
<title>Target Specification (Specifica degli obiettivi)</title>
|
||
|
||
<para>Ogni cosa sulla linea di comando di Nmap che non è un'opzione (o
|
||
un argomento di un'opzione) è considerato come una specifica di un host
|
||
obiettivo. Il caso più semplice consiste nello specificare
|
||
semplicemente un indirizzo IP o un nome di host per la scansione.</para>
|
||
|
||
<para>A volte può essere utile scansionare un'intera rete di host
|
||
adiacenti. Per questo, Nmap supporta l'indirizzamento CIDR. Si possono
|
||
aggiungere /<replaceable>numero di bit</replaceable> a un indirizzo IP o
|
||
a un nome di host e Nmap eseguirà la scansione su ogni indirizzo IP per
|
||
il quale i primi <replaceable>numero di bit</replaceable> sono identici a
|
||
quelli specificati nell'IP o nel nome di host fornito. Ad esempio,
|
||
192.168.10.0/24 eseguirà la scansione sui primi 256 host tra
|
||
192.168.10.0 (in binario: <literal moreinfo="none">11000000 10101000
|
||
00001010 00000000</literal>) e 192.168.10.255 (in binario: <literal
|
||
moreinfo="none">11000000 10101000 00001010 11111111</literal>), estremi
|
||
inclusi. 192.168.10.40/24 fa esattamente la stessa cosa. Dato che l'host
|
||
scanme.nmap.org corrisponde all'indirizzo IP 205.217.153.62, la
|
||
specifica scanme.nmap.org/16 eseguirebbe la scansione sui 65.536
|
||
indirizzi IP tra 205.217.0.0 e 205.217.255.255. Il più piccolo valore
|
||
permesso è /1, che effettua la scansione su metà Internet. Il valore
|
||
maggiore è 32, che effettua la scansione solo sull'host o sull'IP
|
||
specificato poiché tutti i bit di indirizzo sono fissati.</para>
|
||
|
||
<para>La notazione CIDR è breve ma non sempre abbastanza flessibile. Ad
|
||
esempio, si potrebbe voler controllare 192.168.0.0/16 ma saltando
|
||
qualsiasi IP termini con .0 o con .255 perché sono usati generalmente
|
||
come indirizzi di broadcast. Nmap supporta questa funzione attraverso
|
||
l'indirizzamento per intervalli di ottetti. Anziché specificare un
|
||
normale indirizzo IP è possibile specificare una lista di valori o
|
||
intervalli di valori separati da virgola per ogni ottetto. Ad esempio,
|
||
192.168.0-255.1-254 salterà tutti gli indirizzi nell'intervallo che
|
||
termina per .0 o .255, mentre 192.168.3-5,7.1 eseguirà la scansione dei
|
||
quattro indirizzi 192.168.3.1, 192.168.4.1, 192.168.5.1 e 192.168.7.1.
|
||
Entrambi i valori limite possono essere omessi; i valori di default sono
|
||
0 a sinistra e 255 a destra. Usare - da solo equivale a 0-255, ma ricorda
|
||
di usare 0- nel primo ottetto così da non fare sembrare l'obiettivo
|
||
un'opzione sulla riga di comando. Gli intervalli non devono
|
||
necessariamente essere limitati agli ottetti finali: una specifica come
|
||
0-255.0-255.13.37 effettuerà una scansione su tutta Internet per ogni
|
||
indirizzo IP che termina per 13.37. Questa tipologia di campionamento può
|
||
essere utile per ricerche e sondaggi su tutta la rete Internet.</para>
|
||
|
||
<para>Indirizzi IPV6 possono essere indicati solo mediante il loro
|
||
indirizzo IPv6 completo o il loro hostname. L'indirizzamento CIDR e gli
|
||
intervalli di ottetti non sono ancora supportati per IPv6.</para>
|
||
|
||
<para>Gli indirizzi IPv6 con un non-global scope hanno bisogno di un ID
|
||
di zona come suffisso. Sui sistemi Unix, questo è rappresentato dal
|
||
simbolo percentuale (%) seguito dal nome di un'interfaccia; un indirizzo
|
||
completo potrebbe essere fe80::a8bb:ccff:fedd:eeff%eth0. Su Windows, si
|
||
usa l'identificativo numerico dell'interfaccia al posto del suo nome:
|
||
fe80::a8bb:ccff:fedd:eeff%1. Puoi vedere la lista degli identificativi
|
||
numerici con il comando <command
|
||
moreinfo="none">netsh.exe interface ipv6 show interface</command>.</para>
|
||
|
||
<para>Nmap accetta più indirizzi di obiettivi sulla linea di comando
|
||
ed essi non devono essere necessariamente indicati nello stesso modo. Il
|
||
comando <command moreinfo="none">nmap scanme.nmap.org 192.168.0.0/8
|
||
10.0.0,1,3-7.-</command> fa esattamente ciò che ci si aspetta.</para>
|
||
|
||
<para>Così come gli obiettivi sono generalmente indicati sulla linea di
|
||
comando, anche le seguenti opzioni sono disponibili per la selezione
|
||
degli obiettivi:</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><option>-iL <inputfilename></option> (Input from
|
||
list)</term>
|
||
|
||
<listitem>
|
||
<para>Legge gli obiettivi da
|
||
<replaceable>inputfilename</replaceable>. Inserire una grossa
|
||
lista di host è spesso scomodo sulla linea di comando, anche se
|
||
spesso è una necessità comune. Ad esempio, un server DHCP
|
||
potrebbe esportare un elenco di 10.000 leases che si potrebbero
|
||
voler controllare. Oppure si vogliono controllare tutti gli
|
||
indirizzi IP di una rete <emphasis>tranne</emphasis> quelli
|
||
presenti nel DHCP per individuare eventuali IP statici non
|
||
autorizzati. È sufficiente generare la lista di host da
|
||
controllare e passarla a Nmap come argomento dell'opzione
|
||
<option>-iL</option>. Ogni elemento può essere in uno qualsiasi
|
||
dei formati accettati da Nmap sulla linea di comando (indirizzo
|
||
IP, nome dell'host, notazione CIDR, IPv6 o intervalli di
|
||
indirizzi). Ogni elemento dev'essere separato da uno o più spazi,
|
||
indentazioni (tabulazioni) o caratteri di a-capo. Si può usare un
|
||
trattino (<literal moreinfo="none">-</literal>) come nome di file
|
||
se si vuole che Nmap legga gli host dallo standard input piuttosto
|
||
che da un file esistente.</para>
|
||
|
||
<para>L'<replaceable>inputfilename</replaceable> può contenere
|
||
commenti. Ogni commento inizia con # e finisce con un carattere di
|
||
a-capo.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-iR <num hosts></option> (Choose random
|
||
targets)</term>
|
||
|
||
<listitem>
|
||
<para>Durante certe indagini su tutta Internet o altri tipi di
|
||
ricerca, si potrebbe desiderare di scegliere gli obiettivi in
|
||
maniera casuale. L'argomento <replaceable>num hosts</replaceable>
|
||
indica a Nmap quanti indirizzi IP generare. Gli indirizzi privati,
|
||
multicast o i pool di indirizzi non allocati vengono
|
||
automaticamente saltati. Si può specificare l'argomento <literal
|
||
moreinfo="none">0</literal> per una scansione senza fine. Va
|
||
ricordato che alcuni amministratori di rete non apprezzano
|
||
scansioni non autorizzate delle loro reti e potrebbero lamentarsi.
|
||
Usare questa opzione a proprio rischio e pericolo! Se in un
|
||
pomeriggio piovoso ci si trova ad essere annoiati, si può provare
|
||
questo comando <command moreinfo="none">nmap -sS -PS80 -iR 0 -p
|
||
80</command> per trovare in maniera casuale dei server web sui
|
||
quali navigare.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--exclude <host1>[,<host2>[,...]]</option>
|
||
(Exclude hosts/networks)</term>
|
||
|
||
<listitem>
|
||
<para>Questa opzione specifica un elenco, separato da virgola, di
|
||
obiettivi da escludere dalla scansione anche se sono parte
|
||
dell'intervallo di rete specificato. La lista va specificata nella
|
||
notazione usuale di Nmap, ovvero può includere nomi di host,
|
||
blocchi di indirizzi specificati mediante notazione CIDR,
|
||
intervalli di ottetti, etc. Questo può essere utile quando la
|
||
rete che si vuole controllare include server intoccabili o di
|
||
vitale importanza, sistemi che sono conosciuti per reagire in
|
||
maniera negativa ad eventuali scansioni, o sottoreti amministrate
|
||
da altri.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--excludefile <exclude_file></option> (Exclude
|
||
list from file)</term>
|
||
|
||
<listitem>
|
||
<para>Questa opzione offre le stesse funzionalità
|
||
dell'opzione<option>--exclude</option>, con la differenza che gli
|
||
obiettivi da escludere dalla scansione sono elencate in un
|
||
<replaceable>exclude_file</replaceable> (separate da spazi
|
||
bianchi, a-capo o tabulazioni) anziché sulla linea di
|
||
comando.</para>
|
||
|
||
<para>L'<replaceable>exclude_file</replaceable> può contenere
|
||
commenti. Ogni commento inizia con # e finisce con un carattere di
|
||
a-capo.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-host-discovery">
|
||
<title>Host Discovering (Ricerca di host)</title>
|
||
|
||
<para>Uno dei primi passi in qualsiasi approccio di mappatura di una
|
||
rete è quello di ridurre un intervallo di indirizzi IP (talvolta di
|
||
notevoli dimensioni) ad una lista di host attivi o interessanti. Uno
|
||
scan di ogni porta di ogni singolo indirizzo IP è lento e generalmente
|
||
non necessario. Ovviamente ciò che rende un host interessante dipende
|
||
in larga misura dalle motivazioni della scansione. Gli amministratori di
|
||
rete possono essere interessati solo a host sui quali è in esecuzione
|
||
uno specifico servizio, mentre chi fa auditing di sicurezza è più
|
||
interessato a ogni singola periferica dotata di un indirizzo IP. Un
|
||
sistemista può accontentarsi di semplici ping ICMP per trovare gli host
|
||
sulla propria rete, ma un penetration tester esterno può dover usare un
|
||
insieme di molti differenti probing (tentativi di scansione) per cercare
|
||
di evitare le restrizioni imposte da un firewall.</para>
|
||
|
||
<para>Poiché le necessità di host discovering sono così diverse, Nmap
|
||
offre una notevole varietà di opzioni per la customizzazione delle
|
||
tecniche usate. Il semplice host discovery è spesso chiamato <quote>ping
|
||
scan</quote>, anche se va molto oltre il semplice pacchetto ICMP di tipo
|
||
"echo request" associato al famoso strumento di <application
|
||
moreinfo="none">ping</application>. Un utente può evitare il passaggio
|
||
per l'utility <quote>ping</quote> usando una List Scan (scansione di tipo
|
||
lista: <option>-sL</option>) o disabilitando il ping
|
||
(<option>-Pn</option>), oppure mettendo alla prova la rete usando
|
||
combinazioni arbitrarie di probe TCP SYN/ACK, UDP e ICMP su differenti
|
||
porte. Lo scopo di questi approcci è quello di sollecitare una risposta
|
||
che dimostri l'esistenza di un host o di un dispositivo di rete con
|
||
quell'indirizzo IP. In molte reti solo una piccola percentuale di
|
||
indirizzi IP è attiva in ogni momento, specialmente negli spazi di
|
||
indirizzamento privati previsti dall'RFC 1918 come ad esempio 10.0.0.0/8.
|
||
Una rete di questo tipo ha 16 milioni di possibili IP, anche se è di
|
||
uso comune in aziende con meno di un migliaio di macchine. L'host
|
||
discovery può trovare queste macchine in un mare di indirizzi IP non
|
||
consecutivi.</para>
|
||
|
||
<para>Se non viene fornita alcuna opzione di host discovery, Nmap manda
|
||
di default ad ogni macchina obiettivo un pacchetto ICMP di tipo
|
||
"echo request", un pacchetto TCP SYN alla porta 443, un
|
||
pacchetto TCP ACK alla porta 80 e un pacchetto ICMP di tipo
|
||
"timestamp request" (per IPv6, il pacchetto ICMP di tipo
|
||
"timestamp request" viene escluso dato che non fa
|
||
parte del ICMPv6). Questa default è l'equivalente delle opzioni -PE
|
||
-PS443 -PA80 -PP. Eccezioni a questo comportamento sono le scansioni
|
||
ARP (per IPv4) e Neighbor Discovery (per IPv6) che sono usate per tutti
|
||
gli obiettivi in una rete ethernet locale. Se Nmap viene lanciato da un
|
||
utente non privilegiato all'interno di un ambiente UNIX, i probe di
|
||
default saranno pacchetti SYN alle porte 80 e 443 inviati mediante la
|
||
chiamata di sistema <function moreinfo="none">connect</function>. Questo
|
||
tipo di host discovery è spesso sufficiente quando si deve effettuare una
|
||
scansione su reti locali, anche se per un security auditing si raccomanda
|
||
di usare un set di opzioni più avanzato.</para>
|
||
|
||
<para>L'opzione <option>-P*</option> (che permette di scegliere il tipo
|
||
di ping) può essere combinata. Si possono inoltre aumentare le
|
||
probabilità di bypassare firewall particolarmente restrittivi mandando
|
||
molti tipi di probe diversi usando porte o flag TCP differenti e
|
||
svariati codici ICMP. Inoltre si tenga presente che
|
||
l'ARP/Neighbor Discovery (<option>-PR</option>) viene effettuata di
|
||
default all'interno di una rete locale, anche se vengono specificate
|
||
altre opzioni <option>-P*</option>, poiché è quasi sempre più veloce e
|
||
più efficiente.</para>
|
||
|
||
<para>Di default, Nmap lancia un host discovery e in seguito un port scan
|
||
su tutti gli host che sono online. Questo approccio viene tenuto anche
|
||
quando si specificano metodi non standard per l'host discovery come i
|
||
probe UDP (<option>-PU</option>). Si consulti la spiegazione per
|
||
l'opzione <option>-sn</option> per sapere come effettuare
|
||
<emphasis>solo</emphasis> host discovery; si usi <option>-Pn</option> per
|
||
evitare l'host discovery e fare un portscan di tutti gli host di
|
||
destinazione. Le seguenti opzioni controllano il comportamento dell'host
|
||
discovery:</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><option>-sL</option> (List Scan)</term>
|
||
|
||
<listitem>
|
||
<para>La List Scan è una forma banale di host discovery che
|
||
semplicemente elenca ogni host delle reti specificate, senza
|
||
inviare alcun pacchetto agli host obiettivo. Di default Nmap
|
||
effettua una risoluzione inversa mediante DNS sugli host per
|
||
ottenerne il nome completo. Spesso è sorprendente vedere quante
|
||
informazioni utili possono fornire dei semplici hostname. Ad
|
||
esempio, <literal moreinfo="none">fw.chi</literal> è il nome del
|
||
firewall di un'azienda di Chicago. Nmap mostra anche il numero
|
||
totale di indirizzi IP alla fine della scansione. La lista scan è
|
||
un buon controllo per essere sicuri di avere gli indirizzi IP
|
||
corretti per la propria scansione. Se gli host mostrano nomi di
|
||
dominio non conosciuti, vale la pena indagare oltre per evitare di
|
||
scansionare la rete dell'azienda sbagliata.</para>
|
||
|
||
<para>Poiché l'idea è quella di stampare semplicemente una lista
|
||
di obiettivi, le opzioni per funzionalità di livello più alto
|
||
(come ad esempio il port scanning, le indagini sul tipo di sistema
|
||
operativo in esecuzione o il ping scan) non possono essere
|
||
combinate con questa. Se si vuole disabilitare il ping scan e
|
||
mantenere allo stesso tempo la possibilità di utilizzare
|
||
funzionalità di alto livello, si legga la sezione sull'opzione
|
||
<option>-Pn (No ping)</option>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-sn</option> (No port scan)</term>
|
||
|
||
<listitem>
|
||
<para>Questa opzione indica a Nmap di non effettuare un port scan
|
||
dopo un host discovery e di mostrare gli host che hanno risposto.
|
||
Quest'opzione è spesso conosciuta come <quote>ping scan</quote>, ma
|
||
si può anche richiedere il traceroute ed eseguire script host NSE.
|
||
Quest'azione è un gradino più invadente della List Scan, e spesso
|
||
può essere usata per lo stesso scopo. Essa permette una
|
||
mappatura di una rete obiettivo senza attrarre molta attenzione.
|
||
Sapere quanti host sono attivi è più utile ad un attaccante
|
||
rispetto ad una semplice List Scan di ogni indirizzo IP e nome di
|
||
host.</para>
|
||
|
||
<para>Gli amministratori di sistema trovano spesso questa
|
||
opzione utile allo stesso modo. Può essere usata facilmente per
|
||
enumerare le macchine disponibili in una rete o tenere sotto
|
||
osservazione la disponibilità di un singolo server. Questo
|
||
approccio viene anche chiamato <quote>ping sweep</quote>, ed è più
|
||
affidabile di un ping all'indirizzo broadcast poiché molti host non
|
||
rispondono alle richieste di questa categoria.</para>
|
||
|
||
<para>L'opzione <option>-sn</option> invia di default un pacchetto
|
||
ICMP di tipo "echo request", un pacchetto TCP SYN alla
|
||
porta 443, un pacchetto TCP ACK alla porta 80 e un pacchetto ICMP
|
||
di tipo "timestamp request". Quando viene eseguita da
|
||
un utente non privilegiato, viene inviati solo i pacchetti SYN
|
||
(usando la chiamata <function moreinfo="none">connect</function> )
|
||
alle porte 80 e 443 dell'obiettivo. Quando invece un utente
|
||
privilegiato prova ad effettuare una scansione all'interno di una
|
||
rete locale, vengono usate richieste ARP a meno che non venga
|
||
specificata l'opzione <option>--send-ip</option>. L'opzione
|
||
<option>-sn</option> può essere usata in combinazione con qualsiasi
|
||
tipo di discovery probe (ovvero la famiglia di opzioni
|
||
<option>-P*</option>, tranne <option>-Pn</option>) per avere una
|
||
migliore flessibilità. Se viene usato uno qualsiasi di questi probe
|
||
con opzioni sul numero di porta, allora i probe di default vengono
|
||
annullati. Si raccomanda di usare queste tecniche avanzate se ci
|
||
sono dei firewall restrittivi tra l'host che lancia Nmap e le reti
|
||
di destinazione, altrimenti le destinazioni potrebbero non essere
|
||
raggiunte nel caso in cui il firewall dovesse bloccare i probe o le
|
||
risposte a questi ultimi.</para>
|
||
|
||
<para>Nelle versioni precedenti di Nmap, l'opzione
|
||
<option>-sn</option> era chiamata <option>-sP</option>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-Pn</option> (No ping)</term>
|
||
|
||
<listitem>
|
||
<para>Questa opzione evita del tutto il passaggio di ricerca degli
|
||
host di Nmap. Normalmente Nmap usa questo passaggio per trovare le
|
||
macchine attive da sottoporre ad una scansione più approfondita.
|
||
Di default, Nmap esegue un probing approfondito (come ad esempio
|
||
un port scan, una version detection dei servizi o un Operating
|
||
System detection) solo sugli host che sono stati trovati attivi.
|
||
Disabilitare l'host discovery attraverso l'opzione
|
||
<option>-Pn</option> obbliga Nmap a tentare la scansione richiesta
|
||
su <emphasis>tutti</emphasis> gli host destinazione specificati.
|
||
Quindi se si specifica sulla linea di comando una rete di
|
||
destinazione di classe B (in CIDR /16) verranno sottoposti a
|
||
scansione tutti i 65.535 indirizzi IP. A differenza della List Scan
|
||
(nel quale l'host discovery viene saltato) anziché interrompersi e
|
||
mostrare la lista di destinazioni, Nmap continua ad eseguire le
|
||
funzioni richieste come se ogni IP di destinazione fosse attivo.
|
||
Per evitare <emphasis>sia</emphasis> un ping scan
|
||
<emphasis>che</emphasis> un port scan, ma permettere l'esecuzione
|
||
degli script NSE, utilizzare le due opzioni -Pn -sn insieme.</para>
|
||
|
||
<para>Per le macchine in una rete ethernet locale, la scansione ARP
|
||
verrà ancora eseguita (a meno che siano specificate le opzioni
|
||
<option>--disable-arp-ping</option> e <option>--send-ip</option>)
|
||
in quanto Nmap necessita degli indirizzi fisici (MAC addresses) per
|
||
ulteriori scansioni degli hosts. Nelle versioni precedenti di Nmap,
|
||
<option>-Pn</option> era chiamata <option>-P0</option> e
|
||
<option>-PN</option>.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-PS <port list></option> (TCP SYN Ping)</term>
|
||
|
||
<listitem>
|
||
<para>Questa opzione invia un pacchetto TCP vuoto con il flag SYN
|
||
attivo. La porta di destinazione di default è la 80
|
||
(configurabile durante la compilazione cambiando il parametro di
|
||
define DEFAULT_TCP_PROBE_PORT nel file <filename
|
||
moreinfo="none">nmap.h</filename>), ma si possono specificare altre
|
||
porte come parametro. La sintassi è la stessa dell'opzione
|
||
<option>-p</option> tranne che gli indicatori del tipo di porta
|
||
<option>T:</option> non sono permessi. Da notare che non ci devono
|
||
essere spazi tra <option>-PS</option> e il numero di porta, ad
|
||
esempio <option>-PS22</option>. Nel caso di più porte specificate,
|
||
separate da virgola (ad esempio
|
||
<option>-PS22-25,80,113,1050,35000</option>), si tenterà un probe
|
||
verso ogni porta in parallelo.</para>
|
||
|
||
<para>Il flag SYN indica al sistema remoto che si sta tentando di
|
||
stabilire una connessione. Normalmente la porta di destinazione
|
||
dovrebbe essere chiusa, e un pacchetto di RST (reset) viene
|
||
mandato indietro. Se la porta fosse aperta, il destinatario
|
||
effettuerà il secondo passo della connessione TCP a tre vie
|
||
(3-way-handshake) rispondendo con un pacchetto TCP SYN/ACK. La
|
||
macchina che sta eseguendo Nmap interromperà la connessione
|
||
inviando un pacchetto RST al posto di mandare l'usuale pacchetto
|
||
ACK che completerebbe l'handshake e stabilirebbe una connessione
|
||
completa. Il pacchetto RST viene mandato dal kernel della macchina
|
||
che sta eseguendo Nmap, non da Nmap stesso.</para>
|
||
|
||
<para>A Nmap non interessa se la porta è aperta o chiusa. In ogni
|
||
caso l'RST o il SYN/ACK ricevuti indicano che l'host è
|
||
disponibile e risponde alle connessioni.</para>
|
||
|
||
<para>Nelle macchine UNIX solo l'utente privilegiato <literal
|
||
moreinfo="none">root</literal> generalmente è abilitato all'invio
|
||
e alla ricezione di pacchetti TCP "raw" (non
|
||
formattati, grezzi). Per quanto riguarda gli utenti non
|
||
privilegiati si deve ricorrere alla chiamata di sistema
|
||
<function moreinfo="none">connect</function>, la quale viene
|
||
lanciata su ogni porta di destinazione. Questo ha l'effetto di
|
||
inviare pacchetti SYN all'host di destinazione come per stabilire
|
||
una connessione. Se la <function moreinfo="none">connect</function>
|
||
restituisce rapidamente un messaggio di successo o un messaggio di
|
||
errore ECONNREFUSED significa che lo stack TCP sottostante deve
|
||
aver ricevuto un SYN/ACK o un RST e l'host viene marcato come
|
||
disponibile. Se il tentativo di connessione viene lasciato in
|
||
sospeso fino al raggiungimento di un certo timeout l'host è marcato
|
||
come down o non disponibile.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-PA <portlist></option> (TCP ACK Ping)</term>
|
||
|
||
<listitem>
|
||
<para>Il ping TCP ACK è molto simile al ping SYN appena discusso.
|
||
La differenza, come si può facilmente indovinare, consiste nel
|
||
fatto che viene sollevato il flag TCP ACK al posto del SYN. Un
|
||
tale pacchetto ACK finge di confermare dei dati inviati in una
|
||
connessione TCP già stabilita, anche se tale connessione non
|
||
esiste. In questo modo un host remoto risponderà sempre con un
|
||
pacchetto RST, svelando così la propria esistenza e il fatto che
|
||
siano attivi.</para>
|
||
|
||
<para>L'opzione <option>-PA</option> usa la stessa porta di
|
||
default del SYN probe (ovvero la porta 80) e può ricevere in
|
||
input un elenco di porte di destinazione nello stesso formato. Se
|
||
un utente non privilegiato tenta quest'approccio si usa la
|
||
scorciatoia della <function moreinfo="none">connect</function>
|
||
spiegata in precedenza. Questa scorciatoia non è ottimale perché in
|
||
ogni caso la <function moreinfo="none">connect</function> invia un
|
||
pacchetto SYN e non un ACK.</para>
|
||
|
||
<para>La ragione per offrire entrambi i tipi di probe (SYN e ACK)
|
||
è quella di massimizzare le possibilità di bypassare firewall.
|
||
Molti amministratori configurano router e semplici firewall per
|
||
bloccare pacchetti SYN in arrivo tranne quelli destinati a servizi
|
||
pubblici come il sito web aziendale o il mail server. Questo
|
||
impedisce ogni altro tipo di connessione in entrata garantendo al
|
||
tempo stesso agli utenti di effettuare connessioni verso l'esterno
|
||
senza incontrare ostacoli. Questo approccio
|
||
"non-stateful" (per "non-stateful" si
|
||
intende in questo caso la capacità di un firewall di tenere
|
||
traccia delle connessioni che lo attraversano, NdT) utilizza poche
|
||
risorse sul firewall/router ed è largamente supportato da filtri
|
||
software e hardware. Il firewall di Linux conosciuto come
|
||
Netfilter/iptables offre l'opzione <option>--syn</option> per
|
||
implementare questo approccio "stateless". Quando un
|
||
firewall implementa regole di questo tipo, un probe SYN
|
||
(<option>-PS</option>) viene facilmente bloccato quando viene
|
||
mandato ad una porta chiusa. In questi casi un probe ACK passerebbe
|
||
indisturbato, come se non vi fossero quelle regole.</para>
|
||
|
||
<para>Un altro tipo comune di firewall utilizza regole
|
||
"stateful" che lasciano cadere (drop)
|
||
pacchetti non attesi. Questa caratteristica era inizialmente
|
||
disponibile solo su firewall di fascia alta, anche se è diventata
|
||
sempre più comune nel corso degli anni. Il sistema
|
||
Netfilter/iptables la supporta mediante l'opzione
|
||
<option>--state</option>, la quale marca pacchetti a seconda dello
|
||
stato della connessione. Un probe SYN funzionerà più facilmente
|
||
verso un tale sistema, poiché pacchetti ACK non attesi sono
|
||
generalmente riconosciuti come non validi e lasciati cadere. Una
|
||
soluzione a questa situazione poco piacevole è quella
|
||
di inviare entrambe le tipologie di probe specificando le opzioni
|
||
<option>-PS</option> e <option>-PA</option>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-PU <portlist></option> (UDP Ping)</term>
|
||
|
||
<listitem>
|
||
<para>Un'altra opzione di host discovery è il ping UDP, la quale
|
||
manda un pacchetto UDP alle porte indicate. Per molte porte, il
|
||
pacchetto sarà vuoto, anche se utilizzare un payload specifico del
|
||
protocollo aumentale probabilità di risposta. Vedi la sezione
|
||
<quote>UDP payloads: <option>nmap-payloads</option></quote>
|
||
(<ulink url="https://nmap.org/book/nmap-payloads.html" />) per una
|
||
descrizione del database dei payloads. Il contenuto del pacchetto
|
||
può essere gestito con le opzioni <option>--data</option>,
|
||
<option>--data-string</option> e
|
||
<option>--data-length</option>.</para>
|
||
<para>
|
||
L'elenco di porte va specificato nello stesso formato già
|
||
discusso in precedenza nelle opzioni <option>-PS</option> e
|
||
<option>-PA</option>. Se non si specifica alcuna porta viene usata
|
||
la 40125 di default. Questo valore può essere impostato durante
|
||
la compilazione cambiando il parametro DEFAULT_UDP_PROBE_PORT nel
|
||
file <filename moreinfo="none">nmap.h</filename>. Si usa di
|
||
default una porta poco comune perché inviare dati ad una porta
|
||
già aperta è spesso non desiderabile per questo tipo particolare
|
||
di scansione.</para>
|
||
|
||
<para>Una volta raggiunta una porta UDP chiusa sulla macchina di
|
||
destinazione, il probe UDP dovrebbe provocare un pacchetto ICMP di
|
||
tipo "port unreachable" (porta irraggiungibile).
|
||
Questo indica a Nmap che l'host è funzionante e disponibile.
|
||
Altri tipi di pacchetti ICMP di errore, come ad esempio host o rete
|
||
"unreachable" (non disponibile) o
|
||
"TTL exceeded" (superato il tempo di vita del
|
||
pacchetto) indicano un host non funzionante o irraggiungibile. Una
|
||
mancanza di risposta viene interpretata alla stessa maniera. Se si
|
||
raggiunge una porta aperta la maggior parte dei servizi
|
||
semplicemente ignorano il pacchetto vuoto e non rimandano alcuna
|
||
risposta. Questo spiega perché il probe di default è la porta
|
||
40125, la quale si usa molto raramente. Pochi servizi, tra i quali
|
||
<quote>chargen</quote>, rispondono a un pacchetto UDP vuoto,
|
||
rivelando così a Nmap la disponibilità della macchina in
|
||
questione.</para>
|
||
|
||
<para>Il vantaggio primario di questo tipo di scansione è che
|
||
riesce a bypassare firewall e filtri che controllano solo
|
||
pacchetti TCP. Ad esempio, una volta avevo un router a banda larga
|
||
wireless Linksys BEFW11S4. L'interfaccia esterna di questa
|
||
periferica filtrava tutte le porte TCP di default, ma i probe UDP
|
||
provocavano messaggi di "Port unreachable" rivelando
|
||
così l'esistenza del device.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-PY <port list></option> (SCTP INIT Ping)</term>
|
||
|
||
<listitem>
|
||
<para>Questa opzione invia un pacchetto SCTP contenente un INIT
|
||
chunk minimale. La porta di destinazione di default è la 80
|
||
(configurabile durante la compilazione cambiando il valore di
|
||
DEFAULT_SCTP_PROBE_PORT_SPEC nel file
|
||
<filename moreinfo="none">nmap.h</filename>). Altre porte possono
|
||
essere specificate come parametro. La sintassi è la stessa
|
||
dell'opzione <option>-p</option> tranne che gli indicatori del tipo
|
||
di porta <option>S:</option> non sono permessi. Da notare che non
|
||
ci devono essere spazi tra <option>-PY</option> e il numero di
|
||
porta, ad esempio <option>-PY22</option>. Nel caso di più porte
|
||
specificate, separate da virgola (ad esempio
|
||
<option>-PY22,80,179,5060</option>), si tenterà un probe verso ogni
|
||
porta in parallelo.</para>
|
||
|
||
<para>L'INIT chunk suggerisce al sistema remoto che stai tentando
|
||
di stabilire un'associazione. Normalmente la porta di destinazione
|
||
dovrebbe essere chiusa e un ABORT chunk verrà inviato come
|
||
risposta. Se la porta invece dovesse essere aperta, l'obiettivo
|
||
passerà al secondo step della connessione SCTP a quattro vie
|
||
(four-way-handshake) rispondendo con un INIT-ACK chunk. Se la
|
||
macchina che sta eseguendo Nmap ha la funzione di SCTP stack,
|
||
abbatte l'associazione nascente rispondendo con un ABORT chunk
|
||
invece che inviare un COOKIE-ECHO chunk, che sarebbe lo step
|
||
successivo nel processo di associazione. Il pacchetto ABORT viene
|
||
mandato dal kernel della macchina che sta eseguendo Nmap in
|
||
risposta ad un INIT-ACK inaspettato, non da Nmap stesso.</para>
|
||
|
||
<para>Ad Nmap non interessa se la porta di destinazione risulta
|
||
aperta o chiusa. Entrambi i pacchetti discussi in precedenza
|
||
(ABORT e INIT-ACK) ricevuti in risposta, indicano ad Nmap che
|
||
l'host è disponibile e risponde alle connessioni.</para>
|
||
|
||
<para>Sulle macchine Unix, solo l'utente privilegiato
|
||
<literal moreinfo="none">root</literal> generalmente è abilitato ad
|
||
inviare e ricevere pacchetti SCTP "raw" (non
|
||
formattati, grezzi). Usare SCTP INIT Pings (<option>-PY</option>)
|
||
non è attualmente possibile per gli utenti non privilegiati.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-PE</option>; <option>-PP</option>;
|
||
<option>-PM</option> (ICMP Ping Types)</term>
|
||
|
||
<listitem>
|
||
<para>In aggiunta ai meno comuni tipi di host discovery TCP, UDP e
|
||
SCTP discussi in precedenza, Nmap può anche mandare i pacchetti
|
||
standard come il famoso programma <application
|
||
moreinfo="none">ping</application>. Nmap manda un pacchetto ICMP
|
||
type 8 ("echo request") all'indirizzo IP di
|
||
destinazione, aspettandosi un type 0 ("echo reply") di
|
||
ritorno dagli host disponibili. Sfortunatamente per chi deve
|
||
scoprire la topologia di una rete, molti host e firewall ora
|
||
bloccano questo tipo di pacchetti anziché rispondere come richiesto
|
||
dall'<ulink url="http://www.rfc-editor.org/rfc/rfc1122.txt">RFC
|
||
1122</ulink>. Per questa ragione le scansioni basate solo su ICMP
|
||
sono raramente abbastanza affidabili nei riguardi di destinazioni
|
||
sconosciute su Internet. Tuttavia per i sistemisti di rete che
|
||
devono tenere sotto controllo una rete interna, esse possono essere
|
||
un approccio pratico ed efficiente. Si usi l'opzione
|
||
<option>-PE</option> per abilitare questo comportamento di
|
||
"echo request".</para>
|
||
|
||
<para>Mentre la "echo request" è la richiesta standard del ping
|
||
ICMP, Nmap non si ferma qui. Gli standard ICMP (<ulink
|
||
url="http://www.rfc-editor.org/rfc/rfc792.txt">RFC 792</ulink> e
|
||
<ulink url="http://www.rfc-editor.org/rfc/rfc950.txt">RFC
|
||
950</ulink>) specificano inoltre i pacchetti "timestamp request",
|
||
"information request" e "address mask request" (rispettivamente
|
||
"richiesta di timestamp", ovvero data e ora, "richiesta di
|
||
informazioni" e "richiesta della maschera di rete") mediante i
|
||
codici ICMP 13, 15 e 17. Dato che lo scopo dichiarato di questo
|
||
tipo di richieste è quello di avere informazioni quali la maschera
|
||
di rete e l'ora corrente, essi possono facilmente essere usati per
|
||
l'host discovery. Un sistema che risponde è funzionante e
|
||
disponibile. Nmap non implementa allo stato attuale pacchetti di
|
||
"information request", poiché in genere non sono supportati
|
||
comunemente. L'RFC 1122 specifica che <quote>un host NON DOVREBBE
|
||
implementare questi messaggi</quote> (il maiuscolo negli RFC indica
|
||
comportamenti precisi). Il timestamp (data e ora) e le richieste di
|
||
maschera di rete possono essere inviate rispettivamente mediante le
|
||
opzioni <option>-PP</option> e <option>-PM</option>. Una risposta
|
||
di tipo timestamp (codice ICMP 14) o di tipo address mask (codice
|
||
18) rivela che un host è disponibile. Queste due richieste possono
|
||
essere utili qualora un amministratore dovesse bloccare i
|
||
pacchetti di "echo request" ma dimenticarsi che altre query ICMP
|
||
possono essere usate per lo stesso scopo.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-PO <protocol list></option> (IP Protocol
|
||
Ping)</term>
|
||
|
||
<listitem>
|
||
<para>Una delle nuove opzioni di host discovery è la IP Protocol
|
||
Ping, la quale invia pacchetti IP con lo specifico numero di
|
||
protocollo impostato nel loro IP header. La lista dei protocolli ha
|
||
lo stesso formato della lista delle porte vista in precedenza
|
||
nelle opzioni di host discovery TCP, UDP e SCTP. Se nessun
|
||
protocollo viene specificato, di default vengono inviati pacchetti
|
||
IP multipli per ICMP (protocollo 1), IGMP (protocollo 2) e IP-in-IP
|
||
(protocollo 4). I protocolli di default possono essere configurati
|
||
in fase di compilazione cambiando il valore di
|
||
DEFAULT_PROTO_PROBE_PORT_SPEC nel file
|
||
<filename moreinfo="none">nmap.h</filename>. Si tenga presente che
|
||
per i protocolli ICMP, IGMP, TCP (protocollo 6), UDP (protocollo
|
||
17) e SCTP (protocollo 132), i pacchetti vengono inviati con i loro
|
||
opportuni headers mentre gli altri protocolli vengono inviati senza
|
||
nessun dato aggiuntivo oltre all'IP header (a meno che non siano
|
||
specificate le opzioni <option>--data</option>,
|
||
<option>--data-string</option> o
|
||
<option>--data-length</option>).</para>
|
||
|
||
<para>Questo metodo di host discovery cerca sia risposte
|
||
utilizzando lo stesso protocollo di un probe, che messaggi
|
||
"unreachable" utilizzando il protocollo ICMP, che significa che il
|
||
protocollo non è supportato dall'host di destinazione. Entrambe le
|
||
risposte indicano che l'obiettivo è attivo.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-PR</option> (ARP Ping)</term>
|
||
|
||
<listitem>
|
||
<para>Una delle situazioni più comuni di utilizzo di Nmap è la
|
||
scansione di una LAN ethernet. Nella maggior parte delle LAN,
|
||
specialmente quelle in cui viene usato il benedetto intervallo di
|
||
indirizzi privati specificato dall'RFC 1918, la maggior parte degli
|
||
indirizzi IP è inutilizzato. Quando Nmap prova ad inviare
|
||
pacchetti IP raw come le "echo request" ICMP, il sistema operativo
|
||
deve determinare l'indirizzo hardware (ARP) corrispondente
|
||
all'indirizzo IP di destinazione, in modo da poter indirizzare
|
||
correttamente il frame ethernet. Questo è spesso lento e
|
||
problematico, in quanto i sistemi operativi non sono stati scritti
|
||
prevedendo di dover fare milioni di richieste ARP verso host
|
||
inesistenti in un breve lasso di tempo.</para>
|
||
|
||
<para>L'ARP scan lascia a Nmap e ai suoi algoritmi ottimizzati
|
||
l'incarico delle richieste ARP. Nel caso in cui si riceva una
|
||
risposta, Nmap non si deve neanche preoccupare dei ping basati su
|
||
IP perché a questo punto sa già che l'host è raggiungibile.
|
||
Questo rende l'ARP scan molto veloce e molto più affidabile delle
|
||
normali scansioni basate su IP. Infatti questo è il comportamento
|
||
di default quando si deve effettuare uno scan su host che Nmap
|
||
riconosce come presenti nella rete locale. Anche se vengono
|
||
specificati differenti tipi di ping (come <option>-PE</option> o
|
||
<option>-PS</option>), Nmap usa comunque ARP per ogni target che
|
||
è sulla stessa LAN. Se non si vuole assolutamente un ARP scan,
|
||
specificare l'opzione <option>--disable-arp-ping</option>.</para>
|
||
|
||
<para>Per IPv6 (opzione <option>-6</option>), <option>-PR</option>
|
||
utilizza ICMPv6 Neighbor Discovery al posto di ARP. Neighbor
|
||
Discovery, definito nell'RFC 4861, può essere visto come
|
||
l'equivalente per IPv6 di ARP.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--disable-arp-ping</option> (No ARP or ND Ping)</term>
|
||
|
||
<listitem>
|
||
<para>Nmap normalmente esegue un ARP o IPv6 Neighbor Discovery (ND)
|
||
discovery degli host locali connessi ad una rete ethernet, anche se
|
||
altre opzioni di host discovery, come <option>-Pn</option> o
|
||
<option>-PE</option>, vengono utilizzate. Per disabilitare questo
|
||
comportamento implicito, utilizzare l'opzione
|
||
<option>--disable-arp-ping</option>.</para>
|
||
|
||
<para>Il comportamento di default è solitamente più veloce, ma
|
||
quest'opzione è utile nelle reti che utilizzano un proxy ARP, nelle
|
||
quali un router risponde in modo speculare a tutte le richieste
|
||
ARP, facendo sembrare attivi tutti gli obiettivi di un ARP
|
||
scan.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
|
||
<term><option>--traceroute</option> (Trace path to host)</term>
|
||
|
||
<listitem>
|
||
<para>I traceroutes vengono eseguiti in fase di post-scan
|
||
utilizzando informazioni provenienti dai risultati della scansione
|
||
per determinare la porta e il protocollo che più probabilmente
|
||
raggiungono l'obiettivo. Opera con tutte le tipologie di scansione
|
||
tranne le connect scans (<option>-sT</option>) e le idle scans
|
||
(<option>-sI</option>). Tutti i tracciamenti utilizzano il modello
|
||
di timing dinamico ("dynamic timing model") di Nmap e vengono
|
||
eseguiti in parallelo.</para>
|
||
|
||
<para>Traceroute lavora inviando pacchetti con un basso TTL
|
||
(time-to-live) in attesa di ricevere un messaggio ICMP "Time
|
||
Exceeded" dagli intermediari (hops) posti tra la macchina che
|
||
esegue la scansione e l'host obiettivo. Le implementazioni standard
|
||
di traceroute iniziano con un TTL settato a 1 e aumentano il TTL
|
||
finché l'host di destinazione non viene raggiunto. I traceroute di
|
||
Nmap iniziano con un alto TTL e lo diminuiscono fino ad arrivare a
|
||
zero. Lavorare a ritroso consente ad Nmap di utilizzare
|
||
intelligenti algoritmi di caching per velocizzare il tracciamento
|
||
su più host. In media Nmap invia 5-10 pacchetti in meno per host,
|
||
in base alle condizioni della rete. Se una singola subnet viene
|
||
scansionate (ad esempio 192.168.0.0/24) Nmap potrebbe dover inviare
|
||
solo due pacchetti per la maggior parte degli host.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-n</option> (No DNS resolution)</term>
|
||
|
||
<listitem>
|
||
<para>Indica a Nmap di <emphasis>non effettuare mai</emphasis> una
|
||
risoluzione inversa del nome mediante DNS sugli indirizzi IP
|
||
rilevati. Poiché il DNS è spesso lento anche con il risolutore
|
||
parallelo integrato di Nmap, questa opzione rende l'intero processo
|
||
di scansione più veloce.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-R</option> (DNS resolution for all targets)</term>
|
||
|
||
<listitem>
|
||
<para>Indica a Nmap di effettuare <emphasis>sempre</emphasis> la
|
||
risoluzione inversa dei nomi mediante DNS sugli indirizzi IP
|
||
rilevati. Generalmente la risoluzione inversa viene effettuata solo
|
||
quando un host viene rilevato come attivo.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--system-dns</option> (Use system DNS resolver)</term>
|
||
|
||
<listitem>
|
||
<para>Di default Nmap risolve gli indirizzi IP mandando richieste
|
||
direttamente ai name servers (server dei nomi) configurati sulla
|
||
macchina su cui è in esecuzione Nmap. Molte richieste (spesso
|
||
nell'ordine delle dozzine) sono effettuate in parallelo per
|
||
migliorare le performance. Si specifichi quest'opzione se si vuole
|
||
usare il proprio DNS (richiedendo un indirizzo IP alla volta
|
||
usando la system call <function
|
||
moreinfo="none">getnameinfo</function>). Questa operazione è più
|
||
lenta e raramente utile a meno che non ci sia un bug nel codice di
|
||
risoluzione dei nomi di Nmap (per favore si contattino gli
|
||
sviluppatori se questo è il caso). Il resolver di sistema è
|
||
sempre usato per le scansioni su IPv6.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--dns-servers <server1>[,<server2>][,...]];
|
||
</option> (Servers to use for reverse DNS queries)</term>
|
||
<listitem>
|
||
<para>Di default Nmap cercherà di determinare i server DNS da usare
|
||
per le reverse query usando il file resolv.conf (UNIX) o il
|
||
Registro (Win32) sulla macchina su cui viene eseguito. In
|
||
alternativa si può usare quest'opzione per indicare server
|
||
alternativi. Tuttavia quest'opzione viene ignorata nel caso si
|
||
specifichi l'opzione <option>--system-dns</option> o se si sta
|
||
eseguendo una scansione IPv6. L'uso di più server DNS è spesso più
|
||
veloce specialmente se si specificano server DNS autoritari per lo
|
||
spazio IP di destinazione. Quest'opzione inoltre attrae meno
|
||
l'attenzione, dato che le tue richieste possono essere rimbalzate
|
||
praticamente da ogni server DNS su Internet.</para>
|
||
<para>Quest'opzione torna utile anche quando si eseguono scansioni
|
||
di reti private. Alle volte solo alcuni name server forniscono le
|
||
correte informazioni di reverse e non sempre potresti sapere dove
|
||
questi si trovano. Puoi scansionare la rete sulla porta 53 (magari
|
||
con una version detection), quindi provare delle List Scan
|
||
(<option>-sL</option>) di Nmap specificando ogni volta un name
|
||
server diverso con l'opzione <option>--dns-servers</option>
|
||
finché non si trova quello desiderato.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-port-scanning-basics">
|
||
<title>Fondamenti di port scanning</title>
|
||
|
||
<para>Nonostante Nmap nel corso degli anni abbia ampliato le proprie
|
||
funzionalità, iniziò come un efficiente port scanner e tale resta la sua
|
||
funzione di base. Il semplice comando <command moreinfo="none">nmap
|
||
<replaceable>target</replaceable></command> effettua una scansione di
|
||
1.000 porte TCP sull'host <replaceable>target</replaceable>. Mentre molti
|
||
port scanner considerano tutte le porte chiuse o aperte, Nmap è molto più
|
||
preciso. Divide le porte in sei categorie o stati: <literal
|
||
moreinfo="none">open</literal> (aperta), <literal
|
||
moreinfo="none">closed</literal> (chiusa), <literal
|
||
moreinfo="none">filtered</literal> (filtrata), <literal
|
||
moreinfo="none">unfiltered</literal> (non filtrata), <literal
|
||
moreinfo="none">open|filtered</literal> (aperta|filtrata), <literal
|
||
moreinfo="none">closed|filtered</literal> (chiusa|filtrata).</para>
|
||
|
||
<para>Questi stati non sono proprietà intrinseche delle porte stesse,
|
||
ma descrivono come Nmap le vede. Ad esempio, uno scan Nmap proveniente
|
||
dalla stessa rete nella quale risiede l'obiettivo può mostrare la
|
||
porta 135/tcp come aperta, mentre una scansione nello stesso momento con
|
||
gli stessi parametri ma proveniente da Internet può mostrare quella
|
||
stessa porta come <literal moreinfo="none">filtered</literal>.</para>
|
||
|
||
<variablelist>
|
||
<title>I sei stati nei quali Nmap classifica le porte</title>
|
||
|
||
<varlistentry>
|
||
<term>open (aperta)</term>
|
||
<listitem>
|
||
<para>Un'applicazione accetta attivamente su questa porta
|
||
connessioni TCP, datagrammi UDP o associazioni SCTP. La ricerca di
|
||
questo tipo di porte è spesso l'obiettivo primario del port
|
||
scanning. Chi si dedica alla sicurezza sa che ogni porta aperta è
|
||
una strada verso un attacco. Gli attaccanti e i tester di sicurezza
|
||
(penetration testers, conosciuti anche come "pen-testers", NdT)
|
||
hanno come obiettivo quello di trovare e trarre vantaggio dalle
|
||
porte aperte, mentre d'altro canto gli amministratori di rete e i
|
||
sistemisti provano a chiuderle o a proteggerle con firewall senza
|
||
limitare gli utenti autorizzati al loro uso. Le porte aperte sono
|
||
anche interessanti per tutta una serie di scansioni non indirizzate
|
||
unicamente alla sicurezza, perché mostrano che servizi sono
|
||
disponibili in una rete.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>closed (chiusa)</term>
|
||
<listitem>
|
||
<para>Una porta chiusa è accessibile (riceve e risponde ai
|
||
pacchetti di probe di Nmap) ma non vi è alcuna applicazione in
|
||
ascolto su di essa. Esse possono rendersi utili nel mostrare che
|
||
un host è attivo su un indirizzo IP (durante l'host discovery o
|
||
il ping scanning) o in quanto parte integrante dell'Operating
|
||
System discovery. Poiché una porta chiusa è raggiungibile, può
|
||
essere interessante effettuare una scansione più tardi nel caso
|
||
alcune vengano aperte. Chi amministra una macchina o una rete può
|
||
voler bloccare tali porte con un firewall ed in questo caso esse
|
||
apparirebbero come filtrate, come mostrato in seguito.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>filtered (filtrata)</term>
|
||
<listitem>
|
||
<para>In questo caso Nmap non può determinare con esattezza se la
|
||
porta sia aperta o meno, perché un filtro di pacchetti impedisce
|
||
ai probe di raggiungere la porta. Questo filtro può esser dovuto
|
||
a un firewall dedicato, alle regole di un router, o a un firewall
|
||
software installato sulla macchina stessa. Queste porte forniscono
|
||
poche informazioni e rendono frustrante il lavoro dell'attaccante.
|
||
A volte esse rispondono con un messaggio ICMP del tipo 3, codice
|
||
13 ("destination unreachable: communication administratively
|
||
prohibited", ovvero "destinazione non raggiungibile: comunicazione
|
||
impedita da regole di gestione"), ma in genere sono molto più
|
||
comuni i filtri di pacchetti che semplicemente ignorano i
|
||
tentativi di connessione senza rispondere. Questo obbliga Nmap a
|
||
riprovare diverse volte, semplicemente per essere sicuri che il
|
||
pacchetto non sia stato perduto a causa di una congestione di rete
|
||
o di problemi simili piuttosto che dal firewall o dal filtro
|
||
stesso. Questo riduce drammaticamente la velocità della
|
||
scansione.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>unfiltered (non filtrata)</term>
|
||
<listitem>
|
||
<para>Lo stato "unfiltered" indica che una porta è accessibile,
|
||
ma che Nmap non è in grado di determinare se sia aperta o chiusa.
|
||
Solo la scansione di tipo ACK, usata per trovare e classificare le
|
||
regole di un firewall, posiziona una porta in questo stato. Una
|
||
scansione di porte in questo stato ("non filtrate") mediante altri
|
||
tipi di scansione come il Window scan (scan per finestre di
|
||
connessione), il SYN scan o il FIN scan aiuta a determinare se la
|
||
porta sia aperta o chiusa.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>open|filtered (aperta|filtrata)</term>
|
||
<listitem>
|
||
<para>Nmap posiziona le porte in questo stato quando non è in
|
||
grado di determinare se una porta sia aperta o filtrata. Questo
|
||
accade in quelle scansioni per le quali una porta aperta non
|
||
risponde in alcun modo. La mancanza di informazioni può
|
||
significare inoltre che un filtro di pacchetti ha lasciato cadere
|
||
("drop") il probe o qualsiasi risposta sia stata generata in
|
||
seguito a questo. Scansioni che classificano porte in questo stato
|
||
sono le scansioni UDP, IP, FIN, NULL e Xmas.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>closed|filtered (chiusa|filtrata)</term>
|
||
<listitem>
|
||
<para>Questo stato è usato quando Nmap non è in grado di
|
||
determinare se una porta sia chiusa o filtrata. Viene usato solo
|
||
per l'IP ID idle scan.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-port-scanning-techniques">
|
||
<title>Tecniche di Port Scanning</title>
|
||
|
||
<para>Un neofita inesperto che cerca di aggiustarsi l'automobile può
|
||
arrovellarsi per ore cercando di usare i pochi strumenti che ha
|
||
(martello, nastro isolante, pinza, ecc.) per ciò che deve fare. Una
|
||
volta che si è arreso dopo l'ennesimo fallimento e si è deciso a
|
||
portare il proprio macinino da un vero meccanico, ecco che questi
|
||
inevitabilmente si mette a cercare in una gigantesca cassetta degli
|
||
attrezzi estraendone il "coso" perfetto per fare quel lavoro senza
|
||
alcuno sforzo. L'arte del port scanning è molto simile. Chi è esperto
|
||
capisce e conosce tutte le tecniche e sceglie quella appropriata (o una
|
||
combinazione appropriata) per un certo lavoro. Utenti inesperti o script
|
||
kiddes, d'altro canto, provano a risolvere ogni problema con la
|
||
scansione SYN di default. Poiché Nmap è free (in lingua inglese
|
||
significa sia "libero" che "gratuito", e per questo è lasciato
|
||
inalterato, NdT) l'unico limite alla capacità di fare port scanning è
|
||
solo la conoscenza. Questo lo rende sicuramente più accessibile del
|
||
mondo delle automobili, dov'è richiesta non solo una notevole abilità
|
||
per sapere che serve uno specifico strumento, ma è anche necessario
|
||
andarselo a comprare.</para>
|
||
|
||
<para>La maggior parte delle scansioni è disponibile solo per gli
|
||
utenti privilegiati. Questo è dovuto al fatto che esse inviano e
|
||
ricevono pacchetti "raw" (non formattati o "grezzi", ovvero semplici
|
||
stringhe di bit), i quali richiedono l'accesso come root su sistemi UNIX.
|
||
L'uso di un account di amministrazione su Windows è raccomandato,
|
||
nonostante Nmap a volte funzioni anche per gli utenti non privilegiati
|
||
quando WinPcap è già stato caricato nel sistema operativo. Nel 1997,
|
||
quando Nmap venne rilasciato, la necessità di avere privilegi di root
|
||
era una seria limitazione perché molti utenti avevano solo accesso ad
|
||
account su macchine che davano semplici shell condivise. Ora il
|
||
mondo è cambiato: i computer sono più economici, molta più gente ha
|
||
una connessione a Internet diretta e sempre attiva, e i sistemi UNIX per
|
||
desktop (includendo tra questi macchine Linux o OS X) sono ormai la
|
||
maggioranza. Una versione di Nmap per Windows è ora disponibile, così da
|
||
poterlo eseguire su ancora più desktop. Per tutte queste ragioni gli
|
||
utenti hanno sempre meno necessità di usare Nmap da account limitati, il
|
||
che non fa che migliorare la situazione, in quanto le opzioni
|
||
privilegiate fanno di Nmap uno strumento molto più potente e
|
||
flessibile.</para>
|
||
|
||
<para>Nonostante Nmap faccia del proprio meglio per produrre risultati
|
||
accurati, si tenga presente che tutte le sue conclusioni sono basate su
|
||
pacchetti che tornano indietro dalle macchine di destinazione (o dai
|
||
firewall che le proteggono). Tali host possono essere inaffidabili e
|
||
restituire risposte mirate proprio a confondere e sviare Nmap. Sono molto
|
||
più comuni inoltre host che non rispettano gli RFC e che non rispondono
|
||
come dovrebbero ai tentativi di connessione di Nmap. Scansioni come FIN,
|
||
NULL e Xmas sono particolarmente suscettibili a questo problema. Tali
|
||
problematiche sono specifiche a certi tipi di scansione ed in quanto
|
||
tali vengono discusse nelle sezioni individuali ad esse dedicate.</para>
|
||
|
||
<para>Questa sezione documenta le molteplici tecniche di port scanning
|
||
supportate da Nmap. Si può usare solo un metodo per volta, a parte
|
||
l'UDP scan (<option>-sU</option>) e gli SCTP scan (<option>-sY</option>,
|
||
<option>-sZ</option>) che possono essere combinati con uno qualsiasi dei
|
||
TCP scan. Per ricordarsi le varie opzioni di port scan, esse sono della
|
||
forma <option>-s<replaceable>C</replaceable></option>, dove
|
||
<replaceable>C</replaceable> è un carattere significativo del nome della
|
||
scansione, in genere il primo. L'unica eccezione a questa regola
|
||
generale è il cosiddetto FTP bounce scan che viene tuttavia
|
||
sconsigliato (opzione <option>-b</option>). Di default Nmap effettua un
|
||
SYN scan, oppure un connect scan se l'utente non ha privilegi sufficienti
|
||
per mandare pacchetti raw (che richiedono l'accesso come root su UNIX).
|
||
Di tutte le scansioni elencate di seguito, gli utenti non privilegiati
|
||
possono solo effettuare scansioni <function
|
||
moreinfo="none">connect</function> ed FTP bounce.</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><option>-sS</option> (TCP SYN scan)</term>
|
||
|
||
<listitem>
|
||
<para>Il SYN scan è l'opzione di default ed è la più usata per
|
||
buone ragioni. Può essere effettuato velocemente: effettua la
|
||
scansione su migliaia di porte al secondo su una rete veloce non
|
||
limitata da firewall restrittivi. Il SYN scan è relativamente
|
||
nascosto e poco invasivo, poiché non completa mai le connessioni
|
||
TCP. Funziona inoltre con ogni stack TCP compatibile e non
|
||
dipende dalle idiosincrasie di piattaforme specifiche come fanno
|
||
gli altri tipi di scan di Nmap quali FIN/NULL/Xmas, Maimon e Idle
|
||
scan. Inoltre permette una differenziazione chiara ed affidabile
|
||
tra le porte appartenenti agli stati <literal
|
||
moreinfo="none">open</literal>, <literal
|
||
moreinfo="none">closed</literal> e <literal
|
||
moreinfo="none">filtered</literal>.</para>
|
||
|
||
<para>Questa tecnica è spesso indicata come "scanning
|
||
semi-aperto" (tradotto letteralmente per esigenze di comprensione,
|
||
da "half-open scanning", NdT), perché non viene aperta una
|
||
connessione TCP completa. Viene mandato un pacchetto SYN come se
|
||
si fosse sul punto di aprire una connessione reale e si attende
|
||
una risposta. Un SYN/ACK indica che la porta è in ascolto
|
||
(aperta), mentre un RST (reset) indica che la porta non è in
|
||
ascolto. Se non viene ricevuta nessuna risposta dopo diverse
|
||
ritrasmissioni la porta viene marcata come filtrata. La porta
|
||
viene marcata come tale anche se viene ricevuto un pacchetto di
|
||
errore "ICMP unreachable" (tipo 3, codici 1, 2, 3, 9, 10,
|
||
13). La porta viene considerata aperta anche nel caso in cui un
|
||
pacchetto SYN (senza il flag ACK) viene ricevuto in risposta.
|
||
Questo in base ad una feature TCP estremamente rara conosciuta come
|
||
"apertura simultanea" ("simultaneous open") o connessione "split
|
||
handshake" (vedere <ulink
|
||
url="https://nmap.org/misc/split-handshake.pdf" />).</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-sT</option> (TCP connect scan)</term>
|
||
|
||
<listitem>
|
||
<para>La scansione di tipo TCP connect è la scansione TCP di
|
||
default dove la scansione SYN non è un'opzione viabile. Questo è
|
||
il caso in cui un utente non ha privilegi sull'invio di pacchetti
|
||
"raw". Anziché scrivere pacchetti "raw" come in molti altri tipi di
|
||
scansioni, Nmap richiede al sistema operativo sottostante di
|
||
stabilire una connessione con la macchina di destinazione invocando
|
||
la chiamata di sistema <literal moreinfo="none">connect</literal>.
|
||
Questa è la stessa chiamata di alto livello invocata per stabilire
|
||
una connessione da browser web, client p2p e molte altre
|
||
applicazioni orientate all'utilizzo in rete. Essa è parte
|
||
dell'interfaccia di programmazione conosciuta come Berkeley Sockets
|
||
API. Anziché leggere le risposte ai pacchetti "raw" inviati
|
||
direttamente sul cavo, Nmap usa questa API per ottenere
|
||
informazioni sullo stato di ogni tentativo di connessione.</para>
|
||
|
||
<para>Quand'è possibile, il SYN scan è generalmente una scelta
|
||
migliore. Nmap ha meno controllo sulla syscall <literal
|
||
moreinfo="none">connect</literal> rispetto ai pacchetti "raw",
|
||
rendendolo quindi meno efficiente. La syscall completa le
|
||
connessioni alle porte aperte specificate anziché limitarsi al
|
||
reset dovuto alla scansione semi-aperta del SYN scan. Non solo
|
||
questo approccio richiede più tempo e numero maggiore di pacchetti
|
||
per ottenere le stesse informazioni, ma le macchine obiettivo sono
|
||
più propense a tenere traccia (log) della connessione. Inoltre un
|
||
IDS ("Intrusion Detection System", sistema di controllo delle
|
||
intrusioni) decente se ne accorgerà. Tuttavia la maggior parte
|
||
delle macchine non hanno tali sistemi di allarme. Molti servizi sui
|
||
propri sistemi UNIX standard aggiungeranno una nota al syslog, e
|
||
alle volte un messaggio di errore criptico, quando Nmap si connette
|
||
e chiude la connessione senza inviare dati di alcun tipo. Solo
|
||
alcuni patetici servizi andranno in crash in queste condizioni,
|
||
nonostante non sia comune. Un amministratore che dovesse vedere un
|
||
insieme di tentativi di connessioni provenienti da un singolo
|
||
sistema saprà infine che è vittima di un connect scan.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-sU</option> (UDP scans)</term>
|
||
|
||
<listitem>
|
||
<para>Così come i servizi più comuni su Internet girano attraverso
|
||
il protocollo TCP, anche i servizi <ulink
|
||
url="http://www.rfc-editor.org/rfc/rfc768.txt">UDP</ulink> sono
|
||
altrettanto diffusi. DNS, SNMP e DHCP (sulle porte registrate 53,
|
||
161/162 e 67/68) sono tre dei più comuni. Poiché lo scan su UDP
|
||
è generalmente più lento e più difficoltoso di quello su TCP,
|
||
alcuni esaminatori di sicurezza ("security auditors") ignorano
|
||
questo tipo di porte. Ciò è un errore, poiché i servizi UDP
|
||
vulnerabili sono abbastanza comuni e un attaccante sicuramente non
|
||
ignorerà completamente questo protocollo. Fortunatamente Nmap
|
||
può aiutare ad enumerare le porte UDP.</para>
|
||
|
||
<para>Lo scan UDP si attiva con l'opzione <option>-sU</option>.
|
||
Può essere combinato con uno scan di tipo TCP come ad esempio un
|
||
SYN scan (<option>-sS</option>) per controllare entrambi i
|
||
protocolli nel corso della stessa sessione.</para>
|
||
|
||
<para>Lo scan UDP funziona inviando pacchetti UDP ad ogni porta di
|
||
destinazione. Per alcune porte comuni, come la 53 e la 161, un
|
||
carico dati viene aggiunto per aumentare le probabilità di
|
||
risposta, ma per la maggior parte delle porte il pacchetto viene
|
||
inviato vuoto, a meno che non vengano specificate le opzioni
|
||
<option>--data</option>, <option>--data-string</option> o
|
||
<option>--data-length</option>. Se viene restituito un errore ICMP
|
||
"port unreachable" (tipo 3, codice 3) significa che la porta è
|
||
<literal moreinfo="none">closed</literal> (chiusa). Altri errori
|
||
ICMP di tipo "unreachable" (irraggiungibile) come quelli del tipo
|
||
3, codici 1, 2, 9, 10 o 13 andranno ad identificare la porta come
|
||
<literal moreinfo="none">filtered</literal> (filtrata). Talvolta un
|
||
servizio risponderà con un pacchetto UDP, dimostrando quindi
|
||
che lo stato della porta è <literal moreinfo="none">open</literal>
|
||
(aperta). Se non viene ricevuta alcuna risposta dopo alcune
|
||
ritrasmissioni, la porta viene classificata come <literal
|
||
moreinfo="none">open|filtered</literal> (aperta|filtrata). Questo
|
||
significa che la porta può essere aperta o che probabilmente un
|
||
filtro di pacchetti sta bloccando la comunicazione. Un version
|
||
detection (<option>-sV</option>) può essere usato per aiutare a
|
||
differenziare le porte veramente aperte da quelle che sono
|
||
filtrate.</para>
|
||
|
||
<para>La sfida maggiore con l'UDP scan è la velocità. Le porte
|
||
aperte e filtrate raramente inviano qualche risposta, lasciando
|
||
Nmap in timeout e facendolo ritrasmettere per evitare il caso in
|
||
cui il probe o la risposta siano andati perduti. Le porte chiuse
|
||
sono spesso un problema ancora maggiore: esse generalmente
|
||
rimandano un pacchetto ICMP "port unreachable error", ma a
|
||
differenza dei pacchetti RST rimandati dalle porte chiuse TCP come
|
||
risposta ad un SYN o connect scan, molti host limitano il tasso di
|
||
invio di tali pacchetti di default. Linux e Solaris sono
|
||
particolarmente restrittivi da questo punto di vista. Ad esempio,
|
||
il kernel 2.4.20 limita i messaggi di "destination unreachable" a
|
||
uno al secondo (definito in <filename
|
||
moreinfo="none">net/ipv4/icmp.c</filename>).</para>
|
||
|
||
<para>Nmap si accorge di questi limiti sulla frequenza di invio e
|
||
rallenta l'invio dei probe in maniera dinamica, per evitare di
|
||
intasare la rete con pacchetti inutili che la macchina di
|
||
destinazione ignorerà comunque. Sfortunatamente, un limite come
|
||
quello di Linux di un pacchetto al secondo rende una scansione su
|
||
65.535 porte di una durata teorica di più di 18 ore. Suggerimenti
|
||
per rendere più veloce gli scan UDP sono quelli di effettuare
|
||
scansioni su più host in parallelo, fare uno scan veloce
|
||
preliminare sulle porte più usate, effettuare la scansione
|
||
dall'interno del firewall ed infine usare l'opzione
|
||
<option>--host-timeout</option> per evitare host troppo lenti nel
|
||
rispondere.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-sY</option> (SCTP INIT scan)</term>
|
||
|
||
<listitem>
|
||
<para><ulink
|
||
url="http://www.rfc-editor.org/rfc/rfc4960.txt">SCTP</ulink> è
|
||
un'alternativa relativamente nuova rispetto ai protocolli TCP ed
|
||
UDP, il quale combina molte delle caratteristiche di entrambi
|
||
aggiungendo nuove funzionalità come il multi-homing e il
|
||
multi-streaming. Principalmente Viene utilizzato per i servizi
|
||
collegati ai protocolli SS7/SIGTRAN, ma potenzialmente può essere
|
||
utilizzato per altre applicazioni. Lo scan SCTP INIT scan è
|
||
l'equivalente del TCP SYN scan: viene eseguito velocemente e
|
||
scansiona migliaia di porte al secondo su una rete veloce non
|
||
limitata da firewall restrittivi. Come il SYN scan, l'INIT scan è
|
||
relativamente nascosto e poco invasivo, dato che non completa mai
|
||
le connessioni SCTP. Consente inoltre una chiara ed affidabile
|
||
differenziazione tra gli stati della porta <literal
|
||
moreinfo="none">open</literal> (aperta),
|
||
<literal moreinfo="none">closed</literal> (chiusa) e <literal
|
||
moreinfo="none">filtered</literal> (filtrata).</para>
|
||
|
||
<para>Questa tecnica è conosciuta come "half-open" (semi-aperta),
|
||
in quanto non si completata l'associazione SCTP. Viene inviato un
|
||
INIT chunk, esattamente come se si volesse iniziare una reale
|
||
associazione. Se si riceve un INIT-ACK chunk in risposta, significa
|
||
che la porta è in ascolto (aperta), mentre se si riceve un ABORT
|
||
chunk significa che la porta non è in ascolto (chiusa). Se non si
|
||
riceve nessuna risposta dopo alcune ritrasmissioni, la porta viene
|
||
marcata come filtered. La porta viene anche considerata filtrata se
|
||
viene ricevuto un messaggio ICMP "unreachable error" (tipo 3,
|
||
codice 1, 2, 3, 9, 10 o 13).</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-sN</option>; <option>-sF</option>;
|
||
<option>-sX</option> (TCP NULL, FIN, and Xmas scans)</term>
|
||
|
||
<listitem>
|
||
<para>Queste tre tipologie di scansione (e molte altre sono
|
||
possibili con l'opzione <option>--scanflags</option> descritta
|
||
nella prossima sezione) sfruttano una piccola vulnerabilità
|
||
nell'<ulink url="http://www.rfc-editor.org/rfc/rfc793.txt">RFC del
|
||
protocollo TCP</ulink> per distinguere tra le porte <literal
|
||
moreinfo="none">open</literal> (aperte) e <literal
|
||
moreinfo="none">closed</literal> (chiuse). A pagina 65 si dice che
|
||
<quote>se lo stato della porta [di destinazione] è CHIUSO ... un
|
||
segmento in arrivo che non contiene un RST causerà l'invio di un
|
||
RST in risposta</quote>. La pagina successiva discute di
|
||
pacchetti inviati a porte aperte senza i bit SYN, RST o ACK
|
||
impostati, indicando che: <quote>questa situazione è decisamente
|
||
improbabile, ma se dovesse capitare i segmenti vanno ignorati e si
|
||
deve ritornare [alla funzione chiamante, NdT]</quote>.</para>
|
||
|
||
<para>Quando si scansionano sistemi aderenti a questo testo RFC,
|
||
qualunque pacchetto che non contenga i bit SYN, RST o ACK causerà
|
||
un RST di ritorno se la porta è chiusa e nessuna risposta se la
|
||
porta è aperta. Finché nessuno di questi tre bit è incluso,
|
||
qualunque combinazione degli altri tre bit (FIN, PSH, e URG) va
|
||
bene. Nmap sfrutta tutto ciò tramite questi tre tipi di
|
||
scan:</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>NULL scan (<option>-sN</option>)</term>
|
||
|
||
<listitem>
|
||
<para>Non manda nessun bit (il TCP flag header è 0).</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>FIN scan (<option>-sF</option>)</term>
|
||
|
||
<listitem>
|
||
<para>Setta solo il bit FIN.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Xmas scan (<option>-sX</option>)</term>
|
||
|
||
<listitem>
|
||
<para>Setta i bit FIN, PSH e URG, accendendo il pacchetto
|
||
come un albero di natale.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
|
||
<para>Questi tre tipi di scan sono esattamente identici nel
|
||
comportamento, ad eccezione delle attivazioni dei tre bit nei
|
||
pacchetti TCP usati per la verifica delle porte. Se viene ricevuto
|
||
un pacchetto RST, la porta è considerata <literal
|
||
moreinfo="none">closed</literal>, mentre l'assenza
|
||
di risposta indica che la porta è <literal
|
||
moreinfo="none">open|filtered</literal>. La porta è marcata come
|
||
<literal moreinfo="none">filtered</literal> se viene ricevuto un
|
||
pacchetto ICMP "unreachable" (tipo 3, codice 1, 2, 3, 9, 10 o
|
||
13).</para>
|
||
|
||
<para>Il vantaggio sostanziale di questi tipi di scan è che
|
||
possono penetrare in certi non-stateful firewall e packet
|
||
filtering router. Un altro vantaggio è che questi tipi di
|
||
scansione sono un po più invisibili anche dei SYN scan. In ogni
|
||
caso non è corretto fare cieco affidamento su questo, gran parte
|
||
dei moderni prodotti IDS possono essere configurati in modo da
|
||
rilevarli. Il grande svantaggio è che non tutti i sistemi seguono
|
||
alla lettera la RFC 793. Un buon numero di sistemi manda risposte
|
||
RST ai pacchetti di controllo indipendentemente dal fatto che le
|
||
porte siano aperte o chiuse. Questo causa il fatto che tutte le
|
||
porte appaiano come <literal moreinfo="none">closed</literal>. I
|
||
più diffusi sistemi operativi che fanno questo sono Microsoft
|
||
Windows, molti apparati Cisco, BSDI e IBM OS/400. Questo scan
|
||
funziona applicato alla maggior parte dei sistemi UNIX. Un altro
|
||
svantaggio di questi scan è che non riescono a distinguere tra le
|
||
porte <literal moreinfo="none">open</literal> e quelle <literal
|
||
moreinfo="none">filtered</literal>, dando come risposta <literal
|
||
moreinfo="none">open|filtered</literal>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-sA</option> (TCP ACK scan)</term>
|
||
|
||
<listitem>
|
||
<para>Questo scan è diverso dagli altri discussi finora dal momento
|
||
che non serve per determinare se le porte sono <literal
|
||
moreinfo="none">open</literal> (o <literal
|
||
moreinfo="none">open|filtered</literal>). Viene usato per mappare
|
||
le regole di firewalling determinando se sono stateful o no e quali
|
||
porte sono filtrate.</para>
|
||
|
||
<para>I pacchetti dell'ACK scan hanno soltanto il flag ACK
|
||
abilitato (a meno che non si usi <option>--scanflags</option>).
|
||
Mentre si scansionano sistemi non filtrati, sia le porte <literal
|
||
moreinfo="none">open</literal> che le porte <literal
|
||
moreinfo="none">closed</literal> manderanno pacchetti RST. Nmap poi
|
||
le cataloga come <literal moreinfo="none">unfiltered</literal>, nel
|
||
senso che è possibile raggiungerle con un pacchetto ACK, ma che
|
||
siano aperte o chiuse non è determinabile. Le porte che non
|
||
rispondono, o mandano certi errori ICMP (tipo 3, codice 1, 2, 3, 9,
|
||
10 o 13), sono etichettate come <literal
|
||
moreinfo="none">filtered</literal>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-sW</option> (TCP Window scan)</term>
|
||
|
||
<listitem>
|
||
<para>Il window scan è esattamente la stessa cosa di ACK scan, ad
|
||
eccezione del fatto che sfrutta un dettaglio di implementazione di
|
||
certi sistemi per differenziare le porte aperte e quelle chiuse,
|
||
invece di scrivere sempre <literal
|
||
moreinfo="none">unfiltered</literal> quando restituisce un RST. Lo
|
||
fa esaminando il campo TCP Window del pacchetto RST che ritorna. In
|
||
alcuni sistemi le porte aperte usano una grandezza della finestra
|
||
positiva (anche per i pacchetti RST), mentre nelle porte chiuse la
|
||
grandezza della finestra è zero. Quindi, invece di catalogare
|
||
sempre le porte come <literal moreinfo="none">unfiltered</literal>
|
||
quando si riceve un RST di ritorno, il Window scan lista le porte
|
||
come <literal moreinfo="none">open</literal> o <literal
|
||
moreinfo="none">closed</literal> a seconda che il valore in quel
|
||
RST (reset) sia, rispettivamente, positivo o pari a zero.</para>
|
||
|
||
<para>Questo scan fa affidamento a un dettaglio implementativo di
|
||
una minoranza di sistemi presenti in Internet, quindi ciò
|
||
non è sempre affidabile. Nei sistemi in cui questo dettaglio
|
||
implementativo non sussiste, di norma lo scan segnalerà tutte le
|
||
porte <literal moreinfo="none">closed</literal>. Ovviamente sarà
|
||
possibile che la macchina non abbia realmente nessuna porta aperta.
|
||
Se la maggior parte delle porte è <literal
|
||
moreinfo="none">closed</literal>, ma alcune porte comuni (come la
|
||
22, la 25 o la 53) appaiono <literal
|
||
moreinfo="none">filtered</literal>, il sistema è quasi sicuramente
|
||
suscettibile a questo tipo di scan. Occasionalmente, alcuni altri
|
||
sistemi presenteranno un comportamento esattamente opposto. Se lo
|
||
scan riporta 1.000 porte aperte e 3 chiuse o filtrate, allora
|
||
quelle 3 saranno con ogni probabilità proprio quelle aperte.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-sM</option> (TCP Maimon scan)</term>
|
||
|
||
<listitem>
|
||
<para>Il Maimon scan è stato nominato così in onore al suo
|
||
scopritore, Uriel Maimon. Egli descrisse questa tecnica
|
||
nell'articolo #49 della rivista Phrack (Novembre 1996). Nmap, che
|
||
incluse questa tecnica, fu rilasciato due articoli dopo. Questa
|
||
tecnica esattamente uguale ai NULL, FIN e Xmas scan, ad eccezione
|
||
del fatto che i pacchetti di scansione sono FIN/ACK. In accordo
|
||
con la <ulink
|
||
url="http://www.rfc-editor.org/rfc/rfc793.txt">RFC 793</ulink>
|
||
(TCP), un pacchetto RST dovrebbe essere generato in risposta a tale
|
||
stimolo. Ad ogni modo, Uriel notò che in molti sistemi derivati da
|
||
BSD il pacchetto veniva scartato se la porta era aperta.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--scanflags</option> (Custom TCP scan)</term>
|
||
|
||
<listitem>
|
||
<para>Gli utilizzatori molto avanzati di Nmap hanno necessità di
|
||
non limitarsi semplicemente ad utilizzare le scansioni tipiche
|
||
offerte. L'opzione <option>--scanflags</option> consente di
|
||
designare una scansione personalizzata specificando
|
||
arbitrariamente i flag TCP necessari. Liberate la vostra
|
||
inventiva, ed evitate così che i vendor di Intrusion Detection
|
||
Systems trovino nuove regole da aggiungere ai loro sistemi
|
||
semplicemente sfogliando la "Man Page" di Nmap!</para>
|
||
|
||
<para>I parametri dell'opzione <option>--scanflags</option>
|
||
possono essere un valore numerico indicante i flag TCP, come ad
|
||
esempio 9 (PSH e FIN) anche se l'utilizzo di nomi simbolici risulta
|
||
comunque più semplice. Basta mettere creare una qualsiasi
|
||
combinazione di <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> e <literal
|
||
moreinfo="none">FIN</literal>. Per esempio, <option>--scanflags
|
||
URGACKPSHRSTSYNFIN</option> imposta tutti i flag, anche se non
|
||
risulta molto utile al fine della scansione. L'ordine con cui
|
||
vengono specificati non è rilevante.</para>
|
||
|
||
<para>Oltre allo specificare i flag desiderati, è possibile
|
||
indicare un tipo di scansione TCP (come <option>-sA</option> o
|
||
<option>-sF</option>). Questo specifica come Nmap deve
|
||
interpretare le risposte. Per esempio, un SYN scan considera la
|
||
mancanza di risposta come una porta <literal
|
||
moreinfo="none">filtered</literal>, mentre un FIN scan interpreta
|
||
lo stesso comportamento per identificare una porta <literal
|
||
moreinfo="none">open|filtered</literal>. Nmap si comporterà nello
|
||
stesso modo che per la scansione normale, tranne che per il fatto
|
||
di interpretare i flag TCP che sono stati specificati. Se non viene
|
||
indicato un diverso tipo di scansione, viene automaticamente
|
||
utilizzata la SYN scan.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-sZ (SCTP COOKIE ECHO scan)</option></term>
|
||
|
||
<listitem>
|
||
<para>L'SCTP COOKIE ECHO è più avanzato rispetto all'SCTP scan.
|
||
Sfrutta il fatto che le implementazioni SCTP dovrebbero lasciar
|
||
cadere (drop) in modo trasparente i pacchetti che contengono dei
|
||
COOKIE ECHO chunk sulle porte aperte ed inviare un ABORT se la
|
||
porta è chiusa. Il vantaggio di questo tipo di scansione sta nel
|
||
fatto che è meno rilevabile rispetto all'INIT scan. Inoltre, ci
|
||
possono essere firewall che utilizzano regole non-stateful che
|
||
bloccano gli INIT chunk, ma non i COOKIE ECHO chunk. Non illudersi
|
||
però che quest'opzione renda un port scan invisibile; un buon IDS
|
||
riesce ad individuare anche le scansioni SCTP COOKIE ECHO. Lo
|
||
svantaggio è che le scansioni SCTP COOKIE ECHO non differenziano le
|
||
porte tra <literal moreinfo="none">open</literal> e <literal
|
||
moreinfo="none">filtered</literal> lasciando come stato <literal
|
||
moreinfo="none">open|filtered</literal> in entrambi i casi.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-sI <zombie host>[:<probeport>]</option>
|
||
(idle scan)</term>
|
||
|
||
<listitem>
|
||
<para>Questo metodo di scansione avanzato permette di effettuare
|
||
una scansione TCP completamente invisibile dell'obiettivo (ovvero
|
||
nessun pacchetto viene inviato dall'indirizzo IP reale da cui si
|
||
sta effettuando la scansione.) Viene diversamente utilizzato un
|
||
unico attacco parallelo che utilizza la predicibilità dell'ID
|
||
relativo alla sequenza di frammentazione generato dallo
|
||
<replaceable>zombie host</replaceable> per ottenere informazioni
|
||
sulle porte aperte dell'obiettivo. I sistemi IDS interpreteranno la
|
||
scansione come se provenisse dalla macchina zombie specificata (che
|
||
deve essere attiva e rispondere a certi criteri). Tutti i dettagli
|
||
su questa affascinante tecnica di scansione si trovano al seguente
|
||
link <quote> <ulink url="https://nmap.org/book/idlescan.html">TCP
|
||
Idle Scan (-sI)</ulink></quote>.</para>
|
||
|
||
<para>Oltre che essere straordinariamente nascosto (grazie alla
|
||
sua natura "invisibile"), questo tipo di scansione permette di
|
||
creare una mappa indicante le relazioni tra le macchine da un punto
|
||
di vista dell'indirizzo IP. I risultati dalla scansione mostrano le
|
||
porte aperte <emphasis>dalla prospettiva dell'indirizzo IP della
|
||
macchina zombie.</emphasis> Risulta così possibile effettuare
|
||
scansioni utilizzando diversi zombie che si ritiene possano
|
||
attraversare router o sistemi con packet filter.</para>
|
||
|
||
<para>È possibile aggiungere i due punti (:) seguiti dal numero di
|
||
porta per l'host zombie, se si vuole sondare una particolare porta
|
||
per vedere i cambiamenti nell'IP ID. Diversamente Nmap utilizzerà
|
||
the porta che utilizza di default per i ping TCP (80).</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-sO</option> (IP protocol scan)</term>
|
||
|
||
<listitem>
|
||
<para>L'IP protocol scan permette di determinare che protocolli IP
|
||
(TCP, ICMP, IGMP, ecc.) sono supportati dalle macchine obiettivo.
|
||
Non è tecnicamente un port scan, dato che utilizza i numeri
|
||
indicanti il protocollo IP e non i numeri di porta TCP o UDP.
|
||
Utilizza comunque ancora l'opzione <option>-p</option> per
|
||
scegliere il protocollo da scansionare, riporta i risultati nel
|
||
normale formato della tabella delle porte ed utilizza lo stesso
|
||
engine sottostante al port scanning reale. Per questo motivo è
|
||
profondamente analogo ad un port scan e viene trattato in questa
|
||
sezione.</para>
|
||
|
||
<para>Oltre che essere intrinsecamente utile, il protocol scan
|
||
dimostra la potenza del software open-source. Per quanto l'idea
|
||
fondamentale è abbastanza semplice, non immaginavo di aggiungerla
|
||
fino a quando non avessi ricevuto richieste per questa
|
||
funzionalità. Nell'estate del 2000, Gerhard Rieger concepì l'idea
|
||
e scrisse un'eccellente patch che la implementasse, spedendola poi
|
||
alla mailing list <emphasis>nmap-hackers</emphasis>. Io incorporai
|
||
questa patch in Nmap e ne rilasciai una nuova versione il giorno
|
||
seguente. Alcuni software commerciali ebbero clienti talmente
|
||
soddisfatti da contribuire allo sviluppo di questa tecnica con i
|
||
loro miglioramenti!</para>
|
||
|
||
<para>Il protocol scan funziona in modo simile all'UDP scan solo
|
||
che invece di agire sul campo "port number" del pacchetto UDP,
|
||
invia degli header di pacchetto IP e agisce sul campo di 8 bit
|
||
relativo al protocollo. Questi headers sono tipicamente vuoti, non
|
||
contengo dati e nemmeno l'header proprietario del protocollo
|
||
dichiarato, ad eccezione di TCP, UDP, ICMP, SCTP e IGMP. Un header
|
||
valido per queste eccezioni viene incluso perché, diversamente,
|
||
alcuni sistemi non li invierebbero e perché Nmap è già provvisto di
|
||
funzioni per crearli. Invece che cercare un messaggio ICMP "port
|
||
unreachable", il protocol scan è alla ricerca di un messaggio
|
||
ICMP "<emphasis>protocol</emphasis> unreachable". Se Nmap riceve
|
||
una qualunque risposta di qualunque protocollo dall'host
|
||
scansionato, Nmap indica tale protocollo come <literal
|
||
moreinfo="none">open</literal>. Un errore ICMP "protocol
|
||
unreachable" (tipo 3, codice 2) fa sì che il protocollo sia
|
||
indicato come <literal moreinfo="none">closed</literal>. Altri
|
||
errori ICMP "unreachable" (tipo 3, codice 1, 3, 9, 10 o 13) fanno
|
||
classificare il protocollo come <literal
|
||
moreinfo="none">filtered</literal> (denotando, contestualmente,
|
||
che il protocollo ICMP è <literal
|
||
moreinfo="none">open</literal>). Se non viene ricevuta alcuna
|
||
risposta, il protocollo è identificato come <literal
|
||
moreinfo="none">open|filtered</literal>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-b <FTP relay host></option> (FTP bounce
|
||
scan)</term>
|
||
|
||
<listitem>
|
||
<para>Un'interessante caratteristica del protocollo FTP (<ulink
|
||
url="http://www.rfc-editor.org/rfc/rfc959.txt">RFC 959</ulink>) è
|
||
il supporto per le cosiddette "proxy FTP connections". Questa
|
||
permette all'utente di connettersi ad un server FTP e richiedere
|
||
che il file sia inviato ad un server FTP differente. Tale
|
||
caratteristica si presta per varie tipologie di abuso, cosicché
|
||
molti server hanno smesso di supportarla. Uno degli abusi
|
||
nell'utilizzo di questa peculiarità è la possibilità di far
|
||
effettuare al server FTP un port scan verso altri host, basta
|
||
semplicemente richiedere al server FTP di inviare un file ad
|
||
ognuna delle porte che vogliamo scansionare. Il messaggio di errore
|
||
ci permetterà di dedurre se la porta è aperta o meno. Questo è
|
||
un ottimo modo per aggirare i firewall in quanto i server FTP
|
||
aziendali sono spesso posizionati nella rete così da poter accedere
|
||
a più host interni di quanto sia possibile fare da Internet. Nmap
|
||
supporta l'FTP bounce scan attraverso l'opzione
|
||
<option>-b</option>. I parametri per tale opzione devono
|
||
rispettare il formato:
|
||
<replaceable>username</replaceable>:<replaceable>password</replaceable>@<replaceable>server</replaceable>:<replaceable>port</replaceable>
|
||
dove <replaceable>Server</replaceable> è l'hostname o l'indirizzo
|
||
IP di un server FTP vulnerabile a questo attacco. Come in una URL
|
||
normale, è possibile omettere
|
||
<replaceable>username</replaceable>:<replaceable>password</replaceable>,
|
||
ed in tal caso verranno utilizzate credenziali anonime (user:
|
||
<literal moreinfo="none">anonymous</literal> password:<literal
|
||
moreinfo="none">-wwwuser@</literal>). Il numero di porta (ed i due
|
||
punti che lo precedono) possono essere altresì omessi, in tal
|
||
caso verrò utilizzata la porta FTP di default (21) per la
|
||
connessione al <replaceable>server</replaceable>.</para>
|
||
|
||
<para>Questa vulnerabilità è stata diffusa nel 1997 quando Nmap è
|
||
stato rilasciato, ma è stata risolta su gran parte dei sistemi.
|
||
Esistono alcuni server ancora vulnerabili, ed ha senso provare ad
|
||
utilizzarla quando ogni altra cosa fallisce. Se l'obiettivo è
|
||
oltrepassare un firewall, è necessario effettuare una scansione
|
||
sulla rete cercando di trovare la porta 21 aperta (o anche cercando
|
||
un servizio FTP su di una qualsiasi porta, utilizzando la version
|
||
detection) e provare quindi lo script NSE <literal
|
||
moreinfo="none">ftp-bounce</literal>. Nmap sarà in grado di
|
||
evidenziare se un host è vulnerabile o meno a questa tecnica. Se si
|
||
sta cercando semplicemente di nascondere le proprie tracce, non vi
|
||
è bisogno (e di fatto non si dovrebbe) di limitare la scansione
|
||
alla rete che realmente ci interessa. Prima di iniziare ad
|
||
effettuare scansioni su indirizzi Internet casuali per trovare
|
||
server FTP vulnerabili è bene tenere presente che gli
|
||
amministratori di sistema potrebbero non apprezzare che i loro
|
||
server siano soggetti a tali abusi.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-port-specification">
|
||
<title>Port Specification e Scan Order</title>
|
||
|
||
<para>Oltre a tutti i metodi discussi in precedenza, Nmap offre la
|
||
possibilità di specificare quali porte devono essere scansionate e se
|
||
l'ordine delle porte deve essere casuale oppure sequenziale. Di default
|
||
Nmap effettua la scansione delle 1.000 porte più comuni per ogni
|
||
protocollo.</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><option>-p <port ranges></option> (Only scan specified
|
||
ports)</term>
|
||
|
||
<listitem>
|
||
<para>Questa opzione permette di ignorare le impostazioni di
|
||
default e di specificare quali porte si vogliono scansionare. È
|
||
possibile indicare i singoli numeri delle porte, così come gli
|
||
intervalli, separati da un trattino (ad esempio 1-1023). Il primo
|
||
e/o l'ultimo valore di un intervallo possono essere omessi, facendo
|
||
sì che Nmap utilizzi rispettivamente 1 e 65535 come limiti. È
|
||
quindi possibile utilizzare l'opzione <option>-p-</option> per
|
||
effettuare la scansione delle porte da 1 a 65535. È possibile
|
||
effettuare scansioni sulla porta zero se viene espressamente
|
||
specificato. Nel caso di un IP protocol scan
|
||
(<option>-sO</option>), questa opzione indica il numero del
|
||
protocollo che si desidera scansionare (0-255).</para>
|
||
|
||
<para>Quando si effettua una scansione combinata di protocolli (ad
|
||
esempio TCP e UDP), è possibile specificare un protocollo
|
||
particolare anteponendo al numero di porta <literal
|
||
moreinfo="none">T:</literal> per TCP, <literal
|
||
moreinfo="none">U:</literal> per UDP, <literal
|
||
moreinfo="none">S:</literal> per SCTP o <literal
|
||
moreinfo="none">P:</literal> per IP Protocol. Tale indicazione
|
||
risulta valida sino a che non ne viene indicata un'altra. Per
|
||
esempio, l'opzione <option>-p
|
||
U:53,111,137,T:21-25,80,139,8080</option> effettua una scansione
|
||
UDP delle porte 53, 111 e 137, lo stesso per le porte TCP. Si noti
|
||
che per effettuare una scansione su entrambi i protocolli UDP e
|
||
TCP, è necessario specificare l'opzione <option>-sU</option> e
|
||
almeno un metodo di TCP scan (come <option>-sS</option>,
|
||
<option>-sF</option> o <option>-sT</option>). Se non viene indicato
|
||
nulla, i numeri di porta vengono aggiunti a tutte le liste dei
|
||
protocolli.</para>
|
||
|
||
<para>Le porte possono anche essere indicate tramite il loro nome,
|
||
così come sono indicate nell'<filename
|
||
moreinfo="none">nmap-services</filename>. Si possono anche
|
||
utilizzare i caratteri speciali * e ? con i nomi. Ad esempio, per
|
||
scansionare l'FTP e tutte le porte il cui nome inizia con "http",
|
||
si può usare <option>-p ftp,http*</option>. Si raccomanda di
|
||
prestare attenzione alla "shell expansions" e di racchiudere tra
|
||
apici (quote) l'argomento di <option>-p</option> se non si è
|
||
sicuri.</para>
|
||
|
||
<para>I range di porte possono essere racchiusi da parentesi quadre
|
||
per indicare le porte all'interno di quel range che appare in
|
||
<filename moreinfo="none">nmap-services</filename>. Ad esempio, ciò
|
||
che segue eseguirà la scansione di tutte le porte in <filename
|
||
moreinfo="none">nmap-services</filename> uguali o minori di 1024:
|
||
<option>-p [-1024]</option>. Si raccomanda di prestare attenzione
|
||
alla "shell expansions" e di racchiudere tra apici (quote)
|
||
l'argomento di <option>-p</option> se non si è sicuri.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--exclude-ports <port ranges></option>
|
||
(Exclude the specified ports from scanning)</term>
|
||
|
||
<listitem>
|
||
<para>Quest'opzione specifica quali porte Nmap deve escludere dalla
|
||
scansione. I <replaceable>port ranges</replaceable> devono essere
|
||
specificati in modo simile a <option>-p</option>. Per le scansioni
|
||
IP protocol (<option>-sO</option>), questa opzione specifica il
|
||
numero di protocolli che si vuole escludere (0–255).</para>
|
||
|
||
<para>Quando si richiede di escludere le porte, queste vengono
|
||
escluse da tutti i tipi di scansione. Ciò include anche la fase di
|
||
discovery.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-F</option> (Fast (limited port) scan)</term>
|
||
|
||
<listitem>
|
||
<para>Indica che si intende effettuare la scansione di un minor
|
||
numero di porte rispetto al default. Normalmente Nmap scansione le
|
||
1.000 porte più comuni per ogni protocollo scansionato. Con
|
||
l'opzione <option>-F</option> il numero si riduce a 100.</para>
|
||
|
||
<para>Nmap ha bisogno del file <filename
|
||
moreinfo="none">nmap-services</filename> che contiene le
|
||
informazioni di frequenza, in modo da sapere quali sono le porte
|
||
più comuni (vedi <quote><ulink
|
||
url="https://nmap.org/book/nmap-services.html">Well Known Port List:
|
||
<option>nmap-services</option></ulink></quote> per maggiori
|
||
informazioni sulle "port frequencies"). Se la "port frequency
|
||
information" non è disponibile, forse perché si sta utilizzando un
|
||
file <filename moreinfo="none">nmap-services</filename>
|
||
personalizzato, Nmap scansiona tutte le porte nominate più le porte
|
||
nell'intervallo 1-1024. In questo caso, l'opzione
|
||
<option>-F</option> indica di scansionare solo le porte che sono
|
||
presenti nel file <filename
|
||
moreinfo="none">nmap-services</filename>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-r</option> (Don't randomize ports)</term>
|
||
|
||
<listitem>
|
||
<para>Di default, Nmap effettua la scansione delle porte in ordine
|
||
casuale (tranne che per alcune porte comuni che vengono controllate
|
||
per prime per motivi di efficienza). La scansione delle porte in
|
||
ordine casuale è tipicamente un vantaggio, ma è possibile
|
||
utilizzare l'opzione <option>-r</option> così da effettuare i
|
||
controlli in ordine sequenziale crescente.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--port-ratio <ratio><decimal number between 0
|
||
and 1></option>
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>Scansiona tutte le porte presenti nel file <filename
|
||
moreinfo="none">nmap-services</filename> con un rapporto maggiore
|
||
di quello indicato. <replaceable>ratio</replaceable> deve essere
|
||
compreso tra 0.0 e 1.1.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--top-ports <n></option>
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>Scansiona le <replaceable>n</replaceable> porte presenti nel
|
||
file <filename moreinfo="none">nmap-services</filename> con il
|
||
maggior rapporto, dopo aver escluso tutte le porte indicate in
|
||
<option>--exclude-ports</option>. <replaceable>n</replaceable> deve
|
||
essere maggiore o uguale a 1.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-version-detection">
|
||
<title>Service e Version Detection</title>
|
||
|
||
<para>Utilizzando Nmap e dirigendo la scansione su una macchina remota
|
||
è possibile scoprire che le porte 25/tcp, 80/tcp e 53/udp sono aperte.
|
||
Utilizzando il suo database di circa 2.200 servizi noti, contenuto nel
|
||
file <filename moreinfo="none">nmap-services</filename>, Nmap
|
||
probabilmente sarà in grado di indicare che ti tratta rispettivamente
|
||
di un mail server (SMTP), di un web server (HTTP) e di un name server
|
||
(DNS). Tale riconoscimento è solitamente accurato - la maggior parte dei
|
||
demoni in ascolto sulla porta 25 sono, in effetti, mail server. Non è
|
||
comunque opportuno fidarsi ciecamente di tali indicazioni! È infatti
|
||
possibile erogare servizi su porte non convenzionali.</para>
|
||
|
||
<para>Anche se le indicazioni di Nmap sono corrette, e gli ipotetici
|
||
server sopracitati sono effettivamente SMTP, HTTP e DNS, queste
|
||
informazioni non sono esaustive. Quando si eseguono dei "vulnerability
|
||
assessments" (o anche semplicemente un inventario della rete) della
|
||
vostra società o di clienti, è interessante sapere esattamente di che
|
||
mail e DNS server si tratta e quale versione è in uso. Conoscere
|
||
accuratamente la versione del software è di fondamentale importanza per
|
||
determinare a quali exploits è vulnerabile il server. Version detection
|
||
è di grande aiuto nel ricercare queste informazioni.</para>
|
||
|
||
<para>Al momento dell'identificazione delle porte TCP e/o UDP da parte
|
||
di uno dei vari metodi di scansione, il version detection interroga
|
||
queste porte per rilevare ulteriori dati sui servizi erogati. Il
|
||
database contenuto nel file <filename
|
||
moreinfo="none">nmap-service-probes</filename> contiene istruzioni per
|
||
interrogare i vari servizi e per interpretarne le risposte. Nmap cerca
|
||
quindi di determinare di che servizio si tratta (ad esempio FTP, SSH,
|
||
Telnet, HTTP), il nome dell'applicazione (ad esempio ISC BIND, Apache
|
||
httpd, Solaris telnetd), la versione, l'hostname, il tipo di device (ad
|
||
esempio stampante, router), la famiglia del sistema operativo (ad esempio
|
||
Windows, Linux). Quando possibile Nmap restituisce anche la
|
||
rappresentazione CPE ("Common Platform Enumeration") di questa
|
||
informazione. Alle volte sono disponibili altri dettagli come l'apertura
|
||
di un X server alle connessioni, la versione del protocollo SSH o
|
||
l'utenza utilizzata da KaZaA. Ovviamente la maggior parte dei servizi
|
||
non rilasciano tutte queste informazioni. Se Nmap viene compilato con il
|
||
supporto per OpenSSL, sarà in grado di connettersi ai server SSL per
|
||
dedurre quale tipo di servizio viene offerto dietro al suo "encryption
|
||
layer". Alcune delle porte UDP vengono indicate come <literal
|
||
moreinfo="none">open|filtered</literal> se un UDP port scan non è in
|
||
grado di determinare con precisione se la porta è open o filtered. Il
|
||
version detection cercherà di ottenere una risposta da queste porte
|
||
(esattamente come per le porte aperte), e modificherà lo stato in
|
||
<literal moreinfo="none">open</literal> se ci riuscirà. Le porte TCP
|
||
<literal moreinfo="none">open|filtered</literal> vengono trattate nello
|
||
stesso modo. Bisogna tener presente che l'opzione <option>-A</option>
|
||
abilita, fra le varie cose, il version detection. Il version detection
|
||
viene descritto nel dettaglio in <ulink
|
||
url="https://nmap.org/book/vscan.html">Chapter 7, Service and Application
|
||
Version Detection</ulink>.</para>
|
||
|
||
<para>Quando i servizi RPC vengono identificati, Nmap è in grado di
|
||
raffinare quanto rilevato così da riconoscere versione e nome del
|
||
servizio RPC. Inonda tutta le porte TCP/UDP rilevate come RPC con dei
|
||
comandi NULL del programma SunRPC con lo scopo di determinare se sono
|
||
effettivamente porte RPC e, nel caso, il programma e la versione che sono
|
||
in esecuzione. Quindi si possono effettivamente ottenere le stesse
|
||
informazioni del comando <command moreinfo="none">rpcinfo -p</command>
|
||
anche se il portmapper dell'obiettivo e dietro un firewall (o protetto da
|
||
TCP wrappers). I decoy attualmente non funzionano con l'RPC scan.</para>
|
||
|
||
<para>Quando Nmap riceve delle risposte da un servizio ma non è in
|
||
grado di trovarne un'interpretazione nel suo database, visualizza una
|
||
particolare "fingerprint" e una URL per permettere di inviare quanto
|
||
rilevato nel caso si conosca a priori che cosa sta effettivamente
|
||
girando su quella porta. È importante perdere qualche minuto per
|
||
effettuare l'invio di questi dati quando possibile perché così facendo
|
||
chiunque in futuro potrà beneficiare dei dati raccolti e riconoscere
|
||
anche questo servizio. Grazie a questo sistema Nmap è in grado di
|
||
identificare circa 6.500 differenti varianti per più di 650 protocolli
|
||
come SMTP, FTP, HTTP, ecc.</para>
|
||
|
||
<para>Version detection viene attivato e controllato dalle seguenti
|
||
opzioni:</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><option>-sV</option> (Version detection)</term>
|
||
|
||
<listitem>
|
||
<para>Abilita il version detection, come precedentemente
|
||
illustrato. In alternativa, è possibile utilizzare l'opzione
|
||
<option>-A</option> che attiva il version detection, tra le altre
|
||
cose.</para>
|
||
|
||
<para><option>-sR</option> è un alias <option>-sV</option>. Fino a
|
||
Marzo 2011 era usata per attivare l'RPC separatamente dal version
|
||
detection, ma ora queste opzioni sono sempre combinate.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--allports</option> (Don't exclude any ports from
|
||
version detection)</term>
|
||
|
||
<listitem>
|
||
<para>Normalmente, il version detection di Nmap non invia pacchetti
|
||
alla porta TCP 9100 poiché alcune stampanti accettano e stampano
|
||
direttamente qualunque dato ricevuto su questa porta. Se tale porta
|
||
fosse sottoposta a scansione, verrebbero stampate decine di pagine
|
||
contenenti richieste HTTP GET puri, dati binari di sessioni SSL e
|
||
via discorrendo. È possibile cambiare il comportamento del version
|
||
detection di Nmap con la modifica o la rimozione della direttiva
|
||
<literal moreinfo="none">Exclude</literal> nel file <filename
|
||
moreinfo="none">nmap-service-probes</filename> oppure specificando
|
||
l'opzione <option>--allports</option>, così da effettuare la
|
||
scansione di tutte le porte, indipendentemente da quanto indicato
|
||
nella direttiva <literal moreinfo="none">Exclude</literal>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--version-intensity <intensity></option>
|
||
(Set version scan intensity)</term>
|
||
|
||
<listitem>
|
||
<para>Quando si effettua un version scan (<option>-sV</option>),
|
||
Nmap invia una serie di probe, ognuno dei quali ha assegnato un
|
||
valore compreso tra 1 e 9. I pacchetti con valore più basso sono in
|
||
grado di riconoscere i servizi comunemente diffusi, mentre quelli
|
||
con valori più alti sono raramente necessari. Il livello di
|
||
accuratezza specifica quali probe devono essere impiegati; più alto
|
||
è il livello, più è probabile che il servizio venga correttamente
|
||
identificato. D'altro canto, più una scansione è accurata e più
|
||
tempo sarà necessario. I valori devono essere compresi tra 0 e 9;
|
||
il valore di default è 7. Quando viene assegnato direttamente un
|
||
probe ad una porta utilizzando la direttiva <literal
|
||
moreinfo="none">ports</literal> nel file <filename
|
||
moreinfo="none">nmap-service-probes</filename>, esso viene
|
||
utilizzato indipendentemente dal valore indicato per l'accuratezza
|
||
del version scan. Questo garantisce, per esempio, che ogni volta
|
||
che viene trovata la porta 53 aperta vengano effettuati i
|
||
controlli specifici per il DNS; così come in caso di porta 443
|
||
vengano invece utilizzati quelli per l'SSL e così via.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--version-light</option> (Enable light mode)</term>
|
||
|
||
<listitem>
|
||
<para>Questa opzione è un alias di
|
||
<option>--version-intensity 2</option>. Questa modalità rende il
|
||
version scanning drasticamente più veloce, riducendone però la
|
||
capacità di identificare accuratamente i servizi.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--version-all</option> (Try every single probe)</term>
|
||
|
||
<listitem>
|
||
<para>Questa opzione è equivalente a
|
||
<option>--version-intensity 9</option>, assicurando che ogni
|
||
singolo probe venga utilizzato su ogni singola porta.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--version-trace</option> (Trace version scan
|
||
activity)</term>
|
||
|
||
<listitem>
|
||
<para>Indica a Nmap di visualizzare informazioni di debug estese
|
||
relative all'attività del version scanning. È un subset di
|
||
quanto si ottiene con l'opzione
|
||
<option>--packet-trace</option>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-os-detection">
|
||
<title>OS Detection</title>
|
||
|
||
<para>Una delle più famose caratteristiche di Nmap è la possibilità
|
||
di identificare da remoto il sistema operativo di un host attraverso
|
||
il fingerprint dello stack TCP/IP. Nmap invia una serie di pacchetti
|
||
TCP ed UDP all'host remoto ed esamina ogni bit ricevuto in risposta.
|
||
Dopo aver effettuato decine di test come "il TCP ISN sampling", il "TCP
|
||
option support and ordering", il "IP ID Sampling" ed il controllo del
|
||
window size iniziale, Nmap compara i risultati con il suo database
|
||
(<filename moreinfo="none">nmap-os-db</filename>) contenente più di
|
||
2.600 fingerprint conosciuti e ne visualizza i dettagli se ne trova
|
||
riscontro. Ogni fingerprint comprende una descrizione del sistema
|
||
operativo ed una classificazione che indica il vendor (per esempio Sun),
|
||
il sistema operativo (per esempio Solaris), la versione (per esempio 10)
|
||
ed il tipo di device (per esempio "general purpose", router, switch,
|
||
game console, ecc). Molti fingerprint hanno anche la rappresentazione CPE
|
||
(Common Platform Enumeration), come ad esempio <literal
|
||
moreinfo="none">cpe:/o:linux:linux_kernel:2.6</literal>.</para>
|
||
|
||
<para>Se Nmap non è in grado di indovinare il sistema operativo di una
|
||
macchina e le condizioni sono propizie (ad esempio una porta trovata
|
||
aperta ed una trovata chiusa), Nmap fornirà una URL che potrà essere
|
||
utilizzata per inviare il fingerprint (nel solo caso che si conosca con
|
||
certezza il sistema operativo dell'host in questione). Inviando questi
|
||
fingerprint è possibile contribuire ad ampliare la gamma di sistemi
|
||
operativi conosciuti da Nmap, così da renderlo più accurato per
|
||
tutti.</para>
|
||
|
||
<para>L'OS detection abilita diversi altri test che utilizzano le
|
||
informazioni che sono state ottenute durante questo processo. Un di
|
||
questi è il "TCP Sequence Predictability Classification". Questo test
|
||
misura approssimativamente quanto è difficile stabilire una "forged
|
||
TCP connection" verso l'host remoto. È utile per sfruttare exploit basati
|
||
sul controllo del source-IP (rlogin, filtri firewall, ecc.) o per
|
||
nascondere la sorgente di un attacco. Questo tipo di spoofing viene
|
||
raramente eseguito, ma molte macchine sono ancora vulnerabili ad esso. Il
|
||
valore che indica la difficoltà è basato su campionamenti statistici e
|
||
può variare. Generalmente è preferibile utilizzare la classificazione
|
||
verbale, come <quote>worthy challenge</quote> o <quote>trivial
|
||
joke</quote>, che viene riportata solo nel normale output in modalità
|
||
"verbose" (<option>-v</option>). Quando questa modalità è abilitata
|
||
insieme all'opzione <option>-O</option>, viene anche riportata la
|
||
sequenza di generazione dell'IP ID. La maggior parte delle macchine è
|
||
nella classe <quote>incremental</quote>, il che significa che
|
||
incrementano il campo ID dell'header IP per ogni pacchetto inviato. Ciò
|
||
le rende vulnerabili a diversi attacchi avanzati di spoofing ed
|
||
"information gathering".</para>
|
||
|
||
<para>Altre informazioni extra abilitate dall'OS detection riguardano
|
||
il tempo di attività (uptime) dell'obiettivo. Sfruttando l'opzione TCP
|
||
timestamp (<ulink url="http://www.rfc-editor.org/rfc/rfc1323.txt">RFC
|
||
1323</ulink>) cerca di indovinare quando una macchina ha effettuato
|
||
l'ultimo reboot. Quest'informazione può non essere affidabile, in quanto
|
||
il contatore del timestamp potrebbe non venire inizializzato a zero+
|
||
oppure andare in overflow ed essere troncato, quindi è riportato solo
|
||
nella modalità "verbose".</para>
|
||
|
||
|
||
<para>L'OS detection viene trattato nel dettaglio in <ulink
|
||
url="https://nmap.org/book/osdetect.html">Chapter 8, Remote OS
|
||
Detection</ulink>.</para>
|
||
|
||
<para>OS detection viene attivato e controllato dalle le seguenti
|
||
opzioni:</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><option>-O</option> (Enable OS detection)</term>
|
||
|
||
<listitem>
|
||
<para>Abilita l'OS detection, come descritto sopra. In
|
||
alternativa, è possibile utilizzare l'opzione <option>-A</option>
|
||
per attivare sia l'OS detection, tra le altre cose.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--osscan-limit</option> (Limit OS detection to
|
||
promising targets)</term>
|
||
|
||
<listitem>
|
||
<para>L'OS detection è molto più efficace se vengono rilevate
|
||
almeno una porta TCP aperta ed una chiusa. Utilizzando questa
|
||
opzione Nmap non cercherà di effettuare l'OS detection sugli host
|
||
che non rispondo a questo criterio. È così possibile un
|
||
sensibile risparmio di tempo, specialmente se si utilizza anche
|
||
l'opzione <option>-Pn</option> su molti host. È importante
|
||
unicamente quando l'OS detection è richiesto attraverso le opzioni
|
||
<option>-O</option> o <option>-A</option>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--osscan-guess</option>; <option>--fuzzy</option>
|
||
(Guess OS detection results)</term>
|
||
|
||
<listitem>
|
||
<para>Quando Nmap non è in grado di rilevare una corrispondenza
|
||
esatta dell'OS, propone come possibilità gli OS più vicini alla
|
||
rilevazione. La corrispondenza però deve essere molto simile
|
||
perché Nmap lo faccia di default. Entrambe queste opzioni
|
||
(equivalenti) fanno si che Nmap proceda con il riconoscimento
|
||
dell'OS in modo più aggressivo. Nmap farà comunque presente quando
|
||
corrispondenze non perfette vengono mostrate e per ognuna ne
|
||
indicherà il livello di approssimazione (in percentuale).</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--max-os-tries</option>(Set the maximum number of OS
|
||
detection tries against a target)</term>
|
||
|
||
<listitem>
|
||
<para>Quando Nmap esegue un OS detection su di un obiettivo e non
|
||
riesce a trovare una corrispondenza perfetta, solitamente ripete il
|
||
tentativo. Di default, Nmap prova cinque volte, se le condizioni
|
||
sono favorevoli per l'invio del fingerprint, e due volte se invece
|
||
non lo sono. Specificando un valore più piccolo (ad esempio 1)
|
||
nell'opzione <option>--max-os-tries</option>, si aumentano le
|
||
performance di Nmap a discapito di una potenziale identificazione
|
||
del sistema operativo. Per contro, un valore più alto permette più
|
||
tentativi, se le condizioni sono favorevoli. Questo raramente
|
||
avviene, se non per creare migliori fingerprint da integrare nel
|
||
database di Nmap.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-nmap-scripting-engine">
|
||
<title>Nmap Scripting Engine (NSE)</title>
|
||
|
||
<para>L'Nmap Scripting Engine (NSE) è una delle feature più potenti e
|
||
flessibili di Nmap. Permette agli utenti di scrivere (e condividere)
|
||
semplici script (utilizzando il <ulink
|
||
url="http://lua.org/">linguaggio di programmazione Lua</ulink>) per
|
||
automatizzare un gran varietà di networking task. Questi script
|
||
vengono eseguito in parallelo con la velocità e l'efficienza che ci si
|
||
aspetta da Nmap. Gli utenti possono fare affidamento sui crescenti e
|
||
diversi set di script distribuiti da Nmap, oppure scriverli loro stessi
|
||
in base alle proprie necessità.</para>
|
||
|
||
<para>I task che abbiamo preso in considerazione quando abbiamo creato il
|
||
sistema includono il network discovery, version detection più
|
||
sofisticate, il vulnerability detection. NSE può anche essere usato
|
||
per la vulnerability exploitation.</para>
|
||
|
||
<para>Per riflettere i differenti usi e semplificare la scelta di
|
||
quale utilizzare, ogni script contiene un campo associato con una o
|
||
più categorie. Attualmente le categorie definite sono
|
||
<literal moreinfo="none">auth</literal>, <literal
|
||
moreinfo="none">broadcast</literal>,
|
||
<literal moreinfo="none">default</literal>, <literal
|
||
moreinfo="none">discovery</literal>,
|
||
<literal moreinfo="none">dos</literal>, <literal
|
||
moreinfo="none">exploit</literal>,
|
||
<literal moreinfo="none">external</literal>, <literal
|
||
moreinfo="none">fuzzer</literal>,
|
||
<literal moreinfo="none">intrusive</literal>, <literal
|
||
moreinfo="none">malware</literal>,
|
||
<literal moreinfo="none">safe</literal>, <literal
|
||
moreinfo="none">version</literal> e
|
||
<literal moreinfo="none">vuln</literal>. Queste sono tutte descritte
|
||
nella sezione <quote><ulink
|
||
url="https://nmap.org/book/nse-usage.html#nse-categories">Script
|
||
Categories</ulink></quote>.</para>
|
||
|
||
<para>Gli script non vengono eseguiti in una sandbox e quindi
|
||
possono, accidentalmente o maliziosamente, danneggiare il sistema su
|
||
cui vengono eseguiti o invadere la propria privacy. Non eseguire mai
|
||
script di terze parti se non si ha la fiducia degli autori o non si
|
||
ha preventivamente controllato personalmente gli script.</para>
|
||
|
||
<para>L'Nmap Scripting Engine è descritto nel dettaglio in <ulink
|
||
url="https://nmap.org/book/nse.html">Chapter 9, Nmap Scripting
|
||
Engine</ulink> e viene controllato dalle seguenti opzioni:</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><option>-sC</option></term>
|
||
|
||
<listitem>
|
||
<para>Esegue uno script scan utilizzando il set di script di
|
||
default. È l'equivalente di <option>--script=default</option>.
|
||
Alcuni degli script in questa categoria vengono considerati
|
||
intrusivi e potrebbero non essere eseguiti su di un obiettivo
|
||
di rete senza permessi.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--script
|
||
<filename>|<category>|<directory>|<expression>[,...]</option>
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>Esegue uno script scan utilizzando una lista, separata da
|
||
virgole, di file, categorie di script e directory. Ogni
|
||
elemento nella lista può anche essere un'espressione booleana
|
||
che descrive un più complesso set di script. Gli elementi
|
||
vengono interpretati prima come un'espressione, poi come una
|
||
categoria e infine come il nome di file o di una
|
||
directory.</para>
|
||
|
||
<para>Sono presenti due feature speciali dedicate agli utenti
|
||
esperti. La prima consiste nell'aggiungere come prefisso al nome
|
||
degli script e alle espressioni il carattere <literal
|
||
moreinfo="none">+</literal> per forzarne l'esecuzione anche quando
|
||
non verrebbe fatta (ad esempio quando il relativo servizio non è
|
||
stato trovato sulla porta dell'host). L'altra feature è l'argomento
|
||
<option>all</option> che può essere utilizzato per specificare
|
||
tutti gli script nel database di Nmap. Usare con cautela questa
|
||
funzionalità dato che NSE contiene script pericolosi come exploit,
|
||
"brute force authentication crackers" e attacchi "denial of
|
||
service".</para>
|
||
|
||
<para>I percorsi dei file e delle directory possono essere sia
|
||
relativi che assoluti. I percorsi assoluti sono diretti, mentre
|
||
quelli relativi vengono ricercati nelle cartelle <literal
|
||
moreinfo="none">scripts</literal> presenti in ogni seguente
|
||
locazione:</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><option>--datadir</option></term>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><option>$NMAPDIR</option></term>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><filename moreinfo="none">~/.nmap</filename> (non
|
||
usato in Windows)</term>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><filename
|
||
moreinfo="none"><HOME>\AppData\Roaming\nmap</filename>
|
||
(usato solo in Windows)</term>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term>la directory contenente l'eseguibile di Nmap</term>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term>la directory contenente l'eseguibile di Nmap,
|
||
seguita da <filename
|
||
moreinfo="none">../share/nmap</filename></term>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><option>NMAPDATADIR</option></term>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term>La directory corrente</term>
|
||
</varlistentry>
|
||
</variablelist>
|
||
|
||
<para> Quando viene specificata una directory, Nmap carica ogni
|
||
file in quella directory che ha come estensione <literal
|
||
moreinfo="none">.nse</literal>. Tutti gli altri file verranno
|
||
ignorati e la directory non verrà scansionata in modo
|
||
ricorsivo. Quando viene specificato un file, bisogna omettere
|
||
l'estensione <literal moreinfo="none">.nse</literal>, verrà
|
||
aggiunta automaticamente se necessario.</para>
|
||
|
||
<para>Gli script Nmap sono archiviati di default in una
|
||
subdirectory <literal moreinfo="none">scripts</literal> della
|
||
directory principale di Nmap (vedi <ulink
|
||
url="https://nmap.org/book/data-files.html">Chapter 14,
|
||
Understanding and Customizing Nmap Data Files</ulink>). Per
|
||
migliorare l'efficienza, gli script vengono indicizzati nel
|
||
database <filename
|
||
moreinfo="none">scripts/script.db</filename>, che elenca le
|
||
categorie cui ogni script appartiene.</para>
|
||
|
||
<para>Quando si usa il nome dagli script come riferimento dal
|
||
file <filename moreinfo="none">script.db</filename>, si può
|
||
utilizzare come nella shell il carattere speciale
|
||
<quote>*</quote>.</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><command moreinfo="none">nmap --script
|
||
"http-*"</command> </term>
|
||
|
||
<listitem>
|
||
<para>Carica tutti gli script il cui nome inizia con
|
||
<literal moreinfo="none">http-</literal>, come <literal
|
||
moreinfo="none">http-auth</literal> e <literal
|
||
moreinfo="none">http-open-proxy</literal>. L'argomento di
|
||
<option>--script</option> è stato messo tra apici per
|
||
proteggere il carattere speciale dall'interpretazione della
|
||
shell.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
|
||
<para>Selezioni più complesse di script possono essere eseguite
|
||
utilizzando gli operatori <literal
|
||
moreinfo="none">and</literal>, <literal
|
||
moreinfo="none">or</literal> e <literal
|
||
moreinfo="none">not</literal> costruendo così espressioni booleane.
|
||
Gli operatori hanno la stessa precedenza che hanno in Lua: <literal
|
||
moreinfo="none">not</literal> è il più alto, seguito dal <literal
|
||
moreinfo="none">and</literal> e quindi <literal
|
||
moreinfo="none">or</literal>. Si può modificare la precedenza
|
||
utilizzando le parentesi. Dato che le espressioni contengono
|
||
caratteri di spazio, è necessario racchiuderle tra apici
|
||
(quote).</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><command moreinfo="none">nmap --script
|
||
"not intrusive"</command></term>
|
||
|
||
<listitem>
|
||
<para>Carica tutti gli script tranne quelli nella
|
||
categoria <literal
|
||
moreinfo="none">intrusive</literal>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><command moreinfo="none">nmap --script "default or
|
||
safe"</command></term>
|
||
|
||
<listitem>
|
||
<para>Questa funzionalità è l'equivalente di <command
|
||
moreinfo="none">--script "default,safe"</command>.
|
||
Carica tutti gli script che sono nelle categorie
|
||
<literal moreinfo="none">default</literal>, <literal
|
||
moreinfo="none">safe</literal> o in entrambe.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><command moreinfo="none">nmap --script "default and
|
||
safe"</command></term>
|
||
|
||
<listitem>
|
||
<para>Carica gli script che sono in
|
||
<emphasis>entrambe</emphasis> le categorie <literal
|
||
moreinfo="none">default</literal> e <literal
|
||
moreinfo="none">safe</literal>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><command moreinfo="none">nmap --script "(default or
|
||
safe or intrusive) and not http-*"</command></term>
|
||
|
||
<listitem>
|
||
<para>Carica gli script che sono nelle categorie
|
||
<literal moreinfo="none">default</literal>, <literal
|
||
moreinfo="none">safe</literal> o <literal
|
||
moreinfo="none">intrusive</literal> tranne quelli il
|
||
cui nome inizia con <literal
|
||
moreinfo="">http-</literal>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--script-args
|
||
<n1>=<v1>,<n2>={<n3>=<v3>},<n4>={<v4>,<v5>}</option></term>
|
||
|
||
<listitem>
|
||
<para>Permette di fornire argomenti agli script NSE. Gli
|
||
argomenti sono una lista, separati da virgola, di coppie
|
||
<literal moreinfo="none">name=value</literal>. I nomi e i
|
||
valori possono essere stringhe senza spazi o i caratteri "{",
|
||
"}", "=" e ",". Per includere uno di questi caratteri in una
|
||
stringa, si deve racchiudere la stringa tra apici singoli o
|
||
doppi. Il carattere "\" (backslash) in una stringa tra apici,
|
||
annulla la funzionalità dell'apice. Il backslash viene
|
||
interpretato in questo modo solo in questo caso particolare,
|
||
negli altri casi viene considerato "letteralmente". I valori
|
||
possono anche essere elenchi racchiusi tra parentesi graffe
|
||
("{}"), così come in Lua. Un elenco può contenere valori, nella
|
||
forma di semplici stringhe, oppure altre coppie di nomi-valori;
|
||
sono consentiti anche gli elenchi annidati. Alcuni script
|
||
definiscono i loro argomenti con il nome dello script, ad
|
||
esempio <literal
|
||
moreinfo="none">xmpp-info.server_name</literal>. Si può
|
||
utilizzare questa identificazione per agire solo sullo script
|
||
specificato, oppure utilizzare la versione non identificativa
|
||
(<literal moreinfo="none">server_name</literal> in questo caso)
|
||
per agire su tutti gli script che utilizzano questo argomento.
|
||
Uno script controllerà prima gli argomenti a lui identificati
|
||
(il nome degli argomenti è specificato nella documentazione
|
||
dello script) prima di accettare un argomento non qualificato.
|
||
Un esempio complesso è <option>--script-args
|
||
'user=foo,pass=",{}=bar",whois={whodb=nofollow+ripe},xmpp-info.server_name=localhost'</option>.
|
||
L'NSE Documentation Portal all'indirizzo <ulink
|
||
url="https://nmap.org/nsedoc/" /> elenca gli argomenti che ogni
|
||
script accetta.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--script-args-file <filename></option></term>
|
||
|
||
<listitem>
|
||
<para>Permette di passare gli argomenti agli script NSE tramite
|
||
un file. Ogni argomento sulla riga di comando sostituisce
|
||
quelli nel file. Il percorso del file può essere assoluto o
|
||
relativo e, in quest'ultimo caso, farà riferimento al solito
|
||
percorso di ricerca di Nmap (NMAPDIR, ecc.). Gli argomenti
|
||
possono essere separati da virgola o da un carattere di a-capo,
|
||
ma devono seguire le stesse regole di
|
||
<option>--script-args</option>, senza però particolari apici
|
||
dato che non vengono elaborati dalla shell.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--script-help
|
||
<filename>|<category>|<directory>|<expression>|all[,...]</option></term>
|
||
|
||
<listitem>
|
||
<para>Mostra l'help degli scripts. Per ogni script specificato,
|
||
Nmap restituisce il nome, le categorie cui appartiene e la sua
|
||
descrizione. La sintassi è la stessa dell'opzione
|
||
<option>--script</option>; quindi per esempio se si volesse
|
||
l'help dello script <literal
|
||
moreinfo="none">ftp-anon</literal>, si dovrà eseguire il
|
||
comando <command moreinfo="none">nmap --script-help
|
||
ftp-anon</command>. Oltre all'help per gli script individuali,
|
||
si potrà anche ottenere l'anteprima di cosa lo script
|
||
eseguirà secondo una specifica, ad esempio <command
|
||
moreinfo="none">nmap --script-help default</command>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--script-trace</option></term>
|
||
|
||
<listitem>
|
||
<para>Quest'opzione è come l'opzione
|
||
<option>--packet-trace</option>, solo un livello ISO più in
|
||
alto. Se viene specificata quest'opzione, tutte le
|
||
comunicazioni in entrata ed in uscita eseguite da uno script
|
||
vengono mostrate. Queste informazioni includono il protocollo
|
||
di comunicazione, la sorgente, l'obiettivo e i dati trasmessi.
|
||
Se più del 5% di tutti i dati trasmessi non sono stampabili a
|
||
video, allora l'output sarà in esadecimale. Indicando l'opzione
|
||
<option>--packet-trace</option> anche lo script tracing verrà
|
||
abilitato.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--script-updatedb</option></term>
|
||
|
||
<listitem>
|
||
<para>Quest'opzione aggiorna il database degli script che si
|
||
trova nel file <filename
|
||
moreinfo="none">scripts/script.db</filename>, il quale viene
|
||
utilizzato da Nmap per determinare gli script e le categorie di
|
||
default. È necessario aggiornare il database solo se vengono
|
||
aggiunti o rimossi script NSE dalla directory di default o se
|
||
sono state cambiate le categorie di qualche script.
|
||
Quest'opzione viene generalmente utilizzata da sola: <command
|
||
moreinfo="none">nmap --script-updatedb</command>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-performance">
|
||
<title>Timing and Performance</title>
|
||
|
||
<para>Le performance sono sempre state una delle principali
|
||
priorità durante lo sviluppo di Nmap. Una scansione di default
|
||
(<command moreinfo="none">nmap
|
||
<replaceable>hostname</replaceable></command>) di un host in una
|
||
rete locale richiede circa un quinto di secondo, poco più di un
|
||
battito di ciglia. Tuttavia esso aumenta quando si sta effettuando
|
||
una scansione di centinaia o migliaia di host. Inoltre alcune opzioni
|
||
di scan (come lo scan UDP e il version detection) o alcune
|
||
configurazioni di firewall (in particolare quelle che limitano la
|
||
frequenza delle risposte, conosciute come "response rating") tendono
|
||
ad aumentare decisamente il tempo di scansione. Anche se Nmap usa
|
||
tecniche di scansione in parallelo e molti altri algoritmi avanzati
|
||
per diminuire il tempo totale impiegato, l'utente ha comunque il
|
||
controllo finale sulle modalità in cui Nmap viene eseguito. Un utente
|
||
esperto userà quindi comandi specifici per ottenere solo le
|
||
informazioni di cui ha bisogno, restando però all'interno della
|
||
finestra temporale minima.</para>
|
||
|
||
<para>Alcune tecniche per migliorare i tempi di scansione sono
|
||
l'omissione di test non rilevanti e l'aggiornamento all'ultima
|
||
versione di Nmap (questo perché spesso gli aggiornamenti includono
|
||
miglioramenti delle performance). Anche ottimizzare i parametri di
|
||
timing è un'ottima strategia per ottenere sostanziali differenze;
|
||
queste opzioni sono elencate di seguito.</para>
|
||
|
||
<para>Alcune opzioni accettano il parametro <literal
|
||
moreinfo="none">time</literal>. Questo indica una quantità di tempo
|
||
in secondi (di default), ma è possibile aggiungere 'ms', 's', 'm' o
|
||
'h' per indicare millisecondi, secondi, minuti oppure ore. Ad
|
||
esempio, per il parametro <option>--host-timeout</option> gli
|
||
argomenti <literal moreinfo="none">900000ms</literal>, <literal
|
||
moreinfo="none">900</literal>, <literal
|
||
moreinfo="none">900s</literal> e <literal
|
||
moreinfo="none">15m</literal> hanno tutti lo stesso effetto.</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><option>--min-hostgroup <numhosts></option>;
|
||
<option>--max-hostgroup <numhosts></option> (Adjust
|
||
parallel scan group sizes)</term>
|
||
|
||
<listitem>
|
||
<para>Nmap ha l'abilità di effettuare port scan o version
|
||
scan su più host in parallelo. Lo spazio degli indirizzi IP
|
||
di destinazione viene diviso in gruppi e viene scansionato un
|
||
gruppo per volta. In genere gruppi di dimensioni maggiori
|
||
portano ad una migliore efficienza. Il lato negativo di tutto
|
||
ciò è che i risultati non possono essere mostrati all'utente
|
||
fino a quando l'intero gruppo non è stato esplorato
|
||
completamente. Quindi, se si lancia Nmap impostando la
|
||
dimensione del gruppo a 50, l'utente non vedrà alcun risultato
|
||
fino a quando i primi 50 host non sono stati completati (a meno
|
||
che non si selezioni la modalità verbose).</para>
|
||
|
||
<para>Di default, Nmap usa un compromesso per ovviare a questa
|
||
difficoltà. Inizialmente utilizza una dimensione di cinque
|
||
host in modo da mostrare i primi risultati velocemente,
|
||
dopodiché incrementa la dimensione fino ad un massimo di
|
||
1024. Il numero esatto dipende dalle opzioni che vengono
|
||
passate. Per ragioni di efficienza Nmap usa gruppi di
|
||
dimensione maggiore per UDP o per scansioni di porte TCP di
|
||
piccole dimensioni.</para>
|
||
|
||
<para>Nel caso in cui una dimensione massima del gruppo sia
|
||
specificata con <option>--max-hostgroup</option>, Nmap non
|
||
oltrepasserà mai questo limite. Specificando invece una
|
||
dimensione minima con <option>--min-hostgroup</option>
|
||
obbligherà Nmap a usare dimensioni almeno equivalenti. Nmap
|
||
potrebbe tuttavia dover usare gruppi più piccoli di quelli
|
||
indicati se non ci dovessero essere abbastanza host di
|
||
destinazione rimanenti per un'interfaccia per raggiungere la
|
||
minima quota specificata. Entrambe le opzioni possono essere
|
||
impostate per mantenere la dimensione del gruppo all'interno
|
||
di un certo limite, anche se questo succede raramente.</para>
|
||
|
||
<para>Queste opzioni durante la fase di host discovery di una
|
||
scansione non hanno effetto; ciò include anche il plain ping
|
||
scan (<option>-sn</option>). L'host discovery lavora sempre su
|
||
grandi gruppi di host per aumentare la velocità e
|
||
l'accuratezza.</para>
|
||
|
||
<para>L'utilizzo principale di queste opzioni è quello di
|
||
specificare una dimensione minima maggiore rispetto al default
|
||
in modo da rendere più veloce la scansione globale. Una scelta
|
||
piuttosto comune è 256 per una scansione di una rete di classe
|
||
C. Per una scansione con molte porte, eccedere questo numero
|
||
è improbabile che aiuti molto. Per una scansione con poche
|
||
porte invece, una dimensione di 2048 o più può essere
|
||
d'aiuto.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--min-parallelism <numprobes></option>;
|
||
<option>--max-parallelism <numprobes></option>
|
||
(Adjust probe parallelization)</term>
|
||
|
||
<listitem>
|
||
<para>Queste opzioni controllano il numero totale di probe che
|
||
possono uscire dalla macchina sorgente per un host group. Esse
|
||
sono usate per port scanning e host discovery. Di default,
|
||
Nmap calcola un parallelismo ideale in continuo cambiamento, a
|
||
seconda delle performance della rete. Se c'è un elevato
|
||
numero di pacchetti che viene scartato, Nmap rallenta e lavora
|
||
su un numero minore di probe in uscita. Il numero ideale di
|
||
probe in uscita incrementa poi gradualmente fino a quando la
|
||
rete lo permette. Questa opzione limiti minimi o massimi alla
|
||
variabile. Di default, il parallelismo può arrivare ad
|
||
un minimo di 1 se la rete si dimostra essere poco affidabile;
|
||
può invece aumentare a diverse centinaia per una rete in
|
||
condizioni ottimali.</para>
|
||
|
||
<para>L'uso più comune consiste nell'impostare
|
||
<option>--min-parallelism</option> ad un valore maggiore di 1
|
||
per accelerare le scansioni di reti o host che rispondono in
|
||
maniera non adeguata. È abbastanza rischioso giocare con
|
||
quest'opzione, in quanto impostandola ad un valore troppo alto
|
||
può influire negativamente sull'accuratezza. Impostandola
|
||
manualmente inoltre riduce l'abilità di Nmap di controllare
|
||
dinamicamente il parallelismo basandosi sulle condizioni della
|
||
rete. Un valore di 10 è abbastanza ragionevole, anche se in
|
||
genere le modifiche a questo parametro vengono usate come
|
||
ultima risorsa.</para>
|
||
|
||
<para>L'opzione <option>--max-parallelism</option> viene
|
||
impostata a volte sul valore 1 per impedire a Nmap di inviare
|
||
più di un probe alla volta verso un determinato host. L'opzione
|
||
<option>--scan-delay</option> (discussa in seguito), è un altro
|
||
modo per ottenere questo risultato.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--min-rtt-timeout <time></option>,
|
||
<option>--max-rtt-timeout <time></option>,
|
||
<option>--initial-rtt-timeout <time></option> (Adjust probe
|
||
timeouts)</term>
|
||
|
||
<listitem>
|
||
<para>Nmap mantiene un valore di timeout aggiornato per
|
||
determinare quanto ci vorrà per un probe response prima di
|
||
ritrasmettere il probe. Questo viene calcolato basandosi sui
|
||
tempi di response degli ultimi probe inviati. La formula si
|
||
trova al link <ulink
|
||
url="https://nmap.org/book/scan-methods.html#port-scanning-algorithms"><quote>Idle
|
||
Scan Implementation Algorithms</quote></ulink>. Se la latenza
|
||
della rete dovesse oscillare troppo questo timeout può
|
||
crescere fino ad un valore di diversi secondi. Inoltre esso è
|
||
impostato inizialmente ad un valore abbastanza alto e potrebbe
|
||
restare su quel valore per tutto il tempo in cui Nmap effettua
|
||
la scansione su host che non rispondono.</para>
|
||
|
||
<para>Specificando limiti di <option>--max-rtt-timeout</option>
|
||
e di <option>--initial-rtt-timeout</option> inferiori ai
|
||
valori di default è possibile ridurre di molto i tempi di
|
||
scansione. Questo è vero in particolare per scansioni di tipo
|
||
"pingless" (opzione <option>-Pn</option>) e nei confronti di
|
||
reti particolarmente protette. Tuttavia, è bene non esagerare;
|
||
infatti la scansione può addirittura richiedere più tempo del
|
||
previsto nel caso in cui si specifichi un valore talmente basso
|
||
da resettare il timeout dei probe (e forzarne un nuovo invio)
|
||
mentre la risposta sta ancora arrivando.</para>
|
||
|
||
<para>Se tutti gli host sono su una rete locale, 100
|
||
millisecondi (<option>--max-rtt-timeout 100ms</option>)è un
|
||
valore ragionevolmente aggressivo. Se nella scansione è
|
||
coinvolto qualche routing, sarebbe meglio effettuare un ping
|
||
preliminare dell'host (con l'utility ICMP ping o con un
|
||
generatore di pacchetti come Nping che può penetrare un
|
||
firewall più facilmente), e osservare poi il valore massimo di
|
||
andata/ritorno ("round trip") per un numero di pacchetti non
|
||
inferiore a 10. È quindi consigliato raddoppiare questo valore
|
||
per l'opzione <option>--initial-rtt-timeout</option> e
|
||
triplicarlo o quadruplicarlo per l'opzione
|
||
<option>--max-rtt-timeout</option>. In genere si preferisce
|
||
non impostare il maximum RTT al di sotto di 100 millisecondi,
|
||
indipendentemente dai tempi di ping. E nemmeno al di sopra di
|
||
1000 millisecondi.</para>
|
||
|
||
<para>L'opzione <option>--min-rtt-timeout</option> è usata
|
||
molto raramente; essa può essere utile nel caso in cui una
|
||
rete è talmente poco affidabile che anche il default di Nmap
|
||
risulta essere troppo aggressivo. Poiché Nmap riduce il timeout
|
||
fino al valore minimo quando la rete sembra affidabile, questa
|
||
esigenza di solito non è necessaria e dovrebbe essere
|
||
indicata come bug alla mailing list nmap-dev.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--max-retries <numtries></option> (Specify
|
||
the maximum number of port scan probe retransmissions)</term>
|
||
|
||
<listitem>
|
||
<para>Quando Nmap non riceve risposta ad un port scan probe,
|
||
potrebbe significare che la porte è filtrata. O forse che la
|
||
risposta o il probe stesso si sono persi nella rete. È anche
|
||
possibile che l'host obiettivo abbia attivato dei limiti sul
|
||
traffico che bloccano la risposta. In questi questi, Nmap prova
|
||
nuovamente a ritrasmettere il probe iniziale e, se ritiene che
|
||
la rete sia poco affidabile, prova molte volte prima di passare
|
||
alla porta successiva. Nonostante il vantaggio
|
||
dell'accuratezza, tutto ciò prolunga i tempi di scansione.
|
||
Quando le performance sono al primo posto, si può velocizzare
|
||
le scansioni limitando il numero di ritrasmissioni consentite.
|
||
Si può addirittura indicare <option>--max-retries 0</option>
|
||
per disabilitare ogni ritrasmissione, anche se è consigliato
|
||
solo in quelle situazioni in cui la non risposta di alcune
|
||
porte e alcuni host è accettabile (ad esempio sondaggi interni
|
||
o test).</para>
|
||
|
||
<para>Di default (senza nessun template, opzione
|
||
<option>-T</option>) vengono effettuate dieci ritrasmissioni.
|
||
Se la rete risulta affidabile e gli host obiettivo non hanno
|
||
limitazioni, Nmap solitamente effettua una ritrasmissione.
|
||
Quindi la maggior parte degli obiettivi non viene coinvolta
|
||
abbassando <option>--max-retries</option> ad un valore basso,
|
||
ad esempio tre. Alcuni valori possono velocizzare sensibilmente
|
||
le scansioni di host piuttosto lenti. Di solito vengono perse
|
||
alcune informazioni quando Nmap scansiona le porte velocemente,
|
||
però è sempre meglio che lasciar scadere
|
||
<option>--host-timeout</option> e perdere tutte le informazioni
|
||
dell'obiettivo.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--host-timeout <time></option> (Give up on
|
||
slow target hosts)</term>
|
||
|
||
<listitem>
|
||
<para>Alcuni host a volte richiedono un tempo estremamente
|
||
<emphasis>lungo</emphasis> per portare a termine una
|
||
scansione. Questo può essere dovuto a hardware o software
|
||
poco performante o inaffidabile, a limiti di traffico impostati
|
||
o a firewall troppo restrittivi. La minoranza degli host
|
||
sottoposti a scansione può richiedere la maggior parte del
|
||
tempo di scansione. A volte è preferibile risparmiare sul tempo
|
||
ed evitare questi host fin dal principio. Questo comportamento
|
||
viene forzato dall'opzione <option>--host-timeout</option>
|
||
seguito dal tempo dopo il quale non si vuole più aspettare. Ad
|
||
esempio si specifica un valore di 30m per avere la garanzia che
|
||
Nmap non sprechi più di mezz'ora su di un singolo host. Si noti
|
||
che Nmap può nel frattempo effettuare la scansione su altri
|
||
host durante quella mezz'ora, per cui non si tratta di tempo
|
||
completamente sprecato. Un host che dovesse andare in timeout
|
||
viene semplicemente saltato. Non vengono mostrati l'elenco
|
||
delle porte, il detection del sistema operativo né risultati di
|
||
version detection per quell'host.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--scan-delay <time></option>;
|
||
<option>--max-scan-delay <time></option> (Adjust delay
|
||
between probes)</term>
|
||
|
||
<listitem>
|
||
<para>Quest'opzione obbliga Nmap ad aspettare almeno il tempo
|
||
indicato tra i probe inviati ad un determinato host. Questo
|
||
risulta particolarmente utile nel caso di limitazioni sulla
|
||
frequenza dell'invio ("rate limiting"). Tra gli altri, in
|
||
particolare le macchine Solaris in genere rispondono a
|
||
scansioni UDP con un solo messaggio ICMP al secondo. Qualsiasi
|
||
altro probe inviato da Nmap durante questo intervallo di tempo
|
||
sarebbe quindi sprecato. Un valore di
|
||
<option>--scan-delay</option> di 1s manterrà Nmap al di sotto
|
||
di questa particolare frequenza di invio di probe. Nmap
|
||
comunque cercherà di capire eventuali limiti sulla frequenza e
|
||
modificherà i ritardi sui probe di conseguenza, tuttavia non è
|
||
cattiva abitudine specificarlo sulla linea di comando quando
|
||
dovesse essere noto a priori il valore ottimale.</para>
|
||
|
||
<para>Quando Nmap aumenta lo scan delay in base al rate
|
||
limiting, la scansione rallenta drammaticamente. L'opzione
|
||
<option>--max-scan-delay</option> indica il valore massimo di
|
||
delay che Nmap può adottare. Un valore basso di quest'opzione
|
||
può velocizzare Nmap, ma ci sono dei rischi: settarlo troppo
|
||
basso può portare a ritrasmissioni inutili e una possibile
|
||
perdita di dati da porte che hanno rate limiting molto
|
||
ridotti.</para>
|
||
|
||
<para>Un altro uso dell'opzione<option>--scan-delay</option>
|
||
è quello in cui si desidera evitare sistemi anti-intrusione
|
||
(IDS/IPS, "intrusion-detection" e "intrusion-prevention
|
||
system"). Questa tecnica viene utilizzata nella sezione
|
||
<quote><ulink
|
||
url="https://nmap.org/book/firewalls.html#defeating-ids-snort-portscan">
|
||
A practical example: bypassing default Snort 2.2.0
|
||
rules</ulink></quote> per vincere il port scanner detector di
|
||
default in Snort IDS. Molti altri IDS possono essere sconfitti
|
||
con questo sistema.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--min-rate <number></option>;
|
||
<option>--max-rate <number></option> (Directly control the
|
||
scanning rate)</term>
|
||
|
||
<listitem>
|
||
<para>Il timing dinamico di Nmap fa un buon lavoro trovando una
|
||
velocità adeguata a ciò che si sta scansionando. Alle volte,
|
||
però, può succedere di conoscere uno scanning rate appropriato
|
||
per quella determinata rete, oppure bisogna finire una
|
||
scansione in un tempo preciso. O forse si vuole impedire ad
|
||
Nmap di scansionare troppo velocemente. Le opzioni
|
||
<option>--min-rate</option> e <option>--max-rate</option> sono
|
||
state create proprio per queste situazioni.</para>
|
||
|
||
<para>Quando viene definita l'opzione
|
||
<option>--min-rate</option> Nmap farà del suo meglio per
|
||
inviare i pacchetti non al di sotto del limite di frequenza
|
||
impostato. L'argomento è un numero reale positivo che
|
||
rappresenta la frequenza di invio dei pacchetti in
|
||
pacchetti/secondo. Per esempio, indicando
|
||
<option>--min-rate 300</option> significa che Nmap proverà a
|
||
mantenere una frequenza di invio di almeno 300 pacchetti al
|
||
secondo. Quest'opzione non impedisce ad Nmap di aumentare la
|
||
frequenza se le condizioni lo permettono.</para>
|
||
|
||
<para>Viceversa, <option>--max-rate</option> forza la
|
||
frequenza di invio dandogli un limite massimo. Utilizzare
|
||
<option>--max-rate 100</option>, ad esempio, per limitare
|
||
l'invio a 100 pacchetti al secondo su una rete veloce. Usare
|
||
<option>--max-rate 0.1</option> per una scansione lenta, un
|
||
pacchetto ogni dieci secondi. Entrambe le opzioni
|
||
<option>--min-rate</option> e <option>--max-rate</option>
|
||
mantengono la frequenza all'interno del range
|
||
specificato.</para>
|
||
|
||
<para>Queste due opzioni sono globali, hanno effetto cioè
|
||
sull'intera scansione, non sugli host individuali. Vanno ad
|
||
agire sui port scan e gli host discovery. Altre feature, come
|
||
l'OS detection, hanno le loro opzioni di timing.</para>
|
||
|
||
<para>Ci sono due casi in cui la frequenza potrebbe
|
||
scendere sotto il minimo richiesto. Il primo è impostare la
|
||
frequenza minima più alta di quanto Nmap riesca ad inviare, il
|
||
che dipende dall'hardware in uso. In questo casto Nmap invierà
|
||
i pacchetti il più velocemente possibile, ma bisogna comunque
|
||
essere consapevoli che ciò potrebbe causare un calo
|
||
dell'affidabilità. Il secondo caso è quando Nmap non ha nulla
|
||
da inviare, ad esempio alla fine di uno scan quando gli ultimi
|
||
probe sono stati inviati ed Nmap sta aspettando una risposta
|
||
o che vadano in time out. È normale che lo scanning rate cali
|
||
alla fine di una scansione o tra hostgroups. La frequenza di
|
||
invio potrebbe inoltre superare temporaneamente il massimo
|
||
prefissato, per far fronte a delay improvvisi, ma nella media
|
||
rimarrà comunque entro i limiti.</para>
|
||
|
||
<para>Specificare un rate minimo, è una cosa da fare con
|
||
attenzione. Effettuare una scansione più velocemente di quanto
|
||
una rete possa supportare potrebbe portare a risultati
|
||
inaffidabili. In alcuni casi, una frequenza troppo alta può
|
||
portare ad un scansione <emphasis>più lenta</emphasis> rispetto
|
||
ad una scansione con un rate più basso. Questo perché
|
||
l'algoritmo <ulink
|
||
url="https://nmap.org/book/scan-methods.html#scan-methods-adaptive-retransmission">adaptive
|
||
retransmission</ulink> di Nmap potrebbe rilevare una
|
||
congestione della rete causata da un eccessivo scanning rate e
|
||
aumentare il numero di ritrasmissioni per mantenere una certa
|
||
affidabilità. Quindi anche se i pacchetti verranno inviati
|
||
velocemente, ne verranno comunque inviati di più. Limitare il
|
||
numero massimo ritrasmissioni con l'opzione
|
||
<option>--max-retries</option> se si deve rispettare un tempo
|
||
massimo per la scansione totale.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--defeat-rst-ratelimit</option></term>
|
||
<listitem>
|
||
<para>Molti host usano da tempo delle funzionalità di "rate
|
||
limiting" (limitazioni alla frequenza) per ridurre il numero di
|
||
messaggi di errore ICMP che mandano (ad esempio gli errori
|
||
"port-unreachable"). Alcuni sistemi hanno iniziato ad applicare
|
||
le stesse tecniche all'invio di pacchetti RST (reset). Queste
|
||
tecniche possono rallentare di molto Nmap poiché esso
|
||
continuerà a calibrare la gestione dei timing per gestire
|
||
queste limitazioni di frequenza. Si può quindi indicare a Nmap
|
||
di ignorare questi rate limits (per i port scan come il SYN
|
||
scan, che <emphasis>non</emphasis> considerano le porte
|
||
silenziose come <literal moreinfo="none">aperte</literal>)
|
||
mediante l'opzione
|
||
<option>--defeat-rst-ratelimit</option>.</para>
|
||
|
||
<para>L'utilizzo di quest'opzione può ridurre la precisione di
|
||
uno scan, poiché alcune porte potrebbero restituire uno stato
|
||
di non-risposta perché Nmap non è rimasto in attesa abbastanza
|
||
a lungo a causa di meccanismi di rate-limiting dei pacchetti
|
||
RST. Con una scansione di tipo SYN le porte "mute" (dalle quali
|
||
non si è ricevuto un RST) in questo caso vengono indicate con
|
||
<literal moreinfo="none">filtered</literal> piuttosto che
|
||
<literal moreinfo="none">closed</literal>. Quest'opzione è
|
||
utile solo quando si è interessati alle porte aperte, e la
|
||
distinzione tra porte <literal moreinfo="none">closed</literal>
|
||
e <literal moreinfo="none">filtered</literal> non è di alcun
|
||
interesse rispetto al tempo che richiede.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--nsock-engine
|
||
epoll|kqueue|poll|select</option>
|
||
</term>
|
||
<listitem>
|
||
<para>Forza l'utilizzo di un determinato "nsock IO multiplexing
|
||
engine". Solo per il "<option>select(2)</option>-based fallback
|
||
engine" viene garantita la compatibilità con il sistema in uso.
|
||
Gli engine vengono dichiarati dopo il nome del "IO management
|
||
facility" cui fanno riferimento. Gli engine attualmente
|
||
implementati sono <literal moreinfo="none">epoll</literal>,
|
||
<literal moreinfo="none">kqueue</literal>, <literal
|
||
moreinfo="none">poll</literal> e <literal
|
||
moreinfo="none">select</literal>, ma non saranno tutti presenti
|
||
su tutte le piattaforme. Utilizzare <command
|
||
moreinfo="none">nmap -V</command> per sapere quali engine sono
|
||
supportati.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-T
|
||
<paranoid|sneaky|polite|normal|aggressive|insane></option>
|
||
(Set a timing template)</term>
|
||
|
||
<listitem>
|
||
<para>Mentre le opzioni mostrate nella precedente sezione sono
|
||
molto utili ed efficaci alcuni potrebbero trovarle troppo
|
||
complicate da usare. Inoltre, la scelta dei valori più
|
||
appropriati può a volte richiedere più tempo della scansione
|
||
stessa che si sta cercando di ottimizzare. Nmap offre quindi un
|
||
approccio più semplice mediante sei "timing templates", ovvero
|
||
opzioni pre-impostate per regolare l'aggressività della
|
||
scansione. Esse si specificano mediante l'opzione
|
||
<option>-T</option> seguita dal numero del template
|
||
corrispondente o dal suo nome. Essi sono: paranoico (0),
|
||
furtivo (1), educato (2), normale (3), aggressivo (4) e
|
||
folle (5). I primi due vengono usati per evitare i sopracitati
|
||
sistemi anti-intrusione (IDS). La modalità "gentile" rallenta
|
||
la scansione in modo da usare meno banda e risorse sulla
|
||
macchina bersaglio. La modalità "normale" è di default
|
||
(e pertanto l'opzione <option>-T3</option> non modifica nulla).
|
||
La modalità "aggressiva" incrementa la velocità assumendo che
|
||
si è su una rete veloce ed affidabile. Infine la modalità
|
||
"folle" dà per scontato che si è su una rete estremamente
|
||
veloce ed affidabile o che si vuole sacrificare l'accuratezza
|
||
in nome della velocità.</para>
|
||
|
||
<para>Questi template consentono all'utente di specificare
|
||
quanto aggressivi si desidera essere, lasciando al tempo stesso
|
||
a Nmap il compito di scegliere i valori più appropriati.
|
||
I template inoltre effettuano piccoli aggiustamenti sui timing
|
||
per i quali non esistono opzioni che ne consentono il
|
||
controllo. Ad esempio, l'opzione <option>-T4</option> impedisce
|
||
al ritardo dinamico per una scansione di andare al di sotto
|
||
della soglia dei 10 millisecondi per le porte TCP, e l'opzione
|
||
<option>-T5</option> limita questo valore a 5 millisecondi. I
|
||
template possono essere usati insieme a controlli più precisi
|
||
a patto che il template venga specificato per primo.
|
||
Altrimenti i valori impostati dal template potrebbero
|
||
sovrascrivere quelli specificati dall'utente. Si raccomanda di
|
||
usare l'opzione <option>-T4</option> nel caso in cui si
|
||
desideri effettuare scansioni di reti abbastanza recenti e
|
||
affidabili; inoltre è consigliabile mantenere quell'opzione
|
||
(intesa come inserita all'inizio dei comandi) anche qualora si
|
||
dovessero aggiungere controlli più precisi in modo da
|
||
beneficiare da tutti i piccoli miglioramenti che dovessero
|
||
intervenire.</para>
|
||
|
||
<para>Se la propria connessione è a banda larga o di tipo
|
||
ethernet, si raccomanda di usare sempre l'opzione
|
||
<option>-T4</option>. Alcuni prediligono anche l'opzione
|
||
<option>-T5</option>, nonostante per i più sia troppo
|
||
aggressiva. Altri a volte usano l'opzione <option>-T2</option>
|
||
perché credono che sia meno propensa a mandare in crash un
|
||
host o perché si considerano persone educate. Spesso essi non
|
||
si rendono conto di quanto è lenta l'opzione <option>-T
|
||
polite</option>; una scansione di questo tipo può impiegare
|
||
anche dieci volte il tempo richiesto per una scansione di
|
||
default. Crash di host e problemi di banda sono rari con le
|
||
opzioni di timing di default (opzione <option>-T3</option>) e
|
||
pertanto è l'opzione consigliata a chi deve effettuare
|
||
scansioni senza dare troppo nell'occhio. Omettere una
|
||
scansione di tipo version detection è molto più efficiente
|
||
del giocare con i valori di timing per ridurre i problemi
|
||
sopracitati.</para>
|
||
|
||
<para>Mentre le opzioni <option>-T0</option> e
|
||
<option>-T1</option> potrebbero essere utili per evitare gli
|
||
allarmi di un IDS, esse richiederanno un tempo estremamente
|
||
lungo per portare a termine una scansione di migliaia di host o
|
||
di porte. In una situazione di questo tipo si suggerisce di
|
||
lavorare sui valori esatti di timing richiesti piuttosto che
|
||
avvalersi delle opzioni preimpostate nelle opzioni
|
||
<option>-T0</option> e <option>-T1</option>.</para>
|
||
|
||
<para>Gli effetti principali dell'opzione <option>T0</option>
|
||
sono quello di serializzare la scansione in modo da affrontare
|
||
una sola porta alla volta, e al tempo stesso quello di
|
||
attendere cinque minuti tra l'invio di un probe e il
|
||
successivo. Le opzioni <option>T1</option> e
|
||
<option>T2</option> sono simili ma attendono rispettivamente
|
||
15 secondi e 0.4 secondi tra un probe e l'altro. L'opzione
|
||
<option>T3</option> è il comportamento di default di Nmap
|
||
(che include il parallelismo). L'opzione <option>T4</option>
|
||
ha lo stesso risultato dell'impostare
|
||
<option>--max-rtt-timeout 1250ms --initial-rtt-timeout
|
||
500ms --max-retries 6</option> e di impostare il ritardo
|
||
massimo per una scansione TCP a 10 millisecondi. Infine
|
||
l'opzione <option>T5</option> è equivalente a
|
||
<option>--max-rtt-timeout 300ms --min-rtt-timeout 50ms
|
||
--initial-rtt-timeout 250ms --max-retries 2 --host-timeout
|
||
15m</option> e ad impostare il massimo ritardo TCP (maximum
|
||
delay) a 5 millisecondi.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-bypass-firewalls-ids">
|
||
<title>Bypassing e Spoofing di Firewall e Intrusion Detection System
|
||
(Firewall/IDS Evasion and Spoofing)</title>
|
||
|
||
<para>Tanti pionieri dell'epoca di Internet immaginarono una rete
|
||
globale aperta con uno spazio di indirizzi IP universale, che
|
||
potesse consentire connessioni virtuali tra qualsiasi coppia di
|
||
nodi. Questo permette ad ogni host di diventare allo stesso tempo
|
||
fruitore e fornitore di informazioni da e per l'altro. Chiunque
|
||
poteva accedere dal lavoro a tutti i propri sistemi di casa,
|
||
regolando il termostato o aprendo la porta per un visitatore che
|
||
dovesse arrivare in anticipo. Questa visione di connettività
|
||
universale è stata soffocata da carenze nello spazio di
|
||
indirizzamento e da preoccupazioni legate alla sicurezza. Nei primi
|
||
anni novanta le compagnie iniziarono a sviluppare firewall con lo
|
||
scopo di ridurre la connettività. Enormi reti vennero tagliate
|
||
fuori dall'Internet non filtrato da application proxy, NAT (Network
|
||
Address Translation) e packet filter (filtri di pacchetto). Il
|
||
flusso incontrollato delle informazioni lasciò il posto a regole
|
||
stringenti sui canali di comunicazione approvati e sul contenuto che
|
||
può transitare su di essi.</para>
|
||
|
||
<para>Ostruzioni di rete come i firewall possono rendere la stesura
|
||
della topografia di una rete un lavoro fin troppo difficile. E non
|
||
migliorerà mai, perché limitare le differenze che permettono di
|
||
distinguere tra un apparecchio e un altro è spesso lo scopo
|
||
primario nella loro costruzione. Nondimeno, Nmap offre molte
|
||
caratteristiche che possono aiutare a capire tali reti complesse e a
|
||
verificare che i filtri impostati stiano funzionando come previsto.
|
||
Nmap include anche meccanismi per effettuare il bypassing di difese
|
||
poco robuste o mal implementate. Uno dei migliori metodi per capire
|
||
quant'è sicura la propria rete è proprio il cercare di forzarla.
|
||
Mettetevi nei panni di un attaccante, e usate le tecniche spiegate
|
||
in questa sezione contro le vostre reti. Lanciate una scansione "FTP
|
||
bounce", un "Idle scan", un "fragmentation attack", o provate a
|
||
entrare attraverso uno dei vostri proxy.</para>
|
||
|
||
<para>In aggiunta alle restrizioni delle attività di rete, le
|
||
aziende stanno sempre più tenendo sotto controllo il traffico con
|
||
sistemi anti-intrusione (IDS). La maggior parte di questi IDS è
|
||
configurato per accorgersi di una scansione di Nmap di default,
|
||
poiché molto spesso l'attacco segue direttamente la scansione.
|
||
Molti di questi strumenti inoltre si sono evoluti in sistemi di
|
||
<emphasis>prevenzione</emphasis> delle intrusioni (IPS, "intrusion
|
||
prevention systems") che bloccano attivamente tutto il traffico che
|
||
potrebbe essere nocivo. Sfortunatamente per gli amministratori di
|
||
rete e per i produttori di IDS, però, rilevare cattive intenzioni
|
||
analizzando semplicemente i dati contenuti nei pacchetti è un
|
||
problema difficile. Un attaccante con una buona dose di pazienza,
|
||
talento e l'aiuto di alcune opzioni di Nmap può generalmente
|
||
scavalcare un IDS senza esser visto. Allo stesso tempo un
|
||
amministratore ha a che fare con molti falsi positivi dovuti ad
|
||
intenzioni legittime che vengono erroneamente bloccati o per i quali
|
||
scattano allarmi.</para>
|
||
|
||
<para>Ogni tanto qualcuno suggerisce che Nmap non dovrebbe fornire
|
||
opzioni per bypassare regole di firewalling o per sgusciare oltre
|
||
agli IDS. Essi asseriscono che queste caratteristiche sono usate
|
||
più facilmente da attaccanti piuttosto che da amministratori
|
||
attenti alle problematiche di sicurezza. Il problema con questo tipo
|
||
di ragionamento è che tali metodi verrebbero comunque usati da
|
||
attaccanti che potrebbero semplicemente usare altri strumenti o
|
||
modificare Nmap per fare ciò che desiderano. E intanto un
|
||
amministratore si troverebbe a non aver strumenti per poter fare il
|
||
proprio lavoro correttamente. Sviluppare solo server FTP moderni e
|
||
con tutte le patch installate è un approccio molto migliore al
|
||
voler bloccare lo sviluppo e la distribuzione di strumenti che usano
|
||
l'attacco "FTP bounce".</para>
|
||
|
||
<para>Non esiste alcuna bacchetta magica (o opzione di Nmap) per
|
||
riconoscere o bypassare un firewall o un sistema anti-intrusione. È
|
||
un'attività che richiede talento ed esperienza. Una guida completa
|
||
esula dagli intenti di questa guida di riferimento, la quale elenca
|
||
solo le opzioni rilevanti e descrive ciò che fanno.</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><option>-f</option> (fragment packets);
|
||
<option>--mtu</option> (using the specified MTU)</term>
|
||
|
||
<listitem>
|
||
<para>L'opzione <option>-f</option> obbliga la scansione
|
||
(anche i ping scan) a usare pacchetti IP frammentati. L'idea di
|
||
base è quella di frammentare l'header TCP su più pacchetti, in
|
||
modo da rendere più difficile per un packet filter, per un IDS
|
||
o per altri fastidiosi strumenti simili il compito di capire
|
||
cosa sta succedendo. Si presti comunque la massima attenzione
|
||
nell'uso di questa opzione! Alcuni programmi hanno difficoltà a
|
||
gestire pacchetti di dimensione troppo piccola. Il vecchio tool
|
||
"Sniffit" andava in segmentation fault non appena riceveva il
|
||
primo frammento. Specificando quest'opzione una volta Nmap
|
||
dividerà i pacchetti in piccoli insiemi di al più 8 byte
|
||
ciascuno, inserendoli dopo l'header IP. In questo modo un
|
||
header TCP di 20 byte verrà diviso in tre pacchetti: due con
|
||
otto byte ciascuno e uno con i rimanenti quattro. E ovviamente
|
||
ogni frammento avrà un header IP. Specificando di nuovo
|
||
l'opzione <option>-f</option> si useranno insiemi di 16 byte
|
||
(riducendo così il numero di frammenti). In alternativa si può
|
||
indicare lo spiazzamento ("offset") desiderato mediante
|
||
l'opzione <option>--mtu</option>. Non si usi l'opzione
|
||
<option>-f</option> se si è usato <option>--mtu</option>.
|
||
L'offset dev'essere un multiplo di 8. Nonostante i pacchetti
|
||
frammentati non supereranno i packet filter e i firewall che
|
||
mantengono una coda di tutti i frammenti IP (come ad esempio le
|
||
macchine GNU/Linux che hanno l'opzione CONFIG_IP_ALWAYS_DEFRAG
|
||
impostata nel kernel), alcune reti tuttavia non possono
|
||
permettersi il calo di performance causato da troppi frammenti
|
||
e pertanto non avranno quell'opzione abilitata. Altri ancora
|
||
non possono abilitare quell'opzione perché i frammenti
|
||
potrebbero prendere direzioni differenti una volta all'interno.
|
||
Alcuni sistemi di origine dei dati deframmentano i pacchetti in
|
||
uscita nel kernel. Linux con il modulo ip_conntrack
|
||
("connection tracking module") è uno di questi. Si raccomanda
|
||
di effettuare la scansione mentre un packet sniffer (come
|
||
Wireshark) sta girando, in modo da avere la certezza che i
|
||
pacchetti inviati vengano effettivamente frammentati. Se il
|
||
proprio sistema operativo dovesse causare problemi in questo,
|
||
si usi l'opzione <option>--send-eth</option> per bypassare il
|
||
livello IP ed inviare direttamente frame Ethernet sul
|
||
cavo.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-D
|
||
<decoy1>[,<decoy2>][,ME][,...]</option>
|
||
(Cloak a scan with decoys)</term>
|
||
|
||
<listitem>
|
||
<para>Quest'opzione invoca una "decoy scan" (ovvero una
|
||
scansione utilizzando esche) che agli occhi dell'host di
|
||
destinazione apparirà come se provenisse dagli host
|
||
specificati come decoy. In questo modo l'IDS della rete
|
||
bersaglio mostrerà 5-10 port scan provenienti da indirizzi IP
|
||
singoli, e non potrà capire quale IP è veramente la sorgente
|
||
dell'attacco e quale IP è usato solo come mascheramento.
|
||
Nonostante quest'opzione possa essere resa inutile mediante il
|
||
tracciamento del percorso fatto dai router ("router path
|
||
tracing"), tecniche di response-dropping e altri meccanismi
|
||
attivi sono generalmente una tecnica effettiva per nascondere
|
||
il proprio indirizzo IP.</para>
|
||
|
||
<para>Gli host decoy vanno separati con una virgola; è inoltre
|
||
possibile usare il parametro <literal
|
||
moreinfo="none">ME</literal> come uno dei decoy per
|
||
rappresentare la posizione del proprio indirizzo IP. Se si pone
|
||
il parametro <literal moreinfo="none">ME</literal> nella sesta
|
||
posizione o ancora oltre, alcuni sensori di port scan (come
|
||
l'eccellente "Scanlogd" di Solar Designer) difficilmente
|
||
mostreranno il vostro indirizzo IP. Se non si dovesse usare il
|
||
parametro <literal moreinfo="none">ME</literal>, Nmap metterà
|
||
il vostro IP in una posizione a caso. Si può anche utilizzare
|
||
<option>RND</option> per generare un numero casuale di
|
||
indirizzi IP non riservati, oppure
|
||
<option>RND:<replaceable>number</replaceable></option> per
|
||
generare <replaceable>number</replaceable> indirizzi.</para>
|
||
|
||
<para>Si noti che gli host che vengono usati come decoy
|
||
dovrebbero essere attivi o si corre il rischio di creare un
|
||
"SYN flood" verso il proprio obiettivo. Inoltre diventerebbe
|
||
molto facile capire quale host è la causa della scansione, se
|
||
solo uno è attivo in una rete. È consigliabile usare
|
||
indirizzi IP al posto di nomi, per evitare che la rete dei
|
||
decoy individui i propri tentativi di risoluzione dei nomi nei
|
||
log dei propri DNS.</para>
|
||
|
||
<para>I decoy vengono usati sia nel "ping scan" iniziale
|
||
(indipendentemente dal fatto che si usi ICMP, SYN, ACK, ecc.)
|
||
sia durante la fase di port scanning effettiva. Infine i decoy
|
||
vengono usati durante l'OS detection remoto (opzione
|
||
<option>-O</option>). L'utilizzo dei decoy non è valido con
|
||
scansioni di tipo version detection o scansioni di tipo TCP
|
||
connect. Quando si hanno degli scan delay, il ritardo viene
|
||
applicato ad ogni blocco di probe, non ad ogni singolo probe.
|
||
Dato che i decoy vengono inviati tutti in una volta, potrebbero
|
||
temporaneamente violare i limiti di controllo sulla
|
||
congestione.</para>
|
||
|
||
<para>Inutile bisogna ricordare che l'uso di troppi decoy può
|
||
rallentare la propria scansione e potenzialmente renderla meno
|
||
accurata. Inoltre, alcuni ISP ("Internet Service Providers")
|
||
potrebbero filtrare i pacchetti "spoofed" (falsificati), anche
|
||
se molti non operano alcun tipo di azione su questi
|
||
ultimi.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-S <IP_Address></option> (Spoof source
|
||
address)</term>
|
||
|
||
<listitem>
|
||
<para>In talune circostanze Nmap potrebbe non essere in grado
|
||
di determinare il proprio indirizzo sorgente (in questi casi
|
||
Nmap avvertirà della problematica). Se così fosse si può
|
||
usare l'opzione <option>-S</option> seguita dall'indirizzo IP
|
||
dell'interfaccia che si vuole usare per inviare
|
||
pacchetti.</para>
|
||
|
||
<para>Un altro possibile uso di quest'opzione potrebbe essere
|
||
per falsificare (spoof) la scansione per far credere al
|
||
bersaglio che <emphasis>qualcun altro</emphasis> li sta
|
||
prendendo di mira e sta effettuando una scansione su di loro.
|
||
Si immagini solo cosa potrebbe succedere se un'azienda si
|
||
accorgesse di essere preda di port scan da parte dei propri
|
||
concorrenti! L'opzione <option>-e</option> è in genere
|
||
richiesta per questo particolare utilizzo, e si consiglia
|
||
anche di usare <option>-Pn</option>. Da notare che così facendo
|
||
solitamente non si ricevono i pacchetti di risposta, saranno
|
||
infatti inviati all'indirizzo IP fasullo; Nmap di conseguenza
|
||
produrrà dei report inutili.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-e <interface></option> (Use specified
|
||
interface)</term>
|
||
|
||
<listitem>
|
||
<para>Indica a Nmap quale interfaccia di rete usare per inviare
|
||
e ricevere pacchetti. Nmap dovrebbe essere in grado di capire
|
||
autonomamente quale usare, ma nel caso non sia possibile vi
|
||
avvertirà.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--source-port <portnumber>; -g
|
||
<portnumber></option> (Spoof source port number)</term>
|
||
|
||
<listitem>
|
||
<para>Un errore di configurazione sorprendentemente comune è
|
||
quello di fidarsi del traffico di rete basandosi solo sulla
|
||
porta di origine. È facile capire come può succedere: un
|
||
amministratore configura un firewall nuovo fiammante per poi
|
||
ritrovarsi sommerso dalle lamentele degli utenti ingrati le cui
|
||
applicazioni hanno smesso di funzionare. Ad esempio le query
|
||
DNS possono non funzionare più perché le risposte (sotto forma
|
||
di pacchetti UDP) provenienti da server esterni non possono più
|
||
entrare nella rete. Anche l'FTP è un esempio piuttosto comune:
|
||
nei trasferimenti di dati attivi (opposti a quelli di tipo
|
||
"passive FTP") il server remoto cerca di stabilire una
|
||
connessione diretta con il client per trasferire i file
|
||
richiesti.</para>
|
||
|
||
<para>Esistono soluzioni sicure a questi problemi, spesso nella
|
||
forma di proxy a livello di applicazione o moduli del firewall
|
||
che fanno parsing del protocollo. Sfortunatamente ci sono anche
|
||
soluzioni facili ma insicure. Ad esempio, notando che le
|
||
risposte alle query DNS arrivano dalla porta 53 e i transfer
|
||
FTP "active" provengono dalla porta 20, tanti amministratori
|
||
fanno l'errore di lasciar passare il traffico proveniente da
|
||
queste porte. Essi spesso danno per scontato che nessun
|
||
attaccante potrebbe accorgersi di questi buchi di sicurezza e
|
||
approfittarne. In altri casi un amministratore può considerare
|
||
questa soluzione una misura temporanea fino a quando non
|
||
implementerà una soluzione migliore e più sicura e poi si
|
||
dimentica di farlo.</para>
|
||
|
||
<para>Gli amministratori di rete con troppe cose da fare non
|
||
sono gli unici a commettere questi errori. Molti prodotti sono
|
||
venduti con queste regole insicure; anche Microsoft è
|
||
colpevole. I filtri IPSec, parte di Windows 2000 e Windows XP,
|
||
contengono una regola implicita che permette il passaggio di
|
||
tutto il traffico proveniente dalla porta 88 (Kerberos). Un
|
||
altro caso ben conosciuto è quello di Zone Alarm Personal
|
||
Firewall (fino alla versione 2.1.25): esso permetteva
|
||
l'ingresso nel sistema a qualsiasi pacchetto UDP che avesse
|
||
come porta di origine la 53 (DNS) o 67 (DHCP).</para>
|
||
|
||
<para>Nmap offre le opzioni (equivalenti) <option>-g</option> e
|
||
<option>--source-port</option> per sfruttare queste debolezze.
|
||
Basta fornire un numero di porta e Nmap manderà pacchetti da
|
||
questa porta quando possibile. La maggior parte delle scansioni
|
||
TCP, incluse le scansioni SYN e UDP, supportano quest'opzione.
|
||
Tuttavia Nmap deve usare numeri di porta diversi per alcuni
|
||
test di OS detection perché essi funzionino a dovere; anche le
|
||
richieste DNS, i TCP connect scan, i version detection e gli
|
||
script scanning ignorano l'opzione
|
||
<option>--source-port</option> poiché Nmap si appoggia alle
|
||
librerie di sistema per gestirle.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--data <hex string></option> (Append custom
|
||
binary data to sent packets)</term>
|
||
|
||
<listitem>
|
||
<para>Quest'opzione permette di includere valori binari come
|
||
dati nei pacchetti da inviare.
|
||
<replaceable>hex string</replaceable> può avere uno dei
|
||
seguenti formati: <option>0xAABBCCDDEEFF<...></option>,
|
||
<option>AABBCCDDEEFF<...></option> o
|
||
<option>\xAA\xBB\xCC\xDD\xEE\xFF<...></option>. Alcuni
|
||
esempi sono <option>--data 0xdeadbeef</option> e <option>--data
|
||
\xCA\xFE\x09</option>. Da notare che se si indica un valore
|
||
come <option>0x00ff</option> nessuna conversione dell'ordine
|
||
dei byte viene effettuata. Fare in modo che l'informazione
|
||
indicata arrivi al destinatario con l'ordine dei byte che si
|
||
aspetta.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--data-string <string></option> (Append
|
||
custom string to sent packets)</term>
|
||
|
||
<listitem>
|
||
<para>Quest'opzione permette di inviare una stringa come dati
|
||
nei pacchetti da inviare. <replaceable>string</replaceable> può
|
||
contenere qualsiasi stringa. Si noti comunque che alcuni
|
||
caratteri dipendono dal sistema in uso e il ricevente potrebbe
|
||
non ricevere la stessa informazione. Inoltre accertarsi di aver
|
||
racchiuso la string tra apici doppi ("") e di marcare con il
|
||
carattere di escape tutti i caratteri speciali interpretati
|
||
dalla shell. Alcuni esempi: <option>--data-string "Scan
|
||
conducted by Security Ops, extension 7192"</option> oppure
|
||
<option>--data-string "Ph34r my l33t skills"</option>.
|
||
Tenere a mente che nessuno può effettivamente vedere i commenti
|
||
lasciati da quest'opzione, a meno che non si stia monitorando
|
||
attentamente la rete con uno sniffer o delle regole IDS
|
||
personalizzate.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--data-length <number></option> (Append
|
||
random data to sent packets)</term>
|
||
|
||
<listitem>
|
||
<para>In genere Nmap invia pacchetti nella dimensione più
|
||
piccola possibile, contenenti soltanto l'header. Quindi i
|
||
pacchetti TCP sono in genere di 40 byte e le richieste ICMP
|
||
echo di 28 byte. Alcuni porte UDP e protocolli IP danno un
|
||
carico dati personalizzato di default. Quest'opzione indica a
|
||
Nmap di aggiungere un certo numero di byte casuali a quasi
|
||
tutti i pacchetti che invia e di non usare i valori specifici
|
||
del protocollo (Usare <option>--data-length 0</option> per
|
||
nessun valore random e nessun valore specifico del protocollo).
|
||
I pacchetti di OS detection (<option>-O</option>) tuttavia non
|
||
vengono modificati, perché la precisione in essi richiede una
|
||
certa consistenza nell'invio dei probe; in ogni modo quasi
|
||
tutte le opzioni di ping e portscan supportano questa modalità.
|
||
Essa rallenta leggermente le performance ma ne può risultare
|
||
una scansione più accurata.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--ttl <value></option> (Set IP time-to-live
|
||
field)</term>
|
||
|
||
<listitem>
|
||
<para>Imposta il campo time-to-live (tempo di vita del pacchetto
|
||
IPv4) al valore richiesto.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--randomize-hosts</option> (Randomize target host
|
||
order)</term>
|
||
|
||
<listitem>
|
||
<para>Quest'opzione indica a Nmap di rimescolare l'ordine di
|
||
scansione di ogni gruppo di host (fino a 16384) prima di iniziare
|
||
la scansione. Questo può nascondere le scansioni a vari sistemi di
|
||
network monitoring, specialmente quando è affiancato a opzioni di
|
||
rallentamento ("slow timing"). Se si desidera un random su gruppi
|
||
di dimensione maggiore, è necessario incrementare la direttiva
|
||
PING_GROUP_SZ in <filename moreinfo="none">nmap.h</filename> e
|
||
ricompilare l'applicativo. Una soluzione alternativa potrebbe
|
||
essere quella di generare una lista degli IP sui quali effettuare
|
||
lo scan mediante un list scan (opzione <option>-sL -n -oN
|
||
<replaceable>filename</replaceable></option>), randomizzarla con
|
||
uno script Perl e passare la lista a Nmap con l'opzione
|
||
<option>-iL</option>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--spoof-mac <MAC address, prefix, or vendor
|
||
name></option> (Spoof MAC address)</term>
|
||
|
||
<listitem>
|
||
<para>Richiede ad Nmap di usare l'indirizzo hardware (MAC) per
|
||
tutti i frame ethernet raw che invia. Quest'opzione implica
|
||
<option>--send-eth</option> per garantire che Nmap invii di fatto
|
||
pacchetti a livello ethernet. Il MAC può essere specificato in vari
|
||
formati: nel caso in cui sia semplicemente il numero "0", Nmap
|
||
sceglie un MAC completamente random per la sessione. Se la stringa
|
||
è un numero pari di simboli esadecimali (con le coppie separate
|
||
eventualmente dal simbolo di due punti), Nmap userà questo come
|
||
MAC. Se dovessero essere specificate meno di 12 cifre decimali,
|
||
Nmap riempirà il resto dei 6 byte con valori casuali. Se
|
||
l'argomento non è ne uno zero ne una stringa esadecimale, Nmap
|
||
cercherà nel file <filename
|
||
moreinfo="none">nmap-mac-prefixes</filename> per cercare il nome di
|
||
un produttore contenente la stringa indicata (senza distinguere tra
|
||
maiuscole e minuscole). Se trova una corrispondenza, Nmap userà la
|
||
parte OUI del produttore (il prefisso di 3 byte) e riempirà i
|
||
restanti 6 byte in maniera casuale. Esempi validi dell'uso di
|
||
<option>--spoof-mac</option> sono <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>, e <literal
|
||
moreinfo="none">Cisco</literal>. Quest'opzione ha effetto solo sui
|
||
pacchetti raw, come nei SYN scan o negli OS detection, non sulle
|
||
feature "connection-oriented", come i version detection o
|
||
l'NSE.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--proxies <Comma-separated list of proxy
|
||
URLs></option> (Relay TCP connections through a chain of
|
||
proxies)</term>
|
||
|
||
<listitem>
|
||
<para>Richiede ad Nmap ti stabilire connessioni TCP con l'obiettivo
|
||
attraverso una catena di uno o più proxy HTTP o SOCKS4. I proxy
|
||
possono aiutare a nascondere il sorgente reale di una scansione o
|
||
evadere certe restrizioni dei firewall, ma fanno calare la
|
||
performance della scansione aumentando la latenza. Si potrebbe,
|
||
di conseguenza, dover modificare i timeout di Nmap o altri
|
||
parametri di scansione; in particolar modo, un
|
||
<option>--max-parallelism</option> più basso potrebbe aiutare dato
|
||
che alcuni proxy non gestiscono diverse connessioni contemporanee,
|
||
come invece fa Nmap di default.</para>
|
||
|
||
<para>Quest'opzione riceve una lista di proxy come argomento,
|
||
espressa come URL nel formato <literal
|
||
moreinfo="none">proto://host:port</literal>. Utilizzare la virgola
|
||
come separatore di URL in una catena. È anche supportata la
|
||
non autenticazione. I protocolli sono HTTP e SOCKS4.</para>
|
||
|
||
<para>Attenzione: questa feature è ancora in fase di sviluppo ed
|
||
ha alcune limitazioni. È implementata con la libreria nsock e
|
||
quindi non ha effetto sui ping, i port scanning e la fase di OS
|
||
detection di una scansione. Solo l'NSE e i version scan ne traggono
|
||
beneficio finora, altre funzionalità potrebbero rivelare il
|
||
proprio vero indirizzo. Le connessioni SSL non sono ancora
|
||
supportate, così come la risoluzione DNS proxy-side (gli hostname
|
||
vengono sempre risolti da Nmap).</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--badsum</option> (Send packets with bogus TCP/UDP
|
||
checksums)</term>
|
||
|
||
<listitem>
|
||
<para>Richiede ad Nmap di usare un checksum TCP o UDP non valido per
|
||
i pacchetti inviati alla macchina di destinazione. Poiché
|
||
teoricamente tutti gli stack IP degli host finiranno per ignorare
|
||
questi pacchetti, qualunque risposta ricevuta dovrà per forza
|
||
provenire da un firewall o da un Intrusion Detection System (IDS)
|
||
che non si preoccupa di verificare il checksum. Per maggiori
|
||
informazioni su questa tecnica, si consulti <ulink
|
||
url="https://nmap.org/p60-12.txt"/>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--adler32</option> (Use deprecated Adler32 instead of
|
||
CRC32C for SCTP checksums)</term>
|
||
|
||
<listitem>
|
||
<para>Richiede ad Nmap di usare l'algoritmo deprecato Adler32 per
|
||
calcolare il checksum SCTP. se <option>--adler32</option> non
|
||
viene impostato, viene usato CRC-32C (Castagnoli). L'<ulink
|
||
url="http://www.rfc-editor.org/rfc/rfc2960.txt">RFC 2960</ulink>
|
||
originariamente definisce Adler32 come l'algoritmo di checksum per
|
||
SCTP; L' <ulink
|
||
url="http://www.rfc-editor.org/rfc/rfc4960.txt">RFC 4960</ulink>
|
||
successivamente ha ridefinito il checksum SCTP specificando l'uso
|
||
di CRC-32C. Le implementazioni attuali SCTP dovrebbero
|
||
utilizzare CRC-32C, ma allo scopo di suscitare risposta dalle più
|
||
datate, è preferibile usare Adler32.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-output">
|
||
<title>Output</title>
|
||
|
||
<para>Qualunque tool di sicurezza è utile quanto l'output che esso stesso
|
||
genera. Test e algoritmi complessi sono di scarsa importanza se non
|
||
presentati in modo comprensibile e ben organizzato. Dato il grande numero
|
||
di modi in cui Nmap viene usato dagli utenti e da altro software, un
|
||
singolo formato non potrebbe soddisfare tutti. Per questo motivo Nmap
|
||
offre molti formati, inclusa la modalità interattiva per la lettura
|
||
diretta degli utenti, e il formato XML per rendere l'output facilmente
|
||
interpretabile dal software.</para>
|
||
|
||
<para>Inoltre per offrire differenti formati di output, Nmap fornisce
|
||
opzioni per il controllo della verbosità dell'output, come anche dei
|
||
messaggi di debugging. I tipi di output possono essere mandati allo
|
||
standard output o a files, ai quali Nmap può accodare o sovrascrivere il
|
||
contenuto. I files di output possono anche essere usati per ripristinare
|
||
scansioni precedentemente annullate.</para>
|
||
|
||
<para>Nmap rende l'output disponibile in cinque formati differenti. Il
|
||
formato predefinito è chiamato <literal moreinfo="none">interactive
|
||
output</literal>, e viene mandato allo standard output (stdout). Poi si
|
||
ha il <literal moreinfo="none">normal output</literal>, simile
|
||
all'interactive ad eccezione del fatto che mostra meno informazioni di
|
||
runtime e warnings, dal momento che si suppone che dovrà essere
|
||
analizzato dopo il completamento della scansione, piuttosto che
|
||
interattivamente.</para>
|
||
|
||
<para>L'<literal moreinfo="none">XML output</literal> è uno dei tipi di
|
||
output più importanti, dal momento che può essere convertito in HTML,
|
||
interpretato con facilità dai programmi (come ad esempio le interfacce
|
||
grafiche di Nmap) o importato in un database.</para>
|
||
|
||
<para>I rimanenti due tipi di output sono il semplice <literal
|
||
moreinfo="none">grepable output</literal>, che include la maggior parte
|
||
delle informazioni su un obiettivo in una linea singola, e lo <literal
|
||
moreinfo="none">sCRiPt KiDDi3 0utPUt</literal> per gli utenti che si
|
||
considerano |<-r4d.</para>
|
||
|
||
<para>Mentre l'output interattivo è quello predefinito e non ha opzioni
|
||
da linea di comando associate, gli altri quattro formati usano una
|
||
sintassi comune. Ricevono un argomento, il nome del file nel quale i
|
||
risultati dovranno essere scritti. Possono essere specificati formati
|
||
multipli, ma ogni formato può essere specificato solo una volta. Per
|
||
esempio si potrebbe voler salvare il normal output per le proprie
|
||
revisioni e nel mentre salvare l'XML per l'analisi programmatica. Ciò si
|
||
potrebbe realizzare con le opzioni <option>-oX myscan.xml -oN
|
||
myscan.nmap</option>. Questo capitolo usa per brevità dei nomi semplici
|
||
come <literal moreinfo="none">myscan.xml</literal>, ma sono generalmente
|
||
consigliati nomi più descrittivi. I nomi scelti sono un problema di
|
||
preferenza personale, anche se è solito usarne di lunghi che incorporano
|
||
la data della scansione e un paio di parole che descrivano la scansione,
|
||
messi in una directory chiamata come l'azienda che si sta
|
||
scansionando.</para>
|
||
|
||
<para>Mentre queste opzioni salvano i risultati su files, Nmap mostra
|
||
anche l'output interattivo in standard output come sempre. Per esempio,
|
||
il comando <command moreinfo="none">nmap -oX myscan.xml target</command>
|
||
stampa XML dentro <filename moreinfo="none">myscan.xml</filename> e
|
||
scrive in standard output gli stessi risultati interattivi che avrebbe
|
||
stampato se <option>-oX</option> non fosse stata specificata. Si può
|
||
cambiare questo comportamento passando un trattino ("-") come argomento
|
||
di un tipo di formato. Questo fa si che Nmap disattivi l'output
|
||
interattivo e stampi il risultato nel formato che specificato nello
|
||
stream dello standard output. Così il comando <command
|
||
moreinfo="none">nmap -oX - target</command> manderà in stdout soltanto
|
||
l'output XML. Gli errori gravi possono comunque essere mostrati sullo
|
||
stream di standard error (stderr).</para>
|
||
|
||
<para>A differenza di alcuni argomenti di Nmap, lo spazio tra l'opzione
|
||
di log (ad esempio <option>-oX</option>) e il nome del file o il
|
||
trattino, è obbligatorio. Se si omettono le opzioni e si danno argomenti
|
||
come <option>-oG-</option> o <option>-oXscan.xml</option>, una feature di
|
||
retro-compatibilità causerà la creazione di file di output in
|
||
<literal moreinfo="none">normal format</literal> chiamati rispettivamente
|
||
<filename moreinfo="none"> G-</filename> e <filename
|
||
moreinfo="none">Xscan.xml</filename>.</para>
|
||
|
||
<para>Tutti questi argomenti supportano le conversioni di tipo <literal
|
||
moreinfo="none">strftime</literal> nel nome del file. <literal
|
||
moreinfo="none">%H</literal>, <literal moreinfo="none">%M</literal>,
|
||
<literal moreinfo="none">%S</literal>, <literal
|
||
moreinfo="none">%m</literal>, <literal moreinfo="none">%d</literal>,
|
||
<literal moreinfo="none">%y</literal> e <literal
|
||
moreinfo="none">%Y</literal> sono gli stessi parametri che si trovano in
|
||
<literal moreinfo="none">strftime</literal>. <literal
|
||
moreinfo="none">%T</literal> è l'equivalente di <literal
|
||
moreinfo="none">%H%M%S</literal>, <literal moreinfo="none">%R</literal>
|
||
è l'equivalente di <literal moreinfo="none">%H%M</literal> e <literal
|
||
moreinfo="none">%D</literal> è l'equivalente di <literal
|
||
moreinfo="none">%m%d%y</literal>. Un % seguito da qualsiasi altro
|
||
carattere da precedenza a quel carattere (%% mostra il simbolo
|
||
percentuale). Quindi <option>-oX 'scan-%T-%D.xml'</option> lavorerà su di
|
||
un file XML con un nome del tipo <literal
|
||
moreinfo="none">scan-144840-121307.xml</literal>.</para>
|
||
|
||
<para>Nmap offre inoltre l'opzione di controllo della verbosità e la
|
||
possibilità di accodare ai file invece di sovrascriverli. Tutte queste
|
||
opzioni sono descritte di seguito.</para>
|
||
|
||
<variablelist>
|
||
<title>I Formati di Output di Nmap</title>
|
||
|
||
<varlistentry>
|
||
<term><option>-oN <filespec></option> (normal output)</term>
|
||
|
||
<listitem>
|
||
<para>Richiede che il normal output venga rediretto al file
|
||
specificato. Come sopra, quest'output diverge leggermente da
|
||
<literal moreinfo="none">interactive output</literal>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-oX <filespec></option> (XML output)</term>
|
||
|
||
<listitem>
|
||
<para>Richiede che l'output XML sia rediretto al file specificato.
|
||
Nmap contiene un document type definition (DTD) che permette agli
|
||
interpreti XML di validare l'output XML di Nmap. Sebbene serva
|
||
principalmente per l'uso programmatico, può essere d'aiuto anche
|
||
agli utenti. Il DTD definisce gli elementi convenzionali del
|
||
formato, e spesso enumera gli attributi e i valori che possono
|
||
assumere. L'ultima versione è sempre disponibile al link <ulink
|
||
url="https://svn.nmap.org/nmap/docs/nmap.dtd" />.</para>
|
||
|
||
<para>XML offre un formato stabile e facilmente interpretato dal
|
||
software. Gli interpreti XML liberi (free) sono disponibili per la
|
||
maggior parte dei linguaggi di programmazione, compresi C/C++,
|
||
Perl, Python e Java. Qualcuno ha anche scritto dei bindings per
|
||
gran parte di questi linguaggi per trattare in maniera specifica
|
||
l'output e l'esecuzione di Nmap. Ne sono esempio: <ulink
|
||
url="http://sourceforge.net/projects/nmap-scanner/">Nmap::Scanner</ulink>
|
||
e <ulink
|
||
url="http://nmapparser.wordpress.com/">Nmap::Parser</ulink> nel
|
||
Perl CPAN. In quasi tutti i casi il formato preferito per
|
||
interpretare i risultati di Nmap è stato XML.</para>
|
||
|
||
<para>L'output XML fa riferimento ad uno stylesheet XSL che può
|
||
essere usato per formattare il risultato in HTML. La maniera più
|
||
facile di usarlo è semplicemente aprire il file XML in un web
|
||
browser, come Firefox o IE. Di norma questa procedura dovrebbe
|
||
funzionare solo sulla macchina su cui si esegue Nmap (o su una
|
||
configurata in maniera simile) dato che il percorso a <filename
|
||
moreinfo="none">nmap.xsl</filename> è quello scritto nel codice di
|
||
Nmap. Si vedano le opzioni <option>--webxml</option> o
|
||
<option>--stylesheet</option> per creare un file XML portabile che
|
||
renderizza come HTML in ogni macchina connessa al web.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-oS <filespec></option> (ScRipT KIdd|3
|
||
oUTpuT)</term>
|
||
|
||
<listitem>
|
||
<para>Lo script kiddie output è come l'interactive output, ad
|
||
eccezione del post-processing che meglio adatta l'output ai l33t
|
||
HaXXorZ che prima guardavano dall'alto in basso Nmap per la sua
|
||
troppo corretta ortografia e per l'uso proprio delle maiuscole. Per
|
||
le persone poco inclini allo humor, si noti che questa opzione
|
||
prende in giro gli script kiddies, quindi non si critichi per un
|
||
presunto "averli aiutati".</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-oG <filespec></option> (grepable output)</term>
|
||
|
||
<listitem>
|
||
<para>Questo formato di output viene descritto per ultimo perché
|
||
il suo uso è deprecato. L'output XML è di gran lunga più potente ed
|
||
in pratica ugualmente utile per gli utenti esperti. XML è uno
|
||
standard per le dozzine di eccellenti parsers che sono disponibili,
|
||
mentre il grepable output è un semplice hack. XML è estensibile al
|
||
supporto di nuove features di Nmap man mano che queste vengono
|
||
rilasciate, mentre spesso vengono omesse queste nuove feature per
|
||
il formato grepable per mancanza di spazio dove aggiungerle.</para>
|
||
|
||
<para>Ad ogni modo, il grepable output è ancora discretamente
|
||
usato. È un formato semplice che lista ogni host su una riga e può
|
||
essere facilmente cercato e interpretato dai tool standard di UNIX,
|
||
come grep, awk, cut, sed, diff e Perl. Viene utilizzato per test
|
||
semplici da riga di comando: trovare tutti gli host che hanno
|
||
la porta SSH aperta o che montano Solaris, è questione di un
|
||
semplice grep per identificare gli host e un pipe verso awk o cut
|
||
per visualizzare i campi desiderati.</para>
|
||
|
||
<para>Il grepable output contiene commenti (le righe che iniziano
|
||
con il cancelletto (#)) e righe target. Una riga target include una
|
||
combinazione di 6 campi etichettati, separati da tabulazioni e
|
||
terminati da un due punti (:). I campi
|
||
sono <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">IP ID</literal> e
|
||
<literal moreinfo="none">Status</literal>.</para>
|
||
|
||
<para>Il più importante tra questi campi è generalmente il campo
|
||
<literal moreinfo="none">Ports</literal>, che da dettagli su ogni
|
||
porta interessante. È una lista di "port entries" separate da una
|
||
virgola. Ogni "port entry" rappresenta una porta interessante e
|
||
prende la forma di sette sotto-campi separati da uno slash (/).
|
||
Questi sotto-campi sono: <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> e <literal
|
||
moreinfo="none">Version info</literal>.</para>
|
||
|
||
<para>Così come nell'output XML, questa pagina di manuale non
|
||
permette di documentare l'intero formato. È disponibile una
|
||
descrizione più dettagliata del formato grepable
|
||
output nella sezione <quote><ulink
|
||
url="https://nmap.org/book/output-formats-grepable-output.html">Grepable
|
||
Output (-oG)</ulink></quote>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-oA <basename></option> (Output to all
|
||
formats)</term>
|
||
|
||
<listitem>
|
||
<para>In caso di bisogno, si potrebbe specificare <option>-oA
|
||
<replaceable>basename</replaceable> </option> per salvare i
|
||
risultati dello scan nei formati normal, XML e grepable in una sola
|
||
volta. Questi vengono salvati rispettivamente nei file
|
||
<replaceable>basename</replaceable>.nmap,
|
||
<replaceable>basename</replaceable>.xml e
|
||
<replaceable>basename</replaceable>.gnmap. Come la maggior parte
|
||
dei programmi, si può aggiungere un prefisso ai nomi dei file, come
|
||
ad esempio un percorso ad una directory, <filename
|
||
moreinfo="none">~/nmaplogs/foocorp/</filename> su UNIX o <filename
|
||
moreinfo="none">c:\hacking\sco</filename> su Windows.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
|
||
<variablelist>
|
||
<title>Verbosità e opzioni di debugging</title>
|
||
|
||
<varlistentry>
|
||
<term><option>-v</option> (Increase verbosity level),
|
||
<option>-v<level></option> (Set verbosity level)</term>
|
||
|
||
<listitem>
|
||
<para>Aumenta il livello di verbosità, facendo in modo che Nmap
|
||
stampi più informazioni riguardo lo scan in esecuzione. Le porte
|
||
aperte sono mostrate man mano che Nmap le trova e il tempo
|
||
rimanente stimato viene mostrato se Nmap ritiene che lo scan possa
|
||
durare più di qualche minuto. Si può mettere l'opzione due o più
|
||
volte per aumentare ulteriormente il livello di verbosità.</para>
|
||
|
||
<para>La maggior parte dei cambiamenti riguarda l'interactive
|
||
output, e alcune cose anche il normal e lo script kiddie output.
|
||
Gli altri tipi di output sono fatti per essere processati dalle
|
||
macchine, quindi Nmap può dare un grosso livello di dettaglio di
|
||
default, senza il problema di poter affaticare un utente umano. In
|
||
ogni caso ci sono delle leggere differenze negli altri modi dove la
|
||
dimensione dell'output può essere sostanzialmente ridotta omettendo
|
||
alcuni dettagli. Per esempio solo in modalità verbosa viene
|
||
stampata una linea di commento nel grepable output che fornisce una
|
||
lista di tutte le porte scansionate, questo perché potrebbe essere
|
||
abbastanza lunga.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-d</option> (Increase debugging level),
|
||
<option>-d<level></option> (Set debugging level)</term>
|
||
|
||
<listitem>
|
||
<para>Quando anche il verbose mode non fornisce dati a sufficienza,
|
||
è disponibile la modalità debugging, che sommergerà l'utente di
|
||
informazioni! Così come succede per l'opzione verbosity
|
||
(<option>-v</option>), il debugging viene attivato da un'opzione di
|
||
riga di comando (<option>-d</option>) e il livello di debug può
|
||
essere aumentato ripetendo l'opzione diverse volte, ad esempio
|
||
<option>-dd</option>, o si può settare il debug level dando come
|
||
argomento di <option>-d</option> un numero. Ad esempio,
|
||
<option>-d9</option> setta il livello a nove. Questo è il livello
|
||
più alto e produrrà migliaia di linee a meno che non si stia
|
||
facendo uno scan molto semplice con pochi target e poche
|
||
porte.</para>
|
||
|
||
<para>L'output di debugging è utile quando si sospetta un bug in
|
||
Nmap, oppure se si rimane confusi su cosa stia facendo Nmap e
|
||
perché. Siccome questa feature è stata pensata principalmente per
|
||
gli sviluppatori, le linee di debug non sono granché
|
||
autoesplicative. Si potrebbe incontrare qualcosa tipo: <literal
|
||
moreinfo="none">Timeout vals: srtt: -1 rttvar: -1 to: 1000000 delta
|
||
14987 ==> srtt: 14987 rttvar: 14987 to: 100000</literal>. Se non
|
||
si capisce una linea, quello che si può fare è ignorarla, guardarla
|
||
nel codice sorgente, o richiedere aiuto alla lista di sviluppo
|
||
(nmap-dev). Alcune linee si spiegano bene da sé, ma i messaggi
|
||
divengono sempre più oscuri man mano che il livello di debugging
|
||
sale.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--reason</option> (Host and port state reasons)</term>
|
||
|
||
<listitem>
|
||
<para>Mostra il motivo per cui ad ogni singola porta è stato
|
||
assegnato quello stato e la ragione per cui ogni host è attivo o
|
||
meno. Quest'opzione mostra il tipo di pacchetto che ha determinato
|
||
lo stato di una porta o di un host. Per esempio, un pacchetto RST
|
||
da una porta chiusa o un echo reply da un host attivo.
|
||
L'informazione che Nmap restituisce dipende dal tipo di scansione o
|
||
di ping. Il SYN scan e il SYN ping (<option>-sS</option> e
|
||
<option>-PS</option>) sono molto dettagliati, mentre il TCP connect
|
||
scan (<option>-sT</option>) è limitato all'implementazione della
|
||
chiamata di sistema <function moreinfo="none">connect</function>.
|
||
Questa feature è automaticamente abilitata dall'opzione di debug
|
||
(<option>-d</option>) e i suoi risultati vengono salvati in file
|
||
log in formato XML anche se quest'opzione non viene
|
||
specificata.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--stats-every <time></option> (Print periodic
|
||
timing stats)</term>
|
||
|
||
<listitem>
|
||
<para>Periodicamente stampa un messaggio di timing status ogni
|
||
intervallo di <replaceable>time</replaceable>. Il tempo è una
|
||
specifica del tipo descritto nella sezione <quote><ulink
|
||
url="https://nmap.org/book/man-performance.html">Timing and
|
||
Performance</ulink></quote> di questo manuale; quindi per esempio,
|
||
si utilizzerà <option>--stats-every 10s</option> per avere un
|
||
aggiornamento dello stato ogni 10 secondi. Gli aggiornamenti
|
||
vengono stampati sull'interactive output (a schermo) e sull'XML
|
||
output.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--packet-trace</option> (Trace packets and data sent
|
||
and received)</term>
|
||
|
||
<listitem>
|
||
<para>Fa in modo che Nmap stampi un riassunto di ogni pacchetto
|
||
mandato o ricevuto. Viene usata spesso per il debugging, ma è anche
|
||
un modo valido per gli utenti novizi per capire esattamente cosa
|
||
sta facendo Nmap dietro le quinte. Per evitare che stampi migliaia
|
||
di linee, si dovrebbe specificare una lista limitata di porte da
|
||
controllare, come <option>-p20-30</option>. Se importa soltanto
|
||
vedere come procede il version detection si può usare
|
||
<option>--version-trace</option>. Se invece si è solo interessati
|
||
allo script tracing, indicare <option>--script-trace</option>. Con
|
||
<option>--packet-trace</option>, si avranno tutti quelli
|
||
sopra.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--open</option> (Show only open (or possibly open)
|
||
ports)</term>
|
||
|
||
<listitem>
|
||
<para>Può succedere di essere interessati solamente alle porte cui
|
||
ci si può connettere al momento (le <literal
|
||
moreinfo="none">open</literal>) e non si vuole mischiare i
|
||
risultati con quelle <literal moreinfo="none">closed</literal>,
|
||
<literal moreinfo="none">closed</literal> o <literal
|
||
moreinfo="none">closed|filtered</literal>. Si potrebbe
|
||
personalizzare l'output dopo la scansione utilizzando tool come
|
||
grep, awk e Perl, ma è stata aggiunta quest'opzione a causa di
|
||
richieste travolgenti. Indicare <option>--open</option> per vedere
|
||
solamente gli host con almeno una porta <literal
|
||
moreinfo="none">open</literal>, <literal
|
||
moreinfo="none">open|filtered</literal> o <literal
|
||
moreinfo="none">unfiltered</literal>, e vedere solamente le porte
|
||
con questi stati. Questi tre stati vengono trattati normalmente, il
|
||
che significa che <literal moreinfo="none">open|filtered</literal>
|
||
e <literal moreinfo="none">unfiltered</literal> potrebbero essere
|
||
raggruppate se ce ne dovessero essere troppe.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--iflist</option> (List interfaces and routes)</term>
|
||
|
||
<listitem>
|
||
<para>Stampa la lista delle interfacce e degli instradamenti di
|
||
sistema rilevati da Nmap. Questo è utile per risolvere i problemi
|
||
di routing o cattive caratterizzazioni delle interfacce (ad esempio
|
||
quando Nmap scambia una connessione PPP per ethernet).</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
|
||
<variablelist>
|
||
<title>Altre opzioni di output</title>
|
||
|
||
<varlistentry>
|
||
<term><option>--append-output</option> (Append to rather than clobber
|
||
output files)</term>
|
||
|
||
<listitem>
|
||
<para>Quando si specifica un nome di file mediante un parametro di
|
||
output come <option>-oX</option> o <option>-oN</option>, questo
|
||
file viene sovrascritto di default. Se si preferisce mantenere il
|
||
contenuto del file e aggiungerci i nuovi risultati, si deve usare
|
||
l'opzione <option>--append-output</option>. Tutti i file di output
|
||
specificati in quell'istanza di Nmap verranno usati in append mode
|
||
anziché essere sovrascritti. Quest'opzione non è di grande aiuto
|
||
(e non funziona molto bene) nel caso di output in formato XML
|
||
(<option>-oX</option>), poiché il parsing del file risultante non
|
||
sarà corretto fino a quando non si controllerà il file
|
||
manualmente.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--resume <filename></option> (Resume aborted
|
||
scan)</term>
|
||
|
||
<listitem>
|
||
<para>Alcune esecuzioni di Nmap possono richiedere molto tempo -
|
||
dell'ordine di giorni. Tali scansioni non arrivano sempre alla
|
||
fine; alcune restrizioni possono impedire a Nmap di funzionare
|
||
durante le ore del giorno, la rete può diventare irraggiungibile,
|
||
la macchina sulla quale Nmap sta girando può subire un riavvio
|
||
pianificato o improvviso o Nmap stesso può andare in crash.
|
||
L'amministratore che sta usando Nmap può interromperlo per
|
||
qualsiasi ragione, premendo <keycap
|
||
moreinfo="none">ctrl-C</keycap>. Ricominciare l'intera scansione
|
||
dall'inizio può diventare fastidioso. Fortunatamente se sono
|
||
rimasti i log in formato "normal" (<option>-oN</option>) o
|
||
"grepable" (<option>-oG</option>), l'utente può richiedere a Nmap
|
||
di ricominciare la scansione dall'host sul quale stava lavorando
|
||
quando l'esecuzione è stata interrotta. Semplicemente basta
|
||
specificare l'opzione <option>--resume</option> e passargli il file
|
||
di output in formato normal/grepable come argomento. Non è permesso
|
||
nessun altro argomento, poiché Nmap farà il parsing del file di
|
||
output per usare le stesse opzioni specificate in precedenza. È
|
||
quindi sufficiente invocare Nmap come <command
|
||
moreinfo="none">nmap --resume
|
||
<replaceable>logfilename</replaceable></command>. Nmap aggiungerà i
|
||
nuovi risultati ai file specificati nell'esecuzione precedente. La
|
||
ripresa di un'esecuzione non supporta il formato di output XML
|
||
poiché sarebbe troppo difficile combinare le due esecuzioni in un
|
||
unico file XML valido.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--stylesheet <path or URL></option> (Set XSL
|
||
stylesheet to transform XML output)</term>
|
||
|
||
<listitem>
|
||
<para>Nmap viene fornito con un foglio di stile XSL chiamato
|
||
<filename moreinfo="none">nmap.xsl</filename> per vedere o tradurre
|
||
l'output XML in HTML. L'output XML include una direttiva <literal
|
||
moreinfo="none">xml-stylesheet</literal> che punta al file
|
||
<filename moreinfo="none">nmap.xml</filename> dove è stato
|
||
installato Nmap la prima volta. Processare il file XML con un XSLT
|
||
processor come <ulink
|
||
url="http://xmlsoft.org/XSLT/">xsltproc</ulink> per produrre un
|
||
file HTML. Aprire direttamente l'output XML in un browser non
|
||
funziona più tanto bene in quanto i browser recenti limitano le
|
||
location da cui può essere caricato un foglio di stile. Se si
|
||
volesse usare un foglio di stile diverso, va specificato mediante
|
||
l'opzione <option>--stylesheet</option>. Il file va indicato con il
|
||
percorso completo o l'URL. Un esempio di invocazione con
|
||
quest'opzione è <option>--stylesheet
|
||
https://nmap.org/svn/docs/nmap.xsl</option>. Questo indica ad un
|
||
XSLT processor di caricare l'ultima versione del foglio di stile da
|
||
Nmap.Org. L'opzione <option>--webxml</option> fa la stessa cosa ma
|
||
richiede meno digitazioni e meno cose da ricordare. Caricando l'XSL
|
||
da Nmap.Org rende più semplice visualizzare i risultati su una
|
||
macchina che non ha Nmap (e quindi il file <filename
|
||
moreinfo="none">nmap.xsl</filename>) installato. Quindi l'URL è
|
||
spesso una scelta migliore, ma di default viene usato il file dal
|
||
filesystem locale per ragioni di privacy.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--webxml</option> (Load stylesheet from Nmap.Org)
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>Quest'opzione è semplicemente una comodità per l'opzione
|
||
<option>--stylesheet
|
||
https://nmap.org/svn/docs/nmap.xsl</option>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>
|
||
<option>--no-stylesheet</option> (Omit XSL stylesheet declaration
|
||
from XML)
|
||
</term>
|
||
|
||
<listitem>
|
||
<para>Quest'opzione va specificata quando non si vuole che Nmap
|
||
associ un qualsiasi foglio di stile XSL al proprio output XML.
|
||
La direttiva <literal moreinfo="none">xml-stylesheet</literal>
|
||
viene omessa.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-misc-options">
|
||
<title>Opzioni Miscellanee</title>
|
||
|
||
<para>Questa sezione descrive alcune opzioni importanti (e altre non così
|
||
importanti) che non hanno trovato posto in altre sezioni.</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><option>-6</option> (Enable IPv6 scanning)</term>
|
||
|
||
<listitem>
|
||
<para>Nmap offre supporto IPv6 per le sue funzioni più comuni. Le
|
||
funzioni ping scanning, port scanning, rivelazione di versione e
|
||
l'NSE supportano tutti IPv6. La sintassi dei comandi è la stessa di
|
||
sempre, ad eccezione dell'aggiunta dell'opzione
|
||
<option>-6</option>. Ovviamente si dovrà utilizzare la sintassi
|
||
IPv6 se si vuole specificare un indirizzo anziché un hostname. Un
|
||
indirizzo sarà qualcosa del tipo <literal
|
||
moreinfo="none">3ffe:7501:4819:2000:210:f3ff:fe03:14d0</literal>,
|
||
ne consegue che è raccomandato l'uso degli hostname. L'output ha il
|
||
solito aspetto, l'unica differenza è l'indirizzo IPv6 sulla linea
|
||
delle "interesting ports".</para>
|
||
|
||
<para>Mentre IPv6 non ha esattamente preso il sopravvento nel
|
||
mondo, trova un uso più significativo in alcuni Paesi (tipicamente
|
||
Asiatici) e supporto nella maggior parte dei moderni sistemi
|
||
operativi. Per usare Nmap con l'IPv6, sia l'obiettivo che la
|
||
sorgente dello scan devono essere configurate per IPv6. Se il
|
||
proprio l'ISP (come la maggior parte) non alloca indirizzi IPv6,
|
||
c'è una vasta disponibilità di tunnel broker gratuiti e funzionano
|
||
bene con Nmap. Uno dei migliori è fornito da <ulink
|
||
url="http://www.tunnelbroker.net/" />. Altri tunnel broker si
|
||
possono trovare <ulink
|
||
url="http://en.wikipedia.org/wiki/List_of_IPv6_tunnel_brokers"> su
|
||
Wikipedia</ulink>. Un altro approccio free comune sono i tunnel
|
||
6to4.</para>
|
||
|
||
<para>Su Windows, gli scan IPv6 raw-socket sono supportati solo su
|
||
dispositivi ethernet (non tunnel) e solo da Windows Vista in poi.
|
||
Utilizzare l'opzione <option>--unprivileged</option> nelle altre
|
||
situazioni.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-A</option> (Aggressive scan options)</term>
|
||
|
||
<listitem>
|
||
<para>Quest'opzione abilita altre opzioni addizionali avanzate ed
|
||
aggressive. Al momento questa opzione attiva l'OS detection
|
||
(<option>-O</option>), il version scanning (<option>-sV</option>),
|
||
lo script scanning (<option>-sC</option>) e il traceroute
|
||
(<option>--traceroute</option>). Ulteriori caratteristiche verranno
|
||
aggiunte in futuro. Il punto è attivare un completo set di opzioni
|
||
di scan senza che ci sia il bisogno di ricordarsi una lunga serie
|
||
di flag. In ogni modo, dato che lo script scanning con il set di
|
||
default è considerato intrusivo, si dovrebbe utilizzare
|
||
<option>-A</option> contro le reti senza averne avuto
|
||
autorizzazione. Quest'opzione attiva solo delle modalità di
|
||
funzionamento, ma non le opzioni di timing (come
|
||
<option>-T4</option>), né quelle di verbosity (<option>-v</option>)
|
||
che si potrebbero comunque volere. Le opzione che richiedono
|
||
privilegi speciali (ad esempio i permessi di root), come l'OS
|
||
detection e il traceroute, saranno abilitate solo se si questi
|
||
permessi sono attivi.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--datadir <nomedirectory></option>(Specify custom
|
||
Nmap data file location)</term>
|
||
|
||
<listitem>
|
||
<para>Nmap ottiene alcuni dati speciali in runtime dai
|
||
files chiamati <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> ed <filename
|
||
moreinfo="none">nmap-os-fingerprints</filename>. Se la location di
|
||
uno questi file viene specificata(usando l'opzione
|
||
<option>--servicedb</option> o l'opzione
|
||
<option>--versiondbNmap</option>), questa location viene utilizzata
|
||
per tutti quanti. Altrimenti, Nmap cerca i file nella directory
|
||
specificata con l'opzione <option>--datadir</option> (qualora
|
||
specificata). Qualunque file non trovato in questa locazione, verrà
|
||
cercato nella directory specificata nella variabile d'ambiente
|
||
<literal moreinfo="none">NMAPDIR</literal>. Segue poi <literal
|
||
moreinfo="none">~/.nmap</literal> per le vere e proprie UID (valido
|
||
solo per i sistemi POSIX) o, su Windows, <literal
|
||
moreinfo="none"><HOME>\AppData\Roaming\nmap</literal> (dove
|
||
<literal moreinfo="none"><HOME></literal> è la home directory
|
||
dell'utente, tipo <literal
|
||
moreinfo="none">C:\Users\user</literal>). Seguono poi la directory
|
||
dell'eseguibile di Nmap e le sue subdirectory <literal
|
||
moreinfo="none">../usr/share/nmap</literal>. Infine vengono
|
||
utilizzate le locazioni precompilate come <literal
|
||
moreinfo="none">/usr/local/share/nmap</literal> o <literal
|
||
moreinfo="none">/usr/share/nmap</literal>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--servicedb <services file></option> (Specify
|
||
custom services file)</term>
|
||
|
||
<listitem>
|
||
<para>Chiede ad Nmap di utilizzare specifici file "services" invece
|
||
che il file <filename moreinfo="none">nmap-services</filename> che
|
||
viene fornito con Nmap. Inoltre quest'opzione attiva l'opzione
|
||
<option>-F</option> che esegue una scansione veloce. Vedere la
|
||
descrizione di <option>--datadir</option> per avere più
|
||
informazioni sui data files di Nmap.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--versiondb <service probes file></option>
|
||
(Specify custom service probes file)</term>
|
||
|
||
<listitem>
|
||
<para>Chiede ad Nmap di utilizzare specifici file "service probes"
|
||
invece che il file <filename
|
||
moreinfo="none">nmap-service-probes</filename> che
|
||
viene fornito con Nmap. Vedere la descrizione di
|
||
<option>--datadir</option> per avere più informazioni sui data
|
||
files di Nmap.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--send-eth </option> (Use raw ethernet sending)</term>
|
||
|
||
<listitem>
|
||
<para>Chiede a Nmap di mandare pacchetti al livello ethernet (data
|
||
link) piuttosto che al livello più alto IP (network). Di default,
|
||
Nmap sceglie quello che è generalmente migliore per la piattaforma
|
||
in cui sta venendo eseguito. I raw sockets (livello IP) solitamente
|
||
sono i più efficienti per le macchine UNIX, mentre invece sono
|
||
richieste trame ethernet per funzionare con Windows dal momento che
|
||
Microsoft ha disabilitato il supporto per i raw socket. Nmap usa
|
||
invece continua a usare i pacchetti raw sulle UNIX non ostante si
|
||
specifichi questa opzione quando non c'è alternativa (ad esempio se
|
||
si ha una connessione non ethernet)</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--send-ip</option> (Send at raw IP level)</term>
|
||
|
||
<listitem>
|
||
<para>Chiede a Nmap di mandare pacchetti via raw socket IP,
|
||
piuttosto che mandare trame al livello inferiore, ethernet. È
|
||
l'opzione complementare di <option>--send-eth</option> discussa
|
||
precedentemente.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--privileged</option> (Assume that the user is fully
|
||
privileged)</term>
|
||
|
||
<listitem>
|
||
<para>Dice semplicemente a Nmap di assumere che l'utente abbia
|
||
privilegi sufficienti per effettuare trasmissioni sui raw socket,
|
||
fare packet sniffing, e operazioni simili che di norma hanno
|
||
bisogno dei privilegi di root sui sistemi UNIX. Di default Nmap
|
||
termina l'esecuzione se si tentano di usare certe operazioni e
|
||
<literal moreinfo="none">geteuid</literal> non è zero.
|
||
<option>--privileged</option> è utile con delle funzionalità del
|
||
kernel Linux e altri sistemi operativi che possono essere
|
||
configurati per permettere ad utenti non privilegiati di fare degli
|
||
scan con i raw socket. Bisogna assicurarsi di posizionare questa
|
||
opzione prima di qualunque flag che invochi funzionalità
|
||
privilegiate (SYN scan, OS detection, ecc.). La variabile
|
||
d'ambiente NMAP_PRIVILEGED può comunque essere settata e
|
||
rappresenta un'equivalente alternativa all'opzione
|
||
<option>--privileged</option>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--unprivileged</option> (Assume that the user lacks raw
|
||
socket privileges)</term>
|
||
|
||
<listitem>
|
||
<para>quest'opzione è l'opposta di <option>--privilegerd</option>.
|
||
Dice ad Nmap di trattare l'utente come se non avesse i permessi
|
||
necessari per i raw socket e lo sniffing. Può tornare utile in fase
|
||
di test, debugging o quando le funzionalità di raw network del
|
||
sistema operativo hanno qualche problema. La variabile d'ambiente
|
||
NMAP_PRIVILEGED può comunque essere settata e rappresenta
|
||
un'equivalente alternativa all'opzione
|
||
<option>--unprivileged</option>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>--release-memory </option>(Release memory before
|
||
quitting)</term>
|
||
|
||
<listitem>
|
||
<para>Quest'opzione è utile solo per la risoluzione di problemi di
|
||
perdita di memoria (memory-leak debugging). Obbliga infatti ad Nmap
|
||
a liberare la memoria allocata appena prima di uscire così da
|
||
individuare più facilmente le effettive perdite di memoria. Di
|
||
solito Nmap salta questo passaggio come fa il sistema operativo in
|
||
ogni caso al momento della chiusura del processo.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-V</option>; <option>--version</option> (Print version
|
||
number)</term>
|
||
|
||
<listitem>
|
||
<para>Stampa a video il numero di versione di Nmap ed esce.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>-h</option>; <option>--help</option> (Print help
|
||
summary page)</term>
|
||
|
||
<listitem>
|
||
<para>Stampa a video una breve schermata di aiuto con le opzioni
|
||
più comuni. Eseguire Nmap senza argomenti fa la stessa cosa.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-runtime-interaction">
|
||
<title>Interazione in Runtime</title>
|
||
|
||
<para>Durante l'esecuzione di Nmap qualsiasi tasto venga premuto viene
|
||
registrato. Questo permette di interagire con il programma senza doverlo
|
||
interrompere e farlo ripartire. Alcuni tasti speciali possono cambiare
|
||
opzioni, mentre altri stampano un messaggio di stato sulla scansione in
|
||
corso. La convenzione è che <emphasis>le lettere minuscole
|
||
aumentano</emphasis> la quantità di messaggi stampati, mentre
|
||
<emphasis>le lettere maiuscole la diminuiscono</emphasis>. È inoltre
|
||
possibile premere <literal moreinfo="none">'?'</literal> per avere un
|
||
aiuto.</para>
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><option>v</option> / <option>V</option></term>
|
||
|
||
<listitem>
|
||
<para>Aumenta / diminuisce la quantità di informazioni</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>d</option> / <option>D</option></term>
|
||
|
||
<listitem>
|
||
<para>Aumenta / diminuisce il livello di debug</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>p</option> / <option>P</option></term>
|
||
|
||
<listitem>
|
||
<para>Attiva / disattiva il tracing dei pacchetti</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><option>?</option></term>
|
||
|
||
<listitem>
|
||
<para>Stampa una schermata di aiuto per le interazioni in tempo
|
||
reale</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Qualsiasi altro tasto</term>
|
||
|
||
<listitem>
|
||
<para>Stampa un messaggio di stato come il seguente:</para>
|
||
<screen>
|
||
Stats: 0:00:07 elapsed; 20 hosts completed (1 up), 1 undergoing
|
||
Service Scan
|
||
Service scan Timing: About 33.33% done; ETC: 20:57 (0:00:12
|
||
remaining)
|
||
</screen>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-examples">
|
||
<title>Esempi</title>
|
||
|
||
<para>Ecco alcuni esempi di uso di Nmap, dal più semplice e routinario al
|
||
più complesso ed esoterico. Saranno usati alcuni indirizzi IP e hostname
|
||
reali per rendere le cose più concrete. Si dovranno solo sostituire nei
|
||
posti giusti gli indirizzi e gli hostname della <emphasis>propria
|
||
rete</emphasis>. Nonostante molti siano convinti che il port scanning
|
||
delle reti altrui non è o non dovrebbe essere illegale, alcuni
|
||
amministratori di rete potrebbero non apprezzare uno scanning non
|
||
richiesto delle loro reti e potrebbero lamentarsi. Ottenere prima un
|
||
permesso è l'approccio migliore.</para>
|
||
|
||
<para>Per motivi di test, è concesso il permesso di effettuare uno scan
|
||
verso <literal moreinfo="none">scanme.nmap.org</literal>. Questo permesso
|
||
include esclusivamente lo scan attraverso Nmap e non il test di exploits
|
||
o attacchi denial of service. Per preservare al banda, è meglio non
|
||
attivare più di una dozzina di scan verso questo host al giorno. Qualora
|
||
si abusasse di questo servizio, questo verrà disattivato e Nmap riporterà
|
||
il seguente errore: <computeroutput moreinfo="none">Failed to resolve
|
||
given hostname/IP: scanme.nmap.org</computeroutput>. Questi permessi si
|
||
applichino agli host <literal moreinfo="none">scanme2.nmap.org</literal>,
|
||
<literal moreinfo="none">scanme3.nmap.org</literal> e così via, finché
|
||
ne esisteranno.</para>
|
||
|
||
<para>
|
||
<command moreinfo="none">nmap -v scanme.nmap.org</command>
|
||
</para>
|
||
|
||
<para>Questa opzione esegue uno scan su tutte le porte TCP riservate
|
||
sulla macchina <literal moreinfo="none">scanme.nmap.org</literal>.
|
||
L'opzione <option>-v</option> attiva la modalità verbose.</para>
|
||
|
||
<para>
|
||
<command moreinfo="none">nmap -sS -O scanme.nmap.org/24</command>
|
||
</para>
|
||
|
||
<para>Lancia un SYN scan invisibile verso ciascuna macchina che risulta
|
||
accesa tra le 256 nell'intera rete di classe C in cui risiede Scanme.
|
||
Inoltre tenta di determinare il sistema operativo installato su ogni host
|
||
trovato. Questo richiede i privilegi di root a causa della funzioni SYN
|
||
scan e OS detection.</para>
|
||
|
||
<para>
|
||
<command moreinfo="none">nmap -sV -p 22,53,110,143,4564
|
||
198.116.0-255.1-127</command>
|
||
</para>
|
||
|
||
<para>Lancia una enumerazione di hosts e uno scan TCP alla prima metà di
|
||
ognuna delle 255 sottoreti di 8 bit all'interno dello spazio di
|
||
indirizzamento della classe B 198.116. Quest'operazione controlla se tali
|
||
sistemi stanno eseguendo i servizi SSH, DNS, POP3 o IMAP sulle loro porte
|
||
standard, o altro sulla porta 4564. Qualora qualche porta di queste venga
|
||
trovata aperta, verrà utilizzato il version detection per determinare
|
||
quale applicazione stia effettivamente ascoltando su quella porta.</para>
|
||
|
||
<para>
|
||
<command moreinfo="none">nmap -v -iR 100000 -Pn -p 80</command>
|
||
</para>
|
||
|
||
<para>Chiede a Nmap di scegliere 100.000 hosts casuali ed effettuare su
|
||
questi uno scan per ricercare dei web servers (porta 80). L'enumerazione
|
||
degli host è disabilitata con l'opzione <option>-Pn</option> dal momento
|
||
che verificare se un host è attivo è uno spreco quando si sta analizzando
|
||
soltanto una porta per ogni hosts.</para>
|
||
|
||
<para>
|
||
<command moreinfo="none">nmap -Pn -p80 -oX logs/pb-port80scan.xml -oG
|
||
logs/pb-port80scan.gnmap 216.163.128.20/20</command>
|
||
</para>
|
||
|
||
<para>Questo scansiona 4096 indirizzi IP in cerca di webservers (ma senza
|
||
effettuare ping) e salva l'output sia in formato XML che in formato
|
||
"greppabile".</para>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-nmap-book">
|
||
<title>Nmap Book</title>
|
||
|
||
<para>Dato che questa guida di riferimento mostra nel dettaglio tutte le
|
||
opzioni di Nmap, non può dimostrare in maniera completa come utilizzare
|
||
queste feature per risolvere velocemente applicazioni reali. È per questo
|
||
che è stato pubblicato <ulink url="https://nmap.org/book/"><emphasis>Nmap
|
||
Network Scanning: The Official Nmap Project Guide to Network Discovery
|
||
and Security Scanning</emphasis></ulink>. Gli argomenti trattati sono
|
||
sovvertire i firewall e gli IDS, ottimizzare le performance di Nmap e
|
||
l'automazione di comuni processi di rete con l'Nmap Scripting Engine.
|
||
Vengono forniti suggerimenti ed istruzioni per operazioni comuni con Nmap
|
||
come fare un inventario della rete, penetration testing, trovare rogue
|
||
access point wireless e l'annullamento di possibili worm. Esempi e
|
||
diagrammi mostrano l'attuale sistema di comunicazione via cavo. Più della
|
||
metà del libro è disponibile gratuitamente online. Per maggiori
|
||
informazioni <ulink url="https://nmap.org/book" />.</para>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-bugs">
|
||
<title>Bugs</title>
|
||
|
||
<para>Al pari del suo autore (e di questa traduzione, NdT), Nmap non è
|
||
perfetto. Ma puoi fare qualcosa per aiutare a renderlo migliore mandando
|
||
delle segnalazioni di bug o addirittura scrivendo delle patch. Se Nmap
|
||
non si dovesse comportare come ti aspetteresti, prova prima l'ultima
|
||
versione disponibile su <ulink url="https://nmap.org/" />. Se il problema
|
||
persiste effettua qualche ricerca per determinare se il problema è stato
|
||
già scoperto e segnalato. Prova a cercare sulla nostra pagina di ricerca
|
||
<ulink url="https://insecure.org/search.html" /> o su Google il messaggio
|
||
di errore o ancora a sfogliare l'archivio Nmap-dev all'indirizzo <ulink
|
||
url="https://seclists.org/" />. Leggi inoltre tutta questa pagina di
|
||
manuale. Se nulla di questo riguarda il tuo caso, manda un bug report a
|
||
<email>dev@nmap.org</email>. Accertati di includere ogni cosa che sei
|
||
riuscito a sapere sul problema, la versione di Nmap che hai installato e
|
||
su quale sistema operativo la stai usando. Segnalazioni di problemi ed
|
||
eventuali domande sull'uso di Nmap inviate a <email>dev@nmap.org</email>
|
||
hanno più probabilità di avere risposta di quelle inviate a Fyodor
|
||
direttamente. Se ti registri alla lista di nmap-dev prima di inviare il
|
||
messaggio, quest'ultimo non verrà moderato e quindi arriverà più
|
||
velocemente. Iscriviti su <ulink
|
||
url="https://nmap.org/mailman/listinfo/dev" />.</para>
|
||
|
||
<para>Le patch che risolvono i bug sono molto meglio di una segnalazione.
|
||
Le istruzioni di base per creare delle patch sono disponibili su <ulink
|
||
url="https://svn.nmap.org/nmap/HACKING" />. Le patch potranno essere
|
||
inviate a nmap-dev (raccomandato) oppure direttamente a Fyodor.</para>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-author">
|
||
<title>Autore</title>
|
||
|
||
<para>Gordon <quote>Fyodor</quote> Lyon <email>fyodor@nmap.org</email>
|
||
(<ulink url="http://www.insecure.org" />)</para>
|
||
|
||
<title>Traduzione</title>
|
||
|
||
<para>Parte 1/2 e revisione: Lorenzo G.
|
||
<email>lorenzo.grespan@gmail.com</email></para>
|
||
|
||
<para>Parte 2/2: Simone Scarduzio
|
||
<email>scarduzio@gmail.com</email></para>
|
||
|
||
<para>Aggiornamento e revisione 04/2015: Andrea Pizzarotti
|
||
<email>andrew3686@gmail.com</email></para>
|
||
|
||
<para>Centinaia di persone hanno dato validi contributi a Nmap nel corso
|
||
degli anni. Questi sono elencati dettagliatamente nel file di CHANGELOG
|
||
che è distribuito assieme a Nmap ed è anche disponibile su <ulink
|
||
url="https://nmap.org/changelog.html" />.</para>
|
||
</refsect1>
|
||
|
||
<refsect1 id="man-legal">
|
||
<title>Note Legali</title>
|
||
|
||
<refsect2>
|
||
<title>Copyright e Licenze di Nmap</title>
|
||
|
||
<para>Nmap Security Scanner è (C) 1996-2015 Insecure.Com LLC. Nmap è
|
||
inoltre un marchio registrato di Insecure.Com LLC. Questo programma è
|
||
free software, è liberamente redistribuibile e/o modificabile in
|
||
accordo con i termini della GNU General Public License come pubblicata
|
||
dalla Free Software Foundation; Versione 2 (<quote>GPL</quote>) MA SOLO
|
||
CON TUTTE LE PRECISAZIONI ED ECCEZIONI QUI DESCRITTE. Questo garantisce
|
||
il diritto di utilizzare, modificare e redistribuire questo software
|
||
entro certe condizioni. Se si desidera incorporare la tecnologia Nmap
|
||
in software proprietari, potremmo essere disponibili a vendere licenze
|
||
alternative (contattare <email>sales@insecure.com</email>). Molti
|
||
produttori di security scanner usano già le tecnologie di Nmap come per
|
||
esempio "host discovery", "port scanning", "OS detection", "version
|
||
detection" e l'Nmap Scripting Engine.</para>
|
||
|
||
<para>Si noti che la licenza GPL implica importanti vincoli sui
|
||
<quote>progetti derivati</quote>, sebbene essa non fornisca una precisa
|
||
definizione di questi. Allo scopo di evitare malintesi, interpretiamo
|
||
questo termine nel modo più ampio che la legge sul copyright permetta.
|
||
Ad esempio, consideriamo un'applicazione come progetto derivato inteso
|
||
ai fini di questa licenza se presenta una delle seguenti
|
||
caratteristiche ottenute con software o contenuti coperti da questa
|
||
licenza (d'ora in poi definiti <quote>Covered Software</quote>):</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Integra codice sorgente di <quote>Covered
|
||
Software</quote>
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Legge o include data file protetti da copyright, quali
|
||
<filename moreinfo="none">nmap-os-db</filename> o <filename
|
||
moreinfo="none">nmap-service-probes</filename> di Nmap.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>È progettato specificatamente per eseguire <quote>Covered
|
||
Software</quote> e ne utilizza i risultati (al contrario delle
|
||
tipiche applicazioni shell o eseguibili da menù che eseguono
|
||
qualsiasi cosa venga detto loro).</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Integra/include/aggrega <quote>Covered Software</quote> in un
|
||
eseguibile di installazione proprietario, come ad esempio quelli
|
||
prodotti da InstallShield. Includere Nmap con altro software in
|
||
forma compressa o di archiviazione, non rientra in questi casi,
|
||
fornire appropriati software open-source di decompressione o di
|
||
de-archiviazione è ampiamente disponibile senza nessun ricarico. Ai
|
||
fini di questa licenza, viene considerato programma di
|
||
installazione ciò che include <quote>Covered Software</quote>,
|
||
anche se in realtà recupera una copia di <quote>Covered
|
||
Software</quote> da un'altra fonte in fase di installazione (come,
|
||
ad esempio, scaricandola da Internet).
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>È collegato (staticamente o dinamicamente) a una libreria che
|
||
presenta una delle caratteristiche sopracitate.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Esegue un programma di aiuto, un modulo o uno script che
|
||
presenta una delle caratteristiche sopracitate.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Questa lista non è esclusiva, ma è concepita per chiarificare la
|
||
nostra interpretazione di progetto derivato con alcuni esempi comuni.
|
||
Altre persone potrebbero interpretare la licenza GPL in modo diverso,
|
||
quindi dobbiamo considerare questo come un'eccezione speciale alla GPL
|
||
che applicheremo a <quote>Covered Software</quote>. Le opere che
|
||
soddisfano una qualsiasi di queste condizioni, devono essere conformi a
|
||
tutti i termini di questa licenza, in particolar modo i requisiti della
|
||
Sezione 3 della licenza GPL di fornire il codice sorgente e permettere
|
||
la libera ridistribuzione del lavoro nel suo complesso. Come altra
|
||
eccezione ai termini della GPL, Insecure.Com LLC garantisce il permesso
|
||
di collegare il codice di questo programma con qualunque versione della
|
||
libreria OpenSSL che è distribuita sotto una licenza identica a quella
|
||
che si trova nel file <filename
|
||
moreinfo="none">docs/licenses/OpenSSL.txt</filename> e di redistribuire
|
||
combinazioni collegate che includono entrambi.</para>
|
||
|
||
<para>Ogni redistribuzione di <quote>Covered Software</quote>, inclusa
|
||
ogni eventuale opera derivata, deve sottostare e portare avanti tutti i
|
||
termini di questa licenza, incluso sottostare a tutte le regole e
|
||
restrizioni della GPL. Ad esempio, deve essere fornito il codice
|
||
sorgente di un intero progetto ed autorizzata la sua libera e gratuita
|
||
distribuzione. Tutti i riferimenti alla GPL con <quote>questa
|
||
Licenza</quote>, sono da considerarsi come inclusioni dei termini e
|
||
delle condizioni nel testo di questa stessa licenza.</para>
|
||
|
||
<para>Dato che questa licenza impone eccezioni speciali alla GPL,
|
||
"Covered Work" non è cumulabile (neanche con parte di un più ampio
|
||
lavoro) con il semplice software GPL. I termini, le condizioni e le
|
||
eccezioni di questa licenza devono altresì essere inclusi. Questa
|
||
licenza è incompatibile con qualsiasi altra licenza open-source. In
|
||
alcuni casi potremmo porre sotto diversa licenza parti di Nmap o
|
||
concedere permessi speciali di utilizzo in altro software open-source.
|
||
Per qualsiasi informazioni contattare <email>fyodor@nmap.org</email>.
|
||
Allo stesso modo, non incorporiamo software incompatibile al principio
|
||
di open-source in <quote>Covered Software</quote> senza uno speciale
|
||
permesso dai titolari del copyright.</para>
|
||
|
||
<para>Se avete domande a proposito delle limitazioni imposte all'uso di
|
||
Nmap in altri progetti, saremo felici di aiutarvi. Come detto poc'anzi,
|
||
offriamo anche licenze alternative per l'integrazione di Nmap in
|
||
applicazioni o dispositivi proprietari. Questi contratti sono stati
|
||
venduti a molti rivenditori di software e generalmente includono una
|
||
licenza di durata illimitata, supporto tecnico prioritario e
|
||
aggiornamenti, come anche l'aiuto con la contribuzione allo sviluppo
|
||
della tecnologia Nmap. Per ulteriori informazioni contattare
|
||
<email>sales@insecure.com</email>.</para>
|
||
|
||
<para>Se si riceve questo file con accordo di licenza scritto,
|
||
o un contratto per <quote>Covered Software</quote> che afferma termini
|
||
diversi da quelli appena descritti, allora si può scegliere di
|
||
utilizzare e ridistribuire <quote>Covered Software</quote> sotto quei
|
||
termini anziché quelli qui riportati.</para>
|
||
</refsect2>
|
||
|
||
<refsect2>
|
||
<title>Creative Commons License per questa Guida di Nmap</title>
|
||
|
||
<para>Questa <emphasis>Nmap Reference Guide</emphasis> è protetta da
|
||
copyright (C) 2005–2012 Insecure.Com LLC. È con ciò coperta dalla
|
||
versione 3.0 della Creative Commons Attribution License. Questo
|
||
permette la ridistribuzione e la modifica dell'opera come si ritenga
|
||
opportuno, a patto di far riferimento alla copia originale. In
|
||
alternativa, si può scegliere di trattare questo documento come
|
||
rientrante sotto la stessa licenza di Nmap stesso (discussa in
|
||
precedenza).</para>
|
||
</refsect2>
|
||
|
||
<refsect2>
|
||
<title>Disponibilità del Codice Sorgente e Contribuzioni
|
||
della Comunità</title>
|
||
|
||
<para>Il codice sorgente di questo software viene fornito perché
|
||
crediamo che gli utenti abbiano il diritto di sapere esattamente cosa
|
||
questo programma potrà fare prima di eseguirlo. Questo permette inoltre
|
||
di scoprire falle di sicurezza.</para>
|
||
|
||
<para>Il codice sorgente permette anche di rendere Nmap portabile a
|
||
nuove architetture, correggere i bug e aggiungere nuove funzioni. Si è
|
||
molto incoraggiati a mandare le proprie modifiche ad
|
||
<email>dev@nmap.org</email> per possibili inclusioni nella
|
||
distribuzione principale. Mandando le modifiche a Fyodor o altri
|
||
sviluppatori della mailing list di Insecure.Org, si assume che si sta
|
||
offrendo all' Nmap Project (Insecure.Com LLC) il diritto illimitato,
|
||
non-esclusivo di riutilizzo, modifica e re-licenziamento del codice.
|
||
Nmap sarà sempre disponibile sotto open-source, ma questo è di vitale
|
||
importanza perché l'impossibilità di re-licenziare il codice ha causato
|
||
problemi devastanti ad altri progetti open-source (come KDE e NASM).
|
||
Occasionalmente noi re-licenziamo il codice per terze parti come detto
|
||
sopra. Se si vuole specificare una condizione di licenza speciale delle
|
||
proprie contribuzioni, è sufficiente dirlo nel momento
|
||
dell'invio.</para>
|
||
</refsect2>
|
||
|
||
<refsect2>
|
||
<title>Nessuna Garanzia</title>
|
||
|
||
<para>Questo programma è distribuito nella speranza che possa essere
|
||
utile, ma SENZA NESSUNA GARANZIA; senza garanzia di RIVENDIBILITÀ né di
|
||
APPLICABILITÀ PER SCOPI PARTICOLARI. Fare riferimento alla GNU General
|
||
Public License per ulteriori dettagli, al sito <ulink
|
||
url="http://www.gnu.org/licenses/gpl-2.0.html" /> oppure nel file
|
||
COPYING incluso nel pacchetto di Nmap.</para>
|
||
|
||
<para>Si noti anche che Nmap è stato occasionalmente noto per far
|
||
andare in crash applicazioni mal scritte, gli stack TCP/IP ed anche
|
||
alcuni sistemi operativi. Anche se si tratta di casi estremamente rari,
|
||
è importante da tenere a mente. <emphasis>Nmap non dovrebbe mai essere
|
||
lanciato contro sistemi "mission critical"</emphasis> a meno che non si
|
||
sia preparati ad affrontare un downtime. Confermiamo che Nmap può far
|
||
andare in crash alcuni sistemi e reti e disconosciamo ogni
|
||
responsabilità di danni o problemi che Nmap possa causare.</para>
|
||
</refsect2>
|
||
|
||
<refsect2>
|
||
<title>Uso Inappropriato</title>
|
||
|
||
<para>Dato il possibile rischio di crash e che ad alcuni black hats
|
||
piace usare Nmap come ricognizione prima di attaccare un sistema, ci
|
||
sono amministratori a cui non fa piacere che si eseguano scan sul
|
||
proprio sistema e potrebbero lamentarsi. È quindi consigliabile
|
||
richiedere il permesso prima di fare anche un leggero scan di una
|
||
rete.</para>
|
||
|
||
<para>Nmap non dovrebbe mai essere installato con privilegi speciali
|
||
(ad esempio suid root). Questo potrebbe creare problemi di
|
||
vulnerabilità che altri utenti del sistema (o attaccanti) potrebbero
|
||
utilizzare.</para>
|
||
</refsect2>
|
||
|
||
<refsect2>
|
||
<title>Software di Terze Parti</title>
|
||
|
||
<para>Questo prodotto include software sviluppato da <ulink
|
||
url="http://www.apache.org">Apache Software Foundation</ulink>. Una
|
||
versione modificata di <ulink url="http://www.tcpdump.org">Libpcap
|
||
portable packet capture library</ulink> è distribuita assieme a Nmap.
|
||
La versione per Windows di Nmap utilizza invece un derivato di Libpcap,
|
||
<ulink url="http://www.winpcap.org">WinPcap library</ulink>. Il
|
||
supporto per le regular espressions è garantito dalla libreria <ulink
|
||
url="http://www.pcre.org">PCRE library</ulink>, che è software
|
||
open-source, scritta da Philip Hazel. Alcune funzioni di raw networking
|
||
usano la libreria <ulink
|
||
url="http://libdnet.sourceforge.net">Libdnet</ulink>, che è stata
|
||
scritta da Dug Song. Con Nmap ne è distribuita una versione modificata.
|
||
Nmap può opzionalmente collegarsi con l'<ulink
|
||
url="http://www.openssl.org">OpenSSL cryptography toolkit</ulink> per
|
||
supportare il riconoscimento della versione di SSL. L'Nmap Scripting
|
||
Engine utilizza una versione implementata di <ulink
|
||
url="http://www.lua.org/">Lua programming language</ulink>. La <ulink
|
||
url="http://www.csie.ntu.edu.tw/~cjlin/liblinear/">Liblinear linear
|
||
classification library</ulink> viene utilizzata per le nostre tecniche
|
||
di apprendimento automatico dell'OS version su IPv6 (vedi la sezione
|
||
<quote><ulink
|
||
url="https://nmap.org/book/osdetect-guess.html#osdetect-guess-ipv6">IPv6
|
||
matching</ulink></quote>). Tutto il software di terze parti descritto
|
||
in questo paragrafo è liberamente ridistribuibile sotto licenza stile
|
||
BSD.</para>
|
||
</refsect2>
|
||
|
||
<refsect2 id="us-export">
|
||
<title>United States Export Control</title>
|
||
|
||
<para>Nmap utilizza la crittografia solo quando compilato con il
|
||
supporto opzionale ad OpenSSL ed a lui collegato. Quando compilato
|
||
senza il supporto ad OpenSSL, Insecure.Com LLC ritiene che Nmap non
|
||
sia soggetto ai controlli sull'export U.S. <ulink
|
||
url="http://www.access.gpo.gov/bis/ear/ear_data.html">Export
|
||
Administration Regulations (EAR)</ulink>. Come tale, non esiste ECCN
|
||
(numero di classificazione di controllo delle esportazioni) applicabile
|
||
e l'esportazione non richiede licenze speciali, permessi o altre
|
||
autorizzazioni governative.</para>
|
||
|
||
<para>Quando compilato col supporto ad OpenSSL o distribuito come
|
||
codice sorgente, Insecure.Com LLC crede che Nmap rientri sotto U.S.
|
||
ECCN <ulink
|
||
url="http://www.access.gpo.gov/bis/ear/pdf/ccl5-pt2.pdf">5D002</ulink>
|
||
(<quote>Information Security Software</quote>). Distribuiamo Nmap
|
||
secondo l'eccezione TSU per il software di crittografia disponibile
|
||
pubblicamente definito in <ulink
|
||
url="http://www.access.gpo.gov/bis/ear/pdf/740.pdf">EAR
|
||
740.13(e)</ulink>.</para>
|
||
</refsect2>
|
||
|
||
<para>La presente traduzione ha il solo scopo di aiutare nella
|
||
comprensione del testo originale <quote>Nmap Reference Guide</quote>,
|
||
non ne costituisce copia sostitutiva e nemmeno licenza alternativa
|
||
di <quote>Covered Software</quote>. Per qualsiasi informazione o
|
||
chiarimento e per la versione più aggiornata, fare riferimento al testo
|
||
originale disponibile al link <ulink
|
||
url="https://nmap.org/book/man.html" />.</para>
|
||
</refsect1>
|
||
</refentry>
|
||
</article>
|