ICMP (Internet Control Message Protocol) è un protocollo di servizio per reti che fornisce informazioni relative allo stato e messaggi di errore. Per esempio, quando un pacchetto IP non riesce a raggiungere la sua destinazione, un router invia un messaggio ICMP sul problema al mittente originale del pacchetto. Tale protocollo offre anche un’utilità di diagnostica ping, che può confermare che le connessioni di rete siano sane. Tranne che per il ping e per gli strumenti di tracciamento del percorso, gli utenti interagiscono raramente con ICMP.
Tuttavia, ICMP è più di un protocollo diagnostico, dal momento che è anche capace di trasportare dati tra due sistemi. Sfortunatamente, questo lo rende un vettore attraente per gli attacchi informatici che possono trasportare segretamente comandi ed esfiltrare dati attraverso il tunneling ICMP.
Impara come funziona il tunneling ICMP, come rilevarlo e come prevenire questo tipo di incidenti.
Cos’è il tunneling ICMP?
ICMP tunneling è una tecnica di attacco command-and-control (C2) che attraversa segretamente il traffico malevolo attraverso le difese perimetrali. I dati dannosi che passano dal tunnel sono nascosti all’interno di richieste e risposte ICMP echo che non destano sospetti.
Per esempio, supponiamo che un utente abbia scaricato un malware o un hacker abbia sfruttato una vulnerabilità per installare un malware su un dispositivo vittima. Il malware deve stabilire un tunnel C2 dall’interno della rete per comunicare con il cyber criminale esterno. ICMP è un protocollo fidato di supporto per gli amministratori, quindi i messaggi ICMP sono spesso autorizzati a viaggiare attraverso i firewall e i segmenti di rete che in genere bloccano il traffico malevolo in entrata e in uscita.
Diversi tipi di dati dannosi possono essere inseriti in un datagramma ICMP, da piccole quantità di codice a un grande pacchetto incapsulato HTTP, TCP o SSH. Un datagramma è simile a un pacchetto, ma non richiede una connessione stabilita o la conferma che la trasmissione sia stata ricevuta (a differenza dei protocolli basati sulla connessione come TCP).
I datagrammi ICMP includono una sezione dati che può trasportare un carico utile di qualsiasi dimensione (vedi RFC 792). Per esempio, se l’hacker vuole creare una shell inversa SSH (che permette a sua volta all’hacker remoto di interagire con la vittima) può inserire un pacchetto SSH nella sezione dati del datagramma ICMP, che stabilirà la shell inversa. Oppure un dispositivo compromesso può inserire piccoli pezzi di dati esfiltrati nel datagramma di una richiesta echo.
Con il tempo, diversi messaggi di richiesta e risposta ICMP echo vengono inviati tra il dispositivo compromesso e il server C2 controllato dall’hacker per scambiare payload unici di comandi o dati esfiltrati all’interno di ogni messaggio ICMP echo.
Tuttavia, ci sono degli svantaggi in questa tecnica. Alcuni sistemi operativi richiedono privilegi di root o di amministratore locale per creare datagrammi ICMP personalizzati e questi privilegi possono essere difficili da acquisire da parte di un cyber criminale. Inoltre, il tunneling ICMP attraverso firewall statici o router NAT (Network Address Translation) presenta anche delle sfide, perché questi dispositivi filtrano le risposte ICMP echo che a loro volta non hanno una richiesta echo corrispondente. In questi casi, il tunneling ICMP potrebbe non essere affidabile come altri metodi di tunneling del protocollo.
Strumenti come ICMP Tunnel possono fornire soluzioni e semplificare il processo di creazione di un tunnel ICMP che incapsula qualsiasi tipo di traffico IP.
Come rilevare il tunneling ICMP
É necessario monitorare il traffico di rete per individuare volumi insolitamente grandi di traffico ICMP e dimensioni dei datagrammi ICMP non standard o insolite. Le richieste e le risposte ICMP echo legittime hanno identificatori corrispondenti e payloads che sono di una dimensione fissa o standard, come 64 byte. Per esempio, quando un server riceve una richiesta di echo, il server copia semplicemente il carico utile di 64 byte e aggiunge lo stesso carico utile alla risposta di echo. Un dispositivo di rete, che invia messaggi ICMP con payload insolitamente grandi o che invia più messaggi ICMP del solito, potrebbe indicare traffico di tunneling.
Il traffico dei tunnel ICMP può essere difficile da rilevare. Il software potrebbe legittimamente verificare connessioni di rete sane con messaggi echo che hanno payload insoliti. Per stabilire se i payload hanno un contenuto malevolo, quelli non crittografati nei messaggi ICMP possono essere esaminati più da vicino con strumenti apposite, come Wireshark. Si fa presente tuttavia che un hacker è ancora oggi in grado di crittografare i payload ICMP per eludere il rilevamento.
ExtraHop Reveal(x) rileva automaticamente il comportamento di tunneling ICMP identificando un numero insolito di richieste ICMP inviate da un dispositivo nel tempo, con ogni richiesta contenente un payload unico. Le normali richieste ICMP includono tipicamente un payload statico che viene ripetuto in più richieste.
Un sistema di difesa può indagare sulle transazioni associate al dispositivo vittima per determinare se un device ha comunicato con un endpoint esterno sospetto, oltre a determinare se il traffico di rete per i messaggi ICMP deve essere tolto dalla rete.
Come prevenire il tunneling ICMP
Poiché ICMP aiuta a mantenere le connessioni di rete sane, il blocco di tutto il traffico ICMP può creare delle sfide: gli endpoint maligni conosciuti e i domini, scoperti attraverso le informazioni relative alle minacce, possono essere bloccati al perimetro. È anche possibile configurare i firewall per bloccare i ping in uscita verso endpoint esterni e permettere solo ai pacchetti ICMP di dimensioni fisse di passare attraverso i firewall.