Translated ['src/generic-methodologies-and-resources/pentesting-network/

This commit is contained in:
Translator 2025-08-20 10:32:30 +00:00
parent cbdcea249a
commit 924a1b97df

View File

@ -19,8 +19,8 @@ Mentre l'IPv6 omette il protocollo ARP presente nell'IPv4, introduce **ICMPv6**
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'interno dell'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.
- **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
@ -38,13 +38,13 @@ 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.
IPv6 gli indirizzi 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`**
1. Converti il MAC in 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`**
@ -56,7 +56,7 @@ Dato un indirizzo MAC **`12:34:56:78:9a:bc`**, puoi costruire l'indirizzo IPv6 L
### **Prefissi degli indirizzi**
- **fe80::/10**: Indirizzi Link-Local (simile a 169.254.x.x)
- **fe80::/10**: indirizzi Link-Local (simile a 169.254.x.x)
- **fc00::/7**: Unique Local-Unicast (simile a intervalli IPv4 privati come 10.x.x.x, 172.16.x.x, 192.168.x.x)
- **2000::/3**: Global Unicast
- **ff02::1**: Multicast All Nodes
@ -86,7 +86,7 @@ Esistono diverse tecniche per eseguire attacchi MitM nelle reti IPv6, come:
- Attacco a IPv6 mobile (di solito richiede che IPSec sia disabilitato).
- Configurazione di un server DHCPv6 malevolo.
## Identificazione degli indirizzi IPv6 nel campo
## Identificazione degli Indirizzi IPv6 nel campo
### Esplorazione dei Sottodomini
@ -128,7 +128,7 @@ sudo sysctl -w net.ipv4.tcp_tw_reuse=1
```
### Sniffing passivo NDP & DHCPv6
Poiché ogni host IPv6 **si unisce automaticamente a più gruppi multicast** (`ff02::1`, `ff02::2`, …) e parla ICMPv6 per SLAAC/NDP, puoi mappare l'intero segmento senza inviare un singolo pacchetto. La seguente riga di codice Python/Scapy ascolta i messaggi L2 più interessanti e stampa un log colorato e timestampato di chi è chi:
Poiché ogni host IPv6 **si unisce automaticamente a più gruppi multicast** (`ff02::1`, `ff02::2`, …) e utilizza ICMPv6 per SLAAC/NDP, puoi mappare l'intero segmento senza inviare un singolo pacchetto. Il seguente one-liner Python/Scapy ascolta i messaggi L2 più interessanti e stampa un log colorato e timestampato di chi è chi:
```python
#!/usr/bin/env python3
from scapy.all import *
@ -195,11 +195,11 @@ argp.add_argument('-t','--time',type=int,default=0,help='Duration (0 = infinite)
a = argp.parse_args()
sniff(iface=a.interface,prn=handler,timeout=a.time or None,store=0)
```
Risultato: una **topologia link-local** completa (MAC ⇄ IPv6) in pochi secondi, senza attivare i sistemi IPS/IDS che si basano su scansioni attive.
Risultato: una **topologia link-local** completa (MAC ⇄ IPv6) in pochi secondi, senza attivare sistemi IPS/IDS che si basano su scansioni attive.
### Spoofing delle Router Advertisement (RA)
Gli host IPv6 si basano sulle **Router Advertisements ICMPv6** per la scoperta del gateway predefinito. Se inietti RAs contraffatte **più frequentemente** del router legittimo, i dispositivi passeranno silenziosamente a te come gateway.
Gli host IPv6 si affidano alle **Router Advertisements ICMPv6** per la scoperta del gateway predefinito. Se inietti RAs contraffatte **più frequentemente** del router legittimo, i dispositivi passeranno silenziosamente a te come gateway.
```python
#!/usr/bin/env python3
from scapy.all import *
@ -227,9 +227,36 @@ sudo sysctl -w net.ipv6.conf.all.forwarding=1
sudo ip6tables -A FORWARD -i eth0 -j ACCEPT
sudo ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
```
### RDNSS (DNS) Spoofing tramite RA
#### Router Advertisement Flags (M/O) & Default Router Preference (Prf)
[RFC 8106](https://datatracker.ietf.org/doc/html/rfc8106) consente di aggiungere un'opzione **Recursive DNS Server (RDNSS)** all'interno di un RA. I sistemi operativi moderni (Win 10 ≥1709, Win 11, macOS Big Sur, Linux systemd-resolved, …) si fidano automaticamente di esso:
| Flag | Significato | Effetto sul Comportamento del Client |
|------|-------------|--------------------------------------|
| **M (Managed Address Configuration)** | Quando impostato su `1`, l'host DEVE utilizzare **DHCPv6** per ottenere il proprio indirizzo IPv6. | L'intero indirizzamento proviene da DHCPv6 perfetto per il poisoning in stile *mitm6*. |
| **O (Other Configuration)** | Quando impostato su `1`, l'host dovrebbe utilizzare **DHCPv6** solo per ottenere informazioni *altre* (DNS, NTP, …). | Indirizzo ancora tramite SLAAC, ma il DNS può essere dirottato con DHCPv6. |
| **M=0 / O=0** | Rete puramente SLAAC. | Solo trucchi RA / RDNSS sono possibili DHCPv6 non sarà inviato dai client. |
| **M=1 / O=1** | Ambiente misto. | Sia DHCPv6 che SLAAC sono utilizzati; la superficie per lo spoofing è la più grande. |
Durante un pentest puoi semplicemente ispezionare il RA legittimo una volta e decidere quale vettore è fattibile:
```bash
sudo tcpdump -vvv -i eth0 'icmp6 && ip6[40] == 134' # capture Router Advertisements
```
Cerca il campo `flags [M,O]` nel dump non è necessaria alcuna supposizione.
Il campo **Prf** (Router Preference) all'interno dell'intestazione RA controlla quanto è attraente il tuo router rogue quando sono presenti *più* gateway:
| Valore Prf | Binario | Significato |
|------------|---------|-------------|
| **Alto** | `10` | I client preferiscono questo router rispetto a qualsiasi router *Medio*/*Basso* |
| Medio (predefinito) | `01` | Utilizzato da quasi tutti i dispositivi legittimi |
| Basso | `00` | Scelto solo quando non esiste un router migliore |
Quando generi il pacchetto con Scapy puoi impostarlo tramite il parametro `prf` come mostrato sopra (`prf=0x1` → Alto). Combinare **Alto Prf**, un **breve intervallo** e una **durata non zero** rende il tuo gateway rogue notevolmente stabile.
---
### Spoofing RDNSS (DNS) tramite RA
[RFC 8106](https://datatracker.ietf.org/doc/html/rfc8106) consente di aggiungere un'opzione **Recursive DNS Server (RDNSS)** all'interno di un RA. I moderni sistemi operativi (Win 10 ≥1709, Win 11, macOS Big Sur, Linux systemd-resolved, …) si fidano automaticamente di esso:
```python
#!/usr/bin/env python3
from scapy.all import *
@ -255,8 +282,8 @@ I clienti **prependono** il tuo DNS alla loro lista di resolver per la durata da
Invece di SLAAC, le reti Windows spesso dipendono da **DHCPv6 senza stato** per il DNS. [mitm6](https://github.com/rofl0r/mitm6) risponde automaticamente ai messaggi `Solicit` con un flusso **Advertise → Reply** che assegna **il tuo indirizzo link-local come DNS per 300 secondi**. Questo sblocca:
* attacchi di relay NTLM (WPAD + hijacking DNS)
* intercettazione della risoluzione dei nomi interni senza toccare i router
* Attacchi di relay NTLM (WPAD + hijacking DNS)
* Intercettazione della risoluzione dei nomi interni senza toccare i router
Utilizzo tipico:
```bash
@ -276,5 +303,6 @@ sudo mitm6 -i eth0 --no-ra # only DHCPv6 poisoning
- [RFC 8106 IPv6 ND DNS Configuration](https://datatracker.ietf.org/doc/html/rfc8106)
- [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)
- [Practical Guide to IPv6 Attacks in a Local Network](https://habr.com/ru/articles/930526/)
{{#include ../../banners/hacktricks-training.md}}