Nmap cos’è e come funziona un port scanner
11 Mar 2020 - Informatica, Software
Indice
Nmap, cos’è e come funziona: cos’è un port scanner!
Cos’è un port scanner e come può tornare utile al fine di un sistemista? Perchè Nmap, cos’è e come funziona IL tool per antonomasia del port scanning?
Il port scanning
Il port scanning è una tecnica utilizzata per sondare un server o un host per stabilire quali servizi e porte sono aperte (se non sai cosa sono le porte: https://www.giustinoromano.it/2019/12/10/osi-layer-4-livello-trasporto/#Porte ).
Con questo software sarà possibile addirittura controllare il sistema operativo dell’host connesso alla rete locale.
Controllare quanti IP sono connessi alla LAN un pò come con Fing.
Permette di controllare le porte aperte di un singolo host o di una range di hosts!
Nmap installazione
Nmap è rilasciato sotto licenza GNU GPL ed è possibile scaricarlo da qui o digitando , in distro Debian:
sudo apt-get install nmap
Dispone anche di una interfaccia grafica chiamata Zenmap ma preferisco di gran lunga la riga di comando del terminale.
Nmap, cos’è e come funziona : Arping per trovare gli IP connessi alla rete locale
Utilizzando il protocollo ARP (non mi dilungherò sul concetto che ho spiegato bene nel’articolo seguendo il link), Nmap invia frame di dati su tutti gli indirizzi IP della rete.
Quelli che rispondono sono ovviamente connessi.
Presumendo di essere in una rete LAN di classe C cioè 192.168.1.0 con maschera 255.255.255.0 il comando per fare una scansione di tutta la rete è :
nmap -sn 192.168.1.0/24
Che tu stia usando Zenmap o il terminale avrai un risultato del genere:
Possiamo notare che Nmap ci restituisce l’indirizzo IP di ogni host che ha risposto alla chiamata ARP con relativi MAC Address e produttore della scheda di rete.
Vediamo ora come possiamo fare un port scanning aggiungendo un pò di parametri in più.
Intanto per vedere le opzioni che si possono utilizzare in aggiunta al comando nmap è possibile visualizzarne la lista scrivendo nel terminale semplicemente:
nmap
Ci verrà restituito questo:
nmap -T4 -A -v 192.168.1.0/24
In questo specifico caso stiamo facedo una scansione aggressiva data dal parametro -T4 (per maggiori informazioni https://nmap.org/book/performance-timing-templates.html ).
Per capire il significato della “-A” rifacciamoci al listato che ci viene restituito dal comando “nmap“ senza alcuna opzione:
La “-v” sta per verbose che tradotto in inglese significa “prolisso“. Ciò significa che l’output sarà più dettagliato.
Vi rimando comunque alla guida ufficiale : https://nmap.org/book/man.html
Nmap, cos’è e come funziona: facciamo un pò di scanning!
SYN SCAN
La SYN SCAN è detta anche Stealth Scan o Half Open Scan e sfrutta il Three Way Handshake, infatti si effettua un mezzo TWH:
- il client invia al server un syn
- il server se può rispondere su quella porta invia un syn ack
- a questo punto non inviamo un ack instaurando una connessione a tutti gli effetti ma inviamo un reset (impostiamo il pacchetto con il flag “reset” a “1”)
comando:
namp -sS (attiva la scansione SYN SCAN) -v (verbose, più dettagli) -p (porta) 80 [ip_target]
In questo modo, cioè non completando la connessione difficilmente comparirà nei file di log.
Tuttavia sistemi di individuazione di intrusione, detti IDS, possono registrare tali attività.
La dolce Trinity del film Matrix che utilizza nmap e in particolare questa tecnica!!! ????????????
XMAS SCAN
Questa tecnica è utilizzata per firewall non molto potenti e non funziona con sistemi Windows.
Sostanzialmente bombardiamo il target con invio di pacchetti anomali (di tipo URG, ACK, RST, SYN, PSH, FIN).
La macchina attaccante invia questi pacchetti alla macchina target con questi pacchetti. se non c’è risposta dal target significa che la porta è aperta.
Se invece il taget riponde con un pacchetto RST (reset) significa che la porta è chiusa.
nmap -sX (attiva XMAS SCAN) -v (verbose, per avere più dettagli) -p (porta) 80 [ip_target]
FIN SCAN
Funziona solo su sistemi UNIX. Anche qui abbiamo un attaccante e un target. Mandiamo un pacchetto con FIN settato a 1.
Se non c’è risposta, se non torna niente indietro possiamo supporre che la porta è aperta. Se invece dopo aver mandato il pacchetto FIN settato a 1 e indietro otteniamo un RESET/ACK la porta è chiusa.
nmap -sF (attiva FYN SCAN) -v (verbose, per avere più dettagli) -p (porta) 80 [ip_target]
<h3 style="font-weight:700">NULL SCAN</h3><br>
Anche questa scansione non funziona su sistemi Microsoft.
Mandiamo un pacchetto TCP con nessun flag impostato.
Abbiamo un attaccante che manda un pacchetto al target in cui non ci sono flag tcp e se non otteniamo risposta allora la porta è aperta.
Altrimenti se otteniamo un RST/ACK come riposta allora la porta è chiusa
nmap -sN (attiva NULL SCAN) -v (verbose, per avere più dettagli) -p (porta) 80 [ip_target]
IDLE SCAN
Dunque questa tecnica è un pochino più articolata da spiegare.
Non è niente di che sostanzialmente fa tutto il comando ma è davvero interessante in quanto la macchina attaccante non interagisce direttamente con il bersaglio ma utilizzarà un terzo personaggio : lo zombie!
Di fondo utilizza una tecnica chiamata spoofing.
La macchina attaccante si serve di una macchina, chiamata in gergo zombie per fare spoofing e far credere al bersaglio di essere lo zombie.
Do per scondato che ti ricordi o sai come funziona il Three Way Handshake.
L’attacco si sviluppa in tre fasi:
1) L’attaccante invia allo zombie direttamente un SYN ACK.
Lo zombie non si aspetta di ricevere un syn ack e si trova in una situazione anomala perchè non ha ricevuto alcun syn ergo lo zombie replica alla macchina attaccante con un pacchetto col flag reset.
In questo momento nel pacchetto col flag reset è presente l’ IP
e il sequence number dello zombie, ad esempio 1000.
2) A questo punto l’attaccante manda un syn al target con l’indirizzo ip dello zombie (spoofed ip). La macchina target di conseguenza avendo l’ip dello zombie replicherà allo zombie con un syn ack. Ergo lo zombie replicherà alla macchina target con un reset. Nel pacchetto è presente l’IP con il sequence number incrementato di 1 quindi andrà a 1001.
3) Nell’ultima fase la macchina attancante manderà un syn ack allo zombie e questo replica con un reset con il sequence number incrementato ulteriormente di 1 quindi va a 1002.
Questo incremento a 1002 fa intuire all’attaccante che la porta del target è sicuramente aperta e tutto ciò è avvenuto non facendo interagire il bersaglio direttamente con la macchina attaccante ma sempre con lo zombie.
In caso di porta chiusa:
1) come prima l’attaccante manda allo zombie un syn ack e lo zombie risponde con un reset impostando a 1000 il sequence number
2) anche qui l’attaccante manda al bersaglio un syn non con il suo indirizzo ip ma con quello dello zombie (spoofed ip)
supponendo che il bersaglio abbia la porta chiusa manda un reset allo zombie e il sequence number resta a 1000
3) l’attaccante rimanda un syn ack allo zombie che ci rispode con un reset a 1001
Nel pratico:
- fare una scansione della rete
- rilevare tutti gli ip della rete attivi
- abbiamo il bersaglio? (di solito è un server o cose del genere per cui hanno ip statici)
- scegliere uno zombie dagli altri ip e accertarsi che la macchina abbia attiva la ip sequence con:
nmap -- script ipidseq [ip zombie]
- accertati che lo zombie abbia l’ip sequence attivo possiamo procedere con l’attacco:
nmap -Pn -F -sI [ip zombie] [ip target]
Se volessimo non fare la fast scan ma specificare una porta il comando è :
nmap -Pn -p 80 -sI [ip zombie] [ip target]
GiustinoRomano.IT – I do IT with my Heart.
Tag: nmap, port scanner, port scanning, porte