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