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
71f9678a71
commit
0cc255595d
@ -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}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user