Cos’è il port scanning?

Le porte svolgono un ruolo fondamentale nel garantire che i pacchetti di dati raggiungano la destinazione desiderata. Servono da interfaccia tra computer e servizi di sistema o programmi e vengono utilizzate dai protocolli di rete TCP e UDP. In combinazione con l’indirizzo IP il sistema operativo sa, grazie all’indicazione della porta, non solo a quale computer di destinazione inviare il flusso di dati, ma anche a quale applicazione deve trasmettere i pacchetti.

Port scanning: una spiegazione della tecnica di scansione delle porte

I sistemi operativi utilizzano le porte per inoltrare i pacchetti di dati in entrata e in uscita alle applicazioni corrette. Le porte fungono quindi da interfaccia gestita dal sistema operativo tra i programmi in esecuzione e internet. Affinché un’applicazione possa comunicare attraverso una porta, questa deve prima essere aperta, cioè abilitata. Tuttavia, ciò comporta un problema: ogni porta aperta è un potenziale punto di accesso per i criminali se la relativa applicazione presenta vulnerabilità. Per ridurre al minimo il rischio di un attacco, è necessario tenere sempre sotto controllo le porte aperte sul sistema e le applicazioni che vi sono dietro.
Con il termine port scanning si intende il procedimento mirato di verifica delle porte aperte di un computer grazie a strumenti specifici. Per eseguire una scansione simile, non devi aver effettuato l’accesso sul sistema di destinazione, 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 utilizzato ricevi così non solo informazioni riguardo alle porte aperte o chiuse, ma scopri anche quali porte utilizzano i relativi servizi e applicazioni.
Il port scanning rappresenta per gli amministratori e le amministratrici di sistema un mezzo molto efficiente per controllare il traffico di dati in una rete. In questo modo puoi rilevare eventuali vulnerabilità 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 percepibile sulle prestazioni dei sistemi indagati, quindi puoi utilizzarli facilmente per applicare misure di sicurezza simili.
Anche sul proprio PC personale, ha senso ricorrere al port scanning: non appena utilizzi le applicazioni, che richiedono una connessione a internet, vengono aperte automaticamente 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ù necessarie, che puoi di conseguenza chiudere per minimizzare il rischio per la sicurezza.
MyDefender
Massima sicurezza per tutti i tuoi dispositivi
  • Protezione contro gli attacchi ransomware
  • Protezione antivirus
  • Backup automatici e recupero dei file persi

Come funziona esattamente il port scanning?

I port scanner offrono di norma diverse tipologie di funzionamento, anche se la maggior parte si muovono intorno al protocollo TCP orientato alla connessione. Per comprendere i procedimenti essenziali durante il port scanning, è perciò utile dare uno sguardo all’instaurazione della connessione TCP generale:
  • Nell’ambito del processo denominato three-way handshake, il client invia prima di tutto un pacchetto SYN (dal verbo synchronize = “sincronizzare”) alla relativa porta di destinazione.
  • Se raggiunge in questo modo un’applicazione, il client riceve come risposta un pacchetto SYN/ACK combinato (dai verbi synchronize e acknowledge= “sincronizzare e confermare”) e conferma l’accettazione della connessione.
  • Il client invia nella terza e ultima parte un pacchetto ACK (dal verbo acknowledge = “confermare”), di modo che la connessione venga instaurata e possa cominciare lo scambio di dati.
Se viene contattata una porta chiusa, il client riceve in risposta nel secondo passaggio un pacchetto RST (dal verbo reset = “ripristinare”) e quindi l’handshake viene interrotto.
Visto che risulterebbe molto faticoso e sarebbe molto complesso scambiare i dati con i diversi tipi di applicazione, il port scanning è limitato solo a semplici tentativi di connessione, come dimostrano i metodi di scansione comuni presentati 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 instaurare una connessione TCP completa. Con questo metodo il port scanner invia i classici pacchetti SYN alle singole porte e aspetta la risposta dell’host di destinazione. Se questo rinvia un pacchetto SYN/ACK, segnala che la rispettiva porta è aperta ed è possibile instaurare una connessione. Se la risposta comprende un pacchetto RST, la porta è invece chiusa.
Se non vi è alcuna risposta, molto probabilmente è preattivato un filtro di pacchetto, come un firewall. Le scansioni TCP SYN non sono visibili per le applicazioni verificate 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, disponibile quasi su ogni sistema operativo. Una connessione riuscita viene considerata come una conferma che la porta corrispondente è aperta. Se la connessione non va a buon fine, la porta viene indicata come chiusa.
Nei file di log delle rispettive applicazioni con porte aperte, nel caso in cui sia stata stabilita una connessione, si vede che è stato applicato questo metodo di scansione. Non vengono però forniti chiarimenti sui filtri impiegati. Se ti mancano i permessi per l’invio di pacchetti semplici, la scansione TCP connect è perciò un’alternativa utile alla scansione SYN.

Scansioni TCP FIN, Null e Xmas

Con questi tre metodi di port scanning puoi distinguere tra porte aperte e chiuse. Così utilizzi due principi di TCP, che sono riportati nel corrispondente 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 situazione nel port scanning di sistemi conformi a RFC con i loro pacchetti personalizzati:
  • La scansione Null non utilizza alcun markup particolare.
  • La scansione FIN invia al port scanner i pacchetti FIN (da finish = in italiano “terminare”).
  • Le scansioni Xmas si basano su una combinazione di segnalazioni 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 comportano esattamente allo stesso modo. I pacchetti di test inviati si occupano, per via delle specificazioni 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 trasmettono 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 procedimenti danno ancora meno nell’occhio quando si tratta di scansioni SYN, hanno lo svantaggio di non funzionare quando i sistemi non si attengono esattamente 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 destinazione. Se un servizio risponde ugualmente con un pacchetto UDP, è confermato che la relativa porta è aperta. Invece, se il port scanner riceve dal router il messaggio di errore “Port unreachable“ (tipo 3, codice 3), sarà chiaro che la porta è chiusa. Altri messaggi di errore chiariscono che un filtro del pacchetto blocca la porta.
Il problema principale del test della porta UDP è l’elevato dispendio di tempo, perché su molti sistemi l’emissione dei rispettivi messaggi di errore per motivi di sicurezza può durare molto a lungo e anche le porte aperte rispondono solo in maniera molto irregolare. 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 concludere una scansione.

Quali port scanner esistono?

Ci sono diversi scanner con una varietà di funzioni differenti 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 utilizzano anche attraverso interfacce grafiche separate. Inoltre, nel web ci sono innumerevoli soluzioni con le quali si possono scansionare le porte direttamente nel browser. Questi servizi sono funzionalmente molto limitati e offrono solo la possibilità di verificare le singole porte, come è il caso del port scanner di DNStools. Per questo motivo si adattano maggiormente come opzione pratica per un controllo veloce del computer di casa.

Netcat: l’antenato degli strumenti di rete

Netcat (abbreviato in “nc”) è stato rilasciato nel 1996 da uno sviluppatore anonimo con lo pseudonimo di “Hobbit”. Originariamente è stato scritto per le piattaforme 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 (supportato anche da IPv6), implementati solitamente in molte distribuzioni di Linux. La versione di base dello strumento a riga di comando serve prima di tutto per inviare o leggere i dati attraverso le connessioni di rete TCP e UDP, ma può anche essere utilizzato come semplice scansione delle porte. Così puoi, ad esempio, verificare lo stato delle porte dalla 20 alla 30 sul sistema in esecuzione con un semplice comando come:
nc -zv localhost 20-30
bash
Il controllo delle porte UDP richiede il parametro aggiuntivo -u. Inoltre, puoi inserire i nomi host o gli indirizzi IP di sistemi esterni al posto di localhost, se ne sei a conoscenza.

Un’analisi di rete completa con Nmap

Uno strumento essenzialmente più efficace, che convince soprattutto nella sua funzione di port scanner, è Network Mapper, rilasciato nel 1997, più conosciuto con il nome abbreviato di Nmap. Il programma, sviluppato per i sistemi compatibili con UNIX, dispone di licenza GPL ed è disponibile dal 2000 anche per i sistemi Windows, seppur con delle piccole limitazioni.
Così, ad esempio, la scansione TCP connect richiede sproporzionalmente 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 scorciatoie. In generale, Nmap si può utilizzare dalla riga di comando, ma esiste anche un’interfaccia grafica dalle prestazioni elevate, che prende il nome di Zenmap, con cui si può utilizzare lo strumento di rete in maniera ancora più pratica.
L’ideatore, Gordon Lyon, e il team di sviluppatori di Nmap continuano a sviluppare il programma e le sue funzioni di port scanning, ampliandone così la varietà di funzioni disponibili. In particolare, le tecniche come OS fingerprinting, cioè il riconoscimento del sistema operativo di un host di destinazione, e la scansione dei servizi che si nascondono 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 disponibili, che abbiamo riassunto per te nella seguente tabella:
Metodo di port scanning Comando Nmap Descrizione
Scansione TCP connect nmap -sT Host Il classico controllo per non-amministratori
Scansione TCP syn nmap -sS Host Metodo di verifica veloce e che passa inosservato per gli amministratori
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 verificare la raggiungibilità di un host
Scansione TCP ACK nmap -sA Host Determina le porte filtrate, ma non fa distinzione tra porte aperte e chiuse
Scansione TCP Window nmap -sW Host Paragonabile all’ACK scan; può verificare alcune porte aperte e chiuse
Scansione TCP Maimon nmap -sM Host Combinazione 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 connessione
Scansione SCTP Init nmap -sY Host Scansione delle porte con SCTP, un’alternativa a TCP e UDP
Scansione del protocollo IP nmap -sO Host Nessuna scansione delle porte; verifica quali protocolli basati su IP sono supportati sul sistema di destinazione
Puoi scaricare Nmap e l’interfaccia Zenmap per il sistema operativo in uso sul sito ufficiale. Qui sono messe a disposizione 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 sfruttamento di una falla di sicurezza in gergo tecnico), si diventa perseguibili penalmente. Le conseguenze 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 connessioni, rappresenta un forte sovraccarico per il sistema di destinazione, può così verificarsi, in alcune circostanze, un suo arresto.
Inoltre, i responsabili del sistema di destinazione potrebbero già rilevare le tue azioni ancora prima dell’arresto e giudicarle come le prime mosse in vista di un attacco. In un caso simile non sono perciò da escludere ripercussioni legali. Se viene provocato volontariamente un sovraccarico di un sistema esterno, sono in atto degli attacchi DoS e DDoS, che con molta probabilità verranno perseguiti penalmente.
Assicurati perciò di avere l’autorizzazione per poter eseguire una scansione delle porte sul rispettivo sistema e utilizza questo metodo solo per scopi di sicurezza e non per pura curiosità. Le vie indicate in cui impiegare il port scanning chiariscono quanto sia importante mantenere sotto controllo le porte del proprio sistema, del computer di rete e dei relativi servizi.
Hai trovato questo articolo utile?
Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.
Page top