DNS Cache Poisoning Explained

2,091 views
1,968 views

Published on

DNS Cache Poisoning Explained (Italian)
Demo video: http://vimeo.com/11511275

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,091
On SlideShare
0
From Embeds
0
Number of Embeds
26
Actions
Shares
0
Downloads
49
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

DNS Cache Poisoning Explained

  1. 1. Pescara, 22/08/2008<br />MOCA 2008<br />DNS Cache Poisoning Explained<br />Ivan Giacomelli<br />
  2. 2. 2<br />Pescara, 22/08/2008<br />MOCA 2008<br />DNS Cache Poisoning Explained<br />Cover dellapresentazione<br />Domain Name System – Analisi e dettagliimplementativi<br />DNS Cache Poisoning – Internals & Exploiting<br />Ivan Giacomelli<br />
  3. 3. 3<br /># whoami<br />IT Security Researcher / Security Software Developer<br />@ Emaze Networks S.p.A.<br />http://www.emaze.net<br />IT Security Analyst / Penetration Tester<br />Security Operation Center – Finance & Top Clients<br />@ Telecom Italia S.p.A.<br />http://www.telecomitalia.it<br />
  4. 4. 4<br />Security Operation Center<br />“Un Security Operation Center (SOC) è un centro che eroga servizi di sicurezza informatica, implementa processi, procedure per la prevenzione e gestione degli incidenti. Il compito dell’infrastruttura è la gestione preventiva del rischio il che significa centralizzare e analizzare tutte le attività di sicurezza informatica sfruttando l’insieme delle risorse umane, hardware e software dedicate alla gestione del sistema di sicurezza.”<br />Fonte: http://it.wikipedia.org/wiki/Security_Operation_Center<br />
  5. 5. 5<br />Domain Name SystemCos’e’?<br /><ul><li>Protocollo per la risoluzionedinomi host in indirizzi IP e viceversa
  6. 6. Realizzatotramite un database distribuitocostituitodai server DNS
  7. 7. Nasce in seguitoall’esigenzadiassociare un indirizzo IP ad un nometestualedi facile memorizzazione per l’uomo
  8. 8. Ha un vantaggio. E’ flessibile:
  9. 9. Gestionecentralizzatadelleassociazioni IP / nometestuale.
  10. 10. Possibilita’ diassegnarepiu’ nomi ad unostesso IP
  11. 11. Bilanciamentocaricodilavorosupiu’ IP</li></li></ul><li>6<br />Domain Name SystemTerminologia<br /><ul><li>Zona : gruppodiassociazioni IP / nome.
  12. 12. Authoritative Nameserver : server master diunazona.
  13. 13. Resolver : DNS client.
  14. 14. Recursive Nameserver : DNS server con risoluzionericorsivadelle zone per ilquale non e’ Authoritative Server.
  15. 15. Resource Record : A, CNAME, NS, MX, TXT, SOA.
  16. 16. Delegation : delega ad un altro DNS Server per la risoluzionedi un nome non disponibilesul DNS server danoiinterrogato.</li></li></ul><li>7<br />Domain Name SystemCome funziona una query DNS<br />Quando un sistemacollegato in rete ha la necessita’ dicontattarne un altro, inviauna query contenente la richiesta al suo server DNS, attendendounarispostacontenentel’indirizzo IP corrispondente al nomedaluirichiesto.<br />
  17. 17. 8<br />Domain Name SystemCome funziona una query DNS<br />I casi sono 2:<br /><ul><li> Il nostro server DNS ha gia’ in cache la corrispondenza e ce la fornisce senza dover cercarla lui stesso.
  18. 18. La risposta non e’ nella cache e il server DNS parte alla ricerca della risposta che deve fornire.</li></ul>Per primo viene contattato un Root Server.<br />
  19. 19. 9<br />Domain Name SystemCome funziona una query DNS<br />Il root server non conosce la risposta alla nostra domanda, ma sa indirizzarci a qualcuno che puo’ darci informazioni maggiori.<br />A questo punto la richiesta viene effettuata nuovamente al DNS server indicatoci dal root server.<br />I server che conoscono I domini di 1 livello sono I GTLD nameserver.<br />
  20. 20. 10<br />Domain Name SystemCome funziona una query DNS<br />Il GTLD nameserversaindirizzarci verso in nameserverautoritativo per ildominioche mi interessa.<br />Questonameserverautoritativo mi safornire la giustaassociazione.<br />Oltreallacoppia IP/nomepuo’ fornirmiancheinformazioniaggiuntive, postocheappartenganoallostessodominio (bailiwickedcheck).<br />
  21. 21. 11<br />Domain Name SystemAnalisi del pacchetto<br />Campi importanti per la nostra disquisizione:<br /><ul><li> Source IP Address
  22. 22. Destination IP Address
  23. 23. Source Port
  24. 24. Destination Port
  25. 25. Query ID (a.k.a Transaction ID a.k.a TXID)</li></li></ul><li>12<br />Domain Name SystemIl pacchetto UDP che contiene la query<br />Altricampicontenutinelpacchetto:<br /><ul><li> QR (Query/Response): 0 query / 1 response
  26. 26. Opcode: settatodal client a 0 per una query standard
  27. 27. AA (Authoritative Answer): 0 non autoritativa / 1 autoritativa
  28. 28. TC (Truncated): settata a 1 in unarisposta se ilcontenutosuperai 512 byte limitedi un pacchetto UDP. In caso e’ necessariaunarichiesta in TCP
  29. 29. RD (Recursion Desired): 1 se sidesidera la ricorsione / 0 altrimenti
  30. 30. RA (Recursion Available): 1 se la ricorsione e’ disponibile / 0 altrimenti
  31. 31. Z: flag riservato. Deveessere 0.
  32. 32. RCODE (Response Code): indicaesitopositivo o negativo. Settatodal server.
  33. 33. Question Record Count: quasi sempre 1. Sianellerichiestechenellerisposte.
  34. 34. Answer/authority/additional record count: settate dal server. Contengono varie informazioni riguardanti la risposta che viene data al client. Vedremo fra un po’ il dettaglio.
  35. 35. DNS Question/Answer data: Area contenente la domanda effettiva e la risposta effettiva.</li></li></ul><li>13<br />Domain Name SystemResource Records<br />
  36. 36. 14<br />Domain Name SystemResource Records<br />Esistono molti altri tipi di Resource Records.<br />Per ulteriori approfondimenti:<br />http://www.dns.net/dnsrd/rr.html<br />
  37. 37. 15<br />Domain Name SystemAnalisi di una query DNS<br />Richiesta dal mio nameserver verso il GTLD nameserver.<br />
  38. 38. 16<br />Domain Name SystemAnalisi di una query DNS<br />Risposta dal GTLD nameserver verso il nameserver del mio ISP.<br />
  39. 39. 17<br />Domain Name SystemAnalisi di una query DNS<br />Richiesta dal nameserver del mio ISP verso l’authoritative server del dominio di mio interesse.<br />
  40. 40. 18<br />Domain Name SystemAnalisi di una query DNS<br />Risposta dall’authoritative nameserver contenente le informazioni che mi servono.<br />Nella risposta sono contenute informazioni aggiuntive. I ‘glue-records’.<br />
  41. 41. 19<br />Domain Name SystemQuali risposte devo accettare?<br /><ul><li> Le risposte valide arrivano sulla stessa porta dalle quali sono state inviate. In caso contrario lo stack di rete non e’ in grado di inviare il pacchetto al processo del demone DNS
  42. 42. La sezione ‘question’ e’ duplicata anche nella risposta e deve essere uguale alla medesima sezione del pacchetto contenente la richiesta.
  43. 43. Il Query ID e’ uguale a quello della richiesta.
  44. 44. Le sezioni ‘Authority’ e ‘Additional’ rappresentano nomi che appartengono al dominio della richiesta. Questo meccanismo viene chiamato "baliwick checking". Questo impedisce ad un nameserver di rispondere con informazioni fraudolente oltre alla reale risposta.</li></li></ul><li>20<br />DNS Cache Poisoning<br />Perche’?<br />
  45. 45. 21<br />DNS Cache PoisoningIndividuazione del query ID<br />Nel caso il DNS server sia configurato per utilizzare un Query ID sequenziale e’ sufficiente fare una richiesta che verra’ risolta da un nostro nameserver autoritativo per sapere il Query ID attuale del nameserver che vogliamo attaccare.<br />
  46. 46. 22<br />DNS Cache Poisoning<br />Unavoltaguessatoil Query ID della nostra vittimasara’ sufficientefarglirisolvere un nome e floodarlo con risposte ‘fasulle’ per averequalchepossibilita’ diinserire record falsificati.<br />
  47. 47. 23<br />DNS Cache PoisoningRequisiti<br /><ul><li> Il nome non puo’ essere gia’ contenuto nella cache del server DNS. Se una corrispondenza IP/nome e’ gia’ presente nella cache del DNS server che vogliamo poisonare non sara’ possibile completare l’attacco fino alla sua scadenza.
  48. 48. L’attaccante deve trovare il corretto Query ID. Nel caso di DNS server vecchi o configurati male non e’ un gran problema. Abbiamo visto in precedenza che con un po’ di perseveranza la cosa e’ fattibile.
  49. 49. L’attaccante deve essere piu’ veloce del vero DNS. Dipende molto dalle prestazioni della rete.</li></li></ul><li>24<br />DNS Cache PoisoningPossibile soluzione<br />Una soluzione ovvia al problema e’ quella di randomizzare il TXID. <br />Con Query ID sequenziali l’attaccante ha un range limitato di valori da tentare. Se viene individuato il valore 1000 come Query ID sara’ sufficiente tentare I valori da 1001 a 1050 per avere buone possibilita’ di successo.<br />Se il DNS server randomizza I Query ID I valori che l’attaccante deve provare sono necessariamente 64k.<br />Molto piu’ difficile!<br />
  50. 50. 25<br />E loro che ne dicono?<br />
  51. 51. 26<br />DNS Cache Poisoning<br />
  52. 52. 27<br />DNS CachePoisoningThe Dan’s Way<br />Richieste verso hostname fasulli per aumentare i tentativi possibili nel minore tempo possibile.<br />
  53. 53. 28<br />DNS Cache Poisoning<br />E nel caso il Query ID sia randomizzato?<br />L’attaccante deve inviare moltissime ‘fake reply’.<br />Randomizzando l’hostname nella richiesta le probabilita’ aumentano.<br />50 pacchetti per ogni richiesta = ~ 10s per un attacco con successo.<br />
  54. 54. 29<br />DNS Cache Poisoning<br />Grazie alla scoperta di Dan Kaminsky ora sappiamo che e’ molto piu’ semplice riuscire ad effettuare un DNS Cache Poisoning nei confronti di un DNS server vulnerabile. E’ possibile inserire in un server DNS vulnerabile non solo corrispondenze tra IP/nome ma addirittura diventare nameserver autoritativi per qualsiasi dominio.<br />La cosa si fa piu’ interessante…<br />Cosa succederebbe se venisse rediretto l’intero dominio google.com?<br />Cosa succederebbe se venisse rediretto l’intero TPL .com?<br />Sarebbe teoricamente possibile ma e’ necessaria parecchia capacita’ di calcolo per fingersi un GTLD <br />
  55. 55. 30<br />DNS Cache PoisoningLa soluzione – DJB Was Right<br />QID Randomization + Source PortRandomization<br />
  56. 56. 31<br />DNS Cache PoisoningRimedi<br />Aggiornate I vostri DNS servers! Esistono tool ed exploit pubblicidisponibilicherendono molto facile l’operazionedi poisoning neiconfrontidi un server vulnerabile.<br />I DNS Server configurati in mododaessere SOLO autoritativi non sonovulnerabili. Non hannouna cache. State attenti a chi offrite la vostraricorsione.<br />Un server DNS correttamentepatchatopuo’ esserevulnerabile lo stesso. Come?<br />Se in mezzo troviamo un firewall cheeffettua un ‘Port Address Translation’ cherende la randomizzazionedelleporteinefficace.<br />DNSSEC e IPv6 ? Potrebberorisolvereilproblema. Ma non sonouno standard. E prima che lo diventinopassera’ parecchio tempo.<br />SSL? Puo’ essere utile. Sempre che si controllino i certificati dei siti che visitiamo.<br />
  57. 57. 32<br />DNS Cache Poisoning<br />DEMO<br />
  58. 58. 33<br />DNS Cache Poisoning<br />?<br />
  59. 59. 34<br />DNS Cache Poisoning<br />References:<br />http://www.doxpara.com/DMK_BO2K8.ppt<br />http://www.unixwiz.net/techtips/iguide-kaminsky-dns-vuln.html<br />DNS and BIND - http://oreilly.com/catalog/9780596100575/index.html<br />TCP/IP Illustrated, Volume 1 - http://www.amazon.com/TCP-Illustrated-Protocols-Addison-Wesley-Professional/dp/0201633469<br />http://www.isc.org/sw/bind/<br />http://cr.yp.to/djbdns.html<br />US-CERT Vulnerability Note VU#800113 - http://www.kb.cert.org/vuls/id/800113<br />US-CERT Vulnerability Note VU#484649 - http://www.kb.cert.org/vuls/id/484649<br />US-CERT Vulnerability Note VU#252735 - http://www.kb.cert.org/vuls/id/252735<br />US-CERT Vulnerability Note VU#927905 - http://www.kb.cert.org/vuls/id/927905<br />US-CERT Vulnerability Note VU#457875 - http://www.kb.cert.org/vuls/id/457875<br />Internet Draft: Measures for making DNS more resilient against forged answers - http://tools.ietf.org/html/draft-ietf-dnsext-forgery-resilience<br />RFC 3833 - http://tools.ietf.org/html/rfc3833<br />RFC 2827 - http://tools.ietf.org/html/rfc2827<br />RFC 3704 - http://tools.ietf.org/html/rfc3704<br />RFC 3013 - http://tools.ietf.org/html/rfc3013<br />Microsoft Security Bulletin MS08-037 - http://www.microsoft.com/technet/security/bulletin/ms08-037.mspx<br />Internet Systems Consortium BIND Vulnerabilities - http://www.isc.org/sw/bind/bind-security.php<br />US-CERT - http://www.kb.cert.org/vuls/id/800113<br />DNSSEC - http://en.wikipedia.org/wiki/DNSSEC<br />
  60. 60. 35<br />EOF<br />

×