DNS Poisoning

Il DNS Poisoning (ovvero l’avvelenamento del DNS) è un attacco abbastanza datato, che è recentemente tornato di attualità a causa del bug scoperto casualmente lo scorso luglio da Dan Kaminsky. Tale bug consente di ridurre sensibilmente i tempi necessari affinchè possa essere carpito l’ID delle richieste effettuate dal DNS vittima.
Ma andiamo per ordine, cercando per prima cosa di capire bene cos’è il DNS e soprattutto come funziona. Come presumibilmente già sapete, l’acronimo DNS sta per Domain Name System ed è un sistema grazie al quale un dato dominio viene associato ad uno specifico indirizzo IP. Il DNS è un servizio (basato sul protocollo UDP) di fondamentale importanza, soprattutto per quanto riguarda il Web: è infatti conveniente associare ad un dato dominio un corrispettivo indirizzo IP, in quanto è molto più facile memorizzare una URL piuttosto che un indirizzo di tipo numerico (a 32 bit per IPv4 o addirittura a 128 bit per IPv6). Ma il vero scopo per cui tale mapping dominio-IP è necessario è dovuto al fatto che gli IP possono cambiare: come fare quindi a trovare il nuovo IP? Non è un nostro problema, poichè ad eseguire tale operazione ci pensa proprio il DNS.
Per quanto riguarda le modalità di funzionamento del DNS, esse sostanzialmente sono due:
– Modalità ricorsiva: voglio visualizzare sul mio browser Web il sito www.ciao.it che non è presente nel DNS della mia zona. Il DNS della mia zona si occuperà quindi di contattare il server autoritativo (contenente cioè tutti gli indirizzi IP) del dominio di livello top, ovvero .it, che a sua volta contatterà il server autoritativo del dominio ciao.it, il quale fornirà come risposta l’indirizzo IP da me cercato. Tale risposta verrà dapprima inoltrata al DNS .it e successivamente sarà proprio .it a fornire al mio DNS il mapping dominio-ip desiderato. A questo punto potrò accedere tranquillamente a www.ciao.it.
– Modalità iterativa: il DNS della mia zona mi fornisce l’indirizzo del server autoritativo .it, al quale invierò direttamente la mia richiesta. A questo punto tale server autoritativo mi risponderà, inviandomi l’indirizzo del server autoritativo per il dominio ciao.it, senza conttattare prima il DNS della mia zona. Infine, il DNS autoritativo per il dominio ciao.it a cui ho inviato una nuova richiesta mi fornirà l’indirizzo IP desiderato. Potrò quindi accedere a www.ciao.it.
Occorre notare che il DNS Poisoning è applicabile solo alla modalità ricorsiva e ciò lo si può facilmente intuire andando a descrivere l’attacco vero e proprio.
1) Trudy, ovvero l’attacker, registra un dominio, ad esempio www.trudy.com, il cui indirizzo IP è 151.12.1.1 e successivamente, su questo dominio, attiva anche un server DNS. Dopodichè Trudy inizia ad inviare un elevato numero di richieste fittizie al DNS di zona di Alice (la vittima), ad esempio www1.ciao.it, www2.ciao.it, ecc. in modo da carpire l’ID utilizzato per le richieste da tale server.
Poichè, inoltre, l’ID non viene generato in modo deltutto casuale, è facile, mediante un attacco di tipo birthday, andare a predire quale sarà il prossimo ID che il DNS di zona di Alice utilizzerà.
Ma cos’è questo ID? E’ semplicemente un identificatore associato a ciascuna richiesta che il DNS di Alice inoltra ad un server autoritativo (ad esempio .it o ciao.it). Le risposte del server autoritativo inviate al DNS di zona di Alice dovranno avere lo stesso ID delle richieste, altrimenti il DNS di zona di Alice provvederà a scartarle. Ecco perchè è necessario carpire l’ID delle richieste affinchè l’attacco vada a buon fine.
Per completezza, occorre soffermarsi sull’attacco di tipo birthday. Tale attacco si basa sul paradosso del compleanno: su un campione di 23 persone, la probabilità che almeno due di esse compiano gli anni lo stesso giorno è circa del 50%. Ovviamente questa probabilità aumenta in modo esponenziale aumentando il numero di persone considerate. Questo è il motivo per cui risulta conveniente effettuare un numero elevato di richieste fittizie al server DNS vittima, poichè in tal modo aumentano rapidamente le probabilità di carpirne l’ID.
2)Trudy, tramite il suo DNS, invia una richiesta al DNS di zona di Alice, riguardante il sito www.ciao.it. Tale sito, che non è presente nella cache del DNS a cui fa riferimento Alice, costringe il DNS in questione a contattare il server autoritativo .it, il quale, a sua volta, contatterà il server autoritativo ciao.it. A questo punto viene perpetrato l’attacco vero e proprio: il DNS di Trudy si fingerà l’autoritativo ciao.it e, conoscendo l’ID del DNS di zona di Alice, risponderà alla sue richieste usando l’ID corretto. Se la “entry avvelenata” inviata dal DNS di Trudy arriverà per prima al DNS di zona di Alice, verrà memorizzata nella cache di quest’ultimo. Ovviamente al DNS a cui fa riferimento Alice arriverà anche la entry corretta, proveniente dal vero ciao.it, che però verrà scartata, in quanto possiede lo stesso ID della “entry avvelenata” memorizzata in precedenza. La entry avvelenata avrà una struttura del tipo:www.ciao.it 151.12.1.1

dove 151.12.1.1 è in realtà l’indirizzo del dominio www.trudy.com, su cui risiede un sito contenente software malicious (oltre al DNS usato per l’attacco).

3) Alice, ignara di tutto ciò, cercherà di accedere al sito www.ciao.it. A questo punto verrà reindirizzata senza accorgersene sul sito di Trudy, con tutte le conseguenze nefaste che tale operazione potrebbe comportare.

Ma come si può contrastare un attacco del genere? Ovviemente la soluzione dipende solo marginalmente dalle scelte dell’utente finale, mentre è strettamente legata alla sicurezza dei server DNS di zona, e soprattutto di quelli utilizzati dagli ISP. Il consiglio che posso darvi è quello di scegliere server DNS sicuri, quali OpenDNS. Comunque, in generale, potete stare tranquilli: attacchi del genere vengono eseguiti verso organizzazioni di grandi dimensioni o siti abbastanza famosi (vedi l’attacco da parte di alcuni hacker americani ai danni della tv Al Jazera), non verso dei semplici utenti.

Il post termina qui, a presto.
DNS Poisoningultima modifica: 2009-01-10T19:47:09+01:00da nazarenolatella
Reposta per primo quest’articolo

2 pensieri su “DNS Poisoning

  1. Caro nazareno complimenti per il blog interessante.
    ti scrivo non per questo articolo ma per il flash della fonera……. i commenti in quell’articolo erano chiusi e anche nella sezione consulenza gratuita…quindi scusami l’incasinamento….
    non riesco a trovare i due file da rinominare per flashare la fonera, potresti inviarmeli?????
    Un saluto
    e scusami Ancora
    Andrea

  2. Ciao Andrea, innanzitutto grazie per i complimenti. Per quanto riguarda il flash della Fonera, dando un’occhiata al sito dd-wrt.com ho trovato una directory in cui viene spiegata passo passo la nuova procedura da seguire per aggiornare il firmware. Il link a cui mi riferisco è questo: http://www.dd-wrt.com/dd-wrtv3/dd-wrt/downloads.html (clicca su v24, successivamente su Atheros WiSoc ed infine su Fonera – l’howto è il file fonera_flashing.txt). Comunque ho provveduto a riaprire i commenti di tutti i post (che si chiudevano in automatico dopo un mese a causa di un’errata impostazione di myblog). Se hai altri problemi non esitare a contattarmi 🙂
    PS: i file che ho utilizzato per flashare la mia Fonera li ho cancellati, quindi non posso inviarteli, mi dispiace.

I commenti sono chiusi.