{{#include ../../banners/hacktricks-training.md}} # Teoria di base dell'IPv6 ## Reti Gli indirizzi IPv6 sono strutturati per migliorare l'organizzazione della rete e l'interazione dei dispositivi. Un indirizzo IPv6 è diviso in: 1. **Prefisso di rete**: I primi 48 bit, che determinano il segmento di rete. 2. **ID sottorete**: I successivi 16 bit, utilizzati per definire sottoreti specifiche all'interno della rete. 3. **Identificatore dell'interfaccia**: Gli ultimi 64 bit, che identificano un dispositivo in modo univoco all'interno della sottorete. Mentre l'IPv6 omette il protocollo ARP presente nell'IPv4, introduce **ICMPv6** con due messaggi principali: - **Richiesta di vicinato (NS)**: Messaggi multicast per la risoluzione degli indirizzi. - **Annuncio di vicinato (NA)**: Risposte unicast a NS o annunci spontanei. L'IPv6 incorpora anche tipi di indirizzi speciali: - **Indirizzo di loopback (`::1`)**: Equivalente a `127.0.0.1` di IPv4, per la comunicazione interna all'host. - **Indirizzi link-local (`FE80::/10`)**: Per attività di rete locali, non per il routing su internet. I dispositivi sulla stessa rete locale possono scoprire l'uno l'altro utilizzando questo intervallo. ### Utilizzo pratico dell'IPv6 nei comandi di rete Per interagire con le reti IPv6, puoi utilizzare vari comandi: - **Ping indirizzi link-local**: Controlla la presenza di dispositivi locali utilizzando `ping6`. - **Scoperta dei vicini**: Usa `ip neigh` per visualizzare i dispositivi scoperti a livello di link. - **alive6**: Uno strumento alternativo per scoprire dispositivi sulla stessa rete. Di seguito alcuni esempi di comandi: ```bash ping6 –I eth0 -c 5 ff02::1 > /dev/null 2>&1 ip neigh | grep ^fe80 # Alternatively, use alive6 for neighbor discovery alive6 eth0 ``` Gli indirizzi IPv6 possono essere derivati dall'indirizzo MAC di un dispositivo per la comunicazione locale. Ecco una guida semplificata su come derivare l'indirizzo IPv6 Link-local da un indirizzo MAC noto e una breve panoramica dei tipi di indirizzi IPv6 e dei metodi per scoprire gli indirizzi IPv6 all'interno di una rete. ## **Derivazione dell'IPv6 Link-local dall'indirizzo MAC** Dato un indirizzo MAC **`12:34:56:78:9a:bc`**, puoi costruire l'indirizzo IPv6 Link-local come segue: 1. Converti il MAC nel formato IPv6: **`1234:5678:9abc`** 2. Prependi `fe80::` e inserisci `fffe` nel mezzo: **`fe80::1234:56ff:fe78:9abc`** 3. Inverti il settimo bit da sinistra, cambiando `1234` in `1034`: **`fe80::1034:56ff:fe78:9abc`** ## **Tipi di Indirizzi IPv6** - **Indirizzo Locale Unico (ULA)**: Per comunicazioni locali, non destinato al routing su internet pubblico. Prefisso: **`FEC00::/7`** - **Indirizzo Multicast**: Per comunicazione uno-a-molti. Consegnato a tutte le interfacce nel gruppo multicast. Prefisso: **`FF00::/8`** - **Indirizzo Anycast**: Per comunicazione uno-a-più-vicina. Inviato all'interfaccia più vicina secondo il protocollo di routing. Parte dell'intervallo di unicast globale **`2000::/3`**. ## **Prefissi degli Indirizzi** - **fe80::/10**: Indirizzi Link-Local (simile a 169.254.x.x) - **fc00::/7**: Unicast Locale Unico (simile a intervalli IPv4 privati come 10.x.x.x, 172.16.x.x, 192.168.x.x) - **2000::/3**: Unicast Globale - **ff02::1**: Multicast Tutti i Nodi - **ff02::2**: Multicast Nodi Router ## **Scoprire Indirizzi IPv6 all'interno di una Rete** ### Modo 1: Utilizzando Indirizzi Link-local 1. Ottieni l'indirizzo MAC di un dispositivo all'interno della rete. 2. Deriva l'indirizzo IPv6 Link-local dall'indirizzo MAC. ### Modo 2: Utilizzando Multicast 1. Invia un ping all'indirizzo multicast `ff02::1` per scoprire indirizzi IPv6 sulla rete locale. ```bash service ufw stop # Stop the firewall ping6 -I ff02::1 # Send a ping to multicast address ip -6 neigh # Display the neighbor table ``` ## Attacchi Man-in-the-Middle (MitM) IPv6 Esistono diverse tecniche per eseguire attacchi MitM nelle reti IPv6, come: - Spoofing delle pubblicità dei vicini o dei router ICMPv6. - Utilizzo di messaggi ICMPv6 di reindirizzamento o "Pacchetto Troppo Grande" per manipolare il routing. - Attacco a mobile IPv6 (di solito richiede che IPSec sia disabilitato). - Configurazione di un server DHCPv6 malevolo. # Identificazione degli indirizzi IPv6 nel campo ## Esplorazione dei Sottodomini Un metodo per trovare sottodomini che sono potenzialmente collegati a indirizzi IPv6 implica l'uso di motori di ricerca. Ad esempio, impiegare un modello di query come `ipv6.*` può essere efficace. In particolare, il seguente comando di ricerca può essere utilizzato in Google: ```bash site:ipv6./ ``` ## Utilizzo delle Query DNS Per identificare gli indirizzi IPv6, è possibile interrogare determinati tipi di record DNS: - **AXFR**: Richiede un trasferimento completo della zona, potenzialmente rivelando un'ampia gamma di record DNS. - **AAAA**: Cerca direttamente indirizzi IPv6. - **ANY**: Una query ampia che restituisce tutti i record DNS disponibili. ## Probing con Ping6 Dopo aver individuato gli indirizzi IPv6 associati a un'organizzazione, è possibile utilizzare l'utilità `ping6` per il probing. Questo strumento aiuta a valutare la reattività degli indirizzi IPv6 identificati e potrebbe anche assistere nella scoperta di dispositivi IPv6 adiacenti. ## Riferimenti - [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}}