Il DNS poisoning (o avvelenamento del DNS) è una

Transcript

Il DNS poisoning (o avvelenamento del DNS) è una
Titolo: DNS Poisoning
Autore: {gladiator}
Sezione : Sicurezza
Copyright anno 2004 www.Mytux.org Permission is granted to copy, distribuite
and/or modify this document under the terms of the GNU Free Documentation
License,Version 1.1 or any later version published by the Free Software
Foundation; with no Invariant Sections and with the Front-Cover Texts
beging."DNS Poisoning" A copy of the license is included in appendix "A.GNU
Free Documentation License"
Il DNS poisoning (o avvelenamento del DNS) è una tecnica utilizzata per dirottare
tutto il traffico diretto verso un host, in un altro a proprio piacimento.
Questo tipo di attacco (anche se vecchio di qualche anno) è diventato “famoso”
quando quasi un anno fa’, durante la guerra in Afghanistan,un gruppo di hackers
americani ha utilizzato proprio questa tecnica per attaccare il sito della T.V. araba Al
Jazeera, dirottando per due giorni tutti gli ignari naviganti che cercavano di
accedervi, in un sito pornografico.
Molti di voi (o nessuno L) si staranno chiedendo: ma come hanno fatto?? E’quello
che cercheremo di spiegarvi con questo documento.
Innanzi tutto cominciamo col dire di che cosa si tratta il DNS (Domain Name
Service).
Il DNS e’ quel servizio che si occupa della risoluzione del nome di un dominio ad
esempio www.mytux.org nel suo rispettivo indirizzo IP.
Cosa succede allora quando si digita sulla barra degli indirizzi del proprio browser
Il famigerato www e si interroga il DNS?
Possono verificarsi 3 casi:
1. Il DNS è autoritativo per il dominio richiesto
Ovverosia contiene tutti gli IP che si riferiscono a quel particolare dominio.
2. Il DNS non è autoritativo per il dominio richiesto ma lo contiene nel
proprio cache
Ovverosia l’ IP che viene trovato in cache è inviato al richiedente
3. Il DNS non è autoritativo per il dominio richiesto e non lo contiene nel
proprio cache
In questo caso possono verificarsi le seguenti possibilità:
• La richiesta è ricorsiva
Il DNS invia una richiesta al DNS di livello superiore (ad esempio nel
nostro caso potrebbe essere il DNS autoritativo per la risoluzione dei
domini .org che a sua volta effettua una richiesta autoritativa per mytux.org
che restituisce l’IP al DNS dei domini .org che lo restituisce al nostro DNS
e quindi al richiedente).
• La richiesta è iterativa
In questo caso si viene a creare una connessione diretta tra l’host del
richiedente e i rispettivi DNS coinvolti: il primo DNS invia al richiedente
l’indirizzo del DNS autoritativo per i domini .org che quindi sarà lui stesso
(il richiedente) e non il suo server DNS ad inviare la richiesta al DNS per i
domini .org dove quest’ultimo invierà al richiedente l’indirizzo del DNS
autoritativo per mytux.org.
Con questo schemino abbiamo capito (grossomodo) come funziona il servizio DNS,
ma come facciamo appunto a dirottare il traffico da un host ad un altro? Semplice!
Supponiamo ad esempio di voler dirottare tutto il traffico diretto a
www.hostvittima.com verso un altro che ci piace di piu’, non dobbiamo fare altro
che far credere al DNS autoritativo dei domini .com di essere il DNS autoritativo del
dominio hostvittima.com, inviandogli una risposta fasulla con l’IP del dominio in cui
vogliamo dirottare il traffico, questo verrebbe salvato nella cache del DNS
autoritativo dei domini .com e d’ora in poi chiunque voglia visitare
www.hostvittima.com viene inesorabilmente dirottato al dominio in cui decidiamo di
dirottare il traffico!!
IMPORTANTE: Naturalmente tutto ciò è possibile se il DNS dei domini .com non
abbia già nel suo cache il dominio dell’host vittima altrimenti ci “attaccheremmo al
tram” perchè in questo caso la nostra risposta non verrebbe presa in considerazione.
Inoltre bisognerà fare in modo che la nostra risposta arrivi prima di quella del DNS
originale ma per fare in modo che ciò avvenga credo che basti effettuare un attacco
Dos (Denial Of Service)contro quest’ultimo.
Detta così sembra facile ma come facciamo ad inviare la risposta fasulla al DNS
autoritativo dei domini .com?
La cosa fondamentale è conoscere l’ID della richiesta fatta dal DNS autoritativo dei
domini .com a quello di hostvittima.com. La risposta del server deve avere infatti lo
stesso ID della richiesta che in questo caso è stabilito da BIND (il software utilizzato
dalla maggioranza dei server DNS in rete).Ma bind come tutti i software ha delle
imperfezioni, e quindi se vogliamo delle vulnerabilità.
La prima di queste è l’impossibilità di generare sequenze di numeri puramente
casuali, quindi con qualche espediente che vedremo fra poco non sarebbe difficile per
un ipotetico attaccante poter dedurre l’ID desiderato analizzando una discreta
quantità di sequenze di numeri generate.
La seconda invece riguarda l’invio simultaneo di richieste per lo stesso dominio: se
infatti vengono inviate N° richieste al DNS vittima, questo invia a sua volta N°
richieste al DNS successivo, ognuna con ID differenti.
Queste vulnerabilità abbinate insieme possono essere sfruttate utilizzando la tecnica
del birthday paradox. Di che si tratta? Il paradosso del compleanno è in realtà una
teoria secondo la quale in un gruppo di 23 persone, la possibilità che 2 di queste
abbiano in comune la stessa data di nascita è circa del 50%, la percentuale aumenta
rapidamente all’aumentare del numero di persone nel gruppo.
Sfruttando la formula matematica usata per dimostrare questa teoria, con la
possibilità di variare il numero di richieste al DNS a nostro piacimento (e quindi
avere un maggior numero di ID da analizzare) sarà possibile risalire al nostro ID con
una probabilità di successo vicina al 100%.
Tutto ciò è ampiamente documentato nel famoso articolo di Joe Stewart
(http://www.securityfocus.com/guest/17905) dove vengono messe in risalto le
vulnerabilità di bind descritte sopra entrando anche più approfonditamente nei
particolari. Nel suo articolo Stewart parla anche minuziosamente del birthday
paradox, delle sue probabilità di successo, paragonate a quelle del tradizionale DNS
spoofing. Purtroppo tutto ciò è in lingua inglese ma non farebbe male dare un
occhiata ; )!!
Appendice A.GNU Free Documentation License
Licenza GFDL originale
Licenza GFDL tradotta