Translated ['src/windows-hardening/ntlm/README.md'] to uk

This commit is contained in:
Translator 2025-07-18 13:21:36 +00:00
parent 0045bb0380
commit e543cf99c4
2 changed files with 27 additions and 26 deletions

View File

@ -50,6 +50,7 @@ def ref(matchobj):
pass #nDont stop on broken link
else:
try:
href = href.replace("`", "") # Prevent hrefs like: ../../generic-methodologies-and-resources/pentesting-network/`spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md`
if href.endswith("/"):
href = href+"README.md" # Fix if ref points to a folder
if "#" in href:
@ -74,7 +75,7 @@ def ref(matchobj):
logger.debug(f'Recursive title search result: {chapter["name"]}')
except Exception as e:
logger.debug(e)
logger.error(f'Error getting chapter title: {path.normpath(path.join(dir,href))}')
logger.error(f'Error getting chapter title: {path.normpath(path.join(dir,Error getting chapter title))}')
sys.exit(1)

View File

@ -7,16 +7,16 @@
В середовищах, де працюють **Windows XP та Server 2003**, використовуються LM (Lan Manager) хеші, хоча загальновідомо, що їх легко скомпрометувати. Конкретний LM хеш, `AAD3B435B51404EEAAD3B435B51404EE`, вказує на ситуацію, коли LM не використовується, представляючи хеш для порожнього рядка.
За замовчуванням, **Kerberos** є основним методом аутентифікації. NTLM (NT LAN Manager) вступає в силу за певних обставин: відсутність Active Directory, неіснування домену, несправність Kerberos через неправильну конфігурацію або коли спроби підключення здійснюються за допомогою IP-адреси замість дійсного імені хоста.
За замовчуванням, **Kerberos** є основним методом аутентифікації. NTLM (NT LAN Manager) вступає в дію за певних обставин: відсутність Active Directory, неіснування домену, несправність Kerberos через неправильну конфігурацію або коли спроби підключення здійснюються за допомогою IP-адреси замість дійсного імені хоста.
Наявність заголовка **"NTLMSSP"** в мережевих пакетах сигналізує про процес аутентифікації NTLM.
Підтримка протоколів аутентифікації - LM, NTLMv1 та NTLMv2 - забезпечується специфічною DLL, розташованою за адресою `%windir%\Windows\System32\msv1\_0.dll`.
Підтримка протоколів аутентифікації - LM, NTLMv1 та NTLMv2 - забезпечується конкретною DLL, розташованою за адресою `%windir%\Windows\System32\msv1\_0.dll`.
**Ключові моменти**:
- LM хеші вразливі, а порожній LM хеш (`AAD3B435B51404EEAAD3B435B51404EE`) свідчить про його не використання.
- Kerberos є методом аутентифікації за замовчуванням, а NTLM використовується лише за певних умов.
- Kerberos є методом аутентифікації за замовчуванням, NTLM використовується лише за певних умов.
- Пакети аутентифікації NTLM можна ідентифікувати за заголовком "NTLMSSP".
- Протоколи LM, NTLMv1 та NTLMv2 підтримуються системним файлом `msv1\_0.dll`.
@ -54,17 +54,17 @@ reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\ /v lmcompatibilitylevel /t RE
5. **Сервер надсилає** до **контролера домену** **ім'я домену, ім'я користувача, виклик та відповідь**. Якщо **немає** налаштованого Active Directory або ім'я домену є ім'ям сервера, облікові дані **перевіряються локально**.
6. **Контролер домену перевіряє, чи все вірно** і надсилає інформацію на сервер
**Сервер** та **Контролер домену** можуть створити **Безпечний канал** через сервер **Netlogon**, оскільки Контролер домену знає пароль сервера (він знаходиться в базі даних **NTDS.DIT**).
**Сервер** та **контролер домену** можуть створити **Безпечний канал** через сервер **Netlogon**, оскільки контролер домену знає пароль сервера (він знаходиться в базі даних **NTDS.DIT**).
### Локальна схема аутентифікації NTLM
Аутентифікація така ж, як і згадувалася **раніше, але** **сервер** знає **хеш користувача**, який намагається аутентифікуватися в файлі **SAM**. Тому, замість того, щоб запитувати Контролер домену, **сервер перевірить самостійно**, чи може користувач аутентифікуватися.
Аутентифікація така ж, як і згадувалася **раніше, але** **сервер** знає **хеш користувача**, який намагається аутентифікуватися в файлі **SAM**. Тому, замість того, щоб запитувати контролер домену, **сервер перевірить самостійно**, чи може користувач аутентифікуватися.
### Виклик NTLMv1
**Довжина виклику становить 8 байт**, а **відповідь має довжину 24 байти**.
**Хеш NT (16 байт)** ділиться на **3 частини по 7 байт кожна** (7B + 7B + (2B+0x00\*5)): **остання частина заповнена нулями**. Потім **виклик** **шифрується окремо** з кожною частиною, а **отримані** зашифровані байти **об'єднуються**. Всього: 8B + 8B + 8B = 24 байти.
**Хеш NT (16 байт)** ділиться на **3 частини по 7 байт кожна** (7B + 7B + (2B+0x00\*5)): **остання частина заповнена нулями**. Потім **виклик** **шифрується окремо** з кожною частиною, а **отримані** зашифровані байти **об'єднуються**. Усього: 8B + 8B + 8B = 24 байти.
**Проблеми**:
@ -82,7 +82,7 @@ reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa\ /v lmcompatibilitylevel /t RE
Якщо ви використовуєте `responder`, ви можете спробувати **використати прапор `--lm`**, щоб спробувати **знизити** **аутентифікацію**.\
_Зверніть увагу, що для цієї техніки аутентифікація повинна виконуватися за допомогою NTLMv1 (NTLMv2 не є дійсним)._
Пам'ятайте, що принтер буде використовувати обліковий запис комп'ютера під час аутентифікації, а облікові записи комп'ютерів використовують **довгі та випадкові паролі**, які ви **ймовірно не зможете зламати**, використовуючи звичайні **словники**. Але **аутентифікація NTLMv1** **використовує DES** ([більше інформації тут](#ntlmv1-challenge)), тому, використовуючи деякі служби, спеціально призначені для зламу DES, ви зможете його зламати (ви можете використовувати [https://crack.sh/](https://crack.sh) або [https://ntlmv1.com/](https://ntlmv1.com) наприклад).
Пам'ятайте, що принтер буде використовувати обліковий запис комп'ютера під час аутентифікації, а облікові записи комп'ютера використовують **довгі та випадкові паролі**, які ви **ймовірно не зможете зламати**, використовуючи звичайні **словники**. Але **аутентифікація NTLMv1** **використовує DES** ([більше інформації тут](#ntlmv1-challenge)), тому, використовуючи деякі служби, спеціально призначені для зламу DES, ви зможете її зламати (ви можете використовувати [https://crack.sh/](https://crack.sh) або [https://ntlmv1.com/](https://ntlmv1.com) наприклад).
### Атака NTLMv1 з hashcat
@ -158,16 +158,16 @@ NTHASH=b4b9b02e6f09a9bd760f388b6700586c
Довжина **виклику становить 8 байт** і **надсилаються 2 відповіді**: одна має **довжину 24 байти**, а довжина **іншої** є **змінною**.
**Перша відповідь** створюється шляхом шифрування за допомогою **HMAC_MD5** рядка, що складається з **клієнта та домену**, використовуючи в якості **ключа** хеш MD4 **NT хешу**. Потім **результат** буде використано як **ключ** для шифрування за допомогою **HMAC_MD5** **виклику**. До цього **додасться клієнтський виклик довжиною 8 байт**. Усього: 24 Б.
**Перша відповідь** створюється шляхом шифрування за допомогою **HMAC_MD5** рядка, що складається з **клієнта та домену**, використовуючи як **ключ** хеш MD4 **NT хешу**. Потім **результат** буде використаний як **ключ** для шифрування за допомогою **HMAC_MD5** **виклику**. До цього **додасться клієнтський виклик довжиною 8 байт**. Усього: 24 Б.
**Друга відповідь** створюється за допомогою **кількох значень** (новий клієнтський виклик, **часова мітка** для запобігання **атакам повтору**...)
**Друга відповідь** створюється з використанням **кількох значень** (новий клієнтський виклик, **часова мітка** для запобігання **атакам повтору**...)
Якщо у вас є **pcap, який зафіксував успішний процес аутентифікації**, ви можете слідувати цьому посібнику, щоб отримати домен, ім'я користувача, виклик і відповідь та спробувати зламати пароль: [https://research.801labs.org/cracking-an-ntlmv2-hash/](https://www.801labs.org/research-portal/post/cracking-an-ntlmv2-hash/)
## Pass-the-Hash
**Якщо у вас є хеш жертви**, ви можете використовувати його для **імітування**.\
Вам потрібно використовувати **інструмент**, який **виконає** **NTLM аутентифікацію, використовуючи** цей **хеш**, **або** ви можете створити новий **sessionlogon** і **впровадити** цей **хеш** в **LSASS**, так що коли будь-яка **NTLM аутентифікація буде виконана**, цей **хеш буде використано.** Останній варіант - це те, що робить mimikatz.
**Якщо у вас є хеш жертви**, ви можете використовувати його для **імітованої аутентифікації**.\
Вам потрібно використовувати **інструмент**, який **виконає** **NTLM аутентифікацію, використовуючи** цей **хеш**, **або** ви можете створити новий **sessionlogon** і **впровадити** цей **хеш** в **LSASS**, так що коли будь-яка **NTLM аутентифікація буде виконана**, цей **хеш буде використаний.** Останній варіант - це те, що робить mimikatz.
**Будь ласка, пам'ятайте, що ви також можете виконувати атаки Pass-the-Hash, використовуючи облікові записи комп'ютерів.**
@ -177,12 +177,12 @@ NTHASH=b4b9b02e6f09a9bd760f388b6700586c
```bash
Invoke-Mimikatz -Command '"sekurlsa::pth /user:username /domain:domain.tld /ntlm:NTLMhash /run:powershell.exe"'
```
Це запустить процес, який буде належати користувачам, що запустили mimikatz, але внутрішньо в LSASS збережені облікові дані - це ті, що всередині параметрів mimikatz. Потім ви можете отримати доступ до мережевих ресурсів так, ніби ви є тим користувачем (схоже на трюк `runas /netonly`, але вам не потрібно знати пароль у відкритому вигляді).
Це запустить процес, який буде належати користувачам, які запустили mimikatz, але внутрішньо в LSASS збережені облікові дані - це ті, що всередині параметрів mimikatz. Потім ви можете отримати доступ до мережевих ресурсів так, ніби ви є тим користувачем (схоже на трюк `runas /netonly`, але вам не потрібно знати пароль у відкритому вигляді).
### Pass-the-Hash з linux
Ви можете отримати виконання коду на Windows машинах, використовуючи Pass-the-Hash з Linux.\
[**Доступ тут, щоб дізнатися, як це зробити.**](https://github.com/carlospolop/hacktricks/blob/master/windows/ntlm/broken-reference/README.md)
[**Доступ до навчання, як це зробити.**](https://github.com/carlospolop/hacktricks/blob/master/windows/ntlm/broken-reference/README.md)
### Інструменти Impacket для Windows
@ -215,7 +215,7 @@ Invoke-SMBEnum -Domain dollarcorp.moneycorp.local -Username svcadmin -Hash b38ff
```
#### Invoke-TheHash
Ця функція є **поєднанням усіх інших**. Ви можете передати **кілька хостів**, **виключити** деяких і **вибрати** **опцію**, яку хочете використовувати (_SMBExec, WMIExec, SMBClient, SMBEnum_). Якщо ви виберете **будь-який** з **SMBExec** і **WMIExec**, але не надасте жодного _**Command**_ параметра, вона просто **перевірить**, чи у вас є **достатні дозволи**.
Ця функція є **поєднанням усіх інших**. Ви можете передати **кілька хостів**, **виключити** деяких і **вибрати** **опцію**, яку хочете використовувати (_SMBExec, WMIExec, SMBClient, SMBEnum_). Якщо ви виберете **будь-яку** з **SMBExec** і **WMIExec**, але не надасте жодного _**Command**_ параметра, вона просто **перевірить**, чи у вас є **достатні дозволи**.
```
Invoke-TheHash -Type WMIExec -Target 192.168.100.0/24 -TargetExclude 192.168.100.50 -Username Administ -ty h F6F38B793DB6A94BA04A52F1D3EE92F0
```
@ -235,15 +235,15 @@ wce.exe -s <username>:<domain>:<hash_lm>:<hash_nt>
../lateral-movement/
{{#endref}}
## Витягування облікових даних з Windows хоста
## Витягування облікових даних з Windows Host
**Для отримання додаткової інформації про** [**те, як отримати облікові дані з Windows хоста, вам слід прочитати цю сторінку**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/ntlm/broken-reference/README.md)**.**
**Для отримання додаткової інформації про** [**те, як отримати облікові дані з Windows host, вам слід прочитати цю сторінку**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/ntlm/broken-reference/README.md)**.**
## Атака внутрішнього монологу
## Атака Internal Monologue
Атака внутрішнього монологу є прихованою технікою витягування облікових даних, яка дозволяє зловмиснику отримувати NTLM хеші з машини жертви **без прямої взаємодії з процесом LSASS**. На відміну від Mimikatz, який читає хеші безпосередньо з пам'яті і часто блокується рішеннями безпеки кінцевих точок або Credential Guard, ця атака використовує **локальні виклики до пакету аутентифікації NTLM (MSV1_0) через Інтерфейс постачальника підтримки безпеки (SSPI)**. Зловмисник спочатку **знижує налаштування NTLM** (наприклад, LMCompatibilityLevel, NTLMMinClientSec, RestrictSendingNTLMTraffic), щоб забезпечити дозволеність NetNTLMv1. Потім вони підробляють існуючі токени користувачів, отримані з працюючих процесів, і запускають аутентифікацію NTLM локально, щоб згенерувати відповіді NetNTLMv1, використовуючи відомий виклик.
Атака Internal Monologue є прихованою технікою витягування облікових даних, яка дозволяє зловмиснику отримувати NTLM хеші з машини жертви **без прямої взаємодії з процесом LSASS**. На відміну від Mimikatz, який читає хеші безпосередньо з пам'яті і часто блокується рішеннями безпеки кінцевих точок або Credential Guard, ця атака використовує **локальні виклики до пакету аутентифікації NTLM (MSV1_0) через Інтерфейс постачальника підтримки безпеки (SSPI)**. Зловмисник спочатку **знижує налаштування NTLM** (наприклад, LMCompatibilityLevel, NTLMMinClientSec, RestrictSendingNTLMTraffic), щоб забезпечити дозволеність NetNTLMv1. Потім вони підробляють існуючі токени користувачів, отримані з працюючих процесів, і запускають аутентифікацію NTLM локально, щоб згенерувати відповіді NetNTLMv1, використовуючи відомий виклик.
Після захоплення цих відповідей NetNTLMv1 зловмисник може швидко відновити оригінальні NTLM хеші, використовуючи **попередньо обчислені райдужні таблиці**, що дозволяє подальші атаки Pass-the-Hash для бічного переміщення. Важливо, що атака внутрішнього монологу залишається прихованою, оскільки не генерує мережевий трафік, не інжектує код і не викликає прямі дампи пам'яті, що ускладнює виявлення для захисників у порівнянні з традиційними методами, такими як Mimikatz.
Після захоплення цих відповідей NetNTLMv1 зловмисник може швидко відновити оригінальні NTLM хеші, використовуючи **попередньо обчислені райдужні таблиці**, що дозволяє подальші атаки Pass-the-Hash для бічного переміщення. Важливо, що атака Internal Monologue залишається прихованою, оскільки не генерує мережевий трафік, не інжектує код і не викликає прямі дампи пам'яті, що ускладнює виявлення для захисників у порівнянні з традиційними методами, такими як Mimikatz.
Якщо NetNTLMv1 не приймається — через впроваджені політики безпеки, зловмисник може не змогти отримати відповідь NetNTLMv1.
@ -256,7 +256,7 @@ PoC можна знайти в **[https://github.com/eladshamir/Internal-Monolog
**Прочитайте більш детальний посібник про те, як виконати ці атаки тут:**
{{#ref}}
../../generic-methodologies-and-resources/pentesting-network/`spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md`
../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md
{{#endref}}
## Парсинг NTLM викликів з мережевого захоплення
@ -265,7 +265,7 @@ PoC можна знайти в **[https://github.com/eladshamir/Internal-Monolog
## NTLM & Kerberos *Reflection* через серіалізовані SPN (CVE-2025-33073)
Windows містить кілька заходів, які намагаються запобігти *reflection* атакам, де аутентифікація NTLM (або Kerberos), що походить з хоста, релеюється назад на **той самий** хост для отримання привілеїв SYSTEM.
Windows містить кілька заходів, які намагаються запобігти *reflection* атакам, де аутентифікація NTLM (або Kerberos), що походить з хоста, релеюється назад до **того ж** хоста для отримання привілеїв SYSTEM.
Microsoft зламав більшість публічних ланцюгів з MS08-068 (SMB→SMB), MS09-013 (HTTP→SMB), MS15-076 (DCOM→DCOM) та пізнішими патчами, однак **CVE-2025-33073** показує, що захисти все ще можуть бути обійдені шляхом зловживання тим, як **SMB клієнт обрізає Імена основних служб (SPN)**, які містять *маршалізовану* (серіалізовану) інформацію про ціль.
@ -296,17 +296,17 @@ ntlmrelayx.py -t TARGET.DOMAIN.LOCAL -smb2support
krbrelayx.py -t TARGET.DOMAIN.LOCAL -smb2support
```
### Патчі та пом'якшення
* Патч KB для **CVE-2025-33073** додає перевірку в `mrxsmb.sys::SmbCeCreateSrvCall`, яка блокує будь-яке SMB з'єднання, ціль якого містить маршалізовану інформацію (`CredUnmarshalTargetInfo``STATUS_INVALID_PARAMETER`).
* Патч KB для **CVE-2025-33073** додає перевірку в `mrxsmb.sys::SmbCeCreateSrvCall`, яка блокує будь-яке SMB з'єднання, якщо його ціль містить маршалізовану інформацію (`CredUnmarshalTargetInfo``STATUS_INVALID_PARAMETER`).
* Застосовуйте **SMB підпис** для запобігання рефлексії навіть на непатчених хостах.
* Моніторте DNS записи, що нагадують `*<base64>...*`, та блокуйте вектори примусу (PetitPotam, DFSCoerce, AuthIP...).
### Ідеї для виявлення
* Захоплення мережі з `NTLMSSP_NEGOTIATE_LOCAL_CALL`, де IP клієнта ≠ IP сервера.
* Kerberos AP-REQ, що містить підключений ключ та клієнтський принципал, рівний імені хоста.
* Журнали Windows Event 4624/4648 SYSTEM, які негайно слідують за віддаленими SMB записами з того ж хоста.
* Kerberos AP-REQ, що містить ключ підсесії та клієнтський принципал, рівний імені хоста.
* Журнали Windows Event 4624/4648 SYSTEM, які відразу ж слідують за віддаленими SMB записами з того ж хоста.
## Посилання
* [Synacktiv NTLM Reflection is Dead, Long Live NTLM Reflection!](https://www.synacktiv.com/en/publications/la-reflexion-ntlm-est-morte-vive-la-reflexion-ntlm-analyse-approfondie-de-la-cve-2025.html)
* [NTLM Reflection is Dead, Long Live NTLM Reflection!](https://www.synacktiv.com/en/publications/la-reflexion-ntlm-est-morte-vive-la-reflexion-ntlm-analyse-approfondie-de-la-cve-2025.html)
* [MSRC CVE-2025-33073](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2025-33073)
{{#include ../../banners/hacktricks-training.md}}