Le porte svolgono un ruolo fon­da­men­ta­le nel garantire che i pacchetti di dati rag­giun­ga­no la de­sti­na­zio­ne de­si­de­ra­ta. Servono da in­ter­fac­cia tra computer e servizi di sistema o programmi e vengono uti­liz­za­te dai pro­to­col­li di rete TCP e UDP. In com­bi­na­zio­ne con l’indirizzo IP il sistema operativo sa, grazie all’in­di­ca­zio­ne della porta, non solo a quale computer di de­sti­na­zio­ne inviare il flusso di dati, ma anche a quale ap­pli­ca­zio­ne deve tra­smet­te­re i pacchetti.

Port scanning: una spie­ga­zio­ne della tecnica di scansione delle porte

I sistemi operativi uti­liz­za­no le porte per inoltrare i pacchetti di dati in entrata e in uscita alle ap­pli­ca­zio­ni corrette. Le porte fungono quindi da in­ter­fac­cia gestita dal sistema operativo tra i programmi in ese­cu­zio­ne e internet. Affinché un’ap­pli­ca­zio­ne possa co­mu­ni­ca­re at­tra­ver­so una porta, questa deve prima essere aperta, cioè abilitata. Tuttavia, ciò comporta un problema: ogni porta aperta è un po­ten­zia­le punto di accesso per i criminali se la relativa ap­pli­ca­zio­ne presenta vul­ne­ra­bi­li­tà. Per ridurre al minimo il rischio di un attacco, è ne­ces­sa­rio tenere sempre sotto controllo le porte aperte sul sistema e le ap­pli­ca­zio­ni che vi sono dietro.

Con il termine port scanning si intende il pro­ce­di­men­to mirato di verifica delle porte aperte di un computer grazie a strumenti specifici. Per eseguire una scansione simile, non devi aver ef­fet­tua­to l’accesso sul sistema di de­sti­na­zio­ne, ma solo esserti connesso, ad esempio tramite una rete locale o via internet. Grazie ai port scanner invii in fase di test dei pacchetti specifici alle diverse porte e ottieni le relative risposte o messaggi di errore, che lo strumento analizza e valuta.

A seconda della varietà di funzioni del programma di scansione uti­liz­za­to ricevi così non solo in­for­ma­zio­ni riguardo alle porte aperte o chiuse, ma scopri anche quali porte uti­liz­za­no i relativi servizi e ap­pli­ca­zio­ni.

Il port scanning rap­pre­sen­ta per gli am­mi­ni­stra­to­ri e le am­mi­ni­stra­tri­ci di sistema un mezzo molto ef­fi­cien­te per con­trol­la­re il traffico di dati in una rete. In questo modo puoi rilevare eventuali vul­ne­ra­bi­li­tà e ridurre i punti di attacco del sistema. In alcuni casi si possono così risolvere problemi di rete concreti. Inoltre, gli strumenti non hanno nessun effetto per­ce­pi­bi­le sulle pre­sta­zio­ni dei sistemi indagati, quindi puoi uti­liz­zar­li fa­cil­men­te per applicare misure di sicurezza simili.

Anche sul proprio PC personale, ha senso ricorrere al port scanning: non appena utilizzi le ap­pli­ca­zio­ni, che ri­chie­do­no una con­nes­sio­ne a internet, vengono aperte au­to­ma­ti­ca­men­te anche le porte, a patto che il tuo firewall non lo impedisca. Una scansione delle porte ti aiuta a mantenere il controllo e ti mostra le porte non più ne­ces­sa­rie, che puoi di con­se­guen­za chiudere per mi­ni­miz­za­re il rischio per la sicurezza.

My­De­fen­der
Massima sicurezza per tutti i tuoi di­spo­si­ti­vi
  • Pro­te­zio­ne antivirus
  • Backup au­to­ma­ti­ci e recupero dei file persi

Come funziona esat­ta­men­te il port scanning?

I port scanner offrono di norma diverse tipologie di fun­zio­na­men­to, anche se la maggior parte si muovono intorno al pro­to­col­lo TCP orientato alla con­nes­sio­ne. Per com­pren­de­re i pro­ce­di­men­ti es­sen­zia­li durante il port scanning, è perciò utile dare uno sguardo all’in­stau­ra­zio­ne della con­nes­sio­ne TCP generale:

  • Nell’ambito del processo de­no­mi­na­to three-way handshake, il client invia prima di tutto un pacchetto SYN (dal verbo syn­chro­ni­ze = “sin­cro­niz­za­re”) alla relativa porta di de­sti­na­zio­ne.
  • Se raggiunge in questo modo un’ap­pli­ca­zio­ne, il client riceve come risposta un pacchetto SYN/ACK combinato (dai verbi syn­chro­ni­ze e ac­k­no­w­led­ge= “sin­cro­niz­za­re e con­fer­ma­re”) e conferma l’ac­cet­ta­zio­ne della con­nes­sio­ne.
  • Il client invia nella terza e ultima parte un pacchetto ACK (dal verbo ac­k­no­w­led­ge = “con­fer­ma­re”), di modo che la con­nes­sio­ne venga in­stau­ra­ta e possa co­min­cia­re lo scambio di dati.

Se viene con­tat­ta­ta una porta chiusa, il client riceve in risposta nel secondo passaggio un pacchetto RST (dal verbo reset = “ri­pri­sti­na­re”) e quindi l’handshake viene in­ter­rot­to.

Visto che ri­sul­te­reb­be molto faticoso e sarebbe molto complesso scambiare i dati con i diversi tipi di ap­pli­ca­zio­ne, il port scanning è limitato solo a semplici tentativi di con­nes­sio­ne, come di­mo­stra­no i metodi di scansione comuni pre­sen­ta­ti qui di seguito.

Scansione TCP SYN

Nel caso della scansione TCP SYN si parla spesso anche di una scansione delle porte semi-aperta, perché non si mira a in­stau­ra­re una con­nes­sio­ne TCP completa. Con questo metodo il port scanner invia i classici pacchetti SYN alle singole porte e aspetta la risposta dell’host di de­sti­na­zio­ne. Se questo rinvia un pacchetto SYN/ACK, segnala che la ri­spet­ti­va porta è aperta ed è possibile in­stau­ra­re una con­nes­sio­ne. Se la risposta comprende un pacchetto RST, la porta è invece chiusa.

Se non vi è alcuna risposta, molto pro­ba­bil­men­te è pre­at­ti­va­to un filtro di pacchetto, come un firewall. Le scansioni TCP SYN non sono visibili per le ap­pli­ca­zio­ni ve­ri­fi­ca­te e perciò non generano neanche file di log. Per questo motivo si chiamano anche Stealth scan (in italiano “scansioni segrete”).

Scansioni TCP connect

Se esegui con il tuo port scanner una scansione di tipo connect, generi e invii i pacchetti non in maniera autonoma, bensì utilizzi la funzione del sistema connect, di­spo­ni­bi­le quasi su ogni sistema operativo. Una con­nes­sio­ne riuscita viene con­si­de­ra­ta come una conferma che la porta cor­ri­spon­den­te è aperta. Se la con­nes­sio­ne non va a buon fine, la porta viene indicata come chiusa.

Nei file di log delle ri­spet­ti­ve ap­pli­ca­zio­ni con porte aperte, nel caso in cui sia stata stabilita una con­nes­sio­ne, si vede che è stato applicato questo metodo di scansione. Non vengono però forniti chia­ri­men­ti sui filtri impiegati. Se ti mancano i permessi per l’invio di pacchetti semplici, la scansione TCP connect è perciò un’al­ter­na­ti­va utile alla scansione SYN.

Scansioni TCP FIN, Null e Xmas

Con questi tre metodi di port scanning puoi di­stin­gue­re tra porte aperte e chiuse. Così utilizzi due principi di TCP, che sono riportati nel cor­ri­spon­den­te RFC 793“):

  1. I pacchetti in entrata, nel caso in cui non si tratti di pacchetti RST, devono sempre essere risposti da una porta chiusa con un proprio pacchetto RST.
  2. Tutti i pacchetti, che non sono segnalati come SYN, RST o ACK, devono essere ignorati da una porta aperta.

I tre tipi di scansione sfruttano questa si­tua­zio­ne nel port scanning di sistemi conformi a RFC con i loro pacchetti per­so­na­liz­za­ti:

  • La scansione Null non utilizza alcun markup par­ti­co­la­re.
  • La scansione FIN invia al port scanner i pacchetti FIN (da finish = in italiano “terminare”).
  • Le scansioni Xmas si basano su una com­bi­na­zio­ne di se­gna­la­zio­ni FIN, PSH (da push = in italiano “avanzare”) e URG (da urgent = in italiano “urgente”); il pacchetto si illumina, per così dire, come un albero di Natale.

Tutti e tre i metodi di scansione si com­por­ta­no esat­ta­men­te allo stesso modo. I pacchetti di test inviati si occupano, per via delle spe­ci­fi­ca­zio­ni RFC, che una porta chiusa risponda con un pacchetto RST e che una porta aperta non fornisca alcuna risposta. Visto che però solo alcuni router tra­smet­to­no un messaggio di errore, se una porta viene filtrata, l’assenza di una risposta può anche indicare la presenza di una porta filtrata. Mentre i pro­ce­di­men­ti danno ancora meno nell’occhio quando si tratta di scansioni SYN, hanno lo svan­tag­gio di non fun­zio­na­re quando i sistemi non si attengono esat­ta­men­te alla specifica RFC 793. In questo caso Windows rientra tra gli esempi più noti da nominare.

Scansione UDP

Nel caso di una scansione UDP vengono inviati header UDP vuoti, senza dati, a tutte le porte di de­sti­na­zio­ne. Se un servizio risponde ugual­men­te con un pacchetto UDP, è con­fer­ma­to che la relativa porta è aperta. Invece, se il port scanner riceve dal router il messaggio di errore “Port un­rea­cha­ble“ (tipo 3, codice 3), sarà chiaro che la porta è chiusa. Altri messaggi di errore chia­ri­sco­no che un filtro del pacchetto blocca la porta.

Il problema prin­ci­pa­le del test della porta UDP è l’elevato dispendio di tempo, perché su molti sistemi l’emissione dei ri­spet­ti­vi messaggi di errore per motivi di sicurezza può durare molto a lungo e anche le porte aperte ri­spon­do­no solo in maniera molto ir­re­go­la­re. Il kernel di Linux limita il numero di messaggi, ad esempio a uno per secondo, cosa che per le 65.535 porte equivale a 18 ore per con­clu­de­re una scansione.

Quali port scanner esistono?

Ci sono diversi scanner con una varietà di funzioni dif­fe­ren­ti e la maggior parte di questi strumenti è freeware o open source. Nel caso di molti di questi si tratta di classici programmi da riga di comando, che si uti­liz­za­no anche at­tra­ver­so in­ter­fac­ce grafiche separate. Inoltre, nel web ci sono in­nu­me­re­vo­li soluzioni con le quali si possono scan­sio­na­re le porte di­ret­ta­men­te nel browser. Questi servizi sono fun­zio­nal­men­te molto limitati e offrono solo la pos­si­bi­li­tà di ve­ri­fi­ca­re le singole porte, come è il caso del port scanner di DNStools. Per questo motivo si adattano mag­gior­men­te come opzione pratica per un controllo veloce del computer di casa.

Netcat: l’antenato degli strumenti di rete

Netcat (ab­bre­via­to in “nc”) è stato ri­la­scia­to nel 1996 da uno svi­lup­pa­to­re anonimo con lo pseu­do­ni­mo di “Hobbit”. Ori­gi­na­ria­men­te è stato scritto per le piat­ta­for­me UNIX, nel frattempo sono venute alla luce diverse opzioni di porting per altri sistemi come Windows e diversi sviluppi come GNU Netcat, OpenBSD Netcat, Cryptcat o Netcat6 (sup­por­ta­to anche da IPv6), im­ple­men­ta­ti so­li­ta­men­te in molte di­stri­bu­zio­ni di Linux. La versione di base dello strumento a riga di comando serve prima di tutto per inviare o leggere i dati at­tra­ver­so le con­nes­sio­ni di rete TCP e UDP, ma può anche essere uti­liz­za­to come semplice scansione delle porte. Così puoi, ad esempio, ve­ri­fi­ca­re lo stato delle porte dalla 20 alla 30 sul sistema in ese­cu­zio­ne con un semplice comando come:

nc -zv localhost 20-30
bash

Il controllo delle porte UDP richiede il parametro ag­giun­ti­vo -u. Inoltre, puoi inserire i nomi host o gli indirizzi IP di sistemi esterni al posto di localhost, se ne sei a co­no­scen­za.

Un’analisi di rete completa con Nmap

Uno strumento es­sen­zial­men­te più efficace, che convince so­prat­tut­to nella sua funzione di port scanner, è Network Mapper, ri­la­scia­to nel 1997, più co­no­sciu­to con il nome ab­bre­via­to di Nmap. Il programma, svi­lup­pa­to per i sistemi com­pa­ti­bi­li con UNIX, dispone di licenza GPL ed è di­spo­ni­bi­le dal 2000 anche per i sistemi Windows, seppur con delle piccole li­mi­ta­zio­ni.

Così, ad esempio, la scansione TCP connect richiede spro­por­zio­nal­men­te molto più tempo per via dell’API di rete del sistema Windows e anche la scansione delle porte del proprio sistema è possibile solo tramite alcune scor­cia­to­ie. In generale, Nmap si può uti­liz­za­re dalla riga di comando, ma esiste anche un’in­ter­fac­cia grafica dalle pre­sta­zio­ni elevate, che prende il nome di Zenmap, con cui si può uti­liz­za­re lo strumento di rete in maniera ancora più pratica.

L’ideatore, Gordon Lyon, e il team di svi­lup­pa­to­ri di Nmap con­ti­nua­no a svi­lup­pa­re il programma e le sue funzioni di port scanning, am­plian­do­ne così la varietà di funzioni di­spo­ni­bi­li. In par­ti­co­la­re, le tecniche come OS fin­ger­prin­ting, cioè il ri­co­no­sci­men­to del sistema operativo di un host di de­sti­na­zio­ne, e la scansione dei servizi che si na­scon­do­no dietro una porta, rendono Nmap una delle soluzioni di port scanner più popolari. L’ampia scelta di funzioni si riflette anche nei metodi di scansione di­spo­ni­bi­li, che abbiamo riassunto per te nella seguente tabella:

Metodo di port scanning Comando Nmap De­scri­zio­ne
Scansione TCP connect nmap -sT Host Il classico controllo per non-am­mi­ni­stra­to­ri
Scansione TCP syn nmap -sS Host Metodo di verifica veloce e che passa inos­ser­va­to per gli am­mi­ni­stra­to­ri
Scansioni TCP-FIN-/XMAS-/Null nmap -sF Host
nmap -sX Host
nmap -sN Host
Metodi che possono aggirare i firewall
Scansione TCP ping nmap -sP Host Scansione delle porte atipica; serve a ve­ri­fi­ca­re la rag­giun­gi­bi­li­tà di un host
Scansione TCP ACK nmap -sA Host Determina le porte filtrate, ma non fa di­stin­zio­ne tra porte aperte e chiuse
Scansione TCP Window nmap -sW Host Pa­ra­go­na­bi­le all’ACK scan; può ve­ri­fi­ca­re alcune porte aperte e chiuse
Scansione TCP Maimon nmap -sM Host Com­bi­na­zio­ne di scansioni FIN e ACK
Scansione TCP Idle nmap -sI Zombie-Host Host Il più discreto, complesso e perciò anche il metodo di scansione più lento; funziona tramite un terzo computer, indicato da Nmap come “zombie”
Scansione UDP nmap -sU Host Il metodo di scansione per le porte UDP senza con­nes­sio­ne
Scansione SCTP Init nmap -sY Host Scansione delle porte con SCTP, un’al­ter­na­ti­va a TCP e UDP
Scansione del pro­to­col­lo IP nmap -sO Host Nessuna scansione delle porte; verifica quali pro­to­col­li basati su IP sono sup­por­ta­ti sul sistema di de­sti­na­zio­ne

Puoi scaricare Nmap e l’in­ter­fac­cia Zenmap per il sistema operativo in uso sul sito ufficiale. Qui sono messe a di­spo­si­zio­ne l’ultima versione (stable) e una beta.

Perché il port scanning non è sempre legale

Un controllo delle porte non è sempre legale; se ne consegue un exploit (così si chiama lo sfrut­ta­men­to di una falla di sicurezza in gergo tecnico), si diventa per­se­gui­bi­li pe­nal­men­te. Le con­se­guen­ze legali risultano, invece, meno chiare, quando paralizzi un sistema per via di scansione delle porte intensive. Visto che il metodo di verifica, a causa dell’alta frequenza di richieste di con­nes­sio­ni, rap­pre­sen­ta un forte so­vrac­ca­ri­co per il sistema di de­sti­na­zio­ne, può così ve­ri­fi­car­si, in alcune cir­co­stan­ze, un suo arresto.

Inoltre, i re­spon­sa­bi­li del sistema di de­sti­na­zio­ne po­treb­be­ro già rilevare le tue azioni ancora prima dell’arresto e giu­di­car­le come le prime mosse in vista di un attacco. In un caso simile non sono perciò da escludere ri­per­cus­sio­ni legali. Se viene provocato vo­lon­ta­ria­men­te un so­vrac­ca­ri­co di un sistema esterno, sono in atto degli attacchi DoS e DDoS, che con molta pro­ba­bi­li­tà verranno per­se­gui­ti pe­nal­men­te.

As­si­cu­ra­ti perciò di avere l’au­to­riz­za­zio­ne per poter eseguire una scansione delle porte sul ri­spet­ti­vo sistema e utilizza questo metodo solo per scopi di sicurezza e non per pura curiosità. Le vie indicate in cui impiegare il port scanning chia­ri­sco­no quanto sia im­por­tan­te mantenere sotto controllo le porte del proprio sistema, del computer di rete e dei relativi servizi.

Vai al menu prin­ci­pa­le