-sL(List Scan)

La list scan è una forma degenerata di host discovery che elenca semplicemente ogni host della rete o delle reti specificate, senza inviare alcun pacchetto agli host di destinazione. Per impostazione predefinita, Nmap fa ancora la risoluzione DNS inversa sugli host per imparare i loro nomi. È spesso sorprendente quante informazioni utili forniscano dei semplici nomi di host. Per esempio, fw.chi è il nome del firewall di Chicago di una società. Nmap riporta anche il numero totale di indirizzi IP alla fine. La scansione della lista è un buon controllo di sanità mentale per assicurarsi di avere gli indirizzi IP corretti per i vostri obiettivi. Se i nomi di dominio degli host non vengono riconosciuti, vale la pena investigare ulteriormente per prevenire la scansione della rete della società sbagliata.

Siccome l’idea è quella di stampare semplicemente un elenco di host di destinazione, le opzioni per funzionalità di livello superiore come la scansione delle porte, il rilevamento del sistema operativo o il rilevamento degli host non possono essere combinate con questo. Se si desidera disabilitare il rilevamento degli host pur continuando ad eseguire tali funzionalità di livello superiore, leggere l’opzione -Pn (skip host discovery).

-sn(No port scan)

Questa opzione dice a Nmap di non fare un port scan dopo il rilevamento degli host, e di stampare solo gli host disponibili che hanno risposto alle sonde di rilevamento degli host. Questo è spesso conosciuto come “ping scan”, ma si può anche richiedere che vengano eseguiti traceroute e NSE host scripts. Questo è di default un passo più intrusivo della scansione della lista, e spesso può essere usato per gli stessi scopi. Permette una leggera ricognizione di una rete bersaglio senza attirare molta attenzione. Sapere quanti host sono attivi è più prezioso per gli aggressori rispetto all’elenco fornito da list scan di ogni singolo IP e nome di host.

Anche gli amministratori di sistema spesso trovano questa opzione preziosa. Può essere facilmente utilizzata per contare le macchine disponibili su una rete o monitorare la disponibilità dei server. Questo è spesso chiamato ping sweep, ed è più affidabile del ping dell’indirizzo broadcast perché molti host non rispondono alle query broadcast.

Il rilevamento predefinito degli host fatto con -sn consiste in una richiesta ICMP echo, TCP SYN alla porta 443, TCP ACK alla porta 80, e una richiesta ICMP timestamp per default. Quando viene eseguito da un utente non privilegiato, solo i pacchetti SYN vengono inviati (usando una chiamata connect) alle porte 80 e 443 sul target. Quando un utente privilegiato cerca di scansionare obiettivi su una rete ethernet locale, vengono utilizzate richieste ARP a meno che non sia stato specificato --send-ip. L’opzione -sn può essere combinata con qualsiasi tipo di sonda di scoperta (le opzioni -P*) per una maggiore flessibilità. Se una qualsiasi di queste opzioni di tipo di sonda e numero di porta viene usata, le sonde di default vengono sovrascritte. Quando ci sono rigidi firewall tra l’host sorgente che esegue Nmap e la rete di destinazione, si raccomanda l’uso di queste tecniche avanzate. Altrimenti gli host potrebbero essere mancati quando il firewall elimina le sonde o le loro risposte.

Nelle versioni precedenti di Nmap, -sn era conosciuto come -sP.

-Pn(No ping)

Questa opzione salta completamente la fase di scoperta dell’host. Normalmente, Nmap usa questa fase per determinare le macchine attive per una scansione più pesante e per valutare la velocità della rete. Per impostazione predefinita, Nmap esegue solo il probing pesante come la scansione delle porte, il rilevamento della versione o il rilevamento del sistema operativo contro gli host che sono trovati attivi. Disabilitando il rilevamento degli host con -Pn, Nmap tenterà le funzioni di scansione richieste contro ogni indirizzo IP specificato. Quindi se una rete di dimensioni /16 è specificata sulla linea di comando, tutti i 65.536 indirizzi IP sono scansionati. Il corretto rilevamento degli host viene saltato come con la scansione dell’elenco, ma invece di fermarsi e stampare l’elenco dei target, Nmap continua ad eseguire le funzioni richieste come se ogni IP di destinazione fosse attivo. Vengono utilizzati i parametri di temporizzazione predefiniti, che possono risultare in scansioni più lente. Per saltare il rilevamento degli host e la scansione delle porte, pur consentendo l’esecuzione di NSE, utilizzare le due opzioni -Pn -sn insieme.

Per le macchine su una rete locale ethernet, la scansione ARP sarà ancora eseguita (a meno che non sia specificato --disable-arp-ping o --send-ip) perché Nmap ha bisogno degli indirizzi MAC per scansionare ulteriormente gli host di destinazione. Nelle versioni precedenti di Nmap, -Pn era -P0 e -PN.

-PS <port list>(TCP SYN Ping)

Questa opzione invia un pacchetto TCP vuoto con il flag SYN impostato. La porta di destinazione predefinita è 80 (configurabile in fase di compilazione cambiando DEFAULT_TCP_PROBE_PORT_SPEC in nmap.h). Porte alternative possono essere specificate come parametro. La sintassi è la stessa di -p tranne che gli specificatori del tipo di porta come T: non sono ammessi. Esempi sono -PS22 e -PS22-25,80,113,1050,35000. Si noti che non ci può essere spazio tra -PS e l’elenco delle porte. Se sono specificate sonde multiple, saranno inviate in parallelo.

Il flag SYN suggerisce al sistema remoto che si sta tentando di stabilire una connessione. Normalmente la porta di destinazione sarà chiusa, e un pacchetto RST (reset) sarà rimandato indietro. Se la porta è aperta, la destinazione farà il secondo passo di un TCP three-way-handshake rispondendo con un pacchetto TCP SYN/ACK. La macchina che esegue Nmap quindi interrompe la connessione nascente rispondendo con un RST piuttosto che inviare un pacchetto ACK che completerebbe il three-way-handshake e stabilirebbe una connessione completa. Il pacchetto RST è inviato dal kernel della macchina che esegue Nmap in risposta al SYN/ACK inaspettato, non da Nmap stesso.

Nmap non si preoccupa se la porta è aperta o chiusa. Sia la risposta RST o SYN/ACK discussa in precedenza dicono a Nmap che l’host è disponibile e reattivo.

Sulle macchine Unix, solo l’utente privilegiato root è generalmente in grado di inviare e ricevere pacchetti TCP grezzi. Per gli utenti non privilegiati, viene automaticamente impiegato un workaround per cui viene avviata la chiamata di sistema connect contro ogni porta di destinazione. Questo ha l’effetto di inviare un pacchetto SYN all’host di destinazione, nel tentativo di stabilire una connessione. Se connect ritorna con un successo rapido o un fallimento ECONNREFUSED, lo stack TCP sottostante deve aver ricevuto un SYN/ACK o RST e l’host è segnato come disponibile. Se il tentativo di connessione viene lasciato in sospeso fino al raggiungimento di un timeout, l’host viene contrassegnato come down.

-PA <port list>(TCP ACK Ping)

Il TCP ACK ping è abbastanza simile al SYN ping appena discusso. La differenza, come si può intuire, è che il flag TCP ACK è impostato al posto del flag SYN. Un tale pacchetto ACK pretende di confermare i dati su una connessione TCP stabilita, ma nessuna connessione esiste. Quindi gli host remoti dovrebbero sempre rispondere con un pacchetto RST, rivelando la loro esistenza nel processo.

L’opzione -PA usa la stessa porta predefinita della sonda SYN (80) e può anche prendere una lista di porte di destinazione nello stesso formato. Se un utente senza privilegi ci prova, viene usato il workaround connect discusso in precedenza. Questo workaround è imperfetto perché connect sta effettivamente inviando un pacchetto SYN piuttosto che un ACK.

La ragione per offrire sonde ping sia SYN che ACK è di massimizzare le possibilità di bypassare i firewall. Molti amministratori configurano i router e altri semplici firewall per bloccare i pacchetti SYN in entrata, tranne quelli destinati ai servizi pubblici come il sito web aziendale o il server di posta. Questo impedisce altre connessioni in entrata all’organizzazione, mentre permette agli utenti di fare connessioni in uscita senza ostacoli verso Internet. Questo approccio non-stateful occupa poche risorse sul firewall/router ed è ampiamente supportato da filtri hardware e software. Il software firewall Linux Netfilter/iptables offre l’opzione di convenienza --syn per implementare questo approccio stateless. Quando le regole del firewall stateless come questa sono in atto, è probabile che le sonde SYN ping (-PS) siano bloccate quando vengono inviate a porte di destinazione chiuse. In questi casi, la sonda ACK brilla perché taglia proprio attraverso queste regole.

Un altro tipo comune di firewall usa regole statiche che fanno cadere i pacchetti inaspettati. Questa caratteristica si trovava inizialmente soprattutto nei firewall di fascia alta, sebbene sia diventata molto più comune nel corso degli anni. Il sistema Netfilter/iptables di Linux lo supporta attraverso l’opzione --state, che categorizza i pacchetti in base allo stato della connessione. Una sonda SYN è più probabile che funzioni contro un tale sistema, poiché i pacchetti ACK inaspettati sono generalmente riconosciuti come fasulli e scartati. Una soluzione a questo dilemma è quella di inviare sia sonde SYN che ACK specificando -PS e -PA.

-PU <port list>(UDP Ping)

Un’altra opzione di host discovery è il ping UDP, che invia un pacchetto UDP alle porte date. Per la maggior parte delle porte, il pacchetto sarà vuoto, anche se alcune usano un carico utile specifico del protocollo che ha più probabilità di ottenere una risposta: nmap-payloads” per una descrizione del database dei payloads.Packetcontent può anche essere influenzato con le opzioni --data,--data-string e --data-length.

L’elenco delle porte ha lo stesso formato delle opzioni -PS e -PA discusse in precedenza. Se non viene specificata alcuna porta, il valore predefinito è 40125. Questo default può essere configurato in fase di compilazione cambiando DEFAULT_UDP_PROBE_PORT_SPEC in nmap.h. Una porta poco comune è usata di default perché l’invio alle porte aperte è spesso indesiderabile per questo particolare tipo di scansione.

Se colpisce una porta chiusa sulla macchina di destinazione, la sonda UDP dovrebbe ottenere in cambio un pacchetto ICMP port unreachable. Questo significa per Nmap che la macchina è attiva e disponibile. Molti altri tipi di errori ICMP, come host/network unreachables o TTL exceeded sono indicativi di un host down o non raggiungibile. Anche una mancanza di risposta viene interpretata in questo modo. Se viene raggiunta una porta aperta, la maggior parte dei servizi semplicemente ignora il pacchetto vuoto e non restituisce alcuna risposta. Questo è il motivo per cui la porta di sonda predefinita è la 40125, che è altamente improbabile che sia in uso. Alcuni servizi, come il protocollo Character Generator (chargen), risponderanno ad un pacchetto UDP vuoto, e quindi riveleranno a Nmap che la macchina è disponibile.

Il vantaggio principale di questo tipo di scansione è che aggira i firewall e i filtri che schermano solo TCP. Per esempio, una volta possedevo un router wireless a banda larga Linksys BEFW11S4. L’interfaccia esterna di questo dispositivo filtrava tutte le porte TCP per impostazione predefinita, ma le sonde UDP avrebbero comunque suscitato messaggi di porta non raggiungibile e quindi avrebbero rivelato il dispositivo.

-PY <port list>(SCTP INIT Ping)

Questa opzione invia un pacchetto SCTP contenente un chunk INIT minimo. La porta di destinazione predefinita è 80 (configurabile in fase di compilazione cambiando DEFAULT_SCTP_PROBE_PORT_SPEC in nmap.h). Porte alternative possono essere specificate come parametro. La sintassi è la stessa di -p tranne che gli specificatori del tipo di porta come S: non sono ammessi. Esempi sono -PY22 e -PY22,80,179,5060. Nota che non ci può essere spazio tra -PY e l’elenco delle porte. Se sono specificate sonde multiple, saranno inviate in parallelo.

Il chunk INIT suggerisce al sistema remoto che si sta tentando di stabilire un’associazione. Normalmente la porta di destinazione sarà chiusa, e un chunk ABORT verrà inviato indietro. Se la porta è aperta, la destinazione farà il secondo passo di un SCTP four-way-handshake rispondendo con un chunk INIT-ACK. Se la macchina che esegue Nmap ha uno stack SCTP funzionale, allora interrompe l’associazione nascente rispondendo con un chunk ABORT piuttosto che inviare un chunk COOKIE-ECHO che sarebbe il passo successivo nel four-way-handshake. Il pacchetto ABORT è inviato dal kernel della macchina che esegue Nmap in risposta all’inaspettato INIT-ACK, non da Nmap stessa.

Nmap non si cura se la porta è aperta o chiusa. Sia la risposta ABORT o INIT-ACK discussa in precedenza dice a Nmap che l’host è disponibile e reattivo.

Sulle macchine Unix, solo l’utente privilegiato root è generalmente in grado di inviare e ricevere pacchetti SCTP grezzi. L’uso di SCTP INIT Pings non è attualmente possibile per gli utenti non privilegiati.

-PE;-PP;-PM(Tipi di ping ICMP)

In aggiunta agli insoliti tipi TCP, UDP e SCTP host discovery discussi in precedenza, Nmap può inviare i pacchetti standard inviati dall’onnipresente programma ping. Nmap invia un pacchetto ICMP di tipo 8 (echo request) agli indirizzi IP di destinazione, aspettandosi in cambio un tipo 0 (echo reply) dagli host disponibili. Sfortunatamente per gli esploratori della rete, molti host e firewall ora bloccano questi pacchetti, piuttosto che rispondere come richiesto dalla RFC 1122. Per questo motivo, le scansioni solo ICMP sono raramente abbastanza affidabili contro obiettivi sconosciuti su Internet. Ma per gli amministratori di sistema che monitorano una rete interna, possono essere un approccio pratico ed efficiente. Usa l’opzione -PE per abilitare questo comportamento di richiesta echo.

Mentre la richiesta echo è la query standard ICMP ping, Nmap non si ferma qui. Gli standard ICMP (RFC 792 e RFC 950 ) specificano anche i pacchetti di richiesta di timestamp, richiesta di informazioni e richiesta di maschera di indirizzo come codici 13, 15 e 17, rispettivamente. Mentre lo scopo apparente di queste richieste è quello di apprendere informazioni come le maschere di indirizzo e gli orari attuali, possono essere facilmente utilizzate per la scoperta dell’host. Un sistema che risponde è attivo e disponibile. Nmap attualmente non implementa i pacchetti di richiesta di informazioni, in quanto non sono ampiamente supportati. RFC 1122 insiste che “un host NON DEVE implementare questi messaggi”. Le query timestamp e address mask possono essere inviate con le opzioni -PP e -PM, rispettivamente. Una risposta timestamp (codice ICMP 14) o una risposta address mask (codice 18) rivela che l’host è disponibile. Queste due query possono essere preziose quando gli amministratori bloccano specificamente i pacchetti di richiesta echo dimenticando che altre query ICMP possono essere usate per lo stesso scopo.

-PO <protocol list>(IP Protocol Ping)

Una delle più recenti opzioni di host discovery è l’IP protocol ping, che invia pacchetti IP con il numero di protocollo specificato impostato nel loro header IP. L’elenco dei protocolli ha lo stesso formato degli elenchi delle porte nelle opzioni di ricerca di host TCP, UDP e SCTP discusse in precedenza. Se non viene specificato alcun protocollo, l’impostazione predefinita è di inviare pacchetti IP multipli per ICMP (protocollo 1), IGMP (protocollo 2) e IP-in-IP (protocollo 4). I protocolli predefiniti possono essere configurati in fase di compilazione cambiando DEFAULT_PROTO_PROBE_PORT_SPEC in nmap.h. Nota che per ICMP, IGMP, TCP (protocollo 6), UDP (protocollo 17) e SCTP (protocollo 132), i pacchetti sono inviati con le appropriate intestazioni di protocollo mentre gli altri protocolli sono inviati senza dati aggiuntivi oltre all’intestazione IP (a meno che non sia specificata una delle opzioni --data, --data-string o --data-length).

Questo metodo di ricerca dell’host cerca sia risposte che utilizzano lo stesso protocollo di una sonda, sia messaggi ICMP protocol unreachable che indicano che il dato protocollo non è supportato dall’host di destinazione. Entrambi i tipi di risposta significano che l’host di destinazione è vivo.

--disable-arp-ping(No ARP o ND Ping)

Nmap normalmente fa la ricerca ARP o IPv6 Neighbor Discovery (ND) degli host ethernet connessi localmente, anche se vengono usate altre opzioni di ricerca host come -Pn o -PE. Per disabilitare questo comportamento implicito, usare l’opzione --disable-arp-ping.

Il comportamento di default è normalmente più veloce, ma questa opzione è utile sulle reti che utilizzano proxy ARP, in cui un router risponde speculativamente a tutte le richieste ARP, facendo apparire ogni obiettivo come attivo secondo la scansione ARP.

--discovery-ignore-rst

In alcuni casi, i firewall possono spoofare le risposte di reset TCP (RST) in risposta alle sonde verso indirizzi non occupati o non autorizzati. Poiché Nmap normalmente considera le risposte RST come prova che l’obiettivo è attivo, questo può portare a perdite di tempo nella scansione di obiettivi che non ci sono. Usando il --discovery-ignore-rst si impedirà a Nmap di considerare queste risposte durante il rilevamento dell’host. Potrebbe essere necessario selezionare ulteriori opzioni di rilevamento dell’host per assicurarsi di non perdere obiettivi in questo caso.

--traceroute(Trace path to host)

I tracerout vengono eseguiti dopo la scansione utilizzando le informazioni dai risultati della scansione per determinare la porta e il protocollo più probabile per raggiungere l’obiettivo. Funziona con tutti i tipi di scansione eccetto le scansioni di connessione (-sT) e le scansioni inattive (-sI). Tutte le tracce utilizzano il modello di temporizzazione dinamica di Nmap e sono eseguite in parallelo.

Traceroute funziona inviando pacchetti con un basso TTL (time-to-live) nel tentativo di suscitare messaggi ICMP Time Exceeded da hop intermedi tra lo scanner e l’host di destinazione. Le implementazioni standard di traceroute iniziano con un TTL di 1 e incrementano il TTL fino a raggiungere l’host di destinazione. Il traceroute di Nmap inizia con un TTL alto e poi decrementa il TTL fino a raggiungere lo zero. Farlo al contrario permette a Nmap di impiegare algoritmi di caching intelligenti per accelerare le tracce su più host. In media Nmap invia 5-10 pacchetti in meno per host, a seconda delle condizioni di rete. Se viene scansionata una singola subnet (cioè 192.168.0.0/24) Nmap potrebbe dover inviare solo due pacchetti alla maggior parte degli host.

-n(Nessuna risoluzione DNS)

Dice a Nmap di non fare mai la risoluzione DNS inversa sugli indirizzi IP attivi che trova. Dal momento che il DNS può essere lento anche con il resolver stub parallelo integrato di Nmap, questa opzione può ridurre i tempi di scansione.

-R(Risoluzione DNS per tutti gli obiettivi)

Dice a Nmap di fare sempre la risoluzione DNS inversa sugli indirizzi IP di destinazione. Normalmente il DNS inverso viene eseguito solo contro gli host reattivi (online).

--resolve-all(Scansione di ogni indirizzo risolto)

Se un hostname di destinazione si risolve in più di un indirizzo, scansionarli tutti. Il comportamento predefinito è quello di scansionare solo il primo indirizzo risolto. Indipendentemente da ciò, solo gli indirizzi della famiglia di indirizzi appropriata saranno scansionati: IPv4 di default, IPv6 con -6.

--system-dns(Usa il resolver DNS di sistema)

Per impostazione predefinita, Nmap effettua la risoluzione inversa degli indirizzi IP inviando query direttamente ai server dei nomi configurati sul vostro host e ascoltando le risposte. Molte richieste (spesso decine) vengono eseguite in parallelo per migliorare le prestazioni. Specifica questa opzione per utilizzare invece il resolver di sistema (un IP alla volta tramite la chiamata getnameinfo). Questo è più lento e raramente utile a meno che non troviate un bug nel resolver parallelo di Nmap (fateci sapere se lo trovate). Il resolver di sistema è sempre usato per i forward lookup (ottenere un indirizzo IP da un hostname).

--dns-servers <server1>] (Servers to use for reverse DNS queries)

Di default, Nmap determina i tuoi server DNS (per la risoluzione rDNS) dal tuo file resolv.conf (Unix) o dal registro (Win32). In alternativa, è possibile utilizzare questa opzione per specificare server alternativi. Questa opzione non viene rispettata se stai usando --system-dns. Usare più server DNS è spesso più veloce, specialmente se si scelgono server autoritativi per il proprio spazio IP di destinazione. Questa opzione può anche migliorare l’invisibilità, poiché le vostre richieste possono essere rimbalzate da qualsiasi server DNS ricorsivo su Internet.

Questa opzione è utile anche quando si scansionano reti private. A volte solo pochi server di nomi forniscono informazioni rDNS adeguate, e si potrebbe anche non sapere dove sono. È possibile eseguire la scansione della rete per la porta 53 (forse con il rilevamento della versione), quindi provare la scansione della lista Nmap (-sL) specificando ogni server di nomi uno alla volta con --dns-servers finché non se ne trova uno che funziona.

Questa opzione potrebbe non essere rispettata se la risposta DNS supera la dimensione di un pacchetto UDP. In una tale situazione il nostro risolutore DNS farà il massimo sforzo per estrarre una risposta dal pacchetto troncato, e se non avrà successo ricadrà nell’uso del risolutore di sistema. Inoltre, le risposte che contengono alias CNAME ricadranno sul resolver di sistema.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.