# DNS spoofing

Beim DNS-Spoofing wird ein Nutzer auf eine andere Website umgeleitet, indem ein Hacker die IP-Adresse einer Domain in der DNS Anfrage (bzw. der Antwort dieser) verändert. DNS-Spoofing bezeichnet eine Reihe von Angriffsmethoden, die darauf abzielen, die IP-Adresse einer Domain zu manipulieren. Ein anderes Beispiel ist DNS-Cache-Poisoning, es ist eine Form von Hacking, bei der fehlerhafte Domain-Name-System-Einträge im Zwischenspeicher (Cache) des DNS-Resolvers eingegeben werden, durch den der Name-Server eine falsche Antwort zurückgibt, z. B. eine falsche IP-Adresse. Dies führt dazu, dass der Datenverkehr auf den Computer des Angreifers (oder einen anderen Computer) umgeleitet wird (Man-in-the-Middle-Angriff). Die direkte Übersetzung von DNS-Cache-Poisoning ist „DNS-Zwischenspeicher-Vergiftung“.

## Übersicht über das Domain Name System

Das DNS funktioniert ähnlich wie eine Telefonauskunft. Der Benutzer kennt die Domain (den für Menschen merkbaren Namen eines Rechners im Internet) – zum Beispiel example.org. Diese sendet er als Anfrage in das Internet. Die Domain wird dann dort vom DNS in die zugehörige IP-Adresse (die „Anschlussnummer“ im Internet) umgewandelt – zum Beispiel eine IPv4-Adresse der Form 192.0.2.42 oder eine IPv6-Adresse wie 2001:db8:85a3:8d3:1319:8a2e:370:7347 – und führt so zum richtigen Rechner. Wenn der DNS-Server die angeforderte Übersetzung nicht kennt, fragt er einen anderen Server. Der Prozess geht also rekursiv weiter. Um die Performance zu erhöhen, merken sich die Server die Übersetzungen für eine bestimmte Zeit in ihrem Zwischenspeicher. Das heißt, wenn der Server die gleiche Anfrage für eine Übersetzung erhält, wird er, solange der Zwischenspeicher nicht abläuft, die Anfrage ausführen können, ohne einen anderen Server zu kontaktieren.
Wenn der DNS-Server eine falsche Übersetzung erhält und diese aufgrund der Leistungsoptimierung zwischenspeichert, spricht man von einem vergifteten Zwischenspeicher (poisoned cache). Der Server gibt die Falschinformation auch an andere Benutzer weiter, welche dann an an einen anderen Computer, beispielsweise den des Angreifers, umgeleitet werden.

## Angriffe mit DNS Cache Poisoning

Normalerweise verwendet ein an das Internet angeschlossener Computer den DNS-Server seines Internetdienstanbieters (ISP) oder ein DNS des Unternehmensnetzwerks. DNS-Server werden in Unternehmensnetzwerken für die schnellere Namensauflösung verwendet, insbesondere da sie vorherige Anfragen zwischenspeichern. Angriffe unter Verwendung des DNS Cache Poisoning auf einen einzelnen DNS-Server können direkt vom betroffenen Server aus geschehen oder indirekt von dessen nachgelagerten Servern, wo weiter nach der Namensauflösung gefragt wird.
Um einen Angriff mit DNS Cache Poisoning auszuführen, verwendet der Angreifer normalerweise Schwachstellen in der DNS Software, sogenannte Exploits. Ein DNS-Server sollte eigentlich die Korrektheit der DNS-Auflösung validieren, um sicherzustellen, dass die Daten von einer autorisierten Quelle stammen. Dies kann z. B. durch die Verwendung von DNSSEC geschehen; andernfalls kann der Server die falschen Daten lokal zwischenspeichern und sogar neue Anfragen von anderen Usern mit falschen Daten beantworten.
Diese Angriffsvariante kann verwendet werden, um einen Benutzer von der eigentlichen Website auf die Website des Angreifers zu leiten. z. B. kann ein Angreifer die DNS-Einträge, also die IP-Adresse, einer Website auf einem ausgewählten DNS-Server mit der IP-Adresse eines Webserver ersetzen, den der Angreifer unter seine Kontrolle gebracht hat. Der Angreifer legt dazu auch Dateien auf seinem Webserver an, die denen des ursprünglichen Webservers entsprechen. Diese Dateien oder Links enthalten meist bösartige Inhalte, wie z. B. einen Computerwurm oder einen Computervirus. Ein Anwender, der über einen vergifteten DNS-Server auf eine Website gelangt, wird nun bedenkenlos etwaige bösartiger Software vertrauen, die er von einer unbekannten Website eher nicht akzeptiert hätte. Diese Angriffstechnik kann auch für Phishingattacken verwendet werden, bei denen man versucht, den Anwender dazu zu bringen, auf der gefälschten Website persönliche Daten wie z. B. Bankinformationen oder Kreditkartendetails einzugeben.

## Varianten

Bei den folgenden Varianten, werden die Einträge für den Server ns.target.example mittels DNS Cache Poisoning geändert und der Benutzer auf den Server des Angreifers umgeleitet w.x.y.z. Diese Angriffe setzen voraus, dass der DNS-Server für target.example dem Server ns.target.example entspricht.
Um den Angriff erfolgreich durchzuführen, muss der Angreifer den DNS-Server dazu bringen, eine Anfrage für eine Domain zu tätigen, die der Angreifer kontrolliert.

### Umleitung auf den DNS-Server der Zieldomäne

Die erste Variante des DNS Cache Poisoning besteht darin, den DNS-Server der Angreifer-Domäne auf den DNS-Server der Zieldomäne umzuleiten und diesem DNS-Server dann eine vom Angreifer ausgewählte IP-Adresse zuzuweisen.
Anfrage des DNS-Servers: Was sind die Adressen von subdomain.attacker.example?
Antwort des Angreifers:
Ein verwundbarer DNS-Server würde den zusätzlichen A-Eintrag (IP-Adresse) für ns.target.example zwischenspeichern, so dass der Angreifer Anfragen an die gesamte Domäne target.example auflösen kann.

### Umleitung des NS Eintrags auf eine andere Zieldomäne

Die zweite Variante der DNS Cache Poisoning besteht darin, den Nameserver einer anderen Domain, der nichts mit der Anfrage des Benutzers zu tun hat, an eine vom Angreifer ausgewählte IP-Adresse umzuleiten.
Anfrage des DNS-Servers: Was sind die Adressen von subdomain.attacker.example?
Antwort des Angreifers:
Ein anfälliger Server würde die nicht zugehörigen autoritativen Informationen für den NS-Eintrag von target.example (Nameserver-Eintrag) zwischenspeichern, so dass der Angreifer Anfragen an die gesamte Domäne target.example auflösen kann.

## Vorbeugung und Abschwächung des Angriffszenarios

Viele DNS Cache Poisoning Angriffe können verhindert werden, indem man den Informationen von anderen DNS-Servern weniger vertraut und Datensätze, die nichts direkt mit der Anfrage zu tun haben, ignoriert. Zum Beispiel führen BIND-Versionen über 9.5.0-P1 Überprüfungen durch: ein zufälliger Port für DNS-Anfragen des Anfrageservers, kombiniert mit kryptografisch sicheren Zufallszahlen, um den Quellport und die Nonce auszuwählen. Das kann die Wahrscheinlichkeit von Anfragen an DNS-Server („race condition“) stark reduzieren.
Wenn Router, Firewalls, Proxys und andere Gateways jedoch eine Netzwerkadressübersetzung (NAT) durchführen, oder genauer eine Netzwerkportübersetzung, müssen sie den Quellport umschreiben, um den Verbindungsstatus zu monitoren. Dadurch kann es passieren, dass durch PAT diese Zufälligkeit wieder ausgehebelt wird.
Secure DNS (DNSSEC) sichert die Übertragung von Resource Records durch digitale Signaturen ab. DNSSEC kann DNS-Cache-Poisoning-Angriffen widerstehen.
Diese Art von Angriff kann auf der Transportschicht oder Anwendungsschicht durch eine End-to-End-Validierung nach dem Verbindungsaufbau gekontert werden. Ein häufiges Beispiel dafür ist die Verwendung von Transport Layer Security und Digitaler Signaturen. Ein weiteres ist das Verwenden von HTTPS. Damit können Benutzer überprüfen, ob das digitale Zertifikat des Servers gültig ist und dem eigentlichen Eigentümer der Website gehört.