113 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{{#include ../../banners/hacktricks-training.md}}
# IPv6 Grundtheorie
## Netzwerke
IPv6-Adressen sind so strukturiert, dass sie die Netzwerkorganisation und die Interaktion von Geräten verbessern. Eine IPv6-Adresse ist unterteilt in:
1. **Netzwerkpräfix**: Die ersten 48 Bits, die das Netzwerksegment bestimmen.
2. **Subnetz-ID**: Die folgenden 16 Bits, die zur Definition spezifischer Subnetze innerhalb des Netzwerks verwendet werden.
3. **Schnittstellenbezeichner**: Die letzten 64 Bits, die ein Gerät innerhalb des Subnetzes eindeutig identifizieren.
Während IPv6 das in IPv4 vorhandene ARP-Protokoll weglässt, führt es **ICMPv6** mit zwei Hauptnachrichten ein:
- **Neighbor Solicitation (NS)**: Multicast-Nachrichten zur Adressauflösung.
- **Neighbor Advertisement (NA)**: Unicast-Antworten auf NS oder spontane Ankündigungen.
IPv6 umfasst auch spezielle Adresstypen:
- **Loopback-Adresse (`::1`)**: Entspricht IPv4's `127.0.0.1`, für die interne Kommunikation innerhalb des Hosts.
- **Link-Local-Adressen (`FE80::/10`)**: Für lokale Netzwerkaktivitäten, nicht für das Internet-Routing. Geräte im selben lokalen Netzwerk können sich mit diesem Bereich gegenseitig entdecken.
### Praktische Nutzung von IPv6 in Netzwerkbefehlen
Um mit IPv6-Netzwerken zu interagieren, können Sie verschiedene Befehle verwenden:
- **Ping Link-Local-Adressen**: Überprüfen Sie die Anwesenheit lokaler Geräte mit `ping6`.
- **Neighbor Discovery**: Verwenden Sie `ip neigh`, um Geräte zu sehen, die auf der Linkschicht entdeckt wurden.
- **alive6**: Ein alternatives Tool zur Entdeckung von Geräten im selben Netzwerk.
Im Folgenden einige Beispielbefehle:
```bash
ping6 I eth0 -c 5 ff02::1 > /dev/null 2>&1
ip neigh | grep ^fe80
# Alternatively, use alive6 for neighbor discovery
alive6 eth0
```
IPv6-Adressen können aus der MAC-Adresse eines Geräts für die lokale Kommunikation abgeleitet werden. Hier ist eine vereinfachte Anleitung, wie man die Link-Local IPv6-Adresse aus einer bekannten MAC-Adresse ableitet, sowie eine kurze Übersicht über IPv6-Adresstypen und Methoden zur Entdeckung von IPv6-Adressen innerhalb eines Netzwerks.
## **Ableitung der Link-Local IPv6 von der MAC-Adresse**
Gegeben ist eine MAC-Adresse **`12:34:56:78:9a:bc`**, die Link-Local IPv6-Adresse kann wie folgt konstruiert werden:
1. MAC in IPv6-Format umwandeln: **`1234:5678:9abc`**
2. `fe80::` voranstellen und `fffe` in die Mitte einfügen: **`fe80::1234:56ff:fe78:9abc`**
3. Das siebte Bit von links umkehren, wodurch `1234` zu `1034` wird: **`fe80::1034:56ff:fe78:9abc`**
## **IPv6-Adresstypen**
- **Unique Local Address (ULA)**: Für lokale Kommunikation, nicht für das Routing im öffentlichen Internet gedacht. Präfix: **`FEC00::/7`**
- **Multicast-Adresse**: Für Eins-zu-viele-Kommunikation. An alle Schnittstellen in der Multicast-Gruppe geliefert. Präfix: **`FF00::/8`**
- **Anycast-Adresse**: Für Eins-zu-nächster Kommunikation. An die nächstgelegene Schnittstelle gemäß Routing-Protokoll gesendet. Teil des **`2000::/3`** globalen Unicast-Bereichs.
## **Adresspräfixe**
- **fe80::/10**: Link-Local-Adressen (ähnlich wie 169.254.x.x)
- **fc00::/7**: Unique Local-Unicast (ähnlich wie private IPv4-Bereiche wie 10.x.x.x, 172.16.x.x, 192.168.x.x)
- **2000::/3**: Global Unicast
- **ff02::1**: Multicast Alle Knoten
- **ff02::2**: Multicast Router-Knoten
## **Entdeckung von IPv6-Adressen innerhalb eines Netzwerks**
### Methode 1: Verwendung von Link-Local-Adressen
1. Ermitteln Sie die MAC-Adresse eines Geräts im Netzwerk.
2. Leiten Sie die Link-Local IPv6-Adresse aus der MAC-Adresse ab.
### Methode 2: Verwendung von Multicast
1. Senden Sie ein Ping an die Multicast-Adresse `ff02::1`, um IPv6-Adressen im lokalen Netzwerk zu entdecken.
```bash
service ufw stop # Stop the firewall
ping6 -I <IFACE> ff02::1 # Send a ping to multicast address
ip -6 neigh # Display the neighbor table
```
## IPv6 Man-in-the-Middle (MitM) Angriffe
Es gibt mehrere Techniken zur Durchführung von MitM-Angriffen in IPv6-Netzwerken, wie zum Beispiel:
- Spoofing von ICMPv6-Nachbar- oder Router-Anzeigen.
- Verwendung von ICMPv6-Redirect- oder "Packet Too Big"-Nachrichten zur Manipulation des Routings.
- Angriff auf mobiles IPv6 (erfordert normalerweise, dass IPSec deaktiviert ist).
- Einrichten eines bösartigen DHCPv6-Servers.
# Identifizierung von IPv6-Adressen im Feld
## Erforschen von Subdomains
Eine Methode, um Subdomains zu finden, die potenziell mit IPv6-Adressen verknüpft sind, besteht darin, Suchmaschinen zu nutzen. Zum Beispiel kann ein Abfragemuster wie `ipv6.*` effektiv sein. Insbesondere kann der folgende Suchbefehl in Google verwendet werden:
```bash
site:ipv6./
```
## Nutzung von DNS-Abfragen
Um IPv6-Adressen zu identifizieren, können bestimmte DNS-Record-Typen abgefragt werden:
- **AXFR**: Fordert einen vollständigen Zonenübertrag an, der möglicherweise eine Vielzahl von DNS-Records aufdeckt.
- **AAAA**: Sucht direkt nach IPv6-Adressen.
- **ANY**: Eine breite Abfrage, die alle verfügbaren DNS-Records zurückgibt.
## Probing mit Ping6
Nachdem IPv6-Adressen, die mit einer Organisation verbunden sind, identifiziert wurden, kann das `ping6`-Dienstprogramm zum Probing verwendet werden. Dieses Tool hilft bei der Bewertung der Reaktionsfähigkeit der identifizierten IPv6-Adressen und kann auch dabei helfen, benachbarte IPv6-Geräte zu entdecken.
## Referenzen
- [http://www.firewall.cx/networking-topics/protocols/877-ipv6-subnetting-how-to-subnet-ipv6.html](http://www.firewall.cx/networking-topics/protocols/877-ipv6-subnetting-how-to-subnet-ipv6.html)
- [https://www.sans.org/reading-room/whitepapers/detection/complete-guide-ipv6-attack-defense-33904](https://www.sans.org/reading-room/whitepapers/detection/complete-guide-ipv6-attack-defense-33904)
{{#include ../../banners/hacktricks-training.md}}