Il port scanning è una tecnica ampiamente utilizzata per condurre attacchi informatici su singoli computer, reti locali (LAN) o reti geografiche (WAN). Tutti i dispositivi online utilizzano porte per consentire a vari servizi di comunicare con l’esterno, che vanno dalla navigazione web alla gestione di server FTP.
Attraverso uno strumento chiamato port scanner, un utente di una rete, sia LAN che WAN, può identificare le porte attive. Questo software invia richieste di accesso, essenzialmente pacchetti dati appositamente formulati, a ciascuna porta e verifica la risposta ricevuta. In questo modo, si crea una mappa delle 65.536 diverse porte presenti in ogni computer.
Le aziende utilizzano questa tecnica per individuare potenziali vulnerabilità all’interno di una rete, ad esempio su un server. Tuttavia, poiché questa metodologia può rivelare punti deboli, nel corso degli anni, i criminali informatici hanno sviluppato diverse tecniche di port scanning, mirate principalmente a eludere i sistemi di sicurezza o a evitare di lasciare tracce nei log di sistema.
In questo articolo, esamineremo alcune di queste tecniche preventive in risposta alle varie applicazioni di scansione da parte di un attaccante.
Definizione di Port
Il termine inglese “port” può essere tradotto in italiano sia come “porta” che come “porto”, e in entrambi i casi, rappresenta un elemento cruciale nella comunicazione dei sistemi informatici.
Le porte, nel contesto informatico, rappresentano virtualmente il luogo in cui avvengono gli scambi di informazioni tra un sistema e l’esterno, sia in ingresso che in uscita. Questi scambi si verificano tipicamente all’interno di una rete di dispositivi interconnessi.
Ogni porta di un computer è associata a un codice numerico univoco, il quale semplifica le operazioni di comunicazione. Questo numero, combinato con altri parametri, riveste un ruolo cruciale nella trasmissione di dati su Internet, poiché è utilizzato per instradare e indirizzare le diverse richieste.
I numeri di porta: un mondo di differenze
Gli indirizzi IP pubblici sono attentamente regolamentati e assegnati da autorità di controllo per garantire la loro unicità. Tuttavia, quando si tratta di porte, la situazione è molto diversa. Nonostante siano stati compiuti progressi nella standardizzazione negli ultimi anni, le porte godono di un certo grado di libertà nel settore informatico. Questi numeri di porta, univoci all’interno di un singolo sistema informatico, sono suddivisi in tre categorie:
Porte conosciute (“Well Known Ports”) – da 0 a 1023
Queste porte sono comunemente denominate “porte standard” e sono riservate per servizi, processi e applicazioni noti e ampiamente utilizzati, come ad esempio i programmi di gestione della posta elettronica. Ogni porta in questo intervallo è assegnata in modo univoco a uno specifico servizio. Ad esempio, le porte 20 e 21 sono dedicate ai server FTP, la porta 22 è utilizzata per il protocollo SSH, la 53 è riservata al DNS e la 80 è associata al protocollo HTTP.
Porte registrate (“Registered Ports”) – da 1024 a 49151
Queste porte sono destinate a servizi e applicazioni registrate, che non sono necessariamente conosciute da tutti ma che hanno comunque un’assegnazione ufficiale (ad esempio, la porta 3306 TCP è associata al server MySQL). Questo intervallo offre un certo grado di flessibilità per l’utilizzo da parte degli utenti o degli amministratori di sistema. Alcuni servizi meno comuni possono utilizzare porte all’interno di questo intervallo in modo univoco. Ad esempio, alcuni applicativi di condivisione di file potrebbero farlo.
Porte dinamiche o private (“Dynamic and/or Private Ports”) – da 49152 a 65535
Questo è l’intervallo di porte più alto e viene utilizzato per porte dinamiche o private. Queste porte possono essere assegnate e utilizzate in modo temporaneo o ad hoc da utenti o applicazioni, senza la necessità di registrazione ufficiale.
Il loro scopo è standardizzato dallo IANA (Internet Assigned Numbers Authority) e gestito da diversi protocolli.
Il TCP (Transmission Control Protocol) è uno di questi protocolli e stabilisce le regole per l’inizializzazione e il mantenimento delle connessioni tra diverse applicazioni. Alcuni esempi di porte TCP includono:
- Porta 22, comunemente utilizzata per connessioni sicure tramite il protocollo SSH.
- Porta 80, nota per essere utilizzata per l’accesso al World Wide Web.
Il UDP (User Datagram Protocol), simile al TCP ma utilizzato per connessioni con requisiti di latenza più bassa, comprende alcune porte ben note, tra cui:
- Porta 20, utilizzata per il trasferimento dati tramite FTP.
- Porta 53, assegnata al sistema DNS per tradurre nomi di dominio in indirizzi IP comprensibili per le macchine.
Port Scanning: tecniche di base per l’esplorazione delle porte
Il port scanning viene utilizzato successivamente ad un network scanning – utile ad individuare gli host attivi nella rete e raccogliere informazioni sugli indirizzi IP dell’organizzazione – per ottenere informazioni sulle porte di un sistema (host). Questa tecnica comporta l’invio di pacchetti di test verso specifiche porte e l’attesa di una risposta. In base a questa risposta, è possibile dedurre informazioni sullo stato di utilizzo delle porte e sulla presenza di vulnerabilità sfruttabili. In particolare, si possono ottenere informazioni su:
- lo stato attuale delle porte (se vi è traffico di dati)
- la necessità di autorizzazioni specifiche per l’utilizzo
- chi è responsabile del servizio in questione.
L’obiettivo di queste procedure è quello di valutare i vari livelli di sicurezza e assicurarsi che non ci siano vulnerabilità che potrebbero mettere a rischio il sistema. Dalla definizione generale, emerge che questa tecnica può essere utile sia per le aziende che gestiscono i sistemi in esame, sia per gli hacker che intendono attaccarli.
In base alla risposta ottenuta durante un port scanning, le porte possono essere suddivise in tre categorie:
Porte aperte
La porta sollecitata restituisce una risposta, indicando che il traffico in ingresso è accettato e che qualche servizio è attivo. In questo caso, gli amministratori di rete devono prendere misure per prevenire eventuali attacchi. Spesso vengono implementati firewall per bloccare il traffico sospetto senza intaccare l’esperienza degli utenti legittimi. Tuttavia, una porta aperta rappresenta un possibile punto d’ingresso per un attaccante.
Porte chiuse
La porta è pronta a ricevere richieste, ma non è associata a nessun servizio. Ciò non garantisce la sicurezza, poiché in futuro potrebbe essere attivato un servizio. È importante monitorare attentamente queste porte e proteggerle con misure di sicurezza, come i firewall, per evitare che vengano sfruttate in futuro.
Porte filtrate
La richiesta viene ignorata, e non si riceve alcuna risposta. La porta non è in attesa di richieste, il che indica la presenza di un sistema di difesa che protegge il servizio. Un firewall probabilmente ha bloccato la richiesta, impedendo agli attaccanti di ottenere informazioni cruciali sullo stato del servizio.
Una chiamata di tipo TCP connect(xxx) consente di stabilire una connessione con il computer o il server attraverso la porta specificata tra parentesi. L’approccio Strobe, invece, invia pacchetti fittizi solo alle porte e ai servizi noti (le porte da 0 a 1023), sfruttando le vulnerabilità conosciute per accedere al sistema informatico.
Port Scanning: tecniche avanzate e difese
Un ostacolo significativo per chi cerca di condurre un attacco o una scansione delle porte è rappresentato dal fatto che i servizi in ascolto registrano attentamente tutti i tentativi di accesso e le richieste di connessione provenienti da altri nodi della rete.
Queste registrazioni vengono conservate in un file dedicato noto come “log”. Se si riceve un pacchetto “civetta”, viene registrato come un errore poiché non viene seguito da un invio effettivo di dati. Questo dovrebbe fungere da segnale d’allarme per un sistemista attento, poiché potrebbe indicare un tentativo di attacco o un’attività di port scanning mirata al sistema.
Esistono, tuttavia, tecniche avanzate, sia dal punto di vista tattico che tecnologico, che rendono la vita degli amministratori di sistema e di rete più complicata. Ad esempio, l’uso di pacchetti frammentati può aggirare alcune restrizioni e filtri imposti dagli amministratori di sistema, consentendo all’attaccante di ottenere le informazioni desiderate.
La scansione FIN, invece, sfrutta comportamenti standard del protocollo TCP per identificare le porte attive e quelle inattive. In questo caso, l’attaccante invia un pacchetto con solo la flag FIN (usata per le connessioni aperte sulle porte): se la porta è chiusa, riceverà in risposta un pacchetto con la flag RST attivata; se la porta è aperta, la richiesta verrà ignorata.
Infine, c’è la scansione Bounce, una tecnica avanzata che sfrutta vulnerabilità del protocollo FTP per nascondere i tentativi di accesso fraudolento. Questa tecnica sfrutta un bug nel protocollo FTP per far rimbalzare le richieste di accesso da un proxy FTP all’altro, cambiando continuamente l’indirizzo IP di origine.
La vittima dell’attacco non rileverà un pattern d’attacco definito e avrà difficoltà a prendere misure di sicurezza adeguate. Questo metodo è simile all’IP spoofing e consente agli attaccanti di condurre attacchi informatici senza rivelare direttamente il proprio indirizzo IP e, quindi, la propria identità digitale.
Port Scanning: effettuare la scansione delle porte di un computer
Per condurre una scansione delle porte di un computer, è possibile utilizzare un port scanner, un software appositamente progettato per mappare le porte attive e inattive. Il port scanner più diffuso e riconosciuto è Nmap, originariamente sviluppato per sistemi operativi UNIX, ma ora disponibile sia per Windows che per macOS (OS X).
Nmap è nativamente basato su un’interfaccia a riga di comando, dove gli utenti possono impartire istruzioni per analizzare un singolo computer, una porzione di rete o l’intera rete a cui sono connessi. Ecco alcune utili opzioni di comando:
- nmap -PN ‘indirizzo_remoto’: effettua la scansione di tutte le porte nella subnet a cui si è connessi.
- nmap -PN xxx.xxx.xxx.yyy-zzz: scansiona le porte dei dispositivi nella rete con indirizzi IP compresi tra “yyy” e “zzz”.
- nmap -sP xxx.xxx.xxx.yyy-zzz: rileva i servizi attivi in una zona specifica della rete.
- nmap -p ‘numero_porta’ ‘indirizzo_IP’: analizza lo stato di una porta specifica su uno dei nodi della rete.
Per coloro che preferiscono un’interfaccia grafica senza dover utilizzare il terminale, è possibile utilizzare Zenmap, una versione di Nmap con una comoda interfaccia grafica. Gli utenti macOS possono sfruttare il port scanner incluso nell’applicativo “Utility di rete”: basta cliccare sulla scheda “Port Scan”, inserire l’indirizzo IP da esaminare (sia privato che pubblico) e attendere il completamento della scansione.
Come proteggersi dal port scanning: l’importanza dei firewall
Per difendersi con successo dagli attacchi basati su port scanning, la soluzione più efficace è implementare un firewall, sia hardware che software, per proteggere l’accesso alla propria rete. Questo strumento agisce come un filtro che controlla tutto il traffico in entrata e in uscita dal sistema, consentendo o bloccando il passaggio dei pacchetti dati in base alle regole configurate per le diverse porte di comunicazione.
La configurazione del firewall può variare a seconda delle esigenze. Si può scegliere di bloccare completamente l’accesso a qualsiasi pacchetto proveniente dall’esterno (ad eccezione di quelli destinati alla porta 80, necessaria per la navigazione web) o consentire a diversi servizi e applicazioni di comunicare con il mondo esterno.
Indipendentemente dalla configurazione scelta, tutte le comunicazioni passano attraverso il firewall, che si trova tra i dispositivi connessi alla rete locale e il mondo esterno. Questo dispositivo di sicurezza di rete gestisce tutte le richieste di connessione, impedendo al port scanner di stabilire una comunicazione diretta con il computer o il server FTP di destinazione. Di conseguenza, un attacco port scanning non produrrà alcun risultato utile, poiché l’hacker non sarà nemmeno in grado di determinare se l’host contattato esiste o meno.
Port Scanning: sicurezza e prevenzione
Il port scanning è un’attività consolidata nel mondo informatico che offre importanti informazioni sulla sicurezza dei sistemi e individua potenziali punti deboli. Questo metodo è utilizzato sia come strumento di prevenzione che come fase di preparazione per attacchi diretti.
Gli hacker hanno a disposizione diverse tecniche di port scanning, costantemente perfezionate nel tempo. Pertanto, è fondamentale che le organizzazioni si difendano in modo efficace. Questo è possibile attraverso l’implementazione di firewall robusti e l’adozione di soluzioni specifiche in collaborazione con esperti IT.
Il port scanning rappresenta uno strumento cruciale per identificare e mitigare le potenziali vulnerabilità, ed è rilevante sia per le aziende che mirano a migliorare la propria sicurezza, sia per gli hacker alla ricerca di punti di accesso facili ai sistemi.
Corsi di formazione dedicati alla sicurezza informatica, come il Corso Ethical Hacking Avanzato e il Corso Cybersecurity: Blue Team, sono fondamentali per coloro che desiderano approfondire ulteriormente le competenze in questo campo. La conoscenza e la preparazione sono essenziali per affrontare le sfide in continua evoluzione del panorama della sicurezza informatica.