Basi

Usare NMAP potrebbe sembrare semplice: Host Discovery.

Usare NMAP, l’approccio giusto.

Usare NMAP ? Niente di più complicato ! Purtroppo non faccio parte di quella schiera di “informatici” e di aziende che promettono “Diventa ethical hacker in 30 lezioni” e con 600 Euri. Un  white hat o meglio ancora, un professionista della sicurezza, impiega anni di studio e tantissime ore “sul campo” per cercare di capire e comprendere almeno il 20% di quello che gli gira intorno. Questo mondo, in continuo mutamento e con infinite “strade” è impossibile da conoscere interamente. Esiste la specializzazione e, solo più figure professionali in team, possono cercare di dare “sicurezza” ad una azienda o ad un ente. Su questo, ci ritornerò sicuramente.

Comunque, vediamo come utilizzare, almeno nelle forme più comuni Nmap. Utilizzare Nmap, non significa solo lanciare l’applicazione con i parametri giusti. Significa sapere cosa si vuole cercare, sapere come cercarlo e saper analizzare i dati in uscita.

In un post precedente ho parlato già di NMAP, spiegando lo strumento e le finalità del suo utilizzo. Vediamo in concreto il suo utilizzo. Ricordo che tutte le tematiche riportate in questo articolo come nei futuri riguardanti NMAP sono valide per tutti gli scanner di rete, e vi saranno alcune configurazioni proprie per NMAP.

Usare NMAP

Purtroppo, devo partire dalla convinzione che chi utilizza Nmap conosca almeno le basi (solide) circa i protocolli di comunicazione e sistemi operativi. Questa piccola serie di articoli, oltre a fornire la sintassi da utilizzare ( ma ,ne trovate altre centinaia in rete) tenterà di spiegare il perchè.

Per iniziare, vi consiglio di analizzare la vostra rete domestica per fare dei test. Ormai nelle nostre case ci può essere uno di tutto! Un router, un pc, uno smartphone una periferica IoT, una console giochi, una smart tv e tanto tanto altro ancora!

 

Tecniche di scansione della rete.

Nmap può essere utilizzato sia da riga di comando che attraverso la sua gui. In tutti i casi, la sintassi non cambia! Oggi parleremo di Host Discovery e del mitico ICMP! Sembra banale, ma non lo è.

Host Discovery

La prima parte della scansione di rete è l’identificazione degli host attivi, nota come host discovery.

Gli scanner di rete eseguono il rilevamento dell’host cercando di sollecitare una risposta da un host. Potete eseguire il rilevamento dell’host su un singolo indirizzo IP, un intervallo di indirizzi IP o un elenco separato da virgole di indirizzi IP. Alcuni scanner di rete (come Nmap) permettono anche di fornire un file di input che contiene un elenco di indirizzi IP da analizzare o un elenco di esclusione di indirizzi IP da non analizzare.

Gli scanner di rete utilizzano una varietà di tecniche per sollecitare risposte da un obiettivo.

La scoperta dell’host è spesso eseguita dalle seguenti tecniche di base:

TCP Ping. Un TCP ping invia un pacchetto TCP SYN o TCP ACK a un indirizzo IP di destinazione. Dovrete anche fornire un numero di porta di destinazione a cui inviare il pacchetto come 21, 25 o 80. Se l’indirizzo IP di destinazione è attivo, esso risponderà, tuttavia il tipo di risposta dipende dal tipo di pacchetto inviato, dal sistema operativo della e dalla presenza di firewall o liste di accesso del router.

Ping UDP. Un Ping UDP invia un pacchetto UDP a una specifica porta UDP all’indirizzo IP di destinazione. Se l’indirizzo IP di destinazione è attivo, ma la porta UDP è chiusa, il sistema invierà un ICMP Port Unreachable. Tuttavia, a causa della la natura senza connessione di UDP, questo tipo di ping UDP è unico in quanto nessuna risposta dal bersaglio indica anche la possibilità che la porta (e quindi, l’host) sia attiva.

ICMP Timestamp. Un messaggio ICMP tipo 13 è una richiesta di timestamp. Se l’indirizzo IP di destinazione è attivo risponderà con l’ora corrente (ICMP tipo 14).

Richiesta ICMP ECHO Una richiesta ICMP ECHO è un pacchetto ICMP tipo 8 comunemente chiamato ping. Se l’indirizzo IP di destinazione è attivo, si avrà un ICMP ECHO di risposta (ICMP tipo 0). L’invio di richieste ICMP ECHO a più host è noto come ping sweep.

ICMP Address Mask Request. Un messaggio ICMP tipo 17 è una richiesta di maschera di indirizzo. Se l’indirizzo IP di destinazione è attivo risponderà con la sua maschera di rete (ICMP tipo 18).

Questi metodi di scoperta dell’host non sono a prova di errore. Mentre nessuna risposta potrebbe dare un’indicazione dello stato attivo dell’obiettivo, potrebbe anche significare che un router o un firewall sta eliminando i pacchetti. Inoltre, alcuni sistemi operativi potrebbero non soddisfare le richieste e far cadere il pacchetto.

Da tenere bene in mente che esiste la cosiddetta mappatura inversa (Inverse mapping).

L’Inverse mapping ,è la capacità di determinare potenziali host attivi raccogliendo informazioni sugli indirizzi IP inattivi. Un firewall o un router che sta bloccando i ping non risponderà ad un pacchetto di richiesta ICMP ECHO se l’indirizzo IP di destinazione è attivo sulla rete. Tuttavia, spesso rispondono con un pacchetto ICMP host unreachable se il target non è attivo.

Vi consiglio di leggere “Il lato oscuro del Ping” . Potreste rimanere affascinati da quello che può permettere di fare.

 

Qualche Parametro per Host Discovery di NMAP?

Se non vengono date opzioni di host discovery, Nmap invia una richiesta ICMP echo, un pacchetto TCP SYN alla porta 443, un pacchetto TCP ACK alla porta 80 e una richiesta ICMP timestamp. (Per IPv6, la richiesta ICMP timestamp è omessa perché non fa parte di ICMPv6). Queste impostazioni predefinite sono equivalenti alle opzioni -PE -PS443 -PA80 -PP. Le eccezioni sono le scansioni ARP (per IPv4) e Neighbor Discovery (per IPv6) che sono usate per qualsiasi obiettivo su una rete ethernet locale. Per gli utenti di shell Unix senza privilegi, le sonde predefinite sono un pacchetto SYN alle porte 80 e 443 usando la chiamata di sistema connect. Questa scoperta dell’host è spesso sufficiente per la scansione delle reti locali, ma un insieme più completo di sonde di scoperta è raccomandato per il controllo della sicurezza.

Le opzioni -P* (che selezionano i tipi di ping) possono essere combinate. Puoi aumentare le tue probabilità di penetrare firewall stringenti inviando molti tipi di sonda usando diverse porte TCP/flag e codici ICMP. Si noti inoltre che l’ARP/Neighbor Discovery è fatto di default contro obiettivi su una rete locale Ethernet anche se si specificano altre opzioni -P*, perché è quasi sempre più veloce ed efficace.

Per impostazione predefinita, Nmap fa il rilevamento degli host e poi esegue una scansione delle porte contro ogni host che determina essere online. Questo è vero anche se si specificano tipi di rilevamento di host non predefiniti come le sonde UDP (-PU).

Parametri

-sL (List Scan)

La list scan è una forma generica 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. 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 evitare di scansionare la rete dell’azienda sbagliata.

Dato che 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 volete disabilitare il rilevamento dell’host pur continuando ad eseguire tali funzionalità di livello superiore, leggete l’opzione -Pn (skip host discovery).

-sn (No port scan)

Questa opzione dice a Nmap di non fare un port scan dopo il rilevamento dell’host, e di stampare solo gli host disponibili che hanno risposto alle sonde di rilevamento dell’host. Questo è spesso conosciuto come “ping scan”, ma si può anche richiedere l’esecuzione di traceroute e degli script NSE host. 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. 

se beccate firewall …

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 di connessione) alle porte 80 e 443 sul target. Quando un utente privilegiato cerca di scansionare obiettivi su una rete ethernet locale, vengono usate 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 è usata, le sonde predefinite sono 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 fa cadere le sonde o le loro risposte.

-Pn (Nessun 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 di destinazione 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 dell’host e la scansione delle porte, permettendo comunque l’esecuzione di NSE, usa le due opzioni -Pn -sn insieme.

Per le macchine su una rete ethernet locale, 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 <lista di porte> (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 eccetto che gli specificatori del tipo di porta come T: non sono ammessi. Esempi sono -PS22 e -PS22-25,80,113,1050,35000. Nota che non ci può essere spazio tra -PS e l’elenco delle porte. Se vengono specificate più sonde, queste verranno inviate in parallelo.

-PA <lista di porte> (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.

-PU <lista di porte> (UDP Ping)

Un’altra opzione di scoperta dell’host è 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 payload specifico del protocollo che ha più probabilità di ottenere una risposta. Vedere la sezione chiamata “Carichi utili UDP: nmap-payloads” per una descrizione del database dei carichi utili. Il contenuto dei pacchetti può anche essere influenzato dalle 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 a porte aperte è spesso indesiderabile per questo particolare tipo di scansione.

-PY <lista di porte> (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 eccetto 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.

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

Oltre agli insoliti tipi di scoperta di host TCP, UDP e SCTP 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. Usate l’opzione -PE per abilitare questo comportamento di echo request.

-PO <lista di protocolli> (IP Protocol Ping)

Una delle più recenti opzioni di host discovery è il ping del protocollo IP, che invia pacchetti IP con il numero di protocollo specificato impostato nella loro intestazione 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).

–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 consentiti. Poiché Nmap normalmente considera le risposte RST come prova che il target è attivo, questo può portare a perdite di tempo nella scansione di target che non ci sono. Usando –discovery-ignore-rst si impedirà a Nmap di considerare queste risposte durante la scoperta dell’host. Potresti aver bisogno di selezionare altre opzioni di host discovery per assicurarti di non perdere obiettivi in questo caso.

–traceroute (traccia il percorso dell’host)

I traceroute 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.

Prossimo Passo per usare NMAP .

Cosa si deve conoscere per il prossimo step ? Qual è la differenza tra un protocollo orientato alla connessione e un protocollo senza connessione? Un protocollo orientato alla connessione (ad esempio, TCP) crea una connessione tra due computer prima di inviare i dati, e poi verifica che i dati abbiano raggiunto la loro destinazione usando le conferme (ACK) (cioè i messaggi inviati al computer di invio dal computer ricevente che computer ricevente che confermano la ricezione). I protocolli senza connessione inviano i dati e confidano che raggiungano la destinazione corretta o che l’applicazione gestire la ritrasmissione e la verifica dei dati.

Usare Nmap : tool potentissimo per il Penetration Testing Scanner.

Come Usare NMAP potrebbe sembrare semplice: Host Discovery. 

Usare NMAP : Troviamo porte e servizi attivi sul nostro bersaglio.

NMAP VS Firewall : Si tenta sempre ! Vediamo come.

Nmap port scanning: Facile dire aperta e chiusa.

Sintassi nmap, volume 1 : possibili tipi di scansione.

Sintassi nmap volume 2 : possibili tipi di scansione.

 

Consiglio

Three-way handshake : Instauriamo una connessione

Il Protocollo UDP : Semplice , veloce ma anche vulnerabile. 

Usare Nmap : tool potentissimo per il Penetration Testing Scanner.

Se ritieni questo articolo interessante, seguimi su  Facebook o Twitter o Telegram per poter essere informato su i nuovi contenuti proposti.

Key: computer networking, Cybersecurity, cybersicurezza, hacking, Host Discovery, ICMP Address Mask Reques, ICMP ECHO, ICMP Timestamp, Inverse mapping, nmap, penetration test, penetration testing, Penetration Testing Scanner, Ping UDP, sicurezza informatica, TCP Ping, tcp/ip, Usare Nmap, vulnerability