Cos’è l’ICMP?
ICMP (Internet Control Message Protocol) è un protocollo che i dispositivi di rete (ad es. I router) utilizzano per generare messaggi di errore quando problemi di rete impediscono ai pacchetti IP di passare.
Internet Control Message Protocol è uno dei sistemi fondamentali che fanno funzionare Internet. Anche se potresti non aver sentito parlare di ICMP, probabilmente hai sentito parlare di una delle sue caratteristiche: Ping. In questa guida imparerai di più su questo protocollo essenziale.
La storia di ICMP
ICMP fa parte del Stack di protocollo TCP / IP. È di stanza al Strato Internet ed è uno standard di messaggio di errore che supporta il protocollo Internet principale. La definizione originale di ICMP è stata scritta da Jon Postel, uno dei fondatori di Internet. Il primo standard è stato pubblicato nell’aprile del 1981 in RFC 777. Da allora è stato aggiornato più volte. La definizione stabile del protocollo è contenuta in RFC 792, anch’esso scritto da Postel e pubblicato da Task force di ingegneria Internet nel settembre 1981.
Lo scopo dell’ICMP
Sebbene il livello Internet inferiore non dovrebbe occuparsi dell’assicurazione della connessione, ICMP fornisce un po ‘di feedback sulle comunicazioni quando le cose vanno male. Quindi, anche se usi UDP, che ha un senza connessione modello di comunicazione, è ancora possibile scoprire perché una trasmissione non è riuscita. Tutti i dispositivi collegati in rete possono elaborare messaggi ICMP, in modo da includere router e dispositivi endpoint. ICMP è stato adattato in modo da poter funzionare con IPv6 altrettanto accuratamente come è servito a IPv4.
Poiché questo protocollo risiede a livello di Internet, i suoi messaggi sono trasportati da pacchetti IP e quindi esistono a un livello superiore rispetto alle strutture operative degli switch. Sebbene l’ICMP sia trasportato all’interno del pacchetto IP, non esiste all’interno dei pacchetti che trasportano dati. Un pacchetto ICMP viene generato solo in risposta a un pacchetto di dati in entrata quando la trasmissione di quel messaggio in entrata fallisce. Le condizioni di errore che provocano un pacchetto ICMP sono spesso il risultato di dati contenuti nell’intestazione IP del pacchetto non riuscito.
Struttura del pacchetto ICMP
Quando un router rimbalza indietro un pacchetto ICMP per segnalare un errore, ricrea tutti i campi nell’intestazione IP originale del pacchetto su cui sta segnalando. Quindi, un programma di raccolta errori sul computer di invio originale potrebbe analizzare l’intestazione e capire esattamente quale dei pacchetti IP che ha inviato non è riuscito.
Dopo l’intestazione IP, arriva l’intestazione ICMP a tre campi. Questi contengono un codice che classifica l’errore, un campo di sottocodice che perfeziona la descrizione del codice di errore e quindi un checksum. Dopo il campo ICMP arrivano i primi otto byte del payload, che in realtà sono l’intestazione del livello di trasporto (TCP o UDP).
Codici messaggi ICMP
Il primo campo di codice nel blocco ICMP contiene alcune informazioni molto utili. Il codice è numerico e qui ci sono alcuni dei valori più interessanti che il campo può avere:
0: risposta eco – utilizzata per il ping
3: destinazione non raggiungibile
4: spegnimento della sorgente: il router è sovraccarico
5: reindirizzamento: utilizzare un router diverso
8: richiesta echo – usata per il ping
9: risposta annuncio router
10: sollecitazione router
11: tempo superato – utilizzato per traceroute
Tempo di vivere
Uno dei campi dell’intestazione IP più noti per provocare un errore di generazione ICMP è il Tempo di vivere campo (TTL). Questo campo contiene un numero, che esprime il numero massimo di router che può attraversare il pacchetto. Questo numero viene diminuito di uno, per ogni router che elabora il pacchetto. Se un router riceve un pacchetto con un TTL pari a zero, rilascia quel pacchetto e invia un messaggio ICMP al mittente di quella trasmissione non riuscita.
Nel caso dell’esaurimento del TTL, la ragione per cui un pacchetto non riesce a raggiungere la sua destinazione non ha nulla a che fare con problemi del router o dati non validi nell’intestazione del pacchetto. Il TTL è un costrutto creato per impedire che i pacchetti non autorizzati intasino Internet quando gli errori della tabella del router hanno provocato percorsi circolari. Tuttavia, un sottoprodotto di questo campo è uno strumento di amministrazione di rete molto utile: traceroute.
Guarda anche: Revisione degli strumenti Traceroute di SolarWinds
Traceroute con ICMP
Traceroute è un noto strumento di amministrazione di rete che mostra il percorso tipico dal computer di avvio a un determinato indirizzo IP di destinazione. L’utilità invia una serie di pacchetti IP vuoti. La caratteristica importante di ciascuna di queste trasmissioni è il valore TTL nell’intestazione IP.
Il programma Traceroute inizia con l’invio di un pacchetto con un TTL di 0. Questo verrà eliminato dal primo router che lo riceve, che di solito è il gateway di rete. Quel router restituisce un pacchetto ICMP. Le uniche informazioni che Traceroute vuole da quella risposta sono il tempo necessario per tornare e l’indirizzo di origine del pacchetto. Ciò indica a Traceroute l’indirizzo del primo router sul percorso verso la destinazione. Il programma quindi invia un pacchetto con un TTL di 1. Questo passa attraverso il gateway, che diminuisce il TTL di 1. Il router che ottiene il pacchetto successivo vede che il TTL è zero, rilascia il pacchetto e restituisce un pacchetto ICMP. Pertanto, viene rivelato il secondo router nel percorso e Traceroute nota il tempo impiegato per arrivare a quella risposta. Aumentando il TTL di 1 con ogni trasmissione, Traceroute alla fine crea una mappa di tutti i collegamenti su Internet all’indirizzo indicato.
Problemi di traceroute
Traceroute è uno strumento molto semplice che sfrutta una funzione amministrativa preesistente e rende un’utilità efficiente e informativa fuori di esso. Ci sono un paio di punti deboli con Traceroute.
Un amministratore di rete probabilmente utilizzerà l’utilità per capire perché una connessione recente è andata così male, sia lentamente che fallita. tuttavia, Traceroute non può dirti cosa è successo in passato. Può solo darti un feedback sull’andamento del percorso corrente.
Ciascun router prende la propria decisione su quale dei propri vicini offre il percorso più breve verso l’indirizzo IP di destinazione su un pacchetto. Tuttavia, tale decisione potrebbe non essere sempre esattamente la stessa ogni volta. Se un router viene congestionato o spento, i router vicini presto scoprono il problema e regolare le loro tabelle di routing per aggirare il problema. Quelle informazioni di routing alterate vengono tuttavia diffuse a tutti i router su Internet il problema potrebbe essere risolto prima che tutti i router lo scoprissero. Quindi il percorso riadattato viene proliferato in tutto il mondo.
Un’opzione con il comando “-j“Consente di specificare gli indirizzi dei router che Traceroute deve seguire come percorso. Tuttavia, per utilizzare questa funzione, è necessario conosco già il percorso intrapreso da una trasmissione difettosa e puoi ricavare tali informazioni solo con un’esecuzione di Traceroute esattamente dello stesso percorso.
Quindi, se si verifica una connessione lenta, il comando Traceroute emesso successivamente potrebbe non rivelare l’accaduto perché a quel punto. Il problema che ha causato il ritardo potrebbe essere stato risolto e il percorso Traceroute potrebbe non essere lo stesso percorso utilizzato dalla connessione lenta.
Un altro problema con Traceroute è che fornisce un’interessante visualizzazione del percorso che probabilmente la tua trasmissione porterà a una determinata destinazione. tuttavia, non ti fornisce alcuno strumento per fare nulla con le informazioni che ricevi. Non è possibile specificare un percorso, quindi se vedi che uno dei router su Internet fornisce un tempo di risposta lento, tutto ciò che puoi fare è sapere quale router sta rallentando le tue connessioni. Poiché quel router non appartiene alla tua azienda e non puoi accelerarlo, hai acquisito conoscenza tramite Traceroute ma non puoi agire su di essa.
Guarda anche: I migliori strumenti per Traceroute
Ping ICMP
Ping utilizza due codici ICMP: 8 (richiesta di eco) e 0 (risposta echo). Quando si invia il comando Ping al prompt, il programma Ping invia un pacchetto ICMP contenente il codice 8 nel file genere campo. La risposta avrà a genere di 0. Il programma cronometra il divario tra l’invio del pacchetto di richiesta echo e l’arrivo della risposta. Quindi, puoi ottenere il “tempo di andata e ritorno“Di un pacchetto per la destinazione specificata e ritorno.
Il pacchetto di richiesta echo è insolito in quanto è l’unico pacchetto ICMP che viene inviato senza essere provocato da un errore. Pertanto, Ping non deve emulare una condizione di errore per recuperare un messaggio ICMP. Ping ha due opzioni che ti consentono di specificare un elenco di indirizzi per il percorso che la trasmissione dovrebbe prendere. Questi sono “-j“, Che suggerisce un percorso e”-K“, Che detta il percorso.
Porta ping ICMP
Potresti chiederti quale porta utilizza Ping. La risposta è: nessuna. Se un’utilità ti consente di “pingare” una porta, non è letteralmente il comando Ping. Al contrario, tale utilità utilizza un pacchetto TCP o UDP per testare una porta. In verità, questo tipo di funzione viene definita “port scanner” o “controllo delle porte.”
Il ping non può usare le porte perché è un protocollo che esiste a un livello inferiore rispetto a Livello di trasporto, dove le porte sono una caratteristica importante.
Il metodo più vicino a un report della porta Ping ICMP disponibile è invia un pacchetto UDP a una porta specifica. Se quella porta non è attiva, la trasmissione provocherà un messaggio ICMP dall’host di tipo 3 (destinazione irraggiungibile) sottotipo 3 (porta di destinazione non raggiungibile). Pertanto, sebbene sia possibile provocare un messaggio ICMP su una porta, non è possibile utilizzare il meccanismo Ping per inviare un pacchetto ICMP a quella porta in primo luogo come richiesta di eco. Se si attacca un numero di porta sull’indirizzo IP in un comando Ping (ovvero ping 🙂 il comando non si avvierà ma restituirà invece un errore di sintassi.
pathping
Pathping è un’utilità che è integrato nel sistema operativo Windows ed è disponibile in tutte le versioni da Windows NT. Questo programma è una combinazione di ping e traceroute, quindi sfrutta tre tipi di messaggi ICMP. Questi sono il tipo di messaggio di richiesta di eco e di risposta di eco (8 e 0) e il tipo di messaggio di tempo superato (11).
Come con Traceroute e Ping, è possibile fornire un elenco di indirizzi per un percorso suggerito come parametro per il comando e l’utilità tenterà di inviare un pacchetto alla destinazione tramite tali indirizzi.
Pathping produce un rapporto sui risultati formattato che mostra il percorso e i tempi di andata e ritorno a ciascun router. Invierà richieste ping ripetute a ciascun router nel percorso anziché semplicemente contattare ripetutamente la destinazione. Questo è ciò che fa Ping, o semplicemente registrando ogni router nel percorso una volta, che è ciò che fa Traceroute.
Pathping non è così resistente come Ping o Traceroute. Sebbene ogni dispositivo su Internet sia in grado di inviare messaggi ICMP, non tutti i dispositivi hanno le sue funzioni ICMP attivate. Alcuni proprietari di router e server disattivano intenzionalmente le funzioni ICMP come protezione dagli attacchi degli hacker.
Se un router intermedio non utilizzerà ICMP, Ping continua a passare attraverso quel router per testare la destinazione. Se Traceroute incontra un router che non invierà pacchetti ICMP, passa semplicemente al router successivo, presentando una linea di asterischi per il router non comunicativo. Nella stessa situazione, Pathping termina le sue richieste sul router con ICMP disabilitato.
Puffo
Il motivo principale per cui alcuni proprietari di apparecchiature disattivano le capacità ICMP dei propri dispositivi è che il sistema può essere utilizzato dagli hacker come canale di attacco. L’attacco puffo è uno di questi casi.
L’attacco Puffo usa una strategia di riflettore. Non attacca direttamente il bersaglio, ma invoca altri computer e router per inviare messaggi alla vittima. L’aggressore elabora l’indirizzo di trasmissione utilizzato sulla rete della vittima e quindi invia una richiesta di eco ICMP (ping). Ogni dispositivo sulla rete invierà una risposta eco al router che ospita quell’indirizzo IP di trasmissione.
Questo attacco funziona solo su reti di grandi dimensioni. Provoca efficacemente un attacco DDoS (Distributed Denial of Service) all’interno della rete, mentre la maggior parte degli attacchi viene lanciata tramite computer remoti su Internet. Il tipo di attacco può essere prevenuto disattivando le funzionalità ICMP sul router gateway o filtrando l’accettazione delle richieste che trasportano l’indirizzo IP di trasmissione della rete sui pacchetti che entrano nella rete da una posizione remota.
Ping flood
Un ping flood è una strategia DDoS che travolge un computer di destinazione Richieste di eco ICMP. Alcune implementazioni di Ping funzionano meglio di altre. Ad esempio, l’attacco è più efficace se il comando Ping viene lanciato con “alluvione” opzione. Tuttavia, questa opzione non è disponibile con tutte le versioni di Ping – non è un’opzione valida sulla versione incorporata in Windows, per esempio. Il fatto che l’opzione flood non sia universale presenta problemi agli hacker che vogliono indirizzare i computer remoti infettati da a botnet programma di controllo per inviare le richieste di ping. Poiché l’opzione di alluvione è rara, è probabile che la maggior parte dei dispositivi nella botnet non sarà in grado di lanciare l’attacco.
Questa strategia di attacco avrebbe più successo se l’hacker assicurasse che tutti i computer infetti avessero tentato di lanciare l’attacco con l’opzione flood disponibile nelle loro implementazioni Ping. Un modo per garantire che sarebbe quello di testare i computer prima di qualsiasi attacco e categorizzare un gruppo che ha la giusta forma di ping, o per installare un ping abilitato all’alluvione su tutti i computer infettati dal virus botnet.
La difesa più semplice contro un diluvio di ping è disattivare le funzionalità ICMP sul router. Se si esegue un server Web, un firewall dell’applicazione Web dovrebbe proteggerti dalle inondazioni di Ping.
Ping of Death
Il Ping of Death comporta l’invio di pacchetti di richieste ping troppo lunghi. La richiesta avrà una grande quantità di riempimento alla fine di esso nel payload. Dato che il datagramma è troppo lungo per la trasmissione, il processore del protocollo Internet suddividerà la stringa in blocchi delle dimensioni dell’unità di trasmissione massima (MTU) del mittente. Il ricevitore noterà che si tratta di un pacchetto extra lungo che è stato suddiviso e provare per riassemblare il pacchetto originale lungo prima di inviarlo alla sua applicazione di destinazione. Se la lunghezza del pacchetto è maggiore di byte rispetto alla dimensione della memoria disponibile nel computer ricevente, il tentativo di riassemblare il pacchetto incepperà il computer.
Ping of Death è ora un tipo di attacco ben noto e così i firewall e i sistemi di rilevamento delle intrusioni con stato possono individuarlo e bloccarlo. Come con qualsiasi trucco degli hacker che viene conosciuto, la sua efficacia non è più minacciosa. Quindi, gli hacker hanno in gran parte abbandonato la strategia del Ping of Death in favore di Ping flood.
Tunnel ICMP
I router guardano solo le intestazioni di un pacchetto ICMP, inclusa l’intestazione TCP / UDP che potrebbe essere dietro i dati ICMP. Così un pacchetto normale con molti dati al suo interno verrebbe passato purché contenesse una sezione ICMP. Questo è potenzialmente una backdoor per i visitatori di aggirare le procedure di autenticazione e addebito delle reti pubbliche. Questo è chiamato tunnel ICMP o tunnel Ping.
Non è possibile eseguire il tunneling attraverso gateway e firewall solo con l’utilità Ping standard di rete che la maggior parte delle persone ha sui propri computer. Un tunnel ICMP dovrebbe essere programmato. Questo è anche un possibile percorso verso una rete per un hacker. Sfortunatamente, per gli amministratori di rete, ci sono una serie di pacchetti tunnel ICMP gratuiti disponibili per il download da Internet.
Come con i due precedenti tipi di attacchi ICMP, I tunnel di ping possono essere bloccati da firewall di applicazioni Web, sistemi di rilevamento delle intrusioni o semplicemente bloccando tutte le attività ICMP al gateway di rete.
Attacco di Twinge
Twinge è un programma di attacco di hacker. Si lancia un’alluvione dell’ICMP per sopraffare un computer di destinazione. Sebbene tutte le richieste di ping ricevute dalla destinazione sembrano provenire da molte fonti diverse, in realtà provengono tutte dalla stessa fonte, ciascuno con un indirizzo IP sorgente falso nell’intestazione. Twinge è probabilmente solo un’utilità Ping rinominata con l’opzione “flood” implementata. Sarebbe uno strumento molto utile per botnet i proprietari per caricare sui loro computer zombi al fine di avviare Ping alluvioni.
Essenzialmente, un’inondazione di Twinge è uguale a un’alluvione di Ping e le soluzioni per proteggere una rete da essa sono le stesse della categoria principale di attacchi DDoS tramite ICMP: disattivare ICMP, installare un firewall per applicazioni Web o un firewall con stato o installare un sistema di rilevamento delle intrusioni.
Individuazione del percorso MTU
L’unità di trasmissione massima (MTU) è un’impostazione su dispositivi conformi alla rete che detta la lunghezza più lunga di pacchetti IP che il dispositivo dovrebbe elaborare. È espresso in ottetti, che è un byte a otto bit. La raccomandazione MTU originale per il protocollo Internet era di 576 ottetti. Tuttavia, lo standard Ethernet consiglia 1.500 ottetti e questo è diventato lo standard per tutti i dispositivi di rete e Internet.
È possibile regolare le impostazioni MTU su qualsiasi router. Così, se i pacchetti passano attraverso un router con un MTU inferiore, ognuno verrà suddiviso in due pacchetti IP. Questo rallenta la consegna dei tuoi trasferimenti perché il pacchetto originale deve essere riassemblato dal destinatario prima che possa procedere per trasportare l’elaborazione dei livelli e quindi passare all’applicazione di destinazione.
È anche possibile specificare nell’intestazione IP quella suddivisione, che si chiama “frammentazione“Non deve essere eseguito sul pacchetto. In questo caso, un router con un MTU inferiore alla lunghezza del pacchetto eliminerà il pacchetto e quindi riporterà una notifica di errore ICMP. Questo messaggio di errore sarebbe di tipo 3 ICMP (destinazione irraggiungibile) sottotipo 4 (è richiesta la frammentazione ma è impostata la bandiera “non frammentare”).
Un tentativo di individuazione di MTU Path aggira il problema dei pacchetti frammentati o eliminati. Se riesci a trovare l’MTU più basso sul percorso che prenderà la tua trasmissione, devi solo impostare il tuo MTU fino a quella dimensione.
Il meccanismo di rilevamento è implementato dalle procedure di errore descritte sopra. Un pacchetto IP esce a una destinazione con il payload imbottito per raggiungere la dimensione MTU del mittente e il “non frammentare“Set di bandiere. In tal caso, non dovresti avere problemi con le tue connessioni alla destinazione a cui hai inviato il pacchetto di test. Se la trasmissione provoca un errore ICMP, si dovrebbe semplicemente provare ripetutamente il test, riducendo la lunghezza del pacchetto ogni volta. Con questo, alla fine invierai un pacchetto che passa e la lunghezza di quel pacchetto ti dirà l’MTU più basso sul percorso verso la tua destinazione.
Ping ha un’opzione per impostare il “non frammentare” bandiera. Tuttavia, questo sarà efficace solo se il pacchetto Ping è più lungo degli MTU dei router nel suo percorso. Il ping non si adatta alle dimensioni della tua MTU, quindi è dubbio che un breve pacchetto Ping verrà mai eliminato.
Il Basato su Linux Il pacchetto IPutils contiene tracepath, che eseguirà il rilevamento MTU del percorso per te. Su finestre computer, è possibile controllare l’utilità mturoute gratuita.
Mondo ICMP
Il sistema ICMP è un meccanismo molto semplice per la segnalazione di errori di trasmissione. Tuttavia, lo è anche uno degli strumenti più potenti disponibili per gli amministratori di rete. La buona notizia è che ICMP è gratuito e automaticamente disponibile su qualsiasi dispositivo connesso in rete. La cattiva notizia è quella ICMP può essere utilizzato dagli hacker per formare attacchi o persino intrufolarsi connessioni attraverso i firewall.
Il fatto che ICMP possa essere utilizzato in modo dannoso incoraggia molti amministratori di rete avversi al rischio a disattivare il sistema di messaggistica. Questo è un peccato perché disabilita molte delle utilissime utilità descritte in questa guida.
Se gestisci una rete e soprattutto se possiedi un router che passa il traffico Internet, considerare l’uso di firewall con stato e sistemi di rilevamento delle intrusioni per bloccare l’uso improprio dell’ICMP invece di disattivare completamente il protocollo di messaggistica. Indaga sulle impostazioni e le funzionalità del firmware del tuo router per vedere se dispone di procedure di risoluzione degli abusi ICMP che ti permetteranno di continuare a utilizzare ICMP sul dispositivo.
Usi i metodi ICMP per verificare le tue connessioni? Hai un’utilità GUI basata su ICMP che usi regolarmente e che puoi consigliare ad altri? Hai spento ICMP sul tuo router per proteggere la tua rete? Lascia un messaggio nel Commenti sezione seguente e condividi le tue esperienze.
vivere (TTL). Questo campo viene utilizzato per evitare che i pacchetti IP rimangano bloccati in una rete a causa di un loop infinito. Ogni router che attraversa un pacchetto IP decrementa il valore del TTL di uno. Se il TTL raggiunge zero, il pacchetto viene scartato e il router invia un pacchetto ICMP di “tempo scaduto” al mittente originale. Traceroute con ICMP Traceroute è unutilità di rete che utilizza ICMP per scoprire il percorso che un pacchetto IP segue attraverso Internet. Traceroute invia una serie di pacchetti IP con TTL crescente e analizza i pacchetti di errore ICMP di “tempo scaduto” che riceve dai router intermedi. In questo modo, traceroute può costruire una mappa del percorso che un pacchetto IP segue attraverso Internet. Problemi di traceroute Tuttavia, traceroute può incontrare alcuni problemi. Ad esempio, alcuni router possono essere configurati per non rispondere ai pacchetti ICMP di “tempo scaduto” per motivi di sicurezza. Inoltre, alcuni ISP possono bloccare i pacchetti ICMP in uscita per motivi di sicurezza o per evitare il ping flood. Ping ICMP Ping è unutilità di rete che utilizza ICMP per testare la connettività tra due dispositivi di rete. Ping invia un pacchetto ICMP di “richiesta eco” al dispositivo di destinazione e attende una risposta ICMP di “risposta eco”. Se il dispositivo di destinazione risponde, significa che la connettività tra i due dispositivi è buona. Porta ping ICMP Ping utilizza il protocollo ICMP, che non ha un concetto di porta come TCP o UDP. Tuttavia, alcuni firewall possono bloccare i pacchetti ICMP in entrata o in uscita per motivi di sicurezza. In questo caso, potrebbe essere necessario utilizzare unalternativa come il ping TCP o il ping UDP. Pathping Pathping è unutilità di rete che utilizza ICMP per testare la connettività tra due dispositivi di rete e analizzare il percorso che