Folien - Chaosdorf
Transcription
Folien - Chaosdorf
Einführung in das Domain Name System (DNS) fukami • Chaosdorf • 17. Mai 2013 Samstag, 18. Mai 13 Inhalt •Überblick •Protokoll, Paketaufbau •DNS Informationen abfragen •DNS aus Angreifersicht •Zone Transfer •DNS Recursion / DNS Amplification •DNS Prefix Bruteforce •DNS Passive Replication Referenz: https://de.wikipedia.org/wiki/Domain_Name_System Samstag, 18. Mai 13 Was nicht behandelt wird •Serverbetrieb und Hosting •Domain Registration und Registries •TSIG •DNSSEC •DNS-Tunnel •DynDNS •DNSBL/RBL Samstag, 18. Mai 13 •ENUM •IDN •mDNS/Bonjour •Fast Flux •DNS-Zensurtechnik DNS •DNS steht für Domain Name System •Eine der wichtigsten Dienste im Netz •Hauptaufgabe: Beantwortung von Anfragen zur Namens- oder Adressauflösung •Teil des Sicherheitsmodells für HTTP, siehe SOP (Same Origin Policy) Samstag, 18. Mai 13 DNS im TCP/IP-Referenzmodell Application Layer DNS Transport Layer Samstag, 18. Mai 13 HTTP TCP Internet Layer Link Layer FTP Telnet UDP IP (IPv4/IPv6) Ethernet Token Ring ... Protokoll •Standard UDP/TCP Port 53 (TCP für lange Antworten) •Max. Größe DNS-UDP-Pakets 512 Bytes •Bei überlangen Antworten schneidet Server ab und setzt Truncated-Flag •Client entscheidet, ob Antwort reicht oder nicht, ggf neue Abfrage über TCP Port 53 Samstag, 18. Mai 13 Paket im Detail Image: http://unixwiz.net/techtips/iguide-kaminsky-dns-vuln.html Samstag, 18. Mai 13 DNS Namensraum •DNS hat eine baumförmige Struktur •Blätter und Knoten werden Labels genannt •kompletter Domainname eines Objektes besteht aus der Verkettung aller Labels eines Pfades •Labels bestehen aus min. 1 und max. 63 Zeichen •Voller Pfad wird Fully Qualified Domain-Name (FQDN) genannt, z.B. www.example.com. und darf höchstens 255 Zeichen lang sein (inkl. Punkt am Ende) Samstag, 18. Mai 13 DNS Namensraum Samstag, 18. Mai 13 Nameserver •Server, der Namesauflösung anbietet •autoritative Nameserver: zuständig für Zone und legt die TTL fest •wegen Redundanz und Lastverteilung fast immer als Cluster realisiert •nicht-autoritative Nameserver: bezieht Informationen von anderen Nameservern, Daten von Resolver angefragt und in lokalen RAM abgelegt (Caching) Samstag, 18. Mai 13 Nameserver - Zusammenarbeit •Delegierung: Teile des Namensraumes werden an Subdomains mit dann eigens zuständigen Nameservern ausgelagert •Weiterleitung (Forwarding): Falls angefragter Namensraum außerhalb liegt, Weiterleitung der Anfrage an andere Nameserver •Auflösung über die Root-Server: Befragung der Root-Server (13 RootServer von A bis M) Samstag, 18. Mai 13 DNS Resolver •Software-Module, die auf dem Rechner eines Users installiert sind und Nameserver abfragen können •Schnittstelle zwischen Anwendung und Nameserver und ergänzt sie zu FQDN •Rekursiv: Resolver schickt rekursive Anfrage zugeordneten Nameserver, der rekursiv auflöst (Stub-Resolver) •Iterativ: Resolver bekommt Resource Record oder einen Verweis auf weitere Nameserver. Hangelt sich von durch bis zu verbindlicher Antwort •Nameserver nutzen oft einen eigenen Resolver, und arbeiten iterativ Samstag, 18. Mai 13 DNS Resolver Image: https://de.wikipedia.org/wiki/Domain_Name_System Samstag, 18. Mai 13 Resource Records (RR) •SOA Record legt Parameter der Zone fest (z. B. Gültigkeitsdauer oder Seriennummer) •NS Record enthält Delegierungen der Server untereinander •A Record weist einem Namen eine IPv4-Adresse zu •AAAA Record weist einem Namen eine IPv6-Adresse zu. •CNAME Record verweist einen Namen auf einen anderen •MX Record weist einem Namen einen Mailserver zu •PTR Record weist einer IP-Adresse einen Namen zu (Reverse Lookup), wird für IPv4 (IN-ADDR.ARPA.) und IPv6 (IP6.ARPA.) benutzt Samstag, 18. Mai 13 dig - DNS lookup utility $ dig a chaosdorf.de ; <<>> DiG 9.8.3-‐P1 <<>> a chaosdorf.de ;; global options: +cmd ;; Got answer: ;; -‐>>HEADER<<-‐ opcode: QUERY, status: NOERROR, id: 1827 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;chaosdorf.de. IN A ;; ANSWER SECTION: chaosdorf.de. 0 IN A 217.69.82.246 ;; Query time: 3 msec ;; SERVER: 172.22.26.1#53(172.22.26.1) ;; WHEN: Fri May 17 21:06:14 2013 ;; MSG SIZE rcvd: 46 Samstag, 18. Mai 13 dig - DNS lookup utility $ dig a chaosdorf.de +trace ; <<>> DiG 9.8.3-‐P1 <<>> a chaosdorf.de +trace ;; global options: +cmd . 38993 IN NS l.root-‐servers.net. [...more..root..servers...] ;; Received 228 bytes from 172.22.26.1#53(172.22.26.1) in 18 ms de. 172800 IN NS a.nic.de. [...more..servers...] ;; Received 344 bytes from 2001:7fd::1#53(2001:7fd::1) in 4137 ms chaosdorf.de. 86400 IN NS dns.dasr.de. chaosdorf.de. 86400 IN NS ns2.openit.de. ;; Received 150 bytes from 2001:67c:1011:1::53#53(2001:67c:1011:1::53) in 56 ms chaosdorf.de. 300 IN A 217.69.82.246 chaosdorf.de. 300 IN NS dns.dasr.de. chaosdorf.de. 300 IN NS ns2.openit.de. ;; Received 110 bytes from 217.69.77.170#53(217.69.77.170) in 8 ms Samstag, 18. Mai 13 dig - DNS lookup utility $ dig a chaosdorf.de +short 217.69.82.246 $ dig +short 246.82.69.217.origin.asn.cymru.com TXT "20621 | 217.69.64.0/19 | DE | ripencc | 2000-‐11-‐16" $ dig +short AS20621.asn.cymru.com TXT "20621 | DE | ripencc | 2001-‐04-‐20 | OPENIT OpenIT GmbH" $ dig a blafoo.chaosdorf.de [...data...] ;; -‐>>HEADER<<-‐ opcode: QUERY, status: NXDOMAIN, id: 50356 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;blafoo.chaosdorf.de. IN A ;; AUTHORITY SECTION: chaosdorf.de. 300 IN SOA dns.dasr.de. laabs.dasr.de. 2012112801 28800 7200 2419200 86400 ;; Query time: 47 msec ;; SERVER: 172.22.26.1#53(172.22.26.1);; WHEN: Fri May 17 21:12:54 2013 ;; MSG SIZE rcvd: 88 Samstag, 18. Mai 13 Daten aus DNS-Zonen •Im DNS finden sich oft Hinweise interessante Ressourcen, z.B. auf Developement- oder Admininterfaces, Datenbank- und Testserver usw., manchmal sogar noch kritischere Informationen •Möglichkeiten, an diese Daten zu kommen: •Zone Transfer (AXFR) •Prefix Bruteforce •Passive DNS Replication Samstag, 18. Mai 13 Zone Transfer mit dig $ dig ns about.com +short nydns1.about.com. sjdns2.about.com. txdns1.about.com. sjdns1.about.com. txdns2.about.com $ dig axfr @txdns2.about.com about.com ; <<>> DiG 9.8.3-‐P1 <<>> axfr @txdns2.about.com about.com ; (1 server found) ;; global options: +cmd about.com. 900 IN SOA nydns0.about.com. admin.about.com. 2013040401 3600 1800 604800 600 about.com. 900 IN A 207.241.148.80 about.com. 900 IN MX 100 about.com.mail9.psmtp.com. about.com. 900 IN MX 200 about.com.mail10.psmtp.com. about.com. 900 IN MX 300 about.com.mail11.psmtp.com. [...a..lot..more...] Samstag, 18. Mai 13 Prefix Bruteforce •Macht sich den Umstand zunutze, dass Nameserver unterschiedliche Antworten zurückgeben - je nachdem, ob es zu dem Namen eine Ressource gibt. $ dig a www.chaosdorf.de +short # Antwort 217.69.82.246 $ dig a foo.chaosdorf.de +short # keine Antwort $ dig a vm.chaosdorf.de +short # Antwort 217.69.82.242 Samstag, 18. Mai 13 Prefix Bruteforce mit fierce $ ./fierce.pl -‐dns chaosdorf.de -‐wordlist hostnames.txt -‐wide DNS Servers for chaosdorf.de: dns.dasr.de ns2.openit.de Trying zone transfer first... Testing dns.dasr.de Request timed out or transfer not allowed. Testing ns2.openit.de Request timed out or transfer not allowed. Unsuccessful in zone transfer (it was worth a shot) Okay, trying the good old fashioned way... brute force Checking for wildcard DNS... Nope. Good. Now performing 22416 test(s)... 217.69.82.242 vm.chaosdorf.de 217.69.82.243 shells.chaosdorf.de 217.69.82.244 intern.chaosdorf.de [...more...data...] Samstag, 18. Mai 13 Passive DNS Replication •Ursprünglich gedacht, um Fast Flux Networks zu tracken. In DE datenschutztechnisch kritisch, in DE: BFK unter http://www.bfk.de/ bfk_dnslogger.html •ISC bietet eine API und Webseite (ISC DNSDB API) •Benötigt Registrierung $ isc_dnsdb_query.py -‐i 217.69.82.244 duesseldorf.ccc.de. IN A 217.69.82.244 www.duesseldorf.ccc.de. IN A 217.69.82.244 chaosdorf.de. IN A 217.69.82.244 rootserver.dus.chaosdorf.de. IN A 217.69.82.244 www.chaosdorf.de. IN A 217.69.82.244 intern.chaosdorf.de. IN A 217.69.82.244 frontend.chaosdorf.de. IN A 217.69.82.244 eh02.easterhegg.eu. IN A 217.69.82.244 www.intercensor.org. IN A 217.69.82.244 Samstag, 18. Mai 13 ISC DNSDB Web Search Samstag, 18. Mai 13 Angriffe auf DNS •DDOS gegen Nameserver •Offene DNS Resolver •DNS Spoofing •Cache Poisoning •DNS Amplification Attack Samstag, 18. Mai 13 DDoS gegen Nameserver •Bei DDoS werden Nameserver durch einen hohen Datenstrom von DNSAnfragen überlastet, so dass legitime Anfragen nicht mehr beantwortet werden können •Gegen DDoS-Angriffe auf Nameserver gibt es z.Zt. keine einfach Abwehrmöglichkeit •Als vorbeugende Maßnahme kann lediglich versucht werden, die Nameserver entsprechend zu dimensionieren bzw. ein verteiltes Netz mit möglichst vielen Servern zu installieren. Samstag, 18. Mai 13 Offene DNS Resolver •Autoritative DNS-Server müssen für Anfragen von beliebigen IPs offen sein •Um zu verhindern, dass Server als allgemeine Nameserver verwendet werden, ist es möglich (und ratsam) Antworten auf die eigenen Domains einzuschränken. •Eine zusätzliche Sicherheitsmaßnahme ist es, für Input von außen nur UDP zuzulassen •Ein offener DNS-Server kann auch eine Falle sein Samstag, 18. Mai 13 Offene DNS Resolver $ dig ANY chaosdorf.de @96.30.190.2 ; <<>> DiG 9.8.3-‐P1 <<>> ANY chaosdorf.de @96.30.190.2 [...] ;; -‐>>HEADER<<-‐ opcode: QUERY, status: NOERROR, id: 44435 ;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 3 ;; QUESTION SECTION: ;chaosdorf.de. IN ANY ;; ANSWER SECTION: chaosdorf.de. chaosdorf.de. chaosdorf.de. chaosdorf.de. 2419200 86400 chaosdorf.de. chaosdorf.de. 181 IN 181 IN 181 IN 181 IN A 217.69.82.246 NS dns.dasr.de. NS ns2.openit.de. SOA dns.dasr.de. laabs.dasr.de. 2012112801 28800 7200 181 IN MX 10 intern.chaosdorf.de. 181 IN AAAA 2001:aa8:fff5::5054:ff:fed5:bd69 ;; ADDITIONAL SECTION: dns.dasr.de. 86281 IN A 217.69.77.170 ns2.openit.de. 86281 IN A 213.95.203.107 intern.chaosdorf.de. 181 IN A 217.69.82.244 ;; Query time: 236 msec ;; SERVER: 96.30.190.2#53(96.30.190.2) ;; WHEN: Fri May 17 21:27:46 2013 ;; MSG SIZE rcvd: 235 Samstag, 18. Mai 13 DNS Spoofing • Anfragender Cient bekommt eine falsche IP-Adresse als Antwort, um ihn z.B. wegen Internet-Zensur oder Phishing) auf eine falsche bzw. gefälschte Website zu führen. Erreicht werden kann das durch: • Ausnutzen von Lücken in DNS-Servers-Software • betreiberseitige Manipulation des DNS-Servers (z.B. China, Iran, Zugangserschwerungsgesetz) • Cache Poisoning • Falscheinträge in der Hosts-Datei des anfragenden Clients • Man-in-the-middle-Angriff • Reverse Domain Hijacking Samstag, 18. Mai 13 Cache Poisoning •Angreifer bringt in den Cache eines DNS-Servers gefälschte Daten ein: •DNS Forgery •Einbringen von RR in Glue Records •Ziel: Clients auf manipulierte Server zu lenken •Wirksame Gegenmaßnahme : DNSSEC Samstag, 18. Mai 13 DNS Amplification Attacks Attacker Bot Victim Samstag, 18. Mai 13 Offene Nameserver DNS Amplification Attacks Attacker !D OS 2 .2 .2 .2 Bot Victim Samstag, 18. Mai 13 Offene Nameserver DNS Amplification Attacks \xfe\x1b\x005\x00\xd5\xbc\xdd \x01\x00\x00\x01\x00\x00\x00 \x00\x00\x00\x03foo\x02io\x00 \x00\xff\x00\x01 2 2.2.2. m o r F .1.1 / 1 . 1 o T Attacker om 2.2.2.2 r F / 2 . 1 . 1 . 1 To Bot Victim Samstag, 18. Mai 13 To 1.1. 1.3 / F rom 2.2 .2.2 To 1 .1.1 .4 / Fro m 2. To 2.2. 1.1 2 .1. 5 To / 1 Fro .1 m 2 .1 .2. .6 2.2 / F ro m 2. 2. 2. 2 Offene Nameserver DNS Amplification Attacks \x005\xfe\x1b\x00\x98j\x8f\xbc\xdd\x81\x80\x00\ x01\x00\x03\x00\x00\x00\x03\x03foo\x02io\x00\x00\xff \x00\x01\x03foo\x02io\x00\x00\x02\x00\x01\x00\x00S\x9f \x00\x16\x04dns1\x0bhostsharing\x03net\x00\x03foo\x02i \x00\x00\x02\x00\x01\x00\x00S\x9f\x00\x16\x04dns3 \x0bhostsharing\x03net\x00\x03foo\x02io\x00\x00\x02 \x00\x01\x00\x00S\x9\x00\x16\x04dns2\x0bhostsharing \x03net\x00\x04dns3\x0bhostsharing\x03net\x00\x00\x01 \x00\x01\x00\x00S\x9f\x00\x04\xb0\t\xf23\x04dns1 \x0bhostsharing\x03net\x00\x00\x01\x00\x01 \x00\x00S\x9f\x00\x04S\xdf_ \xc9\x04dns2\x0bhostsharing \x03net\x00\x00\x01\x00\x01 \x00\x00S\x9f\x00\x04S\xdfZ \xe6 Attacker Bot 1 1. . 1 1. m ro .2 F .1 / 1 . 1 .2 m 2 . ro .2 F 2 / 1.3 . 1 2 o . T 2. m 1 2. o r . 2 / F 4 To 2 1.1. .2. . 2 1 . 2 From To / 2 2.2. . 2 To .1.1.5 1 m o r F 2.2 / . 2 . 2 To 1.1.1.6 To 2.2.2.2 / From Victim Samstag, 18. Mai 13 Offene Nameserver Python Tools und Libraries •dnslib (wire) •dnspython (high level) •scapy (Paket Generation, Spoofing) Samstag, 18. Mai 13 dnschef: Fake DNS für Testing $ ./dnschef.py -‐-‐fakeip 127.0.0.1 -‐-‐fakeipv6 ::1 -‐q [*] DNSChef started on interface: 127.0.0.1 [*] Using the following nameservers: 8.8.8.8 [*] Cooking all A replies to point to 127.0.0.1 [*] Cooking all AAAA replies to point to ::1 [00:02:14] 127.0.0.1: cooking the response of type 'A' for google.com to 127.0.0.1 [00:02:14] 127.0.0.1: cooking the response of type 'AAAA' for google.com to ::1 [00:02:14] 127.0.0.1: proxying the response of type 'MX' for google.com $ host google.com localhost google.com has address 127.0.0.1 google.com has IPv6 address ::1 google.com mail is handled by 10 aspmx.l.google.com. google.com mail is handled by 40 alt3.aspmx.l.google.com. google.com mail is handled by 30 alt2.aspmx.l.google.com. google.com mail is handled by 20 alt1.aspmx.l.google.com. google.com mail is handled by 50 alt4.aspmx.l.google.com. Samstag, 18. Mai 13