Che cos'è il DNS cache poisoning? | DNS spoofing

Gli aggressori possono avvelenare una cache DNS ingannando i resolver DNS facendogli memorizzare delle informazioni false, portando al resolver che invia l'indirizzo IP errato ai client e gli utenti che tentano di navigare su un sito Web verranno indirizzati nel posto sbagliato.

Share facebook icon linkedin icon twitter icon email icon

DNS Spoofing

Obiettivi di apprendimento

Dopo aver letto questo articolo sarai in grado di:

  • Definire il DNS Cache Poisoning
  • Scoprire come funziona la memorizzazione nella cache DNS
  • Spiegare come gli aggressori possono avvelenare una cache DNS
  • Comprendere come il DNSSEC aiuta a prevenire attacchi di DNS poisoning

Che cos'è il DNS cache poisoning?

Immagina che, come uno scherzo dell'ultimo anno a scuola, i più ragazzi grandi cambino tutti i numeri delle camere nel campus, in modo che i nuovi studenti che non conoscono la struttura del campus trascorrano il giorno successivo a perdersi e a presentarsi nelle aule sbagliate. Ora immagina che i numeri delle stanze non corrispondenti vengano registrati in una directory del campus e che gli studenti continuino a dirigersi nelle stanze sbagliate fino a quando qualcuno non si rende conto dello scherzo e corregge la directory.

Il

DNS cache poisoning è l'atto di inserire informazioni false in una cache DNS, in modo che le query DNS restituiscano una risposta errata e gli utenti vengano indirizzati a siti Web errati. Il DNS cache poisoning è anche noto come "DNS spoofing". Gli indirizzi IP sono i "numeri delle camere" di Internet, che permettono al traffico web di arrivare nei posti giusti. Le cache del resolver DNS sono la "directory del campus" e quando memorizzano informazioni errate, il traffico viene indirizzato verso luoghi errati fino alla correzione delle informazioni memorizzate nella cache. (Nota: ciò non disconnette effettivamente i siti Web reali dai loro indirizzi IP reali.)

Poiché per i resolver DNS in genere non è possibile verificare i dati nelle loro cache, le informazioni DNS errate rimangono nella cache fino alla scadenza del TTL (time-to-live) o fino a quando non vengono rimosse manualmente. Esistono varie vulnerabilità che rendono possibile il DNS poisoning, ma il problema principale è che il DNS è stato creato per un Internet molto più piccolo e basato su un principio di fiducia (molto simile al BGP). Un protocollo DNS più sicuro chiamato DNSSEC mira a risolvere alcuni di questi problemi, ma non è stato ancora ampiamente adottato.

Cosa fanno i resolver DNS?

I resolver DNS forniscono ai client l'indirizzo IP associato a un nome di dominio. In altre parole, prendono indirizzi di siti Web leggibili dall'uomo come "cloudflare.com" e li traducono in indirizzi IP leggibili automaticamente. Quando un utente tenta di accedere a un sito Web, il loro sistema operativo invia una richiesta a un resolver DNS. Il resolver DNS risponde con l'indirizzo IP e il browser Web prende questo indirizzo e avvia il caricamento del sito Web.

Dove si verifica la memorizzazione nella cache DNS?

Un resolver DNS salverà le risposte alle richieste di indirizzi IP per un certo periodo di tempo. In questo modo, il resolver può rispondere alle query future molto più rapidamente, senza la necessità di comunicare con i numerosi server coinvolti nel tipico processo di risoluzione DNS. I resolver DNS salvano le risposte nella loro cache fino a quando lo consente il TTL (time-to-live) designato associato a quell'indirizzo IP.

Risposta non memorizzata nel DNS:

DNS uncached response

Risposta memorizzata nel DNS:

DNS cached response

In che modo gli aggressori avvelenano le cache DNS?

Gli aggressori possono avvelenare le cache DNS impersonando i nameserver DNS, facendo una richiesta a un resolver DNS e quindi falsificando la risposta quando il resolver DNS richiede un nameserver. Ciò è possibile perché i server DNS utilizzano l’UDP anziché il TCP e poiché attualmente non esiste alcuna verifica per le informazioni DNS.

Processo DNS Cache Poisoning:

DNS Cache Poisoning Process

Cache DNS avvelenata:

Poisoned DNS Cache

Invece di utilizzare il TCP, che richiede a entrambe le parti comunicanti di eseguire una "stretta di mano" per avviare la comunicazione e verificare l'identità dei dispositivi, le richieste e le risposte DNS utilizzano l’UDP, User Datagram Protocol. Con l’UDP non vi è alcuna garanzia che una connessione sia aperta, che il destinatario sia pronto a ricevere o che il mittente sia chi afferma di essere. L’UDP è vulnerabile alla falsificazione per questo motivo: un utente malintenzionato può inviare un messaggio tramite l’UDP e fingere che sia una risposta da un server legittimo falsificando i dati dell'intestazione.

Se un resolver DNS riceve una risposta falsa, accetta e memorizza nella cache i dati in modo acritico perché non c'è modo di verificare se le informazioni sono accurate e provengono da una fonte legittima. Il DNS è stato creato nei primi giorni di Internet, quando le uniche parti ad esso collegate erano università e centri di ricerca. Non c'era motivo di aspettarsi che qualcuno potesse provare a diffondere false informazioni DNS.

Nonostante questi importanti punti di vulnerabilità nel processo di memorizzazione nella cache DNS, gli attacchi di avvelenamento DNS non sono facili. Poiché il resolver DNS in realtà esegue una query sul nameserver autoritativo, gli aggressori hanno solo pochi millisecondi per inviare la risposta falsa prima che arrivi la risposta reale dal nameserver autoritativo.

Per eseguire attacchi di DNS spoofing, gli aggressori devono anche conoscere o indovinare una serie di fattori:

  • Quali query DNS non vengono memorizzate nella cache dal risolutore DNS di destinazione, in modo che il resolver interroghi il nameserver autoritativo
  • Quale porta* sta usando il resolver DNS: usavano la stessa porta per ogni query, ma ora usano una porta diversa e casuale ogni volta
  • Il numero identificativo della richiesta
  • A quale nameserver autoritativo la query andrà

Gli aggressori potrebbero anche ottenere l'accesso al resolver DNS in qualche altro modo. Se una parte malintenzionata opera, compromette od ottiene l'accesso fisico a un resolver DNS, può facilmente modificare i dati memorizzati nella cache.

*Nel networking, una porta è un punto virtuale di ricezione della comunicazione. I computer hanno più porte, ognuna con il proprio numero, e affinché i computer possano comunicare tra loro, determinate porte devono essere designate per determinati tipi di comunicazione. Ad esempio, le comunicazioni HTTP vanno sempre alla porta 80 e HTTPS utilizza sempre la porta 443.

Spoofing e censura DNS

Nei loro paesi, diversi governi hanno intenzionalmente avvelenato le cache DNS al fine di negare l'accesso a determinati siti Web o risorse web.

In che modo il DNSSEC aiuterà a prevenire il DNS poisoning?

DNSSEC è l'acronimo di “Domain Name System Security Extensions” ed è un mezzo per verificare l'integrità e l'origine dei dati DNS. Il DNS è stato originariamente progettato senza tale verifica, motivo per cui il DNS poisoning è possibile.

Proprio come il TLS/SSL, il DNSSEC utilizza la crittografia a chiave pubblica (un modo di firmare le informazioni digitalmente) per verificare e autenticare i dati. Le estensioni DNSSEC sono state pubblicate nel 2005, ma il DNSSEC non è ancora mainstream, lasciando il DNS ancora vulnerabile agli attacchi.