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