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

This commit is contained in:
Translator 2025-08-20 10:33:01 +00:00
parent 71f9678a71
commit 0cc255595d

View File

@ -14,20 +14,20 @@ Adresy IPv6 są zorganizowane w celu poprawy organizacji sieci i interakcji urz
Podczas gdy IPv6 pomija protokół ARP występujący w IPv4, wprowadza **ICMPv6** z dwoma głównymi komunikatami:
- **Zapytanie o sąsiada (NS)**: Wiadomości multicastowe do rozwiązywania adresów.
- **Ogłoszenie sąsiada (NA)**: Odpowiedzi unicastowe na NS lub spontaniczne ogłoszenia.
- **Zapytanie sąsiedztwa (NS)**: Wiadomości multicastowe do rozwiązywania adresów.
- **Ogłoszenie sąsiedztwa (NA)**: Odpowiedzi unicastowe na NS lub spontaniczne ogłoszenia.
IPv6 wprowadza również specjalne typy adresów:
- **Adres loopback (`::1`)**: Odpowiednik `127.0.0.1` w IPv4, do komunikacji wewnętrznej w hoście.
- **Adresy lokalne (`FE80::/10`)**: Do lokalnych działań sieciowych, nie do routingu w internecie. Urządzenia w tej samej lokalnej sieci mogą się nawzajem odkrywać, używając tego zakresu.
- **Adresy lokalne (`FE80::/10`)**: Do lokalnych działań sieciowych, nie do routingu w internecie. Urządzenia w tej samej lokalnej sieci mogą się nawzajem odkrywać, korzystając z tego zakresu.
### Praktyczne zastosowanie IPv6 w poleceniach sieciowych
Aby interagować z sieciami IPv6, można używać różnych poleceń:
- **Ping adresy lokalne**: Sprawdź obecność lokalnych urządzeń za pomocą `ping6`.
- **Odkrywanie sąsiadów**: Użyj `ip neigh`, aby zobaczyć urządzenia odkryte na warstwie łącza.
- **Odkrywanie sąsiedztwa**: Użyj `ip neigh`, aby zobaczyć urządzenia odkryte na warstwie łącza.
- **alive6**: Alternatywne narzędzie do odkrywania urządzeń w tej samej sieci.
Poniżej znajdują się przykłady poleceń:
@ -50,7 +50,7 @@ Dany adres MAC **`12:34:56:78:9a:bc`**, możesz skonstruować adres Link-local I
### **Typy adresów IPv6**
- **Unique Local Address (ULA)**: Do komunikacji lokalnej, nieprzeznaczone do routingu w internecie. Prefiks: **`FEC00::/7`**
- **Unique Local Address (ULA)**: Do komunikacji lokalnej, nieprzeznaczone do routingu w Internecie. Prefiks: **`FEC00::/7`**
- **Multicast Address**: Do komunikacji jeden-do-wielu. Dostarczany do wszystkich interfejsów w grupie multicast. Prefiks: **`FF00::/8`**
- **Anycast Address**: Do komunikacji jeden-do-najbliższego. Wysyłany do najbliższego interfejsu zgodnie z protokołem routingu. Część globalnego zakresu unicast **`2000::/3`**.
@ -59,17 +59,17 @@ Dany adres MAC **`12:34:56:78:9a:bc`**, możesz skonstruować adres Link-local I
- **fe80::/10**: Adresy Link-Local (podobne do 169.254.x.x)
- **fc00::/7**: Unique Local-Unicast (podobne do prywatnych zakresów IPv4, takich jak 10.x.x.x, 172.16.x.x, 192.168.x.x)
- **2000::/3**: Global Unicast
- **ff02::1**: Multicast Wszystkie Węzły
- **ff02::2**: Multicast Węzły Routerów
- **ff02::1**: Multicast All Nodes
- **ff02::2**: Multicast Router Nodes
### **Odkrywanie adresów IPv6 w sieci**
#### Sposób 1: Użycie adresów Link-local
#### Sposób 1: Używając adresów Link-local
1. Uzyskaj adres MAC urządzenia w sieci.
2. Wyprowadź adres Link-local IPv6 z adresu MAC.
#### Sposób 2: Użycie Multicast
#### Sposób 2: Używając multicast
1. Wyślij ping do adresu multicast `ff02::1`, aby odkryć adresy IPv6 w lokalnej sieci.
```bash
@ -81,7 +81,7 @@ ip -6 neigh # Display the neighbor table
Istnieje kilka technik wykonywania ataków MitM w sieciach IPv6, takich jak:
- Fałszowanie reklam sąsiedztwa lub routera ICMPv6.
- Fałszowanie reklamacji sąsiadów lub routerów ICMPv6.
- Używanie komunikatów ICMPv6 redirect lub "Packet Too Big" do manipulacji trasowaniem.
- Atakowanie mobilnego IPv6 (zwykle wymaga wyłączenia IPSec).
- Ustawienie nieautoryzowanego serwera DHCPv6.
@ -90,7 +90,7 @@ Istnieje kilka technik wykonywania ataków MitM w sieciach IPv6, takich jak:
### Badanie subdomen
Metoda znajdowania subdomen, które mogą być powiązane z adresami IPv6, polega na wykorzystaniu wyszukiwarek. Na przykład, zastosowanie wzoru zapytania takiego jak `ipv6.*` może być skuteczne. Konkretnie, następujące polecenie wyszukiwania można użyć w Google:
Metoda znajdowania subdomen, które mogą być powiązane z adresami IPv6, polega na wykorzystaniu wyszukiwarek. Na przykład, zastosowanie wzoru zapytania takiego jak `ipv6.*` może być skuteczne. Konkretnie, można użyć następującego polecenia wyszukiwania w Google:
```bash
site:ipv6./
```
@ -102,13 +102,13 @@ Aby zidentyfikować adresy IPv6, można zapytać o określone typy rekordów DNS
- **AAAA**: Bezpośrednio poszukuje adresów IPv6.
- **ANY**: Szerokie zapytanie, które zwraca wszystkie dostępne rekordy DNS.
### Probing z Ping6
### Badanie za pomocą Ping6
Po zidentyfikowaniu adresów IPv6 związanych z organizacją, można użyć narzędzia `ping6` do badania. To narzędzie pomaga ocenić responsywność zidentyfikowanych adresów IPv6 i może również pomóc w odkrywaniu sąsiednich urządzeń IPv6.
## Techniki ataków na lokalną sieć IPv6
Następujące sekcje obejmują praktyczne ataki IPv6 na warstwie 2, które można wykonać **w obrębie tego samego segmentu /64** bez znajomości jakiegoś globalnego prefiksu. Wszystkie pakiety pokazane poniżej są **link-local** i podróżują tylko przez lokalny przełącznik, co czyni je niezwykle dyskretnymi w większości środowisk.
Poniższe sekcje obejmują praktyczne ataki IPv6 na warstwie 2, które można wykonać **w obrębie tego samego segmentu /64** bez znajomości jakiegoś globalnego prefiksu. Wszystkie pakiety pokazane poniżej są **link-local** i podróżują tylko przez lokalny przełącznik, co czyni je niezwykle dyskretnymi w większości środowisk.
### Dostosowanie systemu do stabilnego laboratorium
@ -126,9 +126,9 @@ sudo sysctl -w fs.file-max=100000
sudo sysctl -w net.core.somaxconn=65535
sudo sysctl -w net.ipv4.tcp_tw_reuse=1
```
### Pasywne sniffing NDP i DHCPv6
### Pasywne sniffowanie NDP i DHCPv6
Ponieważ każdy host IPv6 **automatycznie dołącza do wielu grup multicastowych** (`ff02::1`, `ff02::2`, …) i komunikuje się za pomocą ICMPv6 dla SLAAC/NDP, możesz zmapować cały segment bez wysyłania pojedynczego pakietu. Poniższy jednowierszowy skrypt Python/Scapy nasłuchuje najciekawszych wiadomości L2 i drukuje kolorowy, stemplowany czasem dziennik, kto jest kim:
Ponieważ każdy host IPv6 **automatycznie dołącza do wielu grup multicastowych** (`ff02::1`, `ff02::2`, …) i używa ICMPv6 do SLAAC/NDP, możesz zmapować cały segment bez wysyłania pojedynczego pakietu. Poniższy jednowierszowy skrypt Python/Scapy nasłuchuje najciekawszych wiadomości L2 i drukuje kolorowy, stemplowany czasem log, kto jest kim:
```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)
```
Wynik: pełna **topologia lokalna linku** (MAC ⇄ IPv6) w ciągu kilku sekund, bez wywoływania systemów IPS/IDS, które polegają na aktywnych skanach.
Wynik: pełna **topologia link-local** (MAC ⇄ IPv6) w ciągu kilku sekund, bez wywoływania systemów IPS/IDS, które polegają na aktywnych skanach.
### Fałszowanie ogłoszeń routera (RA)
### Fałszowanie Reklam Routera (RA)
Hosty IPv6 polegają na **ogłoszeniach routera ICMPv6** w celu odkrywania domyślnej bramy. Jeśli wstrzykniesz sfałszowane RA **częściej** niż prawdziwy router, urządzenia cicho przełączą się na Ciebie jako bramę.
Hosty IPv6 polegają na **Reklamach Routera ICMPv6** w celu odkrywania domyślnej bramy. Jeśli wstrzykniesz sfałszowane RA **częściej** niż prawdziwy router, urządzenia cicho przełączą się na Ciebie jako bramę.
```python
#!/usr/bin/env python3
from scapy.all import *
@ -227,7 +227,34 @@ 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 za pomocą RA
#### Flagi Ogłoszenia Routera (M/O) i Preferencje Domyślnego Routera (Prf)
| Flaga | Znaczenie | Efekt na zachowanie klienta |
|-------|-----------|-----------------------------|
| **M (Zarządzana Konfiguracja Adresu)** | Gdy ustawiona na `1`, host MUSI używać **DHCPv6** do uzyskania swojego adresu IPv6. | Całe adresowanie pochodzi z DHCPv6 idealne do trucia w stylu *mitm6*. |
| **O (Inna Konfiguracja)** | Gdy ustawiona na `1`, host powinien używać **DHCPv6** tylko do uzyskania *innych* informacji (DNS, NTP, …). | Adres nadal przez SLAAC, ale DNS może być przejęty za pomocą DHCPv6. |
| **M=0 / O=0** | Czysta sieć SLAAC. | Możliwe są tylko sztuczki RA / RDNSS DHCPv6 nie będzie wysyłane przez klientów. |
| **M=1 / O=1** | Środowisko mieszane. | Używane są zarówno DHCPv6, jak i SLAAC; powierzchnia do spoofingu jest największa. |
Podczas pentestu możesz po prostu raz sprawdzić legalne RA i zdecydować, który wektor jest wykonalny:
```bash
sudo tcpdump -vvv -i eth0 'icmp6 && ip6[40] == 134' # capture Router Advertisements
```
Szukaj pola `flags [M,O]` w zrzucie nie ma potrzeby zgadywania.
Pole **Prf** (Router Preference) wewnątrz nagłówka RA kontroluje, jak atrakcyjny wygląda twój fałszywy router, gdy obecnych jest *wiele* bram:
| Wartość Prf | Binarnie | Znaczenie |
|-------------|----------|-----------|
| **Wysoki** | `10` | Klienci preferują ten router nad jakimkolwiek *Średnim*/*Niskim* |
| Średni (domyślny) | `01` | Używany przez prawie każde legalne urządzenie |
| Niski | `00` | Wybierany tylko wtedy, gdy nie ma lepszego routera |
Podczas generowania pakietu za pomocą Scapy możesz ustawić to przez parametr `prf`, jak pokazano powyżej (`prf=0x1` → Wysoki). Łączenie **Wysokiego Prf**, **krótkiego interwału** i **niezerowego czasu życia** sprawia, że twój fałszywy gateway jest niezwykle stabilny.
---
### Spoofing RDNSS (DNS) za pomocą RA
[RFC 8106](https://datatracker.ietf.org/doc/html/rfc8106) pozwala na dodanie opcji **Recursive DNS Server (RDNSS)** wewnątrz RA. Nowoczesne systemy operacyjne (Win 10 ≥1709, Win 11, macOS Big Sur, Linux systemd-resolved, …) automatycznie mu ufają:
```python
@ -253,16 +280,16 @@ Klienci **dodają** twoje DNS do swojej listy resolverów na dany czas życia, c
### DHCPv6 DNS Spoofing (mitm6)
Zamiast SLAAC, sieci Windows często polegają na **stateless DHCPv6** dla DNS. [mitm6](https://github.com/rofl0r/mitm6) automatycznie odpowiada na wiadomości `Solicit` przepływem **Advertise → Reply**, który przypisuje **twój adres link-local jako DNS na 300 sekund**. To odblokowuje:
Zamiast SLAAC, sieci Windows często polegają na **stateless DHCPv6** dla DNS. [mitm6](https://github.com/rofl0r/mitm6) automatycznie odpowiada na wiadomości `Solicit` za pomocą przepływu **Advertise → Reply**, który przypisuje **twoje lokalne adresy jako DNS na 300 sekund**. To odblokowuje:
* ataki relay NTLM (WPAD + przejęcie DNS)
* przechwytywanie wewnętrznego rozwiązywania nazw bez dotykania routerów
* Ataki relay NTLM (WPAD + przejęcie DNS)
* Przechwytywanie wewnętrznego rozwiązywania nazw bez dotykania routerów
Typowe użycie:
```bash
sudo mitm6 -i eth0 --no-ra # only DHCPv6 poisoning
```
### Ochrony
### Ochrona
* **RA Guard / DHCPv6 Guard / ND Inspection** na zarządzanych przełącznikach.
* Port ACL, które pozwalają tylko na wysyłanie RAs przez prawidłowy adres MAC routera.
@ -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}}