IPv6 – Man in the Middle

Was ist IPv6 MITM und warum ist der Angriff so interessant?

Um den IPv6 MITM Angriff zu erklären gehen wir zunächst auf die Grundlagen ein.

Im heutigen Beitrag wollen wir erklären warum Man in the Middle Angriffe über IPv6 einfach zum Erfolg führen können, wie man diese durchführt und was man tun kann um sich davor zu schützen. Um die möglichen Angriffsszenarien zu verstehen gehen wir noch einmal kurz auf die Grundlagen ein.

Was ist IPv6?

IPv6 ist eine neuere Version des allgemein als Internet Protocol bekannten IPv4. Das Internet Protocol ist eines der grundlegenden Protokolle für die Vermittlung von Datenpaketen über das Internet sowie lokale Netzwerke. Es wird immer dann benötigt, wenn Daten zwischen Netzwerken und Systemen übertragen werden sollen. IPv6 wurde konzipiert, weil die zur Verfügung stehenden IP-Adressen im Protokoll IPv4 nicht mehr ausreichen für die immer größer werdende Anzahl von vernetzten Geräten. IPv6 hat einen um ein vielfaches größeren Adressbereich (IPv4: 32 Bit, IPv6 128 Bit), sodass ein erneutes Ausgehen verfügbarer Adressen auch in der Zukunft sehr unwahrscheinlich ist. Interessant ist hierbei noch zu erwähnen, weil IPv6 das neuere Protokoll ist wird es in der Regel priorisiert.

 

Stateless Address Autoconfiguration (SLAAC)

Eine weitere wichtige Eigenschaft von IPv6 ist, dass es ohne administrativem Aufwand verwaltet werden kann. Hierbei ist die Rede von der zustandslosen automatischen Konfiguration (SLAAC) die es Systemen erlaubt, ohne Konfiguration, d.h. ohne händische Vergabe von IP-Adressen oder Einrichtung von DHCP, in IPv6 Netzen teilzunehmen. Diese Autokonfiguration ist eine der Grundlagen für den Angriff. Die gesamte Kommunikation für SLAAC läuft über das Neighbour Discovery Protocol (NDP) und ICMPv6. Da Systeme automatisch auf Anfragen und Informationen eines IPv6-Router-Systems reagieren, können Änderungen an der Konfiguration der Systeme vorgenommen werden, die Angriffe möglich machen. 

Offence: Wie also kann ein Angreifer sich IPv6 zu Nutze machen?

Um den Angriff durchzuführen, sendet der Angreifer Router Advertisements ins Netzwerk, um anderen Systemen mitzuteilen, dass es als IPv6-Router fungiert und zur Verfügung steht. Ebenso fungiert es als nicht autorisierter DHCPv6-Server im Netzwerk. Hierbei verwendet er die Flag „managed“ um den Systemen mitzuteilen, dass eine weitere Konfiguration des IPv6 Interfaces über einen DHCPv6-Server erfolgt

Kommunikation über Router Advertisement und Neighbor Solicitation/Advertisement zwischen Angreifer und Opfer
Verhindere die Folgen eines Hackerangriffs auf Dein IT-System!
Teste jetzt deine IT durch einen professionellen Penetrationstest!
Zum Penetrationstest
Detail des Router Advertisement. Die Flag für das Attribut „Managed“ ist gesetzt.

In der Folge wird der Client eine IPv6-Konfiguration im Netzwerk anfragen. Hierauf kann der Angreifer ebenfalls antworten und sich als DHCPv6-Server ausgeben und dadurch Konfigurationsänderungen am Client durchführen.

DHCP-Traffic zwischen Angreifer und Opfer. Das Opfer fragt ins Netzwerk nach einem DHCPv6-Server, Angreifer antwortet mit Advertisement, Opfer sendet Request für Konfiguration, Angreifer antwortet mit Reply
DHCP-Reply des Angreifers, in der letzten Zeile ist erkennbar, dass der Angreifer die eigene IPv6 Adresse als DNS-Server an das Opfer weitergibt

Der Angreifer fungiert nun als DNS-Server für das Opfer und kann dadurch DNS-Spoofing betreiben. In der Realität wird dies verwendet um Anfragen an die lokale Domäne zu spoofen. Wenn also Opfer nach Ressourcen wie z.B. einer WPAD per DNS-Anfrage suchen, liefert der Angreifer eine falsche Ablage-Adresse (erneut die eigenen IP) an das Opfer. Hierüber wird dann eine falsche WPAD an das Opfer ausgeliefert, und dadurch kann in den Browsern eines Opfers ein Proxy konfiguriert werden, über den im weiteren Schritt eine NTLM-Authentifizierung forciert werden kann. Dies geschieht, in dem der Angreifer auf Anfragen, die über den neu eingetragenen falschen Proxy eingehen, mit dem http-Status-Code HTTP 407 Proxy Authentication required antwortet. Diese unterscheidet sich von dem üblicherweise verwendeten Code 401. Alle gängigen Browser werden sich daraufhin gegenüber dem Proxy automatisch ohne Zutun des Nutzers per NTLM authentifizieren, sofern NTLM genutzt wird und die Browser nicht explizit gegen dieses Verhalten gehärtet werden. Die NTLM-Authentifizierung kann nun für Relay-Angriffe oder andere Angriffstechniken verwendet werden. Der Angriff war bis hier hin erfolgreich und IPv6 wurde erfolgreich ausgenutzt.

 

Welche Systeme sind zu betrachten?

Alle Netzwerkteilnehmer, die im selben Netzwerk wie der Angreifer kommunizieren. Windows-Clients, Windows-Server, Switches. 

An Windows-Systemen kann IPv6 per Registry Änderung deaktiviert werden. Hierbei muss jedoch geprüft werden, ob das Protokoll ggf. notwendig ist. 

Als alternative oder zusätzliche Lösung kann der Angriff durch Konfiguration der Switche unterbunden werden. Hierfür muss jeder Switch die Optionen IPv6 nd RAGuard und IPv6 DHCP Guard zu aktivieren.

 

Technische Umsetzung mit dem Tool mitm6:

Zur Prüfung kann das Tool mitm6 verwendet werden. ACHTUNG! Da das Tool die Netzwerk-Konfigurationen des Opfers verändert, kann es während und nach dem Angriff zu Beeinträchtigungen an Systemen kommen. Dies kann dazu führen, dass Netzwerkressourcen nicht mehr erreichbar sind. Die wahrscheinlichste Ursache hierfür ist, dass DNS-Anfragen von Opfer-Systemen ins Leere laufen, weil kein valider DNS-Server erreichbar ist. Es ist dringend empfohlen die Option -d mit der lokalen Domäne des Active Directories zu verwenden. Mitm6 wird dann nur Anfragen nach Ressourcen innerhalb dieser Domäne spoofen. 

Befehl: 

				
					mitm6 -I INTERFACE -d DOMAIN --ignore-nofqdn
				
			
Hacker nutzt IPv6 Schwachstelle aus

Zur Durchführung muss ein Interface (i.d.R eth0) und die AD-Domäne angegeben werden

Hinweis:

Der Angriff kann auch ohne Angabe der Domäne ausgeführt werden, wodurch jedoch kein Scope für den Angriff gegeben ist. Daraus folgt, dass jegliche Anfrage manipuliert wird, auch z.B. eine Google Suche. Diese Variante kann jedoch ein hohes Maß an Datenverkehr bedeuten, welcher über die Maschine des Angreifers läuft, weshalb die Offensichtlichkeit des Angriffs deutlich erhöht wird. Zudem werden Einschränkungen im Netzwerk für die weiteren Netzwerkteilnehmer spürbar werden, weil die Namensauflösung über DNS nicht mehr funktioniert.

Befehl: 

				
					mitm6 -I INTERFACE
				
			

Defence: Möglichkeiten den Angriff zu verhindern

Zur Behebung der Findings bieten sich zwei Solutions an. Die favorisierte Solution ist die Deaktivierung von IPv6 an allen Systemen die dieses nicht benötigen. Sofern in einem Netzwerk IPv6 noch nicht bewusst verwendet wird, spricht viel dafür, dass eine Deaktivierung möglich ist. Einzig neuere Exchange-Server benötigen IPv6 zur Kommunikation untereinander. IPv6 kann effektiv über eine Änderung der Registry per GPO an Windows-Systemen deaktiviert werden. Wenn eine Deaktivierung des Protokolls nicht möglich ist, oder zusätzliche Sicherheitsmaßnahmen getroffen werden sollen, dann ist die Nutzung von zwei Optionen an Switchen möglich. Hierzu müssen die Switche die beiden Funktionen IPv6 RA Guard und IPv6 DHCP Guard besitzen.

 

Deaktivierung IPv6

Zur Deaktivierung von IPv6 an Windows-Systemen gibt es zwei Möglichkeiten. Aktuell empfehlen wir das Ausrollen einer Registry Änderung per GPO. Hierfür kann eine GPO erstellt werden in der die nachfolgenden Ergänzung der Registry durch eine Aktualisierung vorgenommen wird.

 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\ DisabledComponents= 0xFF (REG_DWORD)
Beispiel für Anpassung der Registry

Konfiguration der Switche

RA Guard 

Der Angriff mit mitm6 kann zudem am Switch deaktiviert werden. Hierzu muss zunächst die Option RA Guard aktiviert werden.

Konfigurationsbeispiel: 

				
					1: SW1(config)#ipv6 nd raguard policy HOSTS 
				
			
				
					2: SW1(config-nd-raguard)#device-role host 
				
			

In Zeile 1 wird eine neue Policy für die Funktion „ipv6 nd raguard“ mit dem Namen HOSTS definiert. Der Name ist frei wählbar, sollte aber eindeutig der Rolle von Systemen zugeordnet werden können. Wenn der Switch über diese Funktion nicht verfügt, kann die Solution nicht implementiert werden. In Zeile 2 wird allen Systemen, auf die die Policy angewendet werden mit dem Befehl device-role die Rolle host zugewiesen. Die device-role host bedeutet, dass das System ein Client ist und nicht als Router fungiert.

				
					3: SW1(config)#interface GigabitEthernet 0/2 
				
			
				
					4: SW1(config-if)#ipv6 nd raguard attach-policy HOSTS 
				
			

Im nächsten Schritt wird in Zeile 3 das oder die zu Konfigurierenden Interfaces des Switches ausgewählt. Da wir keinerlei IPv6 Router im Netzwerk zulassen wollen, kann die Policy auf alle Interfaces an allen Switchen ausgerollt werden. In Zeile 4 ist der Befehl um die zuvor definierte Policy mit dem ausgewählten Interface oder der Interface-Range zu verbinden. 

				
					5: SW1#show ipv6 nd raguard policy HOSTS 
				
			

Zeile 5 zeigt den Befehl um zu überprüfen, ob die Policy mit den Interfaces verknüpft ist. Wenn die Konfiguration erfolgreich war, zählt dieser Befehl sämtliche Interfaces auf, an denen die Policy verknüpft ist.

DHCP Guard 

Neben der Option für RA Guard muss auch die Funktionalität von DHCPv6 eingeschränkt werden. Die hier vorgenommenen Einstellungen haben dabei keine Auswirkungen auf vorhandenen Infrastrukturen für DHCP im Kontext von IPv4 Adressen. 

				
					1: SW1(config)#ipv6 dhcp guard policy DHCP_CLIENT
				
			
				
					2: SW1(config-dhcp-guard)#device-role client 
				
			

In Zeile 1 wird eine neue Policy für die dhcp guard-Funktion erstellt. In diesem Fall wird diese als DHCP_CLIENT benannt. Der Name ist frei wählbar, sollte aber eindeutig sein. In Zeile 2 werden Systeme, auf die diese Policy angewendet wird mit der device-role client versehen, dass bedeutet, dass es sich bei allen Systemen, bei denen die Policy angewendet wird um DHCP-Clients handelt. Dies hat zur Folge, dass Funktionen eines DHCPv6-Servers bzw. Netzwerk-Pakete, die von einem solchen System ausgesendet werden durch den Switch verworfen werden, wenn diese Policy angewendet wird. 

				
					3: SW1(config)#interface range GigabitEthernet 0/2 - 3
				
			
				
					4: SW1(config-if-range)#ipv6 dhcp guard attach-policy DHCP_CLIENT
				
			

In Zeile 3 werden Interfaces ausgewählt. Analog wie beim RA Guard können hier sämtliche Interfaces ausgewählt werden, weil es keinen legitimen DHCPv6 Server im Netzwerk gibt. Mit dem Befehl aus Zeile 4 wird die erstellte Policy DHCP_Client mit den ausgewählten Interfaces verknüpft. 

				
					5: SW1#show ipv6 dhcp guard policy 
				
			

Zeile 5 zeigt den Befehl zur Überprüfung, ob die erstellte Policy angewendet wird. Wenn die Konfiguration funktioniert hat, werden sämtliche Interfaces am Switch hier angezeigt.

Detect: Wie kann ich den Angriff erkennen?

Das Fox-IT Security Research Team hat Snort- und Suricata-Signaturen veröffentlicht, um betrügerischen DHCPv6-Datenverkehr und WPAD-Antworten über IPv6 zu erkennen:

 

				
					alert udp fe80::/12 [546,547] -> fe80::/12 [546,547] (msg:"FOX-SRT - Policy - DHCPv6 advertise"; content:"|02|"; offset:48; depth:1; reference:url,blog.fox-it.com/2018/01/11/mitm6-compromising-ipv4-networks-via-ipv6/; threshold:type limit, track by_src, count 1, seconds 3600; classtype:policy-violation; sid:21002327; rev:2;)
				
			
				
					alert udp ::/0 53 -> any any (msg:"FOX-SRT - Suspicious - WPAD DNS reponse over IPv6"; byte_test:1,&,0x7F,2; byte_test:2,>,0,6; content:"|00 04|wpad"; nocase; fast_pattern; threshold: type limit, track by_src, count 1, seconds 1800; reference:url,blog.fox-it.com/2018/01/11/mitm6-compromising-ipv4-networks-via-ipv6/; classtype:attempted-admin; priority:1; sid:21002330; rev:1;)
				
			

React: Wie gehe ich mit erkannten Angreifern im Netzwerk um?

Nach Durchführung der oben genannten Möglichkeiten den Angriff zu verhindern, kann es sein, dass Sie leider feststellen müssen, dass es Angreifer in Ihrem Netz gibt.

Wenn bekannt ist von welcher IP der Angriff erfolgt, kann der Port / MAC Adresse des Angreifers nach ausreichender Informationsgewinnung gesperrt werden, um weitere Aktivitäten zu unterbinden.

Besonders im Notfall raten wir Ihnen dazu fachliche Hilfe hinzuzuziehen und so viel wie möglich zu dokumentieren.

Referenzen

Bei der Befassung mit den Folgenden ISMS-Framework-Controls spielt die Schwachstelle und deren Behebung eine Rolle:

ISO 27001:

A. 9.1.2 Zugang zu Netzwerken und Netzwerkdiensten
A.13.1.2 Sicherheit von Netzwerkdiensten 

BSI Grundschutz:

NET.1.1.A7

PSN-ID: PS-TN-2020-0053

ANDERE BEITRÄGE
Teams Guest Enumeration
Teams Guest Enumeration

Azure Active Directory Enumeration durch Gäste in Microsoft Teams Was bedeutet das Finding Teams Guest Enumeration? Microsoft Teams bietet standardmäßig

Mehr lesen »

Inhaltsverzeichnis

Willst Du Teil unseres Teams werden?

Wir verwenden Cookies, um Ihnen die bestmögliche Erfahrung zu bieten. Wenn Sie unsere Website weiterhin besuchen, stimmen Sie der Verwendung von Cookies zu, wie in unserer Datenschutzerklärung beschrieben.