Какво представлява този инструмент?
NTLM (NT LAN Manager) е остарелият протокол на Microsoft за автентикация тип „предизвикателство-отговор“, все още използван днес за влизане в локални Windows акаунти и като резервен вариант в много среди на Active Directory. Верификаторът на пароли — обикновено наричан „NTLM хешът“ — е дефиниран в собствената спецификация на Microsoft MS-NLMP като `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 или други pentest инструменти по време на легитимни red-team ангажименти или одити на идентификационни данни.
- 100% локално: вашият вход никога не напуска браузъра, така че е безопасно за използване дори за чувствителни идентификационни данни при оторизирана оценка.
Как да го използвате
- Въведете паролата или низа, който искате да хеширате, в полето за въвеждане.
- Кликнете „Генерирай NTLM хеш“.
- Прочетете 32-символния шестнадесетичен NTLM хеш (изходът с главни букви е включен по подразбиране, съответстващ на начина, по който Windows и повечето инструменти за кракване го показват — премахнете отметката за малки букви).
- Кликнете „Копирай“, за да копирате хеша в клипборда.
Пример
Вход
passwordРезултат
8846F7EAEE8FB117AD06BDD830B7586CТова е добре известен, независимо проверим тестов вектор: NTLM хешът на буквалния низ „password“ винаги е 8846F7EAEE8FB117AD06BDD830B7586C. Можете да проверите изхода на този инструмент спрямо всяка друга коректна NTLM реализация.
NTLM срещу съвременно хеширане на пароли
Таблицата по-долу подчертава защо NTLM се смята за остарял за защита на нови системи, въпреки че остава вграден в наследената Windows и Active Directory инфраструктура.
| Свойство | NTLM | bcrypt / scrypt / Argon2 |
|---|---|---|
| Основна примитива | Единичен проход на MD4 | Специално проектиран бавен хеш с настройваема цена |
| Осоляване | Няма — идентични пароли винаги се хешират еднакво | Уникална случайна сол за всяка парола |
| Итерация / разтягане | Няма | Конфигурируем фактор на работа, увеличаем с времето |
| Устойчивост на груба сила | Много слаба — милиарди предположения/сек на съвременни GPU | Умишлено скъпо за всяко предположение |
| Къде все още се среща | Наследена Windows автентикация, резервен вариант за Active Directory | Нови приложения, текущи най-добри практики |
Свързани инструменти
Ако имате нужда от общ криптографски хеш, а не от специфичната за NTLM конструкция MD4(UTF-16LE), тези инструменти може да са по-подходящи.
→
Често задавани въпроси
Какво точно представлява NTLM хешът?
Това е верификаторът на паролата, който Windows изчислява и съхранява за автентикация чрез NT LAN Manager, дефиниран в спецификацията на Microsoft MS-NLMP като 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, така че то е реализирано директно в клиентския код на тази страница, и нищо от това, което въвеждате, не се предава никъде.