Nel corso di varie guide pubblicate su TurboLab.it abbiamo evidenziato la necessità di aprire le porte di comunicazione appropriate sul router domestico e/o sul firewall del sistema operativo. Dietro tali porte rimangono in attesa di connessione i programmi preposti, che possono così elaborare la richiesta e rispondere ai client. Ebbene: eseguire un port scan significa bussare a tutte le porte di un sistema per scoprire quali siano effettivamente presidiate da un processo. In questo modo è possibile capire quali programmi di rete siano in esecuzione sul computer o sul server esaminato. In questa guida vederemo come utilizzare Nmap (tramite la sua interfaccia grafica Zenmap), ovvero il tool di riferimento per eseguire port scan
Le informazioni ricavate tramite un port scan possono essere utilizzate in modi differenti. Chi scansiona i propri device può diagnosticare l'irraggiungibilità di un determinato servizio: ad esempio, proprio il port scan è il metodo ideale per capire perché non sia possibile collegarsi al proprio server FTP, oppure per quale motivo Desktop remoto non consenta la connessione. Ancora: è molto importante per ottenere un quadro completo della propria configurazione, ed essere sicuri al 100% che non vi siano servizi esposti su Internet in modo accidentale.
Ma qualcuno potrebbe sfruttare il report anche in modo ostile: ottenere la lista delle porte aperte è il primo passo per capire quali programmi siano in esecuzione sul sistema che si desidera aggredire, e studiare così una strategia d'attacco mirata.
Nota: in questo articolo parleremo esplicitamente di Nmap, un programma che consente di eseguire il port scan di altri sistemi in rete locale (LAN) o su Internet. Se tutto quello che si desidera è valutare quali porte siano esposte su Internet dal PC/router in uso, esiste un'alternativa più semplice:
» Leggi: Come testare se una porta del router è aperta? guida al "Port scan" con Shields Up!
quanto è legale eseguire un port scan?
Prima di cominciare, una raccomandazione importante. Poiché un port scan può costituire il primo tassello di un'aggressione informatica, alcuni amministratori di sistema predispongono opportuni strumenti in grado di rilevare tale attività e registrare l'indirizzo IP d'origine, ovvero... il nostro! In linea di massima, in Italia la procedura in sé non è illegale, ma è un po' come girare per la città bussando a tutti i portoni per vedere se risponde qualcuno. Non è strettamente vietato, ma se qualcuno si lamenta, potremmo dover rispondere del nostro comportamento.
Raccomando quindi di eseguire port scan solamente fra computer di proprietà o, comunque, dopo aver ottenuto un'esplicita autorizzazione.
Nmap: presentazione
Nmap (contrazione di Network Mapper) è il più acclamato software per eseguire port scan. Distribuito con licenza open source (GPL), è compatibile con Windows, Linux, Mac e molte altre piattaforme. La prima versione risale al 1997 e viene tutt'oggi aggiornato periodicamente. L'autore è tale Gordon Lyon (meglio noto con lo pseudonimo di Fyodor Vaskovich), uno smanettone divenuto molto famoso fra gli appassionati di sicurezza informatica proprio per questo suo lavoro.
Nmap è comparso anche nelle scene di "hacking" di alcuni film. La più celebre è in Matrix Reloaded, dove Trinity lo usa per eseguire il port scan del server che gestisce la rete elettrica. Tramite Nmap riesce ad identificare il servizio SSH in esecuzione sulla porta 22, che aggredisce poi con un exploit che le permette di guadagnare l'accesso completo
[nota di colore: nella scena si vede il nome dell'exploit usato per sferrare l'attacco: sshnuke. Sebbene sia un nome di fantasia, la vulnerabilità che sfrutta è la CVE-2001-0144 / CVE-2002-1547, realmente scoperta e corretta nel 2001!]
Il vero e proprio Nmap è un eseguibile da linea di comando ma, fortunatamente, esistono alcune ottime interfacce grafiche che ne rendono l'uso più pratico.
Passo 1: installare Nmap
Per prima cosa, portiamoci alla pagina di riferimento per scaricare il pacchetto di installazione:
» Visita: Nmap download
Gli utenti Windows vorranno scaricare il file indicato come Latest stable release self-installer: nmap-X.yy-setup.exe
.
Una volta lanciata la procedura di installazione, sono necessari pochi click su Avanti
per completare il setup
Passo 2: identificare il bersaglio
Dovete ora identificare il sistema che desiderate scansionare.
Se si tratta di un computer residente all'interno della vostra stessa LAN, basta usare il nome della macchina (lo stesso che impiegate per accedere a file e cartelle condivise) oppure il suo indirizzo IP: generalmente sarà simile a 192.168.0.1
oppure a 10.0.0.1
.
» Leggi: Trovare il nome, l'indirizzo IP e il MAC address del proprio computer Windows
Se invece volete effettuare il port scan di un sistema remoto, raggiungibile tramite Internet, dovete utilizzare il suo nome a dominio. Si tratta di una stringa simile a miopc.duckdns.org
se state testando il vostro PC di casa da una rete esterna (maggiori info) oppure www.google.com
per un server che eroghi un servizio web.
Il team di sviluppo di Nmap ha appositamente predisposto scanme.nmap.org
, un server con alcuni servizi in esecuzione e liberamente scansionabile da tutti coloro che vogliano prendere confidenza con il programma.
Ricordate infine che, se il vostro obbiettivo risiede dietro ad un router, il port scan colpirà il router stesso: affinché sia possibile raggiungere lo specifico PC/server dietro al router, è indispensabile che, sul router, sia correttamente configurato l'inoltro delle porte ai sistemi della sua LAN. Tale attività è volgarmente chiamata "apertura delle porte del router" (port forwarding).
» Leggi: Come aprire le porte sul router/modem: la guida definitiva
Passo 3: Prima scansione con Zenmap
A questo punto, cerchiamo zenmap
nel menu Start per localizzare il collegamento Nmap - Zenmap GUI
. Avviamolo e ci troveremo davanti a Zenmap, una comoda interfaccia grafica per Nmap.
Tanto per fare una prima prova veloce, immettiamo il server di test scanme.nmap.org
nel campo Obbietivo
, quindi avviamo la procedura premendo Scansione
in alto a destra.
Attendiamo qualche istante, quindi clicchiamo sulla voce scanme.nmap.org
apparsa nella colonna di sinistra.
Passiamo ora alla scheda Porte / Hosts
e scopriremo che il bersaglio ha quattro porte aperte, fra le quali spiccano il webserver (porta 80
, eroga il sito presentazionale scanme.nmap.org) e la 22
per l'accesso via SSH
La scheda Topologia
mostra invece il percorso fra i vari router compiuto dai pacchetti per raggiungere la destinazione.
Dettagli host
propone infine un riassunto generale di informazioni tecniche sul bersaglio e una stima del sistema operativo in uso
Scansionare intere reti
Nmap vi consente anche di controllare, con un colpo solo, lo stato di molteplici i bersagli. Se già conoscente i nomi o gli indirizzi IP dei computer che volete scansionare, scriveteli nel campo Obbiettivo
separandoli da uno spazio. Ad esempio: 192.168.0.2 192.168.0.3 192.168.0.4
.
In alternativa, potete testare interi intervalli anche senza digitare ad uno ad uno gli indirizzi: basta inserire qualcosa del tipo 192.168.0.1-10
per intendere "i primi dieci host della rete".
Se invece desiderate testare tutte le macchine presenti su una specifica rete, limitatevi ad immettere l'indirizzo IP parziale, completando poi con un asterisco (*). Ad esempio: per testare una LAN classica scriveremo 192.168.0.*
, oppure 192.168.1.*
o ancora 10.0.0.*
a seconda della specifica configurazione in uso.
Ovviamente, il port scan di molteplici sistemi richiede un po' più di tempo. Al termine dell'operazione, Zenmap elenca tutti i sistemi trovati nella sezione sulla sinistra dell'interfaccia. Selezionandone uno, potremo poi usare le tab in alto per visualizzare il risultato del port scan.
Questo è il report sulla mia LAN. L'elemento selezionato è la stampante Wi-Fi
Port scan e Porte UDP
Fino ad ora abbiamo parlato implicitamente solo di porte TCP, ovvero quelle utilizzate da tutti i più importanti servizi di rete. Nmap è però in grado di rilevare anche eventuali porte UDP, sebbene le differenze intrinseche fra i due protocolli siano tali da rendere nettamente più difficile e impreciso questo secondo tipo di scansioni.
Per ricavare informazioni anche sulle porte UDP, selezionate semplicemente Intense scan plus UDP
dal menu a tendina Profilo
prima di iniziare la procedura. Si noti, nell'immagine seguente, la rilevazione della porta 53 UDP (server DNS)
La scansione richiede molto tempo: oltre 5 minuti per singolo sistema, dal mio PC di lavoro.
Verificare lo stato di una porta specifica
Zenmap non offre un elemento grafico per indicare ad Nmap di scansionare una singola, specifica porta. Per aggirare il problema, indicate il vostro obbiettivo nel campo Obbiettivo
, selezionate Regular scan
dal menu a tendina Profilo
) e quindi inserite il parametro -p X
(dove X
equivale al numero di porta da testare) fra le due stringhe presenti nel campo Comando
. Per testare la 80 sul PC con indirizzo IP 192.168.0.1, ad esempio, dovete ottenere questo comando:
nmap -p 80 192.168.0.1
Proseguite e Nmap testerà solo la raggiungibilità della porta scelta. Il responso, come facilmente intuibile, è molto rapido.
No, verso "localhost" non funziona
Prima che perdiate tempo cercando di eseguire un port scan del vostro stesso PC (localhost
), sappiate che, perlomeno sotto Windows, tale pratica è preclusa. Il risultato riportato è assolutamente fuorviante: non vengono infatti rilevate porte che in realtà sono aperte e viceversa
Allo scopo, utilizzate un secondo computer, oppure interrogate il sistema operativo tramite CurrPorts:
» Leggi: Tenere sotto controllo quali processi si collegano a Internet
Port scan di TurboLab.it
Nmap consente di scansionare qualsiasi host, compresi quelli che erogano i vostri siti web preferiti. Come detto in apertura però, tale pratica potrebbe non essere gradita dagli amministratori dei sistemi in questione, motivo per cui sconsiglio nuovamente di eseguire port scan senza avere ottenuto le debite autorizzazioni.
A scopo informativo e sperando di anticipare la curiosità di qualcuno, riporto un esempio di quello che è possibile ottenere rivolgendo il programma verso un server come quello che sorregge TurboLab.it
Come facilmente anticipabile, Nmap rileva le porte 20 e 21 (server FTP), la 22 (server SSH), la 25 (server SMTP) ma, soprattutto la 80 (HTTP) e la 443 (HTTPS) che erogano il sito e permettono di leggere questo articolo. C'è anche la 3690, utilizzata per ospitare un repository SVN che conserva il codice PHP/HTML che compone la nostra web application.
[nota: un'eventuale scansione proveniente da un indirizzo IP diverso dal mio non rileverebbe la porta 22: per motivi di sicurezza, il firewall è configurato in modo da bloccarne preventivamente l'accesso da qualsiasi altra sorgente]
Per altre informazioni sulla nostra infrastruttura:
» Vedi: Info tecniche piattaforma
È tutto configurato ma la porta non si apre
Quando tutto sembra essere configurato come da manuale ma il servizio remoto continua a non rispondere, c'è solo una cosa da fare: armarsi di questa "checklist" e... trovare l'inghippo.
Ulteriori informazioni
Nel corso di questa guida abbiamo affrontato le funzionalità basilari di Nmap. In realtà, abbiamo coperto parecchia strada: prendendo confidenza con le funzionalità e le opzioni trattate abbiamo già acquisito le abilita principali per eseguire Port scan con risultati interessanti.
Nmap è comunque molto flessibile, ed offre una pletora di opzioni e parametri differenti che non mi è possibile approfondire in questa sede. Gli interessati possono fare riferimento all'eccellente documentazione ufficiale e, in particolare, al capitolo "Port Scanning Techniques", per tutte le altre informazioni.