DHCPv6-Spoofing verhindern: IPv6-Sicherheit im Netzwerk

In internen Penetrationstests beobachten wir regelmäßig, dass Clients und Server IPv6 standardmäßig aktiviert haben, ohne dass der Einsatz bewusst geplant oder abgesichert wurde. Daraus entsteht ein Sicherheitsproblem: Ein Angreifer im selben Netzwerksegment kann über DHCPv6-Spoofing oder bösartige Router Advertisements (RA) Einfluss auf die IPv6- und DNS-Konfiguration von Systemen nehmen. Besonders relevant ist das in Windows- und Active-Directory-Umgebungen. Dort führt ein Manipulation der IPv6-Konfiguration dazu, das angegriffene Systeme einen vom Angreifer kontrollierten DNS-Server verwenden und deren Netzwerkverkehr beliebig umgeleitet werden kann. Auf diese Weise lassen sich Verbindungen abhören und sensible Daten, wie Klartext-Passwörter und Hashes, mitlesen. Diese ermöglichen wiederum die Kompromittierung konkreter Systeme und Dienste.

Was ist DHCPv6-Spoofing?

Beim DHCPv6-Spoofing gibt sich ein Angreifer im lokalen Netzsegment als DHCPv6-Server aus und verteilt manipulierte IPv6-Konfigurationen an andere Systeme. Da DHCPv6 für diesen Anwendungsfall keine eingebaute Authentisierung bietet, akzeptieren Systeme die empfangenen Konfigurationsdaten zunächst ohne weitere Prüfung. Ein typisches Ziel ist es, Systemen einen vom Angreifer kontrollierten DNS-Server zuzuweisen. Nutzt ein System anschließend diesen DNS-Server, kann der Angreifer die Namensauflösung beeinflussen und Verbindungen gezielt auf eigene Systeme umleiten. Häufig wird dazu das Tool mitm6 verwendet [1].

Die folgende Grafik veranschaulicht den Ablauf des Angriffs:

Welche Rolle spielen Router Advertisements?

Router Advertisements sind ICMPv6-Nachrichten, die von IPv6-Routern im lokalen Netzsegment versendet werden, um Systemen Konfigurationsinformationen wie Präfixe, DNS-Server oder ein Default Gateway mitzuteilen.

Auch wenn DHCPv6 im Netz unterbunden wird, etwa per Host-Firewall, bleiben Angriffe über Router Advertisements weiterhin möglich. In diesem Fall gibt sich der Angreifer als IPv6-Router aus und versendet Router Advertisements, über die Systeme ebenfalls konfiguriert werden können. ICMPv6 bietet hier, genauso wie DHCPv6, keine eingebaute Authentisierung, sodass Systeme die empfangenen Konfigurationsdaten zunächst ohne weitere Prüfung akzeptieren. Auf diese Weise kann Systemen ebenfalls ein bösartiger DNS-Server zugewiesen werden. Darüber hinaus ist es möglich, ein vom Angreifer kontrolliertes System als Default Gateway zu platzieren und so Netzwerkverkehr umzuleiten.

Warum greifen die manipulierten Konfigurationen?

Ist auf einem Client keine IPv6-Konfiguration vorhanden, liefert der Angreifer die erste und einzige IPv6-Konfiguration. Windows präferiert diese standardmäßig gegenüber IPv4. Bei Linux-Systemen hängt das Standardverhalten von der Distribution ab.

Ist bereits eine legitime IPv6-Konfiguration vorhanden und in Nutzung, akzeptieren Systeme dennoch zusätzliche oder konkurrierende Konfigurationsdaten, zum Beispiel weitere DNS-Server. In beiden Fällen ist es also möglich, manipulierte Konfigurationen einzuschleusen, die dann vom System für die weitere Kommunikation genutzt werden. Ausnahmen bestehen zwar, aber darauf kann sich nicht verlassen werden.

Auswirkungen der Angriffe

Über die beschriebenen Angriffe kann ein Angreifer eine Machine-in-the-Middle-Position erreichen oder Folgeangriffe ermöglichen.

Windows

Im Active-Directory-Kontext kann ein Angreifer, das Routing von Windows-Systemen über sein System leiten und dabei die NTLM-Hashes von Authentisierungsanfragen abfangen oder umleiten. Diese lassen sich je nach Szenario für weiterführende Angriffe, etwa Brute-Force- oder Relay-Angriffe, missbrauchen. Im schlimmsten Fall kann das zur Übernahme des betroffenen Benutzer- oder Computerkontos führen.

Linux

Linux-Systeme verhalten sich je nach Distribution, Netzwerk-Stack und Konfiguration teilweise anders als Windows. Insbesondere die Verarbeitung von DHCPv6 und Router Advertisements ist nicht einheitlich. Die genaue Anfälligkeit hängt daher stark vom jeweiligen Setup ab. Relevant bleibt das Thema dennoch auch hier, da Angreifer je nach Konfiguration Einfluss auf DNS, Routing oder die allgemeine Netzwerkkommunikation nehmen können.

Empfehlung

Mithilfe der folgenden Maßnahmen lassen sich DHCPv6-Spoofing und Rogue Router Advertisement Angriffe verhindern. Wurde bisher keine der nachfolgend genannten Maßnahmen umgesetzt, ist das Netzwerk mit hoher Wahrscheinlichkeit für die beschriebenen Angriffe anfällig.

RA Guard und DHCPv6 Guard aktivieren

Das Aktivieren von RA Guard und DHCPv6 Guard auf allen Switches schützt die Systeme im Netzwerk unabhängig ihres Betriebssystems und wird deshalb als primäre Maßnahme empfohlen. Beide Funktionen sind bei vielen aktuellen, gemanagten Switches verfügbar. Die Grundidee ist, dass DHCPv6-Nachrichten und Router Advertisements nur auf vertrauenswürdigen Ports akzeptiert und auf allen anderen Ports verworfen werden.

Dazu werden ausschließlich Ports zu legitimen Netzwerkkomponenten als vertrauenswürdig markiert. Alle übrigen Ports werden so eingeschränkt, dass von dort keine DHCPv6- oder RA-Nachrichten an andere Systeme weitergegeben werden. Sendet ein Angreifer auf einem solchen Port bösartige Nachrichten, verwirft der Switch diese, bevor andere Geräte sie verarbeiten können. Die genaue Umsetzung hängt vom Switch-Hersteller und Modell ab. Wir empfehlen daher, die Konfiguration nach der Aktivierung nicht nur zu prüfen, sondern auch praktisch zu testen.

DHCPv6 und Router Discovery deaktivieren

Wenn eine Umsetzung von RA Guard und DHCPv6 Guard nicht möglich ist, sollten DHCPv6 und Router Discovery direkt auf den Client- und Server-Systemen deaktiviert werden. Damit werden die hier beschriebenen Angriffswege unterbunden. Wichtig ist jedoch: Wird nur einer der beiden Mechanismen deaktiviert, bleibt der jeweils andere Angriffsweg weiterhin bestehen.

Um DHCPv6 und Router Discovery auf allen Interfaces eines Windows-Systems zu deaktivieren, kann der folgende PowerShell-Befehl verwendet werden:

Set-NetIPInterface -AddressFamily IPv6 -InterfaceIndex $(Get-NetIPInterface -AddressFamily IPv6 | Select-Object -ExpandProperty InterfaceIndex) -Dhcp Disabled -RouterDiscovery Disabled

Auf Systemen, die IPv6 auf bestimmten Interfaces benötigen, sollte die Konfiguration gezielt pro Interface erfolgen. Im oben genannten Befehl wird dazu als Wert des Parameters „`-InterfaceIndex„` das konkrete Interface angegeben.

Unter Linux kann Router Discovery wie folgt deaktiviert werden:

sysctl -w net.ipv6.conf.all.accept_ra=0
sysctl -w net.ipv6.conf.default.accept_ra=0

Auch hier kann Router Discovery auf einzelnen Interfaces erlaubt werden, wenn dies benötigt wird. Dafür kann zusätzlich zu den oben genannten Befehlen accept_ra für einzelne Interfaces auf 1 gesetzt werden.

Der konkrete Befehl zum Deaktivieren von DHCPv6 unter Linux unterscheidet sich je nach Distribution. Entsprechend können wir hier keinen allgemeingültigen Befehl zeigen.

Nicht empfohlene Maßnahmen

Einige Maßnahmen wirken auf den ersten Blick sinnvoll, bieten in der Praxis aber keinen wirksamen Schutz vor den beschriebenen Angriffen.

IPv6 deaktivieren

Das vollständige Deaktivieren von IPv6 ist zwar eine wirksame Maßnahme, wird aber nicht generell empfohlen. Microsoft rät für Windows explizit davon ab [2]. Auch unter Linux ist es sinnvoller, gezielt DHCPv6 und Router Discovery zu deaktivieren oder die Angriffsfläche netzwerkseitig über Guard-Funktionen zu begrenzen.

Präferenz von IPv6 gegenüber IPv4 ändern

Auf Windows Systemen gibt es einen Registry-Eintrag, der die Präferenz von IPv6 gegenüber IPv4 steuert [3]. Naheliegend wäre die Annahme, dass ein Angriff dadurch wirkungslos wird, weil bevorzugt der bereits konfigurierte IPv4-DNS-Server genutzt wird. In praktischen Tests hat sich das jedoch nicht bestätigt. Diese Einstellung ist daher keine wirksame Gegenmaßnahme.

Autorisierte DHCP-Server

Im Active Directory gibt es das Konzept autorisierter DHCP-Server. Dabei handelt es sich jedoch nur um einen Mechanismus, der den versehentlichen Betrieb nicht autorisierter DHCP-Server im AD-Umfeld verhindern soll. Ein Schutz vor Rogue Router Advertisements oder einem bösartigen DHCPv6-Server im lokalen Netz lässt sich damit nicht erreichen.

Bereits ausgerollte IPv6-Konfiguration

Eine bereits vorhandene oder regulär ausgerollte IPv6-Konfiguration ist für sich genommen keine wirksame Gegenmaßnahme. Systeme warten weiterhin auf Router Advertisements und verarbeiten – abhängig von Betriebssystem und Konfiguration – auch zusätzliche DHCPv6-Informationen. Dadurch können später empfangene, bösartige Konfigurationsdaten weiterhin Auswirkungen auf DNS, Routing oder die genutzten Kommunikationswege haben.

Fazit

Unzureichend abgesichertes IPv6 stellt einen relevanten Angriffsvektor dar, den wir in Penetrationstests regelmäßig erfolgreich ausnutzen können. Ohne Schutzmechanismen auf Switch- oder Host-Ebene können Systeme unter Umständen mit wenig Aufwand dazu gebracht werden, vom Angreifer kontrollierte IPv6-Konfigurationsdaten zu übernehmen. Besonders in Windows-Domänen kann das erhebliche Auswirkungen haben, weil sich darüber Namensauflösung und Kommunikationswege beeinflussen lassen. Wer IPv6 intern nicht aktiv nutzen möchte, sollte den Protokollstack nicht einfach ignorieren, sondern gezielt absichern oder die relevanten Mechanismen deaktivieren.

Referenzen:

[1] Github-Repository des mitm6-Tools:
https://github.com/dirkjanm/mitm6

[2] Deaktivieren von IPv6 unter Microsoft Windows:
https://learn.microsoft.com/en-us/troubleshoot/windows-server/networking/configure-ipv6-in-windows#unbind-ipv6-from-an-interface

[3] „Prefer IPv4 over IPv6“-Registry-Schlüssel:
https://learn.microsoft.com/en-us/troubleshoot/windows-server/networking/configure-ipv6-in-windows#use-registry-key-to-configure-ipv6

Autoren