Vai al contenuto

Port scanning

Da Wikipedia, l'enciclopedia libera.
(Reindirizzamento da Port scanner)

Con port scanning, in informatica, si indica una tecnica progettata per sondare un server o un host al fine di stabilire quali porte siano in ascolto sulla macchina. Questa tecnica è spesso utilizzata dagli amministratori per verificare le politiche di sicurezza delle loro reti, e dagli hacker per identificare i servizi in esecuzione su un host e sfruttarne le vulnerabilità.

Un port scan o portscan è un processo che invia le richieste dei client a un intervallo di indirizzi di porte su un host, con l'obiettivo di trovare una porta aperta.[1]; elaborando le risposte è possibile stabilire (anche con precisione) quali servizi di rete siano attivi su quel computer: una porta si dice "in ascolto" ("listening") o "aperta" o attiva quando vi è un servizio, programma o processo che la usa. Viene utilizzato soprattutto per determinare quali siano i servizi disponibili su un computer, piuttosto che essere sfruttato per un attacco.

Con il termine portsweep si intende l'esecuzione di una scansione di più host per una specifica porta di ascolto. È in genere utilizzato per la ricerca di un determinato servizio, per esempio, un SQL-based worm può cercare host in ascolto sulla porta TCP 1433.[2]

Conoscenze di base TCP/IP

[modifica | modifica wikitesto]

La progettazione ed il funzionamento di Internet si basa su una suite di protocolli internet, comunemente chiamato TCP/IP. In questo sistema gli hosts e i servizi di host utilizzano due componenti: un indirizzo e un numero di porta. Esistono 65536 numeri di porta distinti e utilizzabili. Molti servizi utilizzano una gamma limitata di numeri.

Alcuni port scan scansionano solo i numeri di porta più comuni, o porte più comuni associate a servizi vulnerabili, su un determinato host.

Il risultato della scansione di una porta rientra solitamente in una delle seguenti categorie:

  • aperta (accepted): l'host ha inviato una risposta indicando che un servizio è in ascolto su quella porta,
  • chiusa (denied): l'host ha inviato una risposta indicando che le connessioni alla porta saranno rifiutate (ICMP port-unreachable),
  • bloccata/filtrata (dropped/filtered): non c'è stata alcuna risposta dall'host, quindi è probabile la presenza di un firewall o di un ostacolo di rete in grado di bloccare l'accesso alla porta impedendo di individuarne lo stato.

Le porte aperte presentano due tipi di vulnerabilità alle quali gli amministratori devono prestare attenzione:

  • la sicurezza e la stabilità devono essere implementate dal programma responsabile di fornire il servizio - open ports
  • la sicurezza e la stabilità sono associate al sistema operativo che gira sull'host - open/closed ports

Di norma le porte filtrate tendono a non essere vulnerabili.

Tutte le forme di port scanning si basano sul presupposto che l'host mirato è conforme a RFC 793 - Transmission Control Protocol. Nonostante sia presente quasi sempre, c'è anche la possibilità che un host remoto possa spedire strani pacchetti o addirittura generare falsi positivi quando lo stack TCP/IP dell'host non è RFC (RFC-compliant) oppure se è stato alterato. Ciò spesso accade per le tecniche di scansione meno comuni che dipendono dal sistema operativo, come il FIN scanning.

Lo stesso argomento in dettaglio: Idle scan.

TCP connect scan

[modifica | modifica wikitesto]

I più semplici port scanning utilizzano funzioni di rete del sistema operativo e normalmente sono impiegati quando non è possibile effettuare una scansione SYN scan (descritto di seguito).

Nmap chiama questa modalità connect scan, dal nome della chiamata di sistema Unix connect(), utilizzata per aprire una connessione ad ogni porta interessante sulla macchina di destinazione. Se una porta è aperta, il sistema operativo completa il three-way handshake (connessione TCP affidabile tra due host), e il port scan chiude immediatamente la connessione per evitare l'esecuzione di un attacco Denial of Service.[3] In caso contrario viene restituito un codice di errore.

Questa modalità di scansione ha il vantaggio che l'utente non deve avere privilegi particolari. Tuttavia, utilizzando le funzioni di rete del sistema operativo, impedisce il controllo di basso livello, per cui questo tipo di scansione è poco comune.

Questo metodo è “rumoroso”, in particolare se si tratta di un “portsweep”: i servizi possono registrare l'indirizzo IP del mittente e gli Intrusion Detection System sono in grado far scattare un allarme.

SYN scan è un'altra forma di TCP scanning. Invece di utilizzare le funzioni di rete del sistema operativo, il port scan genera lui stesso pacchetti IP non validi, e monitora le risposte. Questo tipo di scansione è anche conosciuto come “half-open scanning”, perché in realtà non viene mai aperta completamente una connessione TCP. Il port scan genera un pacchetto SYN. Se la porta di destinazione è aperta, risponde con un pacchetto SYN-ACK. L'host scanner risponde con un pacchetto RST, così da chiudere la connessione prima che la three-way handshake sia completata. Se la porta è chiusa, ma non filtrata, l'obiettivo sarà di rispondere immediatamente con un pacchetto RST. In entrambi i casi la connessione non verrà mai completata e per questa ragione difficilmente comparirà nei file di log, anche se generalmente viene riconosciuta e registrata dagli IDS.

L'uso di reti “raw” ha diversi vantaggi, dando allo scan pieno controllo dei pacchetti inviati e dei timeout per le risposte, e viene fornito un rapporto dettagliato delle risposte. C'è un dibattito su quale scansione sia meno intrusiva sull'host di destinazione. SYN scan ha il vantaggio che i singoli servizi non ricevono effettivamente una connessione. Tuttavia, la RST durante la three-way handshake può causare problemi per alcune reti, in particolare nei dispositivi più semplici come le stampanti.

L’UDP scan è una tecnica di scansione utilizzata per individuare servizi attivi su porte che utilizzano il protocollo UDP. A differenza di TCP UDP è un protocollo senza connessione e non prevede un meccanismo di handshake equivalente al pacchetto TCP SYN.

Quando un pacchetto UDP viene inviato a una porta chiusa, il sistema di destinazione risponde generalmente con un pacchetto ICMP di tipo 3 codice 3 (port unreachable) o tipo 3 codice 13 (administratively prohibited). La ricezione di tali messaggi consente di determinare con certezza che la porta è chiusa. Nel caso in cui invece la porta sia aperta, nella maggior parte dei casi non viene inviata alcuna risposta. A causa di questo molte tecniche di UDP scan deducono lo stato di una porta dall’assenza di risposta, il che porta però ad un'ambiguità: una porta può risultare silenziosa perché aperta, perché filtrata da un firewall o perché i pacchetti ICMP di risposta vengono bloccati lungo il percorso di rete. In questi casi la scansione può segnalare erroneamente una porta come aperta.

Un ulteriore svantaggio dell’UDP scan è legato ai tempi di attesa (timeout) necessari per determinare lo stato di ciascuna porta. Dato che l’assenza di risposta può venire interpretata solo dopo un certo intervallo di tempo, la scansione di un intero spazio di porte può richiedere molte ore.

Per migliorare l’affidabilità della scansione è possibile utilizzare un approccio basato su sonde applicative, inviando pacchetti UDP specifici per determinati protocolli nella speranza di ottenere una risposta a livello applicativo. Ad esempio, l’invio di una query DNS alla porta 53 può generare una risposta se è presente un server DNS in ascolto. Questo metodo è più affidabile, ma limitato alle porte che offrono servizi per i quali esistono sonde applicative adeguate.

Gli strumenti di scansione differiscono nel numero di sonde supportate: alcuni strumenti open source, come nmap, includono sonde per un numero limitato di servizi UDP, mentre strumenti commerciali possono supportarne un numero maggiore. In alcuni casi, un servizio può essere in ascolto su una porta ma configurato per non rispondere a specifiche sonde, riducendo ulteriormente l’affidabilità della tecnica.[4]

L'ACK scan è una delle scansioni più insolite, in quanto non si determina esattamente se la porta è aperta o chiusa, ma se una determinata porta è filtrata o non filtrata da un firewall, risultando quindi utile per testare le regole del firewall stesso. I pacchetti inviati per effettuare l'ACK scanning hanno solamente il flag ACK abilitato e si avranno risposte con pacchetti RST solamente se le porte sono aperte o chiuse. In caso contrario, cioè se non arriva alcuna risposta (timeout) o vengono restituiti errori ICMP, si ipotizza che le porte siano filtrate.

In caso fosse presente un firewall stateful o equivalentemente non-stateless, dato che durante lo scanning vengono inviati pacchetti con il flag ACK abilitato senza prima aver stabilito una connessione TCP valida con un handshake, il firewall filtrerà il pacchetto inviato per lo scanning in quanto fuori sequenza. Questo significa che lo strumento che effettua lo scan riporterà erroneamente l'informazione "porta filtrata" relativamente a tutte le porte[5].

Questo tipo di scansione viene utilizzato molto raramente, a causa della sua natura obsoleta, poiché la Window scanning è piuttosto inaffidabile nel determinare se una porta è aperta o chiusa. Genera un pacchetto uguale all'ACK scan, ma controlla se il campo TCP Window del pacchetto RST di ritorno è stato modificato. Se ritorna una grandezza positiva per il campo Window allora la porta è aperta, se ritorna una grandezza pari a zero si ha una porta chiusa. Quindi al contrario dell'ACK scan che ad ogni pacchetto RST restituito dall'host cataloga la porta come non filtrata, questo scan determina se la porta è aperta o chiusa in base se il valore RST è positivo o pari a zero. Purtroppo il Window scan non è spesso affidabile poiché utilizza un'implementazione presente solamente in alcuni sistemi.

Dal momento che SYN scan non è abbastanza efficiente, poiché i firewall, che vengono scansionati, bloccano pacchetti della forma del SYN scan, si può utilizzare FIN scan. I pacchetti FIN possono sorpassare i firewall senza apportare modifiche. Le porte chiuse rispondono a un pacchetto FIN con un pacchetto con RST attivo, mentre le porte aperte o filtrate ignorano direttamente il pacchetto FIN e non viene restituito alcun pacchetto in risposta. Purtroppo non è affidabile poiché sistemi come Windows, IRIX, Cisco e HP-UX rispondono sempre con un pacchetto con flag RST attivo[6].

Il NULL scan è un tipo particolare di scansione delle porte che consiste nell'invio di pacchetti con tutti i flag a 0. Secondo le specifiche standard (RFC 793) un host che riceve un pacchetto simile su una porta chiusa deve rispondere con un pacchetto con il flag RST attivo, mentre se sulla porta vi è in ascolto un servizio allora il pacchetto viene ignorato. Tuttavia alcune implementazioni del protocollo TCP/IP come quello Microsoft non rispondono in ogni caso rendendo questo tipo di scansione inaffidabile in alcuni casi[6].

L'XMAS scan è un tipo di scansione caratterizzata dall'invio di pacchetti TCP anomali, alle porte della vittima, aventi i flag FIN, URG, e PSH attivi.

Le specifiche tecniche dalla RFC 793 prevedono che un host che riceve un pacchetto composto in questo modo, nel caso in cui la porta sia chiusa, risponda con un pacchetto con flag RST attivo, nel caso in cui la porta sia aperta, ignori il pacchetto.

La tecnica viene utilizzata per evadere alcuni tipi di firewall poco potenti. Questi infatti, per realizzare la stateful inspection si limitano a guardare i pacchetti di apertura/chiusura connessione (quelli cioè che contengono i flag SYN, ACK e RST). Lasciando passare tutti gli altri è possibile usare il pacchetto XMAS per raggiungere l'host interno, deducendo dalle sue risposte lo stato delle sue porte. I firewall più avanzati saranno comunque in grado di bloccare questo tipo di scansione grazie al fatto che tengono traccia delle connessioni aperte in una tabella, scartando tutti i pacchetti che non sono parte di una trasmissione già iniziata e quelli di handshake, per i quali viene invece consultata la lista delle regole per permetterne o meno il passaggio.

Il nome della tecnica deriva dal fatto che con questi bit attivi "il pacchetto si accende come un albero di Natale"[6]

Il Decoy Scan è una tecnica applicabile alle scansioni di rete che permette di rimanere parzialmente anonimi, nascondendo i propri pacchetti di scansione (e quindi il proprio indirizzo IP) tra una folta moltitudine di pacchetti fittizi.

Questa tecnica utilizza lo spoofing degli indirizzi, per cui insieme ai pacchetti di scansione veri e propri vengono inviati anche parecchi pacchetti del tutto simili ma con un indirizzo mittente diverso dal proprio. Quando questi ultimi raggiungono la destinazione, il destinatario non avrà modo di distinguere tra i pacchetti veri e quelli fittizi.

L'indirizzo IP dell'attaccante sarà comunque visibile alla vittima ma per un eventuale IDS o amministratore di rete sarà più difficile identificare quale, tra tutte le scansioni ricevute, sia quella vera e quindi risalire all'indirizzo IP che ha effettuato la scansione.

I programmi che implementano questa tecnica permettono di specificare una lista di indirizzi IP. Il manuale d'uso di nmap consiglia di scegliere, per questa lista, indirizzi plausibili come ad esempio altri computer connessi alla stessa ora e di evitare invece indirizzi di reti di note corporazioni che difficilmente lanciano scansioni di questo tipo[7].

Altri tipi di scansioni

[modifica | modifica wikitesto]

Esistono alcuni tipi di scansioni più insoliti. Questi hanno forti limitazioni e non sono utilizzati frequentemente. Nonostante ciò Nmap supporta la maggior parte di questi

  • Protocol scan: determina quali protocolli a livello IP (TCP, UDP, GRE, etc.) sono abilitati.
  • Proxy scan: un proxy (SOCKS o HTTP) viene usato per eseguire la scansione. Sarà visualizzato l'indirizzo IP del proxy come source. Questa scansione può essere effettuata anche utilizzando alcuni server FTP.
  • Idle scan: un altro metodo di scansione che permette di non rivelare il proprio indirizzo IP (scansione completamente invisibile).
  • ICMP scan: determina se un host risponde alle richieste ICMP, come il ping.

Filtraggio delle porte tramite ISP

[modifica | modifica wikitesto]

Molti Internet service providers limitano la capacità dei loro clienti per eseguire scansioni delle porte verso host al di fuori delle reti domestiche. Questo è di solito coperto in termini di servizio o di policy di utilizzo con il quale il cliente deve essere d'accordo.[8] Alcuni ISP implementano packet filters o proxy trasparenti che impediscono le richieste di servizio in uscita a determinate porte. Ad esempio, se un ISP fornisce un proxy HTTP trasparente sulla porta 80, con la scansione delle porte di qualsiasi indirizzo si avrà la porta 80 aperta, indipendentemente dalla configurazione attuale dell'host di destinazione.

Le informazioni raccolte da un port scan possiedono molti usi legittimi, tra cui l'inventario della rete e la verifica della sicurezza di una rete. Port scanning può, tuttavia, anche essere utilizzato per compromettere la sicurezza. Molte imprese si affidano alle scansioni delle porte per trovare le porte aperte e inviare modelli di dati specifici, nel tentativo di innescare una condizione nota come buffer overflow. Tale comportamento può compromettere la sicurezza della rete e dei computer, con conseguente perdita ed esposizione di informazioni sensibili e l'impossibilità di lavorare.[3]

Il livello di minaccia causato da un port scan può variare notevolmente a seconda del metodo utilizzato per la scansione, il tipo di porta scansionata, il suo numero e l'amministratore che controlla l'host. Ma un port scan è spesso visto come un primo passo per un possibile attacco, ed è quindi presa molto sul serio poiché può rivelare informazioni molto sensibili sull'host.[9] Nonostante ciò, la probabilità che a seguito di un port scan si verifichi un vero e proprio attacco è molto piccola. La probabilità di un attacco è più elevata quando il port scan è associato ad una scansione con un vulnerability scanner.

Implicazioni legali

[modifica | modifica wikitesto]

A causa dell'architettura intrinsecamente aperta e decentralizzata di Internet, i legislatori hanno lottato sin dalla sua creazione per definirne i confini legali che permettano un efficace perseguimento dei crimini informatici. I casi che coinvolgono le attività di port scanning sono un esempio delle difficoltà incontrate nel giudicare tali violazioni. Anche se questi casi sono rari, la maggior parte delle volte il processo legale richiede che venga dimostrato l'intento di commettere un break-in o l'esistenza di accessi non autorizzati, piuttosto che l'esecuzione di un port scan.

  • Nel giugno del 2003, il cittadino israeliano Avi Mizrahi, è stato accusato dalle autorità di Israele di aver provato ad accedere a materiale informatico per il quale non era autorizzato. Aveva scansionato il sito del Mossad. È stato assolto da tutte le accuse il 29 febbraio 2004. Il giudice ha stabilito che questo tipo di azioni non dovrebbero essere scoraggiate quando vengono svolte in modo positivo.[10]
  • Un diciassettenne finlandese è stato accusato di aver tentato di accedere al network di una delle maggiori banche finlandesi nel 1998. Aveva effettuato un port scan nel network della banca per accedere ai network interni, senza successo. Il 9 aprile 2003, è stato condannato dalla Corte suprema della Finlandia e costretto a pagare US$12,000 per le spese di analisi forense da parte della banca.[11]
  • Nel dicembre del 1999, Scott Moulton è stato arrestato dall'FBI con l'accusa di violazione del computer del Computer Systems Protection Act della Georgia e Computer Fraud and Abuse Act federale. In quel momento la sua società di servizi IT aveva un contratto in corso con Cherokee County in Georgia (Stati Uniti) per mantenere e migliorare il centro di sicurezza del locale servizio di emergenza. Effettuando diversi port scan sui server di Cherokee County per verificare la loro sicurezza e scansionando le porte di un server web monitorato da un'altra compagnia IT, aveva provocato uno scontro passato poi alle vie legali. Moulton è stato successivamente assolto nel 2000, quando il giudice ha sentenziato che non erano stati commessi danni atti a compromettere l'integrità e la disponibilità della rete.[12]
  • Nel 2006, il Parlamento britannico ha votato un emendamento al Computer Misuse Act 1990 che definisce colpevole chiunque "makes, adapts, supplies or offers to supply any article knowing that it is designed or adapted for use in the course of or in connection with an offence under section 1 or 3 [of the CMA]”[13](faccia, si adatti, fornisca o offra qualsiasi articolo sapendo che è stato progettato o adottato per l'uso nel corso di o in connessione con un reato ai sensi dell'articolo 1 o 3 [del CMA]). Tuttavia, l'area d'effetto di questo emendamento è imprecisa, e pertanto è stato ampiamente criticato dagli esperti di sicurezza.[14]
  • La Germania ha una legge in materia, il Strafgesetzbuch § 202a, b, c.
  • Il Consiglio dell'Unione Europea, nel 2013, ha approvato una direttiva in materia.[15]

Portscanner online

[modifica | modifica wikitesto]
  1. Internet Security Glossary, su tools.ietf.org.
  2. Worm, su support.microsoft.com.
  3. 1 2 Erikson, Jon, (HACKING the art of exploitation (2nd ed.), San Francisco, NoStarch Press, 1977, p. 264, ISBN 1-59327-144-1.
  4. Secrets of Network Cartography - UDP Scan (-sU), su networkuptime.com. URL consultato il 5 luglio 2016 (archiviato dall'url originale il 16 maggio 2016).
  5. Tecniche di Port Scanning, su nmap.org. URL consultato il 5 luglio 2016.
  6. 1 2 3 (EN) TCP FIN, NULL, and Xmas Scans (-sF, -sN, -sX) | Nmap Network Scanning, su nmap.org. URL consultato il 5 gennaio 2026.
  7. Bypassing e Spoofing di Firewall e Intrusion Detection System (Firewall/IDS Evasion and Spoofing) | Guida di riferimento di Nmap (pagina del manuale), su nmap.org. URL consultato il 4 gennaio 2026.
  8. Customer Agreements, Policies & Service Disclosures, su xfinity.com. URL consultato il 5 luglio 2016.
  9. Jamieson, Shaun, The Ethics and Legality of Port Scanning, SANS, 2001.
  10. Hon. Abraham N. Tennenbaum, "Verdict in the case Avi Mizrahi vs. Israeli Police Department of Prosecution" (PDF), su law.co.il, 29 febbraio 2004 (archiviato dall'url originale il 7 ottobre 2009).
  11. Esa Halmari, "First ruling by the Supreme Court of Finland on attempted break-in", su insecure.org, 2003.
  12. Poulsen, Kevin, "Port scans legal, judge says", su securityfocus.com, 18 dicembre 2000.
  13. UK Parliament, "Police and Justice Bill - Bill 119", su publications.parliament.uk, 25 gennaio 2006.
  14. Leyden, John, "UK gov sets rules for hacker tool ban", su theregister.co.uk, 2 gennaio 2008.
  15. L_2013218IT.01000801.xml, su eur-lex.europa.eu. URL consultato il 3 ottobre 2018.

Voci correlate

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]
  • nmap, su insecure.org.
  • hping, su hping.org. URL consultato il 16 agosto 2004 (archiviato dall'url originale il 19 dicembre 2017).
  • AutoScan-Network, su autoscan-network.com. URL consultato il 20 aprile 2020 (archiviato dall'url originale il 26 agosto 2019).
  Portale Sicurezza informatica: accedi alle voci di Wikipedia che trattano di sicurezza informatica