hacktricks/generic-methodologies-and-resources/pentesting-network/pentesting-ipv6.md

131 lines
8.1 KiB
Markdown
Raw Permalink 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.

{% hint style="success" %}
Apprenez et pratiquez le piratage AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**Formation HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le piratage GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**Formation HackTricks GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Soutenez HackTricks</summary>
* Consultez les [**plans d'abonnement**](https://github.com/sponsors/carlospolop)!
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Partagez des astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
# Théorie de base sur IPv6
## Réseaux
Les adresses IPv6 sont structurées pour améliorer l'organisation des réseaux et l'interaction des appareils. Une adresse IPv6 est divisée en :
1. **Préfixe de réseau** : Les 48 premiers bits, déterminant le segment réseau.
2. **ID de sous-réseau** : Les 16 bits suivants, utilisés pour définir des sous-réseaux spécifiques au sein du réseau.
3. **Identifiant d'interface** : Les 64 derniers bits, identifiant de manière unique un appareil au sein du sous-réseau.
Alors qu'IPv6 omet le protocole ARP trouvé dans IPv4, il introduit **ICMPv6** avec deux messages principaux :
- **Solicitation de voisinage (NS)** : Messages multicast pour la résolution d'adresses.
- **Annonce de voisinage (NA)** : Réponses unicast aux NS ou annonces spontanées.
IPv6 intègre également des types d'adresses spéciaux :
- **Adresse de bouclage (`::1`)** : Équivalent à `127.0.0.1` en IPv4, pour la communication interne au sein de l'hôte.
- **Adresses de lien local (`FE80::/10`)** : Pour les activités de réseau local, non pour le routage internet. Les appareils sur le même réseau local peuvent se découvrir mutuellement en utilisant cette plage.
### Utilisation pratique de l'IPv6 dans les commandes réseau
Pour interagir avec les réseaux IPv6, vous pouvez utiliser diverses commandes :
- **Ping des adresses de lien local** : Vérifiez la présence des appareils locaux en utilisant `ping6`.
- **Découverte de voisinage** : Utilisez `ip neigh` pour voir les appareils découverts au niveau de la couche de liaison.
- **alive6** : Un outil alternatif pour découvrir les appareils sur le même réseau.
Voici quelques exemples de commandes :
```bash
ping6 I eth0 -c 5 ff02::1 > /dev/null 2>&1
ip neigh | grep ^fe80
# Alternatively, use alive6 for neighbor discovery
alive6 eth0
```
Les adresses IPv6 peuvent être dérivées de l'adresse MAC d'un appareil pour la communication locale. Voici un guide simplifié sur la manière de dériver l'adresse IPv6 de lien local à partir d'une adresse MAC connue, ainsi qu'un bref aperçu des types d'adresses IPv6 et des méthodes pour découvrir les adresses IPv6 au sein d'un réseau.
## **Dérivation de l'adresse IPv6 de lien local à partir de l'adresse MAC**
Étant donné une adresse MAC **`12:34:56:78:9a:bc`**, vous pouvez construire l'adresse IPv6 de lien local comme suit :
1. Convertir la MAC en format IPv6 : **`1234:5678:9abc`**
2. Préfixer `fe80::` et insérer `fffe` au milieu : **`fe80::1234:56ff:fe78:9abc`**
3. Inverser le septième bit de gauche, en changeant `1234` en `1034` : **`fe80::1034:56ff:fe78:9abc`**
## **Types d'adresses IPv6**
- **Adresse Unique Locale (ULA)** : Pour les communications locales, non destinée au routage sur Internet public. Préfixe : **`FEC00::/7`**
- **Adresse Multicast** : Pour les communications de un à plusieurs. Livrée à toutes les interfaces du groupe multicast. Préfixe : **`FF00::/8`**
- **Adresse Anycast** : Pour les communications de un à plus proche. Envoyée à l'interface la plus proche selon le protocole de routage. Fait partie de la plage d'unicast globale **`2000::/3`**.
## **Préfixes d'adresse**
- **fe80::/10** : Adresses de lien local (similaire à 169.254.x.x)
- **fc00::/7** : Unique Local-Unicast (similaire aux plages IPv4 privées comme 10.x.x.x, 172.16.x.x, 192.168.x.x)
- **2000::/3** : Unicast Global
- **ff02::1** : Multicast Tous les Noeuds
- **ff02::2** : Multicast Noeuds Routeurs
## **Découverte des adresses IPv6 au sein d'un réseau**
### Méthode 1 : Utilisation des adresses de lien local
1. Obtenir l'adresse MAC d'un appareil dans le réseau.
2. Dériver l'adresse IPv6 de lien local à partir de l'adresse MAC.
### Méthode 2 : Utilisation du Multicast
1. Envoyer un ping à l'adresse multicast `ff02::1` pour découvrir les adresses IPv6 sur le réseau local.
```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
```
## Attaques de l'homme du milieu (MitM) IPv6
Plusieurs techniques existent pour exécuter des attaques MitM dans les réseaux IPv6, telles que :
- Le spoofing des annonces de voisin ou de routeur ICMPv6.
- L'utilisation des messages de redirection ICMPv6 ou "Packet Too Big" pour manipuler le routage.
- Attaquer le mobile IPv6 (nécessite généralement que IPSec soit désactivé).
- Mettre en place un serveur DHCPv6 malveillant.
# Identification des adresses IPv6 sur le terrain
## Exploration des sous-domaines
Une méthode pour trouver des sous-domaines potentiellement liés à des adresses IPv6 implique l'utilisation des moteurs de recherche. Par exemple, l'utilisation d'un motif de requête tel que `ipv6.*` peut être efficace. Plus précisément, la commande de recherche suivante peut être utilisée dans Google:
```bash
site:ipv6./
```
## Utilisation des requêtes DNS
Pour identifier les adresses IPv6, certains types d'enregistrements DNS peuvent être interrogés :
- **AXFR** : Demande un transfert de zone complet, permettant potentiellement de découvrir une large gamme d'enregistrements DNS.
- **AAAA** : Recherche directement des adresses IPv6.
- **ANY** : Une requête large qui renvoie tous les enregistrements DNS disponibles.
## Exploration avec Ping6
Après avoir identifié les adresses IPv6 associées à une organisation, l'utilitaire `ping6` peut être utilisé pour l'exploration. Cet outil aide à évaluer la réactivité des adresses IPv6 identifiées et peut également aider à découvrir des périphériques IPv6 adjacents.
## Références
* [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)
{% hint style="success" %}
Apprenez et pratiquez le piratage AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**Formation HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le piratage GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**Formation HackTricks GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Soutenez HackTricks</summary>
* Consultez les [**plans d'abonnement**](https://github.com/sponsors/carlospolop)!
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Partagez des astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}