- Cache Poisoning
-
Cache Poisoning (dt. Temporärspeichervergiftung) ist ein Internet-Angriff, bei dem ein Angreifer in den Cache eines DNS-Servers gefälschte Daten einbringt. Ziel ist es, Clients, die unwissentlich auf diese gefälschten Daten zugreifen, auf manipulierte Webseiten zu lenken. Eine wirksame Gegenmaßnahme ist der Einsatz von DNSSEC, dieses ist aber noch nicht sehr weit verbreitet.
Inhaltsverzeichnis
Methoden
Antworten vor dem zuständigen Server
Bei dieser auch DNS Forgery genannten Methode wird der angegriffene DNS-Server zuerst aufgefordert, eine rekursive Anfrage zu stellen. Mit dem Ziel, vor dem zuständigen Server die Antwort zu liefern, schickt der Angreifer gefälschte Antworten an den DNS-Server. Um dies zu erschweren, werden DNS-Anfragen mit einer 16 bit langen Transaktionsnummer versehen, die ein Angreifer erraten müsste, um einen erfolgreichen Angriff durchführen zu können. Da dies im statistischen Mittel 32.768 Versuche erfordert, ist dieser Angriff sowohl aufwändig als auch auffällig.
Angriff über zusätzliche Daten
Im öffentlichen DNS sind einzelne DNS-Server nur für Teilbereiche des gesamten DNS autoritativ. Bekommt ein DNS-Server eine Anfrage für einen Bereich, in dem er nicht autoritativ ist, kann er die Anfrage an den nächsten DNS-Server weiterleiten. Um unnötige Last zu vermeiden, können DNS-Server die Antworten anderer Server auf Anfragen lokal in einem Cache speichern. In diesem Fall könnte die Weiterleitung der o. g. Anfrage an einen weiteren Server wegfallen und sofort eine Antwort gesendet werden. Ein DNS-Teilnehmer, der an einen Nameserver eine Anfrage sendet, übernimmt die erhaltene Antwort ungeprüft eine vorgegebene Zeit lang in seinen Cache. Neben der eigentlichen Antwort werden oft auch zusätzliche (legitime) Daten (Glue Records) übermittelt, die ebenfalls im Cache gespeichert werden. Das Cache Poisoning beruht darauf, in diesen zusätzlichen Daten ein oder mehrere gefälschte Resource Records zu verstecken.
Genauer formuliert: In der Authority Section des Antwortpakets wird der umzuleitende Name (z. B. de.wikipedia.org) als angeblicher DNS-Server eingetragen und in der Additional Section die IP-Adresse (z. B. 1.2.3.4) eines vom Angreifer kontrollierten Servers.
Ablaufbeispiel
- Ein Cracker bringt den Nameserver XX unter seine Kontrolle. Er manipuliert diesen derart, dass jedes Mal, wenn nach einem Namen aus der Domain example.com gefragt wird, ungefragt der gefälschte Record de.wikipedia.org 192.0.2.1 mitgeliefert wird.
- Der öffentliche Nameserver YY möchte den Namen test.example.com auflösen. Er sendet eine entsprechende Anfrage an den zuständigen (vom Cracker kontrollierten) Nameserver XX. Dieser manipulierte Nameserver antwortet mit der korrekten IP-Adresse, liefert aber zusätzlich den gefälschten Record de.wikipedia.org 192.0.2.1 mit. Dieser wird vom anfragenden Server YY ungeprüft in den Cache übernommen.
- Zu einem späteren Zeitpunkt versucht ein User, den Namen de.wikipedia.org aufzulösen und wendet sich an den öffentlichen Nameserver YY. Der Nameserver findet den (gefälschten) Record in seinem Cache und sendet dem User gutgläubig die IP-Adresse 192.0.2.1 zurück.
- Der User möchte auf de.wikipedia.org zugreifen, wird aber – für ihn nicht erkennbar – auf eine falsche Web-Seite mit der IP-Adresse 192.0.2.1 geleitet.
Aktuelle Nameserver akzeptieren keine ungefragt mitgelieferten Records mehr. Akzeptiert werden nur noch Records aus der tatsächlich angefragten Domain (sogenannte in-bailiwick-Records).
Auswirkungen
Ein erfolgreicher Cache-Poisoning-Angriff hat sehr weitreichende Auswirkungen, da er praktisch die Kontrolle des Internetverkehrs eines durch einen DNS-Servers versorgten Netzbereiches ermöglicht, indem Netzverkehr, der sich auf DNS-Namen stützt, an andere Stelle umgeleitet oder unterdrückt werden kann. Dies ist insbesondere im Rahmen von Phishing- und Pharming-Angriffen interessant.
Angriffsdruck bis 2008
Cache-Poisoning-Angriffe sind durch die Erschwerungsmaßnahmen (Transaktionsnummer, Prüfung auf in-bailiwickness) seit der Jahrtausendwende selten geworden. Dies ist dadurch begründet, dass der Angriff trotz des sehr effektiven Ergebnisses mit sehr viel Aufwand verbunden ist und daher gegenüber anderen, weniger aufwendigen Methoden immer mehr an Bedeutung verloren hat.
Neue Angriffsvariante aus dem Jahr 2008
Im Juli 2008 wurde eine Angriffsvariante vorgestellt, die beide oben beschriebenen Methoden kombiniert und gleichzeitig den Aufwand drastisch reduziert[1]. Unter Verwendung eines Geburtstagsangriffs vereinfacht die Methode um Größenordnungen, zufällige Treffer beim Raten der Transaktionsnummer zu erzielen, und wendet gleichzeitig einen Trick an, der dazu führt, dass ein anzugreifendes System Anfragen genau in der Domain stellt, für die falsche Daten im Cache platziert werden sollen. So wird erreicht, dass untergeschobene Glue-Records in-bailiwick sind[2] .
Um auch diese Angriffsmethode zu erschweren und für Angreifer unattraktiv zu machen, wurde direkt nach Bekanntwerden der Schwachstelle bei fast allen Herstellern von DNS-Server-Software die Source Port Randomization eingeführt. Diese zusätzliche Funktion führt neben der Transaktionsnummer zusätzlich den zu beschickenden Port als variable Größe ein.Siehe auch
Einzelnachweise
Wikimedia Foundation.