Cos’è ICMP (Internet Control Message Protocol)?
ICMP (Internet Control Message Protocol) è un protocollo di segnalazione degli errori a livello di rete utilizzato per comunicare problemi di trasmissione dati. I dispositivi di rete, come i router, utilizzano ICMP per generare messaggi di errore all’indirizzo IP di origine quando problemi di rete impediscono la consegna dei pacchetti IP. ICMP crea e invia messaggi all’indirizzo IP di origine indicando che un gateway per Internet, come un router, un servizio o un host, non può essere raggiunto per la consegna dei pacchetti. Qualsiasi dispositivo di rete IP può inviare, ricevere o elaborare messaggi ICMP.
ICMP non è un protocollo di trasporto che invia dati tra sistemi.
Sebbene ICMP non venga utilizzato regolarmente nelle applicazioni per utenti finali, gli amministratori di rete lo utilizzano per risolvere i problemi delle connessioni Internet nelle utility di diagnostica, tra cui traceroute e ping.
A cosa serve ICMP?
ICMP è un protocollo di livello di rete che router, dispositivi intermedi e host utilizzano per comunicare informazioni di errore o aggiornamenti ad altri router, dispositivi intermedi e host.
I messaggi ICMP vengono inviati in diversi scenari. Ad esempio, se un dispositivo invia un messaggio troppo grande per essere elaborato dal destinatario, il destinatario elimina il messaggio e invia un messaggio ICMP alla sorgente. Un altro esempio è quando il gateway di rete trova un percorso più breve per il messaggio. Quando ciò accade, viene inviato un messaggio ICMP e il pacchetto viene reindirizzato al percorso più breve.
ICMP viene utilizzato anche per la diagnostica di rete, in particolare per le utility traceroute e ping terminal, nei seguenti modi:
- Traceroute. L’utility traceroute viene utilizzata per visualizzare il percorso di routing fisico tra due dispositivi Internet che comunicano tra loro. Traccia il percorso da un router all’altro, a volte chiamato hop, e fornisce informazioni sul tempo impiegato dai dati per arrivare dalla sorgente alla destinazione. L’utilizzo di traceroute per diagnosticare problemi di rete può aiutare gli amministratori a individuare la fonte di un ritardo di rete.
- Ping. L’utilità ping è una traceroute più semplice. Invia ping, detti anche messaggi di richiesta di eco ICMP, e quindi misura il tempo impiegato dal messaggio per raggiungere la destinazione e tornare all’host di origine. Queste risposte sono chiamate messaggi di risposta di eco. I comandi ping sono utili per raccogliere informazioni sulla latenza di un dispositivo specifico. A differenza di traceroute, ping non fornisce mappe di immagini del layout di routing.
ICMP può anche essere utilizzato in modo improprio in modi che influiscono negativamente sulle prestazioni di rete. Ad esempio, l’utilità ping viene spesso sfruttata per determinati attacchi denial of service (DoS), in cui un aggressore prende di mira un server travolgendolo con un flusso di ping o pacchetti ICMP. Questo traffico eccessivo può causare la mancata risposta del server e interrompere le normali operazioni.
La classe di indirizzi IP versione 4 (IPv4) ampiamente utilizzata e il più recente IPv6 utilizzano versioni simili del protocollo ICMP: rispettivamente ICMPv4 e ICMPv6.
Come funziona ICMP?
ICMP è uno dei protocolli principali della suite TCP/IP. Tuttavia, ICMP non è associato a nessun protocollo di livello di trasporto, come Transmission Control Protocol (TCP) o User Datagram Protocol. È un protocollo senza connessione, il che significa che un dispositivo non deve aprire una connessione con il dispositivo di destinazione prima di inviare un messaggio. Ciò contrasta con TCP, ad esempio, dove è necessario stabilire una connessione prima che un messaggio possa essere inviato, stabilendo che entrambi i dispositivi siano pronti tramite un handshake TCP.
I messaggi ICMP vengono trasmessi come datagrammi e sono costituiti da un’intestazione IP che incapsula i dati ICMP. Simile a un pacchetto, un datagramma è un’entità indipendente e autonoma di dati. Consideralo come un pacchetto che trasporta una parte di un messaggio più grande attraverso la rete. I pacchetti ICMP sono pacchetti IP con ICMP nella porzione di dati IP. I messaggi ICMP contengono anche l’intera intestazione IP del messaggio originale, quindi il sistema finale sa quale pacchetto è fallito.
Di seguito viene illustrato, passo dopo passo, il funzionamento di ICMP:
Un dispositivo di rete, come un router o un host, rileva un problema o desidera comunicare lo stato della rete a causa di perdita di pacchetti, problemi di routing o destinazioni non raggiungibili.
Il dispositivo di rete crea un messaggio ICMP che descrive la natura del problema, come “Destinazione non raggiungibile” o “Tempo scaduto”.
Il messaggio viene quindi incapsulato in un pacchetto IP. Questo pacchetto IP incapsulato contiene il messaggio ICMP, i codici di errore e la parte dell’intestazione del pacchetto dati originale che ha causato il problema, per aiutare nella diagnosi del problema.
Il pacchetto IP contenente il messaggio ICMP viene recapitato all’indirizzo IP di origine del pacchetto originale. Ciò consente al mittente di ricevere feedback sullo stato della sua trasmissione.
Dopo aver ricevuto il messaggio ICMP, il mittente originale intraprende l’azione appropriata in base alle informazioni fornite. Ad esempio, se il mittente riceve il messaggio Destinazione non raggiungibile, può quindi scegliere di ritentare la trasmissione o reindirizzare i dati a una destinazione diversa.
L’intestazione ICMP compare dopo l’intestazione del pacchetto IPv4 o IPv6 ed è identificata come protocollo IP numero 1. Il protocollo contiene tre parametri, seguiti dai dati ICMP e dall’intestazione IP originale, che insieme identificano il pacchetto non riuscito.
Parametri ICMP
I parametri ICMP sono presenti nell’intestazione del pacchetto e identificano gli errori nel pacchetto a cui si riferiscono. I parametri sono simili a un’etichetta di spedizione su un pacco. Forniscono informazioni identificative sul pacchetto e sui dati in esso contenuti. In questo modo, i protocolli e gli strumenti di rete che ricevono il messaggio ICMP sanno come gestire il pacchetto.
I primi 32 bit dell’intestazione del pacchetto di ogni messaggio ICMP contengono tre campi informativi. Tali parametri sono tipo, codice e checksum:
-
- Tipo. I primi 8 bit sono i tipi di messaggio. Alcuni tipi di messaggio comuni sono i seguenti:
Tipo 0 — Echo Reply.
Tipo 3 — Destination Unreachable.
Tipo 5 — Redirect.
Tipo 8 — Echo.
Il tipo fornisce una breve spiegazione dello scopo del messaggio in modo che il dispositivo di rete ricevente sappia perché sta ricevendo il messaggio e come trattarlo. Ad esempio, un Echo di tipo 8 è una query che un host invia per verificare se un potenziale host o sistema di destinazione è disponibile. Dopo aver ricevuto un messaggio Echo, il dispositivo ricevente potrebbe inviare un messaggio Echo Reply di tipo 0, indicando che è disponibile. L’Internet Assigned Numbers Authority, un’organizzazione di standardizzazione senza scopo di lucro, fornisce un elenco di tutti i tipi di messaggio utilizzati dai pacchetti ICMP. - Codice. I successivi 8 bit rappresentano il codice del tipo di messaggio, che fornisce informazioni aggiuntive sul tipo di errore.
- Checksum. Gli ultimi 16 bit forniscono un controllo di integrità del messaggio. Il checksum mostra il numero di bit nell’intero messaggio e consente allo strumento ICMP di verificare la coerenza con l’intestazione del messaggio ICMP per garantire che sia stata consegnata l’intera gamma di dati.
- Tipo. I primi 8 bit sono i tipi di messaggio. Alcuni tipi di messaggio comuni sono i seguenti:
La parte successiva dell’intestazione ICMP è il puntatore. È costituito da 32 bit di dati che indicano il problema nel messaggio IP originale. In particolare, il puntatore identifica la posizione in byte nel messaggio IP originale che ha causato la generazione del messaggio problematico. Il dispositivo ricevente esamina questa parte dell’intestazione per individuare il problema.
La sezione finale del pacchetto ICMP è il datagramma originale. È costituito da un massimo di 576 byte in IPv4 e da 1.280 byte in IPv6 e include una copia del messaggio IP originale contenente l’errore.
ICMP negli attacchi DDoS
ICMP non dispone di meccanismi di autenticazione e può essere utilizzato dagli aggressori per eseguire attacchi DoS e DoS distribuiti. Negli attacchi DDoS, gli aggressori sopraffanno il bersaglio con traffico indesiderato in modo che il bersaglio non possa fornire servizi ai suoi utenti.
Ci sono diversi modi in cui un aggressore può utilizzare ICMP per eseguire questi attacchi, inclusi i seguenti:
- Ping of death. L’aggressore invia un pacchetto IP più grande del numero di byte consentito dall’IP. Durante il percorso verso la destinazione prevista, il pacchetto di grandi dimensioni viene frammentato. Tuttavia, quando il dispositivo ricevente lo riassembla, la dimensione supera il limite, causando un buffer overflow e il blocco o l’arresto anomalo della macchina ricevente. I dispositivi più recenti hanno difese contro questo vecchio attacco, ma i dispositivi di rete legacy sono ancora vulnerabili.
- Attacco flood ICMP. A volte chiamato attacco ping flood, l’obiettivo di questo attacco è sopraffare il dispositivo di destinazione con pacchetti di richiesta di eco. Ogni pacchetto di richiesta di eco deve essere elaborato dal bersaglio e a cui deve essere data risposta con messaggi di risposta di eco. Questo assorbe tutte le risorse del computer di destinazione, causando un DoS a tutti gli altri utenti del computer di destinazione.
- Attacco Smurf. In un attacco Smurf, l’aggressore invia un pacchetto ICMP con un indirizzo IP sorgente falsificato e l’apparecchiatura di livello di rete risponde al pacchetto, inviando all’indirizzo falsificato un flusso di pacchetti. Similmente al ping of death, è più probabile che gli attacchi Smurf funzionino su apparecchiature legacy non difese.
- Tunneling ICMP. Il tunneling ICMP è una tecnica di attacco di comando e controllo in cui gli aggressori incapsulano e nascondono il traffico dannoso all’interno di intestazioni ICMP apparentemente benigne, facendogli bypassare firewall e misure di sicurezza di rete.
- Spoofing pubblicitario del router ICMP. Durante questo attacco, un aggressore invia falsi messaggi pubblicitari del router ICMP a una rete, inducendo i dispositivi a utilizzare la macchina dell’aggressore come gateway predefinito. Ciò può portare ad attacchi man-in-the-middle, in cui l’aggressore intercetta e potenzialmente altera le comunicazioni tra i dispositivi di rete.
Vantaggi e Svantaggi di ICMP
ICMP svolge funzioni essenziali nella gestione della rete e presenta vantaggi e anche alcuni svantaggi.
Vantaggi di ICMP
- Fornisce diagnostica di rete. Gli strumenti di monitoraggio della rete, come traceroute e ping, si basano su ICMP per aiutare gli amministratori di rete a diagnosticare problemi di connettività e misurare i tempi di andata e ritorno. Questa funzionalità è fondamentale per mantenere le prestazioni della rete e risolvere i problemi di routing.
- Offre report di errore. ICMP offre aggiornamenti di stato e report di errore, che possono includere timeout, destinazioni non raggiungibili e problemi di frammentazione. Ad esempio, questi aggiornamenti e report possono essere utilizzati per avvisare i mittenti quando i pacchetti non possono essere recapitati a causa di vari problemi di rete o quando scade il time to live di un pacchetto.
- Richiede un overhead basso. I messaggi ICMP sono in genere brevi e semplici e richiedono un overhead basso e una larghezza di banda limitata per essere recapitati.
- Ottimizza la gestione della rete. Consentendo ai dispositivi di comunicare messaggi di stato ed errore, ICMP aiuta nella risoluzione dei problemi e nell’ottimizzazione delle prestazioni e della gestione della rete.
Svantaggi di ICMP
- Introduce vulnerabilità di sicurezza. ICMP è un potenziale vettore per vari attacchi di sicurezza, come ping flood, attacchi Smurf e tunneling, dove gli aggressori usano ICMP per sopraffare un bersaglio con il traffico o usarlo per aggirare le misure di sicurezza.
- Limita il trasferimento dati. ICMP non è progettato per trasferimenti di dati su larga scala. Gestisce solo messaggi di controllo ed errore, il che significa che non può essere usato per trasmettere dati utente o applicazioni.
- Ostacola il monitoraggio. La disabilitazione di ICMP può ostacolare il monitoraggio e la diagnostica della rete. Molti strumenti di monitoraggio dipendono da ICMP per verificare la disponibilità dei dispositivi e bloccarlo può ridurre la visibilità sullo stato di salute di una rete.
- Limita il controllo. ICMP non fornisce meccanismi per controllare il flusso di traffico o garantire la consegna, il che può portare a sfide nella gestione delle prestazioni di rete.