CodeKitHub
Інструменти кодування

Генератор NTLM-хешів

Останнє оновлення:

NTLM-хеш обчислюється шляхом кодування ваших вхідних даних у UTF-16LE (2 байти на символ, little-endian), а потім пропускання їх через алгоритм хешування повідомлень MD4 — ця однопрохідна операція без солі є всією схемою NTLM-хешування, яку Microsoft Windows використовує з часів NT 4.0 для зберігання верифікаторів паролів. Цей інструмент виконує саме це обчислення локально у вашому браузері, повністю на JavaScript, тому ніщо з того, що ви вводите, ніколи не надсилається на сервер. Він існує для легітимної безпекової роботи — перевірки експортів NTLM-хешів з Active Directory, перевірки форматів виводу hashcat або Mimikatz, або розв'язання завдань CTF та pentesting-лабораторій — а не для атак на облікові записи, якими ви не володієте або на тестування яких не маєте дозволу.

NTLM Hash

Що це за інструмент?

NTLM (NT LAN Manager) — це застарілий протокол автентифікації Microsoft типу «виклик-відповідь», який досі використовується для локальних входів в облікові записи Windows та як резервний варіант у багатьох середовищах Active Directory. Його верифікатор пароля — зазвичай званий «NTLM-хешем» — визначений у власній специфікації протоколу MS-NLMP від Microsoft як `MD4(UTF-16-LE(password))`: пароль спочатку кодується як UTF-16 little-endian (тож кожен символ стає 2 байтами, на відміну від UTF-8), а ця послідовність байтів потім один раз хешується алгоритмом MD4 з RFC 1320.

Крок UTF-16LE — це деталь, яку найчастіше плутають при повторній реалізації NTLM: хешування UTF-8-байтів рядка замість його UTF-16LE-байтів дає абсолютно інший, неправильний дайджест, навіть якщо видимий текст виглядає ідентично. Цей інструмент кодує правильно, тому його вивід збігається з тим, що зберігає сам Windows, і з тим, що очікують такі інструменти, як hashcat (режим 1000) і Mimikatz.

Оскільки NTLM передує сучасному дизайну хешування паролів, у ньому немає жодного із захистів, які пізніше були створені спеціально для уповільнення зламу: жодної солі для окремого користувача, жодного налаштовуваного фактора складності та жодної навмисної ітерації. Це один прохід MD4, що робить обчислення надзвичайно швидким — властивість, зручна для сумісності зі старими системами, але катастрофічна з погляду стійкості до атак грубою силою та словникових атак.

Навіщо його використовувати?

  • Перевірте, чи відповідає хеш, витягнутий з бази даних Windows SAM, дампу NTDS.dit або експорту Active Directory, очікуваному значенню під час авторизованого тестування безпеки.
  • Підтвердьте своє розуміння алгоритму MS-NLMP або звірте хеш, згенерований вашим власним кодом, з відомо правильною реалізацією.
  • Генеруйте NTLM-хеші для hashcat (`-m 1000`) або тестування словників у John the Ripper в лабораторії чи CTF-середовищі, на атаку якого ви маєте дозвіл.
  • Звіряйте вивід Mimikatz чи інших pentesting-інструментів під час легітимних red-team проєктів або аудитів облікових даних.
  • 100% локально: ваші вхідні дані ніколи не залишають браузер, тому це безпечно використовувати навіть для чутливих облікових даних в авторизованій оцінці.

Як користуватися

  1. Введіть пароль або рядок, який хочете хешувати, у поле вводу.
  2. Натисніть «Generate NTLM Hash».
  3. Прочитайте 32-символьний шістнадцятковий NTLM-хеш (вивід великими літерами увімкнено за замовчуванням, що відповідає тому, як його відображають Windows і більшість інструментів для зламу — зніміть прапорець для малих літер).
  4. Натисніть «Copy», щоб скопіювати хеш у буфер обміну.

Приклад

Введення

password

Результат

8846F7EAEE8FB117AD06BDD830B7586C

Це добре відомий, незалежно перевірюваний тестовий вектор: NTLM-хеш буквального рядка «password» завжди дорівнює 8846F7EAEE8FB117AD06BDD830B7586C. Ви можете звірити вивід цього інструмента з будь-якою іншою правильною реалізацією NTLM.

NTLM проти сучасного хешування паролів

Таблиця нижче показує, чому NTLM вважається застарілим для захисту нових систем, хоча він досі залишається вбудованим у застарілу інфраструктуру Windows та Active Directory.

ВластивістьNTLMbcrypt / scrypt / Argon2
Базовий примітивОдин прохід MD4Спеціально створений повільний хеш з налаштовуваною вартістю
СолінняНемає — однакові паролі завжди хешуються однаковоУнікальна випадкова сіль на пароль
Ітерація / розтягуванняНемаєНалаштовуваний фактор складності, можна збільшувати з часом
Стійкість до грубої силиДуже слабка — мільярди спроб/с на сучасних GPUНавмисно дорого за кожну спробу
Де ще зустрічаєтьсяЗастаріла автентифікація Windows, резерв Active DirectoryНові застосунки, поточна найкраща практика

Пов'язані інструменти

Якщо вам потрібен універсальний криптографічний хеш, а не специфічна для NTLM конструкція MD4(UTF-16LE), ці інструменти можуть підійти краще.

Мультиалгоритмічний генератор хешів · Генератор MD5 · Генератор паролів

Часті запитання

Що таке NTLM-хеш насправді?

Це верифікатор пароля, який Windows обчислює та зберігає для автентифікації NT LAN Manager, визначений у специфікації MS-NLMP від Microsoft як MD4(UTF-16LE(password)) — один прохід MD4 над байтовим кодуванням пароля в UTF-16 little-endian. Він завжди має 128 біт, показаних як 32 шістнадцяткові символи.

Чому саме UTF-16LE, а не UTF-8 чи ASCII?

Windows зберігає текст внутрішньо в UTF-16LE ще з моменту проєктування NT, тому паролі теж кодуються таким чином перед хешуванням. Кожен символ стає 2 байтами (порядок байтів little-endian), включно зі звичайними ASCII-символами на кшталт 'a', які стають 0x61 0x00 замість просто 0x61. Хешування UTF-8-байтів того самого рядка дає абсолютно інший, неправильний результат — це найпоширеніша помилка в реалізаціях NTLM, написаних з нуля.

Чи безпечно використовувати NTLM сьогодні?

Ні, і сама Microsoft рекомендує переходити від нього до Kerberos, де це можливо. NTLM не має солі, тому однакові паролі завжди дають однакові хеші в усіх користувачів і систем, що уможливлює пошук за попередньо обчисленими rainbow-таблицями. Він також не має ітерації чи фактора складності — один непосолений прохід MD4 — тому сучасні GPU можуть перебирати мільярди варіантів за секунду проти перехопленого хешу. Він виживає переважно завдяки сумісності зі старішими системами та застосунками Windows.

Чим NTLM відрізняється від сучасного хешування паролів, як-от bcrypt, scrypt чи Argon2?

Сучасні засоби хешування паролів навмисно повільні й посолені: bcrypt, scrypt і Argon2 кожен додає унікальну випадкову сіль на пароль і налаштовуваний фактор витрат, який можна збільшувати з часом у міру пришвидшення обладнання, спеціально щоб зробити атаку грубою силою дорогою навіть у великому масштабі. NTLM не робить жодного з цього — він був спроєктований в епоху, коли офлайн-атаки грубою силою ще не були практичною загрозою, і це помітно. Саме тому NTLM ніколи не слід використовувати для захисту чогось, що проєктується сьогодні; реальні випадки використання цього інструмента — сумісність з наявною інфраструктурою Windows та авторизоване тестування безпеки, а не побудова нових систем.

Які легітимні випадки використання генератора NTLM-хешів?

Перевірка хешів, витягнутих з бази SAM або NTDS.dit під час авторизованого тесту на проникнення чи аудиту облікових даних; перевірка того, що ваш власний інструмент або скрипт коректно реалізує MS-NLMP; генерація тестових хешів для hashcat (режим 1000) або перевірки сумісності з форматом Mimikatz в лабораторії, яку ви контролюєте; та розв'язання CTF чи навчальних вправ, які прямо стосуються NTLM. Використання цього інструмента для атаки на облікові записи чи системи, якими ви не володієте або на письмове тестування яких не маєте дозволу, не є легітимним використанням.

Чи надсилається мій пароль або вхідні дані на сервер?

Ні. Обчислення MD4 повністю виконується на JavaScript у вашому браузері — не існує вбудованого API браузера для MD4, тому воно реалізоване безпосередньо в клієнтському коді цієї сторінки, і ніщо з того, що ви вводите, нікуди не передається.

Схожі інструменти