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
8bee3e5ec4
commit
ca28c502ab
@ -19,8 +19,8 @@ IPv6 адреси структуровані для покращення орг
|
|||||||
|
|
||||||
IPv6 також включає спеціальні типи адрес:
|
IPv6 також включає спеціальні типи адрес:
|
||||||
|
|
||||||
- **Адреса циклічного з'єднання (`::1`)**: Еквівалентна `127.0.0.1` в IPv4, для внутрішньої комунікації в межах хоста.
|
- **Адреса циклічного з'єднання (`::1`)**: Еквівалентна IPv4 `127.0.0.1`, для внутрішньої комунікації в межах хоста.
|
||||||
- **Локальні адреси зв'язку (`FE80::/10`)**: Для локальних мережевих дій, не для маршрутизації в інтернеті. Пристрої в одній локальній мережі можуть виявляти одне одного, використовуючи цей діапазон.
|
- **Локальні адреси зв'язку (`FE80::/10`)**: Для локальних мережевих дій, не для маршрутизації в інтернеті. Пристрої в одній локальній мережі можуть виявляти один одного, використовуючи цей діапазон.
|
||||||
|
|
||||||
### Практичне використання IPv6 у мережевих командах
|
### Практичне використання IPv6 у мережевих командах
|
||||||
|
|
||||||
@ -51,16 +51,16 @@ IPv6 адреси можуть бути отримані з MAC-адреси п
|
|||||||
### **Типи IPv6 адрес**
|
### **Типи IPv6 адрес**
|
||||||
|
|
||||||
- **Унікальна локальна адреса (ULA)**: Для локальних комунікацій, не призначена для маршрутизації в публічному інтернеті. Префікс: **`FEC00::/7`**
|
- **Унікальна локальна адреса (ULA)**: Для локальних комунікацій, не призначена для маршрутизації в публічному інтернеті. Префікс: **`FEC00::/7`**
|
||||||
- **Мультимовна адреса**: Для комунікації один-до-багатьох. Доставляється до всіх інтерфейсів у мультимовній групі. Префікс: **`FF00::/8`**
|
- **Мультікаст адреса**: Для комунікації один-до-багатьох. Доставляється до всіх інтерфейсів у мультікаст групі. Префікс: **`FF00::/8`**
|
||||||
- **Анкаст адреса**: Для комунікації один-до-найближчого. Надсилається до найближчого інтерфейсу відповідно до маршрутизаційного протоколу. Частина глобального унікального діапазону **`2000::/3`**.
|
- **Енікаст адреса**: Для комунікації один-до-найближчого. Надсилається до найближчого інтерфейсу відповідно до маршрутизуючого протоколу. Частина глобального унікального діапазону **`2000::/3`**.
|
||||||
|
|
||||||
### **Префікси адрес**
|
### **Префікси адрес**
|
||||||
|
|
||||||
- **fe80::/10**: Link-Local адреси (схожі на 169.254.x.x)
|
- **fe80::/10**: Link-Local адреси (схожі на 169.254.x.x)
|
||||||
- **fc00::/7**: Унікальний локальний унікаст (схожий на приватні діапазони IPv4, такі як 10.x.x.x, 172.16.x.x, 192.168.x.x)
|
- **fc00::/7**: Унікальний локальний унікаст (схожі на приватні діапазони IPv4, такі як 10.x.x.x, 172.16.x.x, 192.168.x.x)
|
||||||
- **2000::/3**: Глобальний унікаст
|
- **2000::/3**: Глобальний унікаст
|
||||||
- **ff02::1**: Мультимовна адреса для всіх вузлів
|
- **ff02::1**: Мультікаст для всіх вузлів
|
||||||
- **ff02::2**: Мультимовна адреса для маршрутизаторів
|
- **ff02::2**: Мультікаст для маршрутизаторів
|
||||||
|
|
||||||
### **Виявлення IPv6 адрес у мережі**
|
### **Виявлення IPv6 адрес у мережі**
|
||||||
|
|
||||||
@ -69,9 +69,9 @@ IPv6 адреси можуть бути отримані з MAC-адреси п
|
|||||||
1. Отримайте MAC-адресу пристрою в мережі.
|
1. Отримайте MAC-адресу пристрою в мережі.
|
||||||
2. Отримайте Link-local IPv6 адресу з MAC-адреси.
|
2. Отримайте Link-local IPv6 адресу з MAC-адреси.
|
||||||
|
|
||||||
#### Спосіб 2: Використання мультимовної адреси
|
#### Спосіб 2: Використання мультікасту
|
||||||
|
|
||||||
1. Надішліть пінг на мультимовну адресу `ff02::1`, щоб виявити IPv6 адреси в локальній мережі.
|
1. Надішліть пінг на мультікаст адресу `ff02::1`, щоб виявити IPv6 адреси в локальній мережі.
|
||||||
```bash
|
```bash
|
||||||
service ufw stop # Stop the firewall
|
service ufw stop # Stop the firewall
|
||||||
ping6 -I <IFACE> ff02::1 # Send a ping to multicast address
|
ping6 -I <IFACE> ff02::1 # Send a ping to multicast address
|
||||||
@ -79,9 +79,9 @@ ip -6 neigh # Display the neighbor table
|
|||||||
```
|
```
|
||||||
### IPv6 Man-in-the-Middle (MitM) Attacks
|
### IPv6 Man-in-the-Middle (MitM) Attacks
|
||||||
|
|
||||||
Існує кілька технік для виконання MitM атак в IPv6 мережах, таких як:
|
Існує кілька технік для виконання MitM-атак в мережах IPv6, таких як:
|
||||||
|
|
||||||
- Підробка ICMPv6 сусідів або рекламних оголошень маршрутизаторів.
|
- Підробка ICMPv6 сусідніх або маршрутизаторських оголошень.
|
||||||
- Використання ICMPv6 перенаправлень або повідомлень "Пакет занадто великий" для маніпуляції маршрутизацією.
|
- Використання ICMPv6 перенаправлень або повідомлень "Пакет занадто великий" для маніпуляції маршрутизацією.
|
||||||
- Атака на мобільний IPv6 (зазвичай вимагає вимкнення IPSec).
|
- Атака на мобільний IPv6 (зазвичай вимагає вимкнення IPSec).
|
||||||
- Налаштування підробленого DHCPv6 сервера.
|
- Налаштування підробленого DHCPv6 сервера.
|
||||||
@ -90,7 +90,7 @@ ip -6 neigh # Display the neighbor table
|
|||||||
|
|
||||||
### Exploring Subdomains
|
### Exploring Subdomains
|
||||||
|
|
||||||
Метод для знаходження піддоменів, які потенційно пов'язані з IPv6 адресами, полягає у використанні пошукових систем. Наприклад, використання шаблону запиту, такого як `ipv6.*`, може бути ефективним. Конкретно, наступна команда пошуку може бути використана в Google:
|
Метод для знаходження піддоменів, які потенційно пов'язані з адресами IPv6, полягає у використанні пошукових систем. Наприклад, використання шаблону запиту, такого як `ipv6.*`, може бути ефективним. Конкретно, наступна команда пошуку може бути використана в Google:
|
||||||
```bash
|
```bash
|
||||||
site:ipv6./
|
site:ipv6./
|
||||||
```
|
```
|
||||||
@ -98,13 +98,13 @@ site:ipv6./
|
|||||||
|
|
||||||
Щоб ідентифікувати IPv6 адреси, можна запитувати певні типи DNS записів:
|
Щоб ідентифікувати IPv6 адреси, можна запитувати певні типи DNS записів:
|
||||||
|
|
||||||
- **AXFR**: Запит на повний трансфер зони, що потенційно може виявити широкий спектр DNS записів.
|
- **AXFR**: Запит на повний трансфер зони, що потенційно виявляє широкий спектр DNS записів.
|
||||||
- **AAAA**: Безпосередньо шукає IPv6 адреси.
|
- **AAAA**: Безпосередньо шукає IPv6 адреси.
|
||||||
- **ANY**: Широкий запит, який повертає всі доступні DNS записи.
|
- **ANY**: Широкий запит, який повертає всі доступні DNS записи.
|
||||||
|
|
||||||
### Пробивання з Ping6
|
### Пробивання з Ping6
|
||||||
|
|
||||||
Після визначення IPv6 адрес, пов'язаних з організацією, можна використовувати утиліту `ping6` для пробивання. Цей інструмент допомагає оцінити реакцію виявлених IPv6 адрес і може також допомогти виявити сусідні IPv6 пристрої.
|
Після визначення IPv6 адрес, пов'язаних з організацією, можна використовувати утиліту `ping6` для пробивання. Цей інструмент допомагає оцінити реакцію виявлених IPv6 адрес і може також допомогти в знаходженні сусідніх IPv6 пристроїв.
|
||||||
|
|
||||||
## Техніки Атак на Локальну Мережу IPv6
|
## Техніки Атак на Локальну Мережу IPv6
|
||||||
|
|
||||||
@ -128,7 +128,7 @@ sudo sysctl -w net.ipv4.tcp_tw_reuse=1
|
|||||||
```
|
```
|
||||||
### Пасивне NDP та DHCPv6 Сніфінг
|
### Пасивне NDP та DHCPv6 Сніфінг
|
||||||
|
|
||||||
Оскільки кожен хост IPv6 **автоматично приєднується до кількох мультикаст-груп** (`ff02::1`, `ff02::2`, …) і використовує ICMPv6 для SLAAC/NDP, ви можете відобразити весь сегмент, не відправляючи жодного пакета. Наступний однорядковий код на Python/Scapy слухає найцікавіші L2 повідомлення та виводить кольоровий, з позначкою часу журнал того, хто є хто:
|
Оскільки кожен хост IPv6 **автоматично приєднується до кількох мультикаст-груп** (`ff02::1`, `ff02::2`, …) і використовує ICMPv6 для SLAAC/NDP, ви можете відобразити весь сегмент, не відправляючи жодного пакету. Наступний однорядковий код на Python/Scapy слухає найцікавіші L2 повідомлення та виводить кольоровий, позначений часом журнал того, хто є хто:
|
||||||
```python
|
```python
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from scapy.all import *
|
from scapy.all import *
|
||||||
@ -199,7 +199,7 @@ sniff(iface=a.interface,prn=handler,timeout=a.time or None,store=0)
|
|||||||
|
|
||||||
### Спуфінг оголошень маршрутизатора (RA)
|
### Спуфінг оголошень маршрутизатора (RA)
|
||||||
|
|
||||||
IPv6 хости покладаються на **ICMPv6 оголошення маршрутизаторів** для виявлення шлюзу за замовчуванням. Якщо ви інжектуєте підроблені RA **частіше**, ніж легітимний маршрутизатор, пристрої безшумно переключаться на вас як на шлюз.
|
IPv6 хости покладаються на **ICMPv6 оголошення маршрутизаторів** для виявлення шлюзу за замовчуванням. Якщо ви впроваджуєте підроблені RA **частіше**, ніж легітимний маршрутизатор, пристрої безшумно переключаться на вас як на шлюз.
|
||||||
```python
|
```python
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from scapy.all import *
|
from scapy.all import *
|
||||||
@ -248,7 +248,7 @@ sudo tcpdump -vvv -i eth0 'icmp6 && ip6[40] == 134' # capture Router Advertise
|
|||||||
|-----------|--------|---------|
|
|-----------|--------|---------|
|
||||||
| **High** | `10` | Клієнти надають перевагу цьому маршрутизатору над будь-яким *Medium*/*Low* |
|
| **High** | `10` | Клієнти надають перевагу цьому маршрутизатору над будь-яким *Medium*/*Low* |
|
||||||
| Medium (за замовчуванням) | `01` | Використовується майже кожним легітимним пристроєм |
|
| Medium (за замовчуванням) | `01` | Використовується майже кожним легітимним пристроєм |
|
||||||
| Low | `00` | Вибирається лише тоді, коли немає кращого маршрутизатора |
|
| Low | `00` | Обирається лише тоді, коли немає кращого маршрутизатора |
|
||||||
|
|
||||||
При генерації пакету з Scapy ви можете встановити його через параметр `prf`, як показано вище (`prf=0x1` → High). Поєднання **High Prf**, **короткого інтервалу** та **ненульового терміну служби** робить ваш зловмисний шлюз надзвичайно стабільним.
|
При генерації пакету з Scapy ви можете встановити його через параметр `prf`, як показано вище (`prf=0x1` → High). Поєднання **High Prf**, **короткого інтервалу** та **ненульового терміну служби** робить ваш зловмисний шлюз надзвичайно стабільним.
|
||||||
|
|
||||||
@ -282,7 +282,7 @@ send(ra,iface=args.interface,loop=1,inter=args.interval)
|
|||||||
|
|
||||||
Замість SLAAC, мережі Windows часто залежать від **безстанційного DHCPv6** для DNS. [mitm6](https://github.com/rofl0r/mitm6) автоматично відповідає на повідомлення `Solicit` з потоком **Advertise → Reply**, який призначає **вашу локальну адресу як DNS на 300 секунд**. Це відкриває:
|
Замість SLAAC, мережі Windows часто залежать від **безстанційного DHCPv6** для DNS. [mitm6](https://github.com/rofl0r/mitm6) автоматично відповідає на повідомлення `Solicit` з потоком **Advertise → Reply**, який призначає **вашу локальну адресу як DNS на 300 секунд**. Це відкриває:
|
||||||
|
|
||||||
* Атаки NTLM реле (WPAD + DNS хайджекінг)
|
* NTLM атаки реле (WPAD + DNS хайджекінг)
|
||||||
* Перехоплення внутрішнього розв'язання імен без втручання в маршрутизатори
|
* Перехоплення внутрішнього розв'язання імен без втручання в маршрутизатори
|
||||||
|
|
||||||
Типове використання:
|
Типове використання:
|
||||||
@ -292,7 +292,7 @@ sudo mitm6 -i eth0 --no-ra # only DHCPv6 poisoning
|
|||||||
### Захист
|
### Захист
|
||||||
|
|
||||||
* **RA Guard / DHCPv6 Guard / ND Inspection** на керованих комутаторах.
|
* **RA Guard / DHCPv6 Guard / ND Inspection** на керованих комутаторах.
|
||||||
* ACL портів, які дозволяють лише легітимній MAC-адресі маршрутизатора надсилати RAs.
|
* ACL портів, які дозволяють лише легітимному MAC-адресу маршрутизатора надсилати RAs.
|
||||||
* Моніторинг **неконтрольованих високих RAs** або раптових **змін RDNSS**.
|
* Моніторинг **неконтрольованих високих RAs** або раптових **змін RDNSS**.
|
||||||
* Вимкнення IPv6 на кінцевих пристроях є тимчасовим рішенням, яке часто порушує роботу сучасних сервісів і приховує сліпі зони – віддавайте перевагу L2 фільтрації.
|
* Вимкнення IPv6 на кінцевих пристроях є тимчасовим рішенням, яке часто порушує роботу сучасних сервісів і приховує сліпі зони – віддавайте перевагу L2 фільтрації.
|
||||||
|
|
||||||
|
|||||||
@ -4,9 +4,10 @@
|
|||||||
|
|
||||||
## Pentesting Cisco Networks
|
## Pentesting Cisco Networks
|
||||||
|
|
||||||
**SNMP** функціонує через UDP з портами **161/UDP** для загальних повідомлень та **162/UDP** для повідомлень про трепи. Цей протокол покладається на *community strings*, які слугують у вигляді простих "паролів", що дозволяють зв'язок між SNMP агентами та менеджерами. Ці рядки визначають рівень доступу, зокрема **тільки для читання (RO) або читання та запису (RW) дозволи**.
|
**SNMP** функціонує через UDP з портами **161/UDP** для загальних повідомлень та **162/UDP** для повідомлень про трепи. Цей протокол покладається на *рядки спільноти*, які слугують у вигляді відкритих "паролів", що дозволяють зв'язок між SNMP агентами та менеджерами. Ці рядки визначають рівень доступу, зокрема **тільки для читання (RO) або читання-запису (RW) дозволи**.
|
||||||
|
|
||||||
Класичний — але все ще надзвичайно ефективний — вектор атаки полягає в **брутфорсингу community strings** для підвищення з неавтентифікованого користувача до адміністратора пристрою (RW community). Практичним інструментом для цього завдання є [**onesixtyone**](https://github.com/trailofbits/onesixtyone):
|
Класичний — але все ще надзвичайно ефективний — вектор атаки полягає в **брутфорсингу рядків спільноти** з метою підвищення з неавторизованого користувача до адміністратора пристрою (RW спільнота).
|
||||||
|
Практичний інструмент для цього завдання — [**onesixtyone**](https://github.com/trailofbits/onesixtyone):
|
||||||
```bash
|
```bash
|
||||||
onesixtyone -c community_strings.txt -i targets.txt
|
onesixtyone -c community_strings.txt -i targets.txt
|
||||||
```
|
```
|
||||||
@ -40,11 +41,11 @@ snmpset -v2c -c private 192.168.66.1 \
|
|||||||
```
|
```
|
||||||
Ідентифікатори рядків є *однократними*; повторне використання протягом п'яти хвилин викликає помилки `inconsistentValue`.
|
Ідентифікатори рядків є *однократними*; повторне використання протягом п'яти хвилин викликає помилки `inconsistentValue`.
|
||||||
|
|
||||||
Як тільки файл буде на вашому TFTP сервері, ви зможете перевірити облікові дані (`enable secret`, `username <user> secret` тощо) або навіть надіслати змінену конфігурацію назад на пристрій.
|
Як тільки файл буде на вашому TFTP сервері, ви зможете перевірити облікові дані (`enable secret`, `username <user> secret` тощо) або навіть надіслати модифіковану конфігурацію назад на пристрій.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Метасploit корисності
|
### Metasploit goodies
|
||||||
|
|
||||||
* **`cisco_config_tftp`** – завантажує running-config/startup-config через TFTP після зловживання тією ж MIB.
|
* **`cisco_config_tftp`** – завантажує running-config/startup-config через TFTP після зловживання тією ж MIB.
|
||||||
* **`snmp_enum`** – збирає інформацію про інвентаризацію пристроїв, VLAN, описи інтерфейсів, таблиці ARP тощо.
|
* **`snmp_enum`** – збирає інформацію про інвентаризацію пристроїв, VLAN, описи інтерфейсів, таблиці ARP тощо.
|
||||||
@ -62,8 +63,8 @@ run
|
|||||||
| Рік | CVE | Вразлива функція | Вплив |
|
| Рік | CVE | Вразлива функція | Вплив |
|
||||||
|------|-----|-----------------|--------|
|
|------|-----|-----------------|--------|
|
||||||
| 2025 | CVE-2025-20174 | Підсистема SNMP | Сформований пакет призводить до автентифікованого *DoS* (перезавантаження) на IOS/IOS-XE (v1/v2c/v3). |
|
| 2025 | CVE-2025-20174 | Підсистема SNMP | Сформований пакет призводить до автентифікованого *DoS* (перезавантаження) на IOS/IOS-XE (v1/v2c/v3). |
|
||||||
| 2024 | CVE-2024-20373 | Обробка IPv4 ACL | Неправильно налаштовані **розширені** ACL тихо *падають*, дозволяючи неавтентифіковане опитування SNMP, коли відома дійсна спільнота/користувач. |
|
| 2024 | CVE-2024-20373 | Обробка ACL IPv4 | Неправильно налаштовані **розширені** ACL тихо *падають*, дозволяючи неавтентифіковане опитування SNMP, коли відома дійсна спільнота/користувач. |
|
||||||
| 2025 | (немає CVE поки) | Обхід обмеження конфігурації SNMPv3 | Дійсний користувач v3 може опитувати з адрес, які повинні бути заборонені. |
|
| 2025 | (немає CVE поки) | Обхід обмеження конфігурації SNMPv3 | Дійсний v3 користувач може опитувати з адрес, які повинні бути заборонені. |
|
||||||
|
|
||||||
Експлуатованість часто все ще залежить від наявності рядка спільноти або облікових даних v3 — ще одна причина, чому їх брутфорсинг залишається актуальним.
|
Експлуатованість часто все ще залежить від наявності рядка спільноти або облікових даних v3 — ще одна причина, чому їх брутфорсинг залишається актуальним.
|
||||||
|
|
||||||
@ -77,13 +78,13 @@ run
|
|||||||
snmp-server group SECURE v3 priv
|
snmp-server group SECURE v3 priv
|
||||||
snmp-server user monitor SECURE v3 auth sha <authpass> priv aes 256 <privpass>
|
snmp-server user monitor SECURE v3 auth sha <authpass> priv aes 256 <privpass>
|
||||||
```
|
```
|
||||||
* Прив'яжіть SNMP до управлінського VRF та **обмежте за допомогою *стандартних* нумерованих IPv4 ACL** (розширені іменовані ACL є ризикованими – CVE-2024-20373).
|
* Прив'яжіть SNMP до управлінського VRF та **обмежте за допомогою *стандартних* нумерованих ACL IPv4** (розширені іменовані ACL є ризикованими – CVE-2024-20373).
|
||||||
* Вимкніть **RW спільноти**; якщо це необхідно для роботи, обмежте їх за допомогою ACL та переглядів:
|
* Вимкніть **RW спільноти**; якщо це необхідно для роботи, обмежте їх за допомогою ACL та переглядів:
|
||||||
`snmp-server community <string> RW 99 view SysView`
|
`snmp-server community <string> RW 99 view SysView`
|
||||||
* Моніторте:
|
* Моніторте:
|
||||||
- Сплески UDP/161 або несподівані джерела (правила SIEM).
|
- Сплески UDP/161 або несподівані джерела (правила SIEM).
|
||||||
- Події `CISCO-CONFIG-MAN-MIB::ccmHistoryEventConfigSource`, що вказують на зміни конфігурації поза межами каналу.
|
- Події `CISCO-CONFIG-MAN-MIB::ccmHistoryEventConfigSource`, що вказують на зміни конфігурації поза межами каналу.
|
||||||
* Увімкніть **SNMPv3 логування** та `snmp-server packetsize 1500`, щоб зменшити певні вектори DoS.
|
* Увімкніть **SNMPv3 журналювання** та `snmp-server packetsize 1500`, щоб зменшити певні вектори DoS.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user