Guida Reti Cos'è un attacco DNS cache poisoning o DNS spoofing

TheWorm91

Helper
31 Marzo 2022
428
49
204
317
Ultima modifica da un moderatore:
Banner-red-skull-shape-in-digital-environment.jpg






1    Funzionamento di DNS



Per capire il DNS spoofing è bene avere chiaro come funziona tutto il sistema DNS per tradurre gli hostname nei relativi indirizzi ip. Viene spesso definito come un nome leggibile dall'uomo (cioè formato da caratteri e non da numeri).​
Risoluzione DNS Google: 142.250.180.131 --> google.it
Infatti se nella barra degli indirizzi scriviamo l'indirizzo IP 142.250.180.131 si aprirà comunque la pagina inziale di google come se avessimo digitato www.google.it.

Ci sono domini di diverso livello, ma analizzeremo solo il primo e il secondo livello​

1.1    DOMINIO DI PRIMO LIVELLO

Il TLD si riferisce all'ultima parte di un nome di dominio.
google.it --> IT = TLD.
Spesso il TLD rappresenta posizioni geografiche specifiche, ad esempio it (italia), fr (francia), eu (unione europea) e cosi via​

1.2    DOMINIO DI SECONDO LIVELLO

Per dominio di secondo livello intendiamo quello che possiamo definire il contenuto che viene prima del TLD.

inforge.net
.net = dominio di primo livello
inforge = dominio di secondo livello

Per approfondire e comprendere meglio il processo di traduzione DNS si rimanda alla lettura di questo thread

DNS-spoofing.jpg



2    DNS cache poisoning



L' obiettivo di questo tipo di attacco è quello di dirottare la vittima da un sito web legittimo che intende visitare ad un altro scelto dall'attaccante.
Il DNS poisoning è molto pericoloso poichè il reindirizzamento risulta trasparente all'utente vittima, il quale pur digitando l'indirizzo web corretto (es. www.inforge.net) non verrà indirizzato sul sito legittimo ma su un altro portale con indirizzo IP diverso.

Il dirottamento può essere realizzato principalmente in due modi:​
  • Compromettendo un DNS server
L' attaccante compromette direttamente il server DNS per deviare il traffico dal sito legittimo a un altro ip che punta al sito falso inserendo entries DNS invalide nella cache del server.
Per ottenere il "dirottamento" sul sito fake l'attaccante "impersona" il nameserver DNS, facendo una richiesta a un resolver DNS e quindi falsificando la risposta quando il resolver DNS interroga un nameserver, in questo modo viene modificata (avvelenata) la cache del resolver DNS togliendo l'ip del sito legittimo abbinato all'hostname e inserendo al suo posto l'ip del sito fake.
Ciò è possibile perché i server DNS utilizzano UDP invece di TCP (nessun three way handshake per controllare l'identità dei server) e perché al momento non esiste nessun meccanismo di verifica e controllo sui dati memorizzati nella cache infatti se un resolver DNS riceve una risposta falsa, accetta e memorizza comunque i dati.​

  • Attaccando direttamente un client
L' attaccante si posiziona tra il browser della vittima e il server DNS per dirottare il traffico sul sito falso.
Quando l'utente tenta di connettersi a un sito come primo passo (prima di inviare una query a un DNS pubblico) il pc interroga la propria cache locale per trovare l'IP corrispondente al domain name.
Se la cache locale del pc è stata compromessa, modificando la risoluzione DNS corretta con un diverso IP che punta al sito malevolo, l'utente non sarà più in grado di connettersi al sito originale ma si collegerà al sito falso deciso dall'attaccante che ha modificato i valori della cache, questo perchè prima di interrogare un DNS un pc farà sempre prima riferimento alle corrispondenze presenti nella memoria cache locale.



3    Phishing tramite DNS spoofing



Una volta compromessa la cache DNS risulta immediato per un black hat hacker effettuare un attacco phishing.
Ad esempio se l'utente visita spesso siti web dove deve effettuare il login, l'hacker malintenzionato provvederà a creare una web page falsa graficamente identica (o perlomeno molto simile) a quella originale per tentare di ottenere le credenziali di accesso del profilo e altre informazioni preziose.
Per esempio un black hat hacker potrebbe creare una web page falsa di amazon per ottenere le credenziali della vittima e poter fare acquisti tramite l'account (e la carta di credito) del malcapitato.​
N.B. a differenza dei classici casi di phishing via e-mail in cui vengono create false pagine di login con un URL diverso dalle pagine reali, nel caso di DNS poisoning la web page falsa risponderà allo stesso URL di quella originale.​



4    Come prevenire e difendersi dal DNS poisoning



  • Mantere aggiornato sistema operativo e software Anti-Virus
  • Se possibile navigare su internet attraverso una VM
  • Non scaricare file sospetti o programmi craccati, se proprio vogliamo scaricare un file sospetto meglio farlo in una VM o in un ambiente sand-box
  • Usare server DNS affidabili come OpenDNS o Cloudflare
  • Controllare sempre due volte i siti web che visitiamo (controllando se è presente la crittografia HTTPS)
  • Svuotare regolarmente la cache DNS del proprio computer.
Per liberare la cache basterà usare su windows il comando ipconfig /flushdns mentre su linux​
$sudo systemd-resolve --flush-caches o $sudo resolvectl flush-caches
Questo oltre ad essere utile per la sicurezza può aiutare a in caso di troubleshooting per risolvere errori nel raggiungere un dominio (es. l'errore DNS_PROBE_FINISHED_NXDOMAIN)​
Ulteriori metodi di difesa sono l'utilizzo di un servizio VPN per la navigazione in modo tale da criptare tutto il traffico di navigazione e l'uso di applicazioni (è possibile configurare anche un browser web) per crittografare il traffico DNS in modo da non inivare le query DNS in plaintext sulla rete.
Ad esempio il DNS Cloudflare 1.1.1.1 supporta i protocolli DNS over TLS (DoT) e DNS over HTTPS (DoH) per criptare il traffico DNS in chiaro, in questo modo evitiamo che terze parti possano manipolare le nostre query DNS.​



5    Meccanismi di sicurezza per i server DNS



5.1    DNSSEC

Il DNS, acronimo di Domain Name System, è un protocollo fondamentale per la navigazione in Internet, poiché consente di associare i nomi di dominio (ad esempio, www.google.com) agli indirizzi IP corrispondenti (ad esempio, 172.217.7.206). Tuttavia, il DNS non è criptato, il che significa che le informazioni trasmesse attraverso questo protocollo sono suscettibili ad essere intercettate e manipolate da terzi malintenzionati.

Per garantire una maggiore sicurezza e autenticazione delle richieste DNS, è stato sviluppato il protocollo DNSSEC. Questo sistema di estensioni di sicurezza si basa sul metodo crittografico a chiave pubblica, che consente di proteggere le informazioni DNS tramite l'utilizzo di una coppia di chiavi, una pubblica e una privata.

dnssec.png


In particolare, ogni dominio che utilizza DNSSEC ha una coppia di chiavi generate dal proprietario del dominio: la chiave privata viene utilizzata per firmare le risposte DNS, mentre la chiave pubblica viene pubblicata nel record DNS del dominio. In questo modo, i client DNS possono verificare la firma digitale delle risposte DNS ricevute, garantendo l'autenticità delle informazioni.

Oltre a garantire l'autenticità delle informazioni DNS, DNSSEC offre anche protezione contro gli attacchi di tipo man-in-the-middle, in cui un attaccante tenta di intercettare e manipolare il traffico DNS tra un client e un server DNS. Poiché le risposte DNS sono firmate digitalmente, un attaccante non può modificare i record DNS senza invalidare la firma digitale, che viene rilevata dal client DNS come un segnale di allarme di un potenziale attacco.

5.2    Selezione random del numero di porta UDP

Con la tecnica UDP Source Port Randomization (UDP SPR) è possibile settare un numero di porta UDP sul server in maniera casuale e variandolo secondo intervalli di tempo predefiniti ed evitando l'uso stabile della porta 53.
In questa maniera chi attacca dovrà indovinare non solo il numero di porta ma anche il transaction ID a 16 bit del messaggio DNS abbinato alla porta UDP in una finestra temporale molto breve.
In questo modo è praticamente impossibile indovinare casualmente una combinazione di due numeri (porta UDP e transaction ID) dal momento che il numero di porta UDP viene aggiornato ciclicamente.



6     Conclusioni



Questo attacco è molto insidioso ma fortunatamente è molto facile da prevenire mettendo in pratica le best practices per la sicurezza di base, elencate nel capitolo 4 di questo articolo.

Fondamentale è controllare sempre bene i siti sui quali immettiamo i nostri dati personali (e sensibili) ed evitare di scaricare software piratati da fonti non affidabili.

Oltre ad avere un buon antivirus è fortemente consigliato l'uso di una buona VPN per avere ulteriore protezione, per scegliere la più adatta alle proprie esigenze si consiglia la lettura di questa discussione ufficiale scritta da @0xbro in cui vengono elencate le migliori VPN attualmente disponibili.

Discussione scritta da @TheWorm91 e @haxo
 
è di qualche giorno fa la notizia della scoperta di un nuovo attacco dns poisoning, MaginotDNS
Su questo sito ho trovato del materiale per vedere i dettagli dell'attacco e le CVE interessate dalla vulnerabilità