Zum Inhalt springen

Services, Wiki-Artikel, Blog-Beiträge und Glossar-Einträge durchsuchen

↑↓NavigierenEnterÖffnenESCSchließen
Netzwerksicherheit Glossar

DNS Cache Poisoning - Kaminsky-Angriff und DNS-Spoofing

DNS Cache Poisoning (DNS-Spoofing) bezeichnet Angriffe bei denen gefälschte DNS-Antworten in den Cache eines Resolvers eingeschleust werden. Nutzer werden dadurch auf bösartige Server umgeleitet ohne dass die eigentliche Domain kompromittiert ist. Bekanntester Angriff: Kaminsky-Angriff 2008. Schutz: DNSSEC, Query-Source-Port-Randomisierung (RFC 5452), DNS-over-HTTPS/TLS, 0x20-Bit-Trick.

DNS Cache Poisoning (DNS-Spoofing) ist ein Angriff bei dem gefälschte DNS-Antworten in den Cache eines rekursiven Resolvers eingeschleust werden. Alle Nutzer die diesen Resolver verwenden, erhalten daraufhin falsche IP-Adressen und werden auf Server des Angreifers umgeleitet - ohne sichtbare Warnung im Browser (da der Domain-Name korrekt erscheint).

DNS-Grundprinzip und Angriffsfläche

Normaler DNS-Ablauf

Wenn ein Browser die IP-Adresse einer Domain benötigt, läuft folgende Kette ab: Der Browser fragt den lokalen Resolver (z.B. 8.8.8.8), dieser - falls kein Cache-Treffer - den Root-Nameserver, dann den .de-Nameserver und schließlich den Authoritative-Nameserver von bank.de. Die Antwort (z.B. 203.0.113.1) wird zurückgegeben und vom Resolver für die Dauer der TTL (z.B. 300 Sekunden) gecacht. Der Browser öffnet daraufhin die erhaltene IP-Adresse.

Die Angriffsfläche

Der Resolver cached Antworten für spätere Anfragen. Wenn es einem Angreifer gelingt, eine gefälschte Antwort vor der echten einzuschleusen, cached der Resolver für die gesamte TTL-Dauer die falsche IP. Alle Nutzer werden dann für TTL-Sekunden zum Angreifer-Server umgeleitet.

Klassischer Birthday-Attack-Ansatz (vor Kaminsky)

Der ursprüngliche Angriff basierte auf dem Raten der 16-Bit Transaction-ID (65.536 mögliche Werte) von DNS. Da ein Resolver jedoch pro Name nur einmal fragt, gab es zu wenig Versuche für einen praktikablen Angriff - bis Dan Kaminsky 2008 den entscheidenden Durchbruch erzielte.

Kaminsky-Angriff (2008)

Die clevere Idee (CVE-2008-1447)

Dan Kaminsky erkannte: Anstatt auf die Antwort für bank.de zu warten, fragt man nach zufälligen Subdomains. Der Resolver hat keine gecachten Antworten für xyz123.bank.de und muss den Nameserver von bank.de anfragen - was beliebig oft wiederholbar ist.

Der Angriff in drei Schritten

Schritt 1: Der Angreifer sendet Anfragen für ZUFAELLIG.bank.de, NOCHZUFAELLIG.bank.de usw. Da es sich um zufällige Subdomains handelt, gibt es keine Cache-Treffer - der Resolver muss den Nameserver von bank.de befragen.

Schritt 2: Gleichzeitig sendet der Angreifer tausende gefälschte Antworten - nicht nur für die angefragte Subdomain, sondern mit einem entscheidenden Zusatz in der ADDITIONAL-Sektion:

Gefälschte Antwort für: xyz123.bank.de = 198.51.100.99
ADDITIONAL-Sektion:     bank.de Nameserver = ns.attacker.com
                        ns.attacker.com    = 198.51.100.99

Schritt 3: Wenn eine gefälschte Antwort akzeptiert wird, cached der Resolver nicht nur die Subdomain - er cached den gesamten Nameserver für bank.de als Angreifer-Server. Alle zukünftigen bank.de-Anfragen werden dann zu ns.attacker.com geleitet.

Warum so gefährlich?

Mit einer schnellen Verbindung lassen sich Millionen gefälschter Pakete pro Sekunde senden. Die 16-Bit Transaction-ID (65.536 Werte) kombiniert mit dem bekannten Source-Port 53 ergibt nur 65.536 mögliche Kombinationen - bei gezielten Versuchen dauerte der Angriff etwa 30 Sekunden bis zum Treffer. Betroffen waren nahezu alle rekursiven Resolver weltweit.

Patch (RFC 5452)

Die Gegenmaßnahme war Query Source Port Randomisierung: Statt immer Port 53 als Source-Port zu verwenden, wird ein zufälliger Port zwischen 1024 und 65535 gewählt. Damit ergibt sich eine 32-Bit-Entropie (16-Bit TxID × 16-Bit Port = 4 Milliarden Kombinationen). Der Angriff dauert nun Wochen statt Sekunden.

Moderne Angriffsvarianten

Variante 1 - On-Path Angriff (klassisches MITM)

Ein Angreifer im gleichen Netzwerk (WLAN, kompromittierter ISP) setzt ARP-Spoofing auf dem Gateway ein und positioniert sich zwischen Client und Resolver. Da er DNS-Anfragen sehen kann, kennt er die Transaction-ID und antwortet sofort mit einer gefälschten IP - kein Raten notwendig.

Schutz: DNS-over-HTTPS (DoH) oder DNS-over-TLS (DoT) verschlüsseln den DNS-Traffic und verhindern das Mitlesen.

Variante 2 - SAD DNS (2020, CVE-2020-25705)

Dieser Side-Channel-Angriff nutzt ICMP-Fehlermeldungen: Der Angreifer sendet UDP-Pakete an den Resolver. ICMP “Port Unreachable”-Antworten verraten, ob ein bestimmter Source-Port vom Resolver verwendet wird. Damit lässt sich der Source-Port in unter 30.000 Versuchen ermitteln, was Cache-Poisoning wieder praktikabel macht.

Patch: ICMP-Rate-Limiting und nichtlineare Port-Randomisierung.

Variante 3 - Resolver-zu-Nameserver-Kanal angreifen

Klassisches DNS zwischen Resolver und Nameserver ist unverschlüsselt. BGP-Hijacking kann das Routing von Nameserver-Anfragen umleiten. Ein Angreifer auf dem BGP-Pfad antwortet dann als gefälschter Nameserver.

Schutz: DNSSEC schützt durch kryptografische Signierung der DNS-Antworten.

Variante 4 - TTL-Manipulation

Der Angreifer injiziert eine gefälschte Antwort mit hoher TTL (z.B. 86400 Sekunden = 1 Tag). Selbst wenn der Angriff entdeckt wird, bleibt der Schaden einen Tag lang bestehen. Gegenmaßnahme: Minimale TTLs nach Erkennung setzen und Caches flushen.

DNSSEC als Schutzmaßnahme

Wie DNSSEC funktioniert

DNSSEC fügt kryptografische Signaturen zu DNS-Antworten hinzu:

  1. Die DNS-Zone wird mit einem privaten Schlüssel signiert: Jeder A-Record erhält einen RRSIG-Record
  2. Der öffentliche Schlüssel wird im DNSKEY-Record published
  3. Eine Vertrauenskette läuft via DS-Records bis zur Root-Zone

Der Resolver prüft die Signatur (RRSIG), die Authentizität des Schlüssels (DS-Record im übergeordneten Nameserver) und NSEC/NSEC3 für die nachweisbare Nicht-Existenz von Records. Eine gefälschte Antwort ohne gültige Signatur führt zu SERVFAIL - kein Cache-Poisoning möglich.

DNSSEC-Verifikation prüfen

dig +dnssec bank.de A
# RRSIG-Record in der Antwort zeigt die Signatur
# "ad" Flag (Authenticated Data) bedeutet: DNSSEC validiert!

DNSSEC-Schwächen

DNSSEC schützt nicht alles: Ohne NSEC3 ist Zone-Enumeration möglich (NSEC3 als Schutz einsetzen). Der Inhalt der DNS-Kommunikation ist nicht verschlüsselt, nur die Herkunft wird authentifiziert. Der Betrieb ist operationell komplex durch Key-Rollover und Signing-Prozesse. DNSSEC-Antworten sind deutlich größer als normale DNS-Antworten, was das Amplification-Potential bei DDoS-Angriffen erhöht.

Implementierungsstand in Deutschland (2024)

Etwa 60% der .de-Domains haben DS-Records (DNSSEC-signiert). DNSSEC schützt aber nur, wenn auch ein validierender Resolver genutzt wird. Google (8.8.8.8) und Cloudflare (1.1.1.1) validieren DNSSEC. Viele ISP-Resolver validieren DNSSEC hingegen nicht - wer auf solche Resolver angewiesen ist, hat keinen DNSSEC-Schutz.

Erkennungsmethoden

Monitoring von DNS-Antworten

Durch Vergleich von DNS-Antworten mehrerer unabhängiger Resolver lassen sich Abweichungen erkennen, die auf Cache-Poisoning hindeuten:

# IP für bank.de von 5 verschiedenen Resolvern abfragen:
for resolver in 8.8.8.8 1.1.1.1 9.9.9.9 208.67.222.222 4.2.2.1; do
    echo -n "$resolver: "
    dig @$resolver bank.de A +short
done
# Unterschiedliche IPs → Anomalie!

Passive DNS Monitoring

Sicherheitsanbieter wie Farsight DNSDB und PassiveTotal sammeln historische DNS-Antworten. Wenn die IP einer Domain plötzlich wechselt, wird ein Alert ausgelöst. Dieser Ansatz hilft auch bei der nachträglichen Forensik.

Client-seitige Erkennung via DANE

DANE (DNS-based Authentication of Named Entities) verankert den TLS-Zertifikat-Hash in einem TLSA-Record im DNS. Der Browser prüft, ob das Server-Zertifikat mit dem TLSA-Record übereinstimmt. Bei einer gefälschten IP würde ein falsches Zertifikat präsentiert, was einen TLSA-Mismatch und eine Warnung auslöst.

Schutzmaßnahmen

Für DNS-Betreiber (Nameserver-Administratoren)

  • DNSSEC implementieren (Zone signieren)
  • Key-Rollover-Prozesse einplanen (typisch: 5-Jahres-Zyklen)
  • Minimale TTLs bei Verdacht setzen (schnelles Recovery)
  • Rate-Limiting auf ICMP (SAD DNS Mitigation)

Für Resolver-Betreiber (Unternehmen mit eigenem DNS)

  • Query Source Port Randomisierung aktivieren
  • DNSSEC-Validierung aktivieren (BIND: dnssec-validation auto;)
  • DNS-over-TLS (DoT) für Upstream-Queries nutzen
  • 0x20-Encoding: Anfragen mit zufälliger Groß-/Kleinschreibung randomisieren
  • Response Rate Limiting (RRL) aktivieren

Für Endnutzer und Unternehmen

  • DNS-over-HTTPS (DoH): Verschlüsselung verhindert On-Path-Angriffe. In Firefox und Chrome aktivierbar, Cloudflare (1.1.1.1) und Quad9 (9.9.9.9) unterstützen DoH.
  • Einen validierenden DNSSEC-Resolver nutzen (nicht alle ISP-Resolver validieren)
  • Im Unternehmen einen eigenen validierenden Resolver mit DNSSEC betreiben

Für Entwickler und Applikationsebene

  • HSTS und HSTS-Preloading: HTTPS erzwingen, auch wenn die IP falsch ist
  • Certificate Pinning: Zertifikat des echten Servers im Client verankern
  • DANE/TLSA-Records: TLS-Zertifikat im DNS verankern

Cookielose Analyse via Matomo (selbst gehostet, kein Tracking-Cookie). Datenschutzerklärung