NTLM
Основна інформація
У середовищах, де працюють Windows XP та Server 2003, використовуються хеші LM (Lan Manager), хоча загалом відомо, що їх легко компрометувати. Конкретний хеш LM, AAD3B435B51404EEAAD3B435B51404EE
, вказує на ситуацію, коли LM не використовується, що представляє хеш для порожнього рядка.
За замовчуванням, основним методом аутентифікації є протокол Kerberos. NTLM (NT LAN Manager) вступає в гру в певних обставинах: відсутність Active Directory, відсутність домену, неправильна конфігурація Kerberos або коли з'єднання намагаються встановити за допомогою IP-адреси, а не дійсного імені хоста.
Наявність заголовка "NTLMSSP" в мережевих пакетах сигналізує про процес аутентифікації NTLM.
Підтримка протоколів аутентифікації - LM, NTLMv1 та NTLMv2 - забезпечується конкретною DLL, розташованою за шляхом %windir%\Windows\System32\msv1\_0.dll
.
Основні моменти:
Хеші LM є вразливими, а порожній хеш LM (
AAD3B435B51404EEAAD3B435B51404EE
) позначає його невикористання.Kerberos є методом аутентифікації за замовчуванням, з використанням NTLM лише в певних умовах.
Пакети аутентифікації NTLM визначаються заголовком "NTLMSSP".
Протоколи LM, NTLMv1 та NTLMv2 підтримуються системним файлом
msv1\_0.dll
.
LM, NTLMv1 та NTLMv2
Ви можете перевірити та налаштувати, який протокол буде використовуватися:
GUI
Виконайте secpol.msc -> Місцеві політики -> Параметри безпеки -> Безпека мережі: рівень аутентифікації LAN Manager. Є 6 рівнів (від 0 до 5).
Реєстр
Це встановить рівень 5:
Можливі значення:
Основна схема аутентифікації домену NTLM
Користувач вводить свої вірогідності
Клієнтська машина надсилає запит на аутентифікацію, надсилаючи ім'я домену та ім'я користувача
Сервер надсилає виклик
Клієнт шифрує виклик, використовуючи хеш пароля як ключ, та надсилає його як відповідь
Сервер надсилає до контролера домену ім'я домену, ім'я користувача, виклик та відповідь. Якщо не налаштовано Active Directory або ім'я домену - це ім'я сервера, вірогідності перевіряються локально.
Контролер домену перевіряє, чи все вірно, та надсилає інформацію на сервер
Сервер та контролер домену можуть створити безпечний канал через сервер Netlogon, оскільки контролер домену знає пароль сервера (він знаходиться у базі даних NTDS.DIT).
Локальна схема аутентифікації NTLM
Аутентифікація подібна до тієї, що згадувалася раніше, але сервер знає хеш користувача, який намагається аутентифікуватися у файлі SAM. Таким чином, замість запиту до контролера домену, сервер перевірить сам, чи може користувач аутентифікуватися.
Виклик NTLMv1
Довжина виклику становить 8 байтів, а відповідь - 24 байти.
Хеш NT (16 байтів) розділений на 3 частини по 7 байтів кожна (7B + 7B + (2B+0x00*5)): остання частина заповнена нулями. Потім виклик шифрується окремо з кожною частиною, і результатуючі шифровані байти об'єднуються. Всього: 8B + 8B + 8B = 24 байти.
Проблеми:
Відсутність випадковості
3 частини можна атакувати окремо, щоб знайти хеш NT
DES можна взламати
3-й ключ завжди складається з 5 нулів.
За однакового виклику відповідь буде однаковою. Тому ви можете дати жертві виклик у вигляді рядка "1122334455667788" та атакувати відповідь, використовуючи передварно розраховані таблиці веселок.
Атака NTLMv1
Зараз стає менш поширеним знаходити середовища з налаштованою Неконтрольованою Делегацією, але це не означає, що ви не можете зловживати службу друкування.
Ви можете зловживати деякими вірогідностями/сеансами, які вже маєте в AD, щоб запросити принтер аутентифікуватися проти домашнього хоста під вашим керуванням. Потім, використовуючи metasploit auxiliary/server/capture/smb
або responder
, ви можете встановити виклик аутентифікації на 1122334455667788, захопити спробу аутентифікації, і якщо вона була виконана за допомогою NTLMv1, ви зможете її взламати.
Якщо ви використовуєте responder
, ви можете спробувати **використати прапорець --lm
** для спроби зниження рівня аутентифікації.
Зверніть увагу, що для цієї техніки аутентифікація повинна бути виконана за допомогою NTLMv1 (NTLMv2 не є дійсним).
Пам'ятайте, що принтер буде використовувати обліковий запис комп'ютера під час аутентифікації, а облікові записи комп'ютерів використовують довгі та випадкові паролі, які ви, ймовірно, не зможете взламати за допомогою звичайних словників. Але аутентифікація NTLMv1 використовує DES (додаткова інформація тут), тому використовуючи деякі служби, спеціально призначені для взлому DES, ви зможете взламати її (наприклад, ви можете використати https://crack.sh/).
Атака NTLMv1 за допомогою hashcat
NTLMv1 також можна взламати за допомогою NTLMv1 Multi Tool https://github.com/evilmog/ntlmv1-multi, який форматує повідомлення NTLMv1 таким чином, що його можна взламати за допомогою hashcat.
Команда
NTLM
NTLM Relay Attack
NTLM Relay Attack is a type of attack where an attacker captures the NTLM authentication request sent by a victim and relays it to a target server to authenticate as the victim. This attack can be used to gain unauthorized access to systems and resources.
Protecting Against NTLM Relay Attacks
To protect against NTLM Relay Attacks, it is recommended to implement SMB Signing, LDAP Signing, and Extended Protection for Authentication. Additionally, enforcing the use of Kerberos instead of NTLM can also help mitigate the risk of NTLM Relay Attacks.
NTLM
NTLM Relay Attack
NTLM relay attacks involve forwarding authentication attempts from one system to another in order to gain unauthorized access. This can be achieved by intercepting NTLM authentication traffic and relaying it to a target system, tricking it into believing the attacker is a legitimate user.
Tools for NTLM Relay Attacks
Responder: A tool used to capture NTLM authentication requests and relay them to other systems.
Impacket: A collection of Python classes for working with network protocols, including tools for NTLM relay attacks.
Mitigating NTLM Relay Attacks
To protect against NTLM relay attacks, consider implementing the following measures:
Enforce SMB Signing: Require SMB signing to prevent attackers from tampering with authentication traffic.
Enable Extended Protection for Authentication: Helps protect against NTLM relay attacks by requiring stronger authentication methods.
Disable NTLMv1: NTLMv1 is vulnerable to relay attacks, so disabling it can enhance security.
Use LDAP Signing and Channel Binding: Helps prevent relay attacks by ensuring the integrity of LDAP traffic.
By implementing these measures, organizations can reduce the risk of falling victim to NTLM relay attacks.
Запустіть hashcat (розподілений найкраще через інструмент, такий як hashtopolis), оскільки інакше це займе кілька днів.
У цьому випадку ми знаємо, що пароль до цього - password, тому ми будемо обманювати для демонстраційних цілей:
Ми зараз повинні скористатися утилітами hashcat для перетворення розкритих ключів des на частини хешу NTLM:
NTLM relay
NTLM relay attacks are a type of attack where an attacker captures the NTLM authentication process and relays it to another machine to gain unauthorized access. This attack can be performed using tools like Responder
or Impacket
.
How to protect against NTLM relay attacks?
Enforce SMB signing: By enabling SMB signing, you can protect against NTLM relay attacks as it ensures the integrity of the data being sent between machines.
Disable NTLM: Consider disabling NTLM authentication in favor of more secure protocols like Kerberos.
Use LDAP signing and channel binding: Enabling LDAP signing and channel binding can help prevent NTLM relay attacks by ensuring the integrity and confidentiality of LDAP traffic.
Implement Extended Protection for Authentication: This feature helps protect against NTLM relay attacks by requiring extended protection for authentication.
Enable SMB Encryption: Encrypting SMB traffic can also help prevent NTLM relay attacks by securing the data in transit.
Use Group Policy: Implement Group Policy settings to enforce the above security measures across your network.
By implementing these security measures, you can significantly reduce the risk of falling victim to NTLM relay attacks.
NTLM
NTLM Relay Attack
NTLM relay attacks involve forwarding authentication attempts from one system to another. This can be used to gain unauthorized access to a target system by tricking it into believing the attacker is a legitimate user. To prevent NTLM relay attacks, consider implementing protections such as SMB signing, Extended Protection for Authentication, or LDAP signing.
Виклик NTLMv2
Довжина виклику становить 8 байтів, і відсилаються 2 відповіді: одна довжиною 24 байти, а довжина іншої є змінною.
Перша відповідь створюється шифруванням за допомогою HMAC_MD5 рядка, складеного з клієнта та домену, і використанням як ключа хешу MD4 від хешу NT. Потім результат буде використаний як ключ для шифрування за допомогою HMAC_MD5 виклику. До цього буде додано клієнтський виклик довжиною 8 байтів. Всього: 24 байти.
Друга відповідь створюється за допомогою кількох значень (новий клієнтський виклик, відмітка часу для уникнення атак повторного відтворення...)
Якщо у вас є pcap, в якому зафіксований успішний процес аутентифікації, ви можете скористатися цим керівництвом, щоб отримати домен, ім'я користувача, виклик та відповідь і спробувати зламати пароль: https://research.801labs.org/cracking-an-ntlmv2-hash/
Передача хеша
Після того, як у вас є хеш жертви, ви можете використовувати його для імітації. Вам потрібно використовувати інструмент, який буде виконувати аутентифікацію NTLM, використовуючи цей хеш, або ви можете створити новий sessionlogon та впровадити цей хеш всередину LSASS, тому коли буде виконано будь-яку аутентифікацію NTLM, цей хеш буде використаний. Остання опція - це те, що робить mimikatz.
Будь ласка, пам'ятайте, що ви можете виконувати атаки передачі хеша також, використовуючи облікові записи комп'ютерів.
Mimikatz
Потрібно запускати в якості адміністратора
Це запустить процес, який належатиме користувачам, які запустили mimikatz, але в LSASS внутрішні облікові дані - це ті, що знаходяться всередині параметрів mimikatz. Потім ви зможете отримати доступ до мережевих ресурсів, ніби ви були цим користувачем (схоже на трюк runas /netonly
, але вам не потрібно знати пароль у відкритому тексті).
Pass-the-Hash з Linux
Ви можете отримати виконання коду на машинах Windows, використовуючи Pass-the-Hash з Linux. Натисніть тут, щоб дізнатися, як це зробити.
Компільовані інструменти Impacket для Windows
Ви можете завантажити бінарні файли impacket для Windows тут.
psexec_windows.exe
C:\AD\MyTools\psexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.my.domain.local
wmiexec.exe
wmiexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.dollarcorp.moneycorp.local
atexec.exe (У цьому випадку вам потрібно вказати команду, cmd.exe та powershell.exe не є дійсними для отримання інтерактивної оболонки)
C:\AD\MyTools\atexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.dollarcorp.moneycorp.local 'whoami'
Є ще кілька інших бінарних файлів Impacket...
Invoke-TheHash
Ви можете отримати сценарії PowerShell звідси: https://github.com/Kevin-Robertson/Invoke-TheHash
Invoke-SMBExec
Викликайте-WMIExec
Викликайте SMB-клієнт
Викликайте SMBEnum
Виклик-TheHash
Ця функція - суміш усіх інших. Ви можете передати кілька хостів, виключити деяких та вибрати опцію, яку ви хочете використовувати (SMBExec, WMIExec, SMBClient, SMBEnum). Якщо ви виберете будь-яку з SMBExec та WMIExec, але не вкажете параметр Command, він просто перевірить, чи у вас є достатньо дозволів.
Редактор учетных данных Windows (WCE)
Необходимо запускать от имени администратора
Этот инструмент будет делать то же самое, что и mimikatz (изменять память LSASS).
Ручне виконання віддаленого доступу до Windows з ім'ям користувача та паролем
pageLateral MovementВилучення облікових даних з хоста Windows
Для отримання додаткової інформації про отримання облікових даних з хоста Windows вам слід прочитати цю сторінку.
NTLM Relay та Responder
Докладніше про те, як виконувати ці атаки, можна прочитати тут:
pageSpoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay AttacksРозбір викликів NTLM з захоплення мережі
Ви можете скористатися https://github.com/mlgualtieri/NTLMRawUnHide
Last updated