Freitag, 10. Februar 2012

News

präsentiert von: entwickler.com
Mittwoch, 28. Juni 2006

About Security #61: Angriffe auf TCP/IP — DNS-Spoofing

Thema dieser Folge ist ein Angriff auf ein Protokoll der TCP/IP-Anwendungsschicht: DNS Spoofing. Das DNS-Protokoll (Domain Name System) dient der Umwandlung von Domain-Namen in die entsprechende IP-Adresse und umgekehrt. Beim DNS Spoofing wird dem Opfer eine falsche Antwort auf eine DNS-Anfrage untergeschoben.

Es gibt zwei Arten von DNS-Anfragen: rekursive und nichtrekursive. Ein Client stellt i.d.R. eine rekursive Anfrage, d.h. er möchte die endgültige Antwort erhalten. Nameserver untereinander verwenden nichtrekursive Anfragen: Jeder Server nennt nur die IP-Adressen, die er selbst verwaltet. Kennt er die IP-Adresse eines Domain-Namens nicht, nennt er einen Nameserver, der die Antwort kennen könnte. Der Anfragende wird so zum zuständigen Nameserver vermittelt, der dann die gewünschte IP-Adresse nennt.

About Security: Die komplette Serie
Die Namensauflösung

Wird ein Domain-Name, z.b. www.ein-name.example, aufgerufen, wird vom Client eine entsprechende rekursive DNS-Anfrage an den 'domain'-Port (53) des lokal zuständigen Nameservers gesendet. Dieser sendet ggf. nichtrekursive DNS-Anfragen an andere Nameserver, um die zugehörige IP-Adresse zu ermitteln. Diese speichert er zur Beantwortung zukünftiger Anfragen für eine gewisse Zeit in seinem Cache.

Unterscheidung von DNS-Paketen

Der Header eines DNS-Pakets enthält ein Identifikationsfeld (ID, Identification oder Transaction-ID, 16 Bit), das für die Zuordnung empfangener Antworten zur entsprechenden Anfrage verwendet wird. Will ein Angreifer eine falsche Antwort auf eine DNS-Anfrage einschleusen, muss er die korrekte ID kennen oder erraten und sein Paket schicken, bevor die Antwort des zuständigen DNS-Servers ankommt. Sofern der Netzwerkverkehr des Opfers oder seines Nameservers belauscht werden kann, ist dies kein Problem.

Aber auch ohne Belauschen der ID ist ein Angriff nicht unmöglich. Zum einen nummerieren einige Nameserver die Anfragen einfach durch, zum anderen ist bei nicht vorhersagbaren IDs ein Brute-Force-Angriff möglich. Für das 16-Bit-Feld müssten 65.536 Werte ausprobiert werden. Bei 100 Byte pro Antwort müssten ca. 6,2 MByte übertragen werden, was bei einer 1-MBit-Anbindung ca. 60 Sekunden dauern würde. Verhindert der Angreifer parallel durch einen Denial-of-Service-Angriff eine Antwort des zuständigen Nameservers, steigen seine Chancen, die falsche Antwort einzuschleusen, deutlich.

Beispiel: Angriff ohne Lauschen bei aufsteigenden ID-Werten

Ein Angreifer möchte sich als Webserver eines Unternehmens, www.spoof.example, ausgeben. Wenn ein Opfer diese Adresse besucht, wird eine entsprechende rekursive Anfrage an seinen zuständigen Nameserver (dns.opfer.example) gesendet. Dieser sendet dann selbst eine nichtrekursive Anfrage an einen anderen Nameserver.

Normaler Ablauf:
DNS-Abfrage: Normaler Ablauf

Der Angreifer kann nun versuchen, vor dem für spoof.example zuständigen Nameserver (dns.spoof.example) zu antworten. Verwendet er die korrekte ID, wird dns.opfer.example die Antwort akzeptieren und dem Opfer übermitteln. Wenn er die DNS-Anfrage von dns.opfer.example belauschen kann, ist dies einfach: Er sendet eine gefälschte Antwort mit der belauschten ID im Header, die dns.opfer.example akzeptiert und an seinen Client weiterreicht.

Ablauf mit Lauschen durch den Angreifer:
DNS-Abfrage: Ablauf mit Lauschen durch Angreifer

Ohne Lauschen kennt der Angreifer weder die korrekte ID noch den Zeitpunkt der Anfrage. Er muß daher selbst aktiv werden.

N E U ! Security aktuell
Täglich aktuelle Security-Infos!

Voraussetzung ist, dass der Angreifer die Kontrolle über einen Nameserver hat, z.B. dns.unwichtig.example für die Domain unwichtig.example. Um die aktuell verwendete ID zu erfahren, sendet er dns.opfer.example eine rekursive Anfrage nach einem Rechner aus seinem eigenen Namensraum, z.B. total.unwichtig.example. Der sucht daraufhin mit nichtrekursiven Anfragen nach der passenden IP-Adresse. Irgendwann wird eine Anfrage an den für unwichtig.example zuständigen Angreifer geschickt. Die ID dieser Anfrage verrät ihm die IDs der nächsten von dns.opfer.example verschickten Anfragen.

Vorbereitung des Angriffs

Als nächsten Schritt sendet der Angreifer eine rekursive Anfrage nach www.spoof.example an dns.opfer.example, gefolgt von mehreren (inzwischen können ja andere Anfragen gesendet worden sein) gefälschten Antworten darauf, mit laufend hochgezählten ID-Werten. dns.opfer.example sendet nichtrekursive Anfragen für www.spoof.example und empfängt parallel die gefälschten Antworten.

Durchführung des Angriffs

Die Antwort mit passendem ID-Wert wird als korrekt akzeptiert, alle anderen Antworten verworfen. Dies betrifft insbesondere die danach eintreffende Antwort des eigentlich zuständigen Nameservers dns.spoof.example.

Der Cache des Nameservers des Opfers ist damit vergiftet. Anfragen nach www.spoof.example beantwortet er danach mit der gefälschten IP-Adresse, auch die anfängliche Anfrage des Angreifers. Der kann den Erfolg seines Angriffs so sofort kontrollieren und bei einem Fehlschlag, z.B. auf Grund noch gültiger Daten im Cache, wiederholen.

Gegenmaßnahmen

Um derartige Angriffe zu verhindern oder zumindest zu erschweren, werden die ID-Werte wie bereits oben erwähnt nicht einfach hochgezählt, sondern zufällig erzeugt. Der Angreifer kann also aus ihm bekannten ID-Werten nicht auf die nächsten verwendeten Werte schließen. Jedenfalls theoretisch. Praktisch kommt es immer wieder einmal vor, dass für die Erzeugung der ID-Werte vorhersagbare Zufallszahlengeneratoren verwendet werden, sodass der Angreifer aus mehreren ihm bekannten Werten die nächsten erzeugten mit hoher Wahrscheinlichkeit berechnen kann.

In der nächsten Folge werden weitere Angriffe auf TCP/IP beschrieben, u.a. eine weitere Möglichkeit zum Vergiften des DNS-Caches.

Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!

Carsten Eilers

About Security – Übersicht zum aktuellen Thema "Angriffe auf TCP/IP"

Konferenzen

BASTA! 2012

BASTA! 2012

27.- 2. März 2012
Maritim Hotel Darmstadt

MobileTech Conference

MobileTech Conference

26.-28. März 2012
München

JAX 2012

JAX 2012

16.-20. April 2012
Rheingoldhalle, Mainz

BigData Con 2012

BigData Con 2012

16.-18. April 2012
Rheingoldhalle, Mainz

Business Technology Days

Business Technology Days

17.-19. April 2012
Rheingoldhalle, Mainz

International PHP Conference

International PHP Conference

3.- 6. Juni 2012
Maritim proArte, Berlin

webinale 2012

webinale 2012

4.- 6. Juni 2012
Maritim proArte Berlin

RailswayCon

RailswayCon

4.- 6. Juni 2012
Maritim proArte, Berlin

Werbung
Top-Jobs

Fraunhofer-Institut für Windenergie und Energiesystemtechnik IWES

Informatikerin / Informatiker

Magazine

Entwickler Magazin - Enterprise Technologies & Business Solutions

Entwickler Magazin

Enterprise Technologies & Business Solutions

dot.net magazin - die unabhängige Quelle für .NET-Technologien

dot.net magazin

Die Quelle für .NET-Technologien

Eclipse Magazin

Eclipse Magazin

Weltweit erstes Magazin für Eclipse-Entwickler

Java Magazin - Internet & Enterprise Technology

Java Magazin

Internet & Enterprise Technology

Sharepoint

Sharepoint Magazin

Sharepoint

CREATE OR DIE - Ein Leben für die Kreativität

CREATE OR DIE

Ein Leben für die Kreativität

Business Technology - Management Magazin

Business Technology

Management Magazin

PHP Magazin - Professional PHP Development

PHP Magazin

Professional PHP Development

PHP User - Praktische Referenz für Internetenthusiasten

PHP User

Praktische Referenz für Internetenthusiasten

Bücher




Webhosting mit Host Europe