CodeKitHub
Алати за кодирање

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

Poslednje ažurirano:

NTLM хеш се израчунава кодирањем вашег уноса у UTF-16LE (2 бајта по знаку, little-endian), а затим пропуштањем кроз алгоритам за сажимање порука MD4 — та једнопролазна операција без соли представља целу NTLM шему хеширања коју Microsoft Windows користи још од NT 4.0 за чување верификатора лозинки. Овај алат врши тачно тај прорачун локално у вашем прегледачу, у потпуности у JavaScript-у, тако да ништа што унесете никада не иде на сервер. Постоји ради легитимног безбедносног рада — провере извоза NTLM хешева из Active Directory-ја, провере излазних формата hashcat или Mimikatz, или решавања CTF и pentesting лабораторијских задатака — а не за нападе на налоге које не поседујете или за чије тестирање немате овлашћење.

NTLM Hash

Šta je ovaj alat?

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, што га чини изузетно брзим за израчунавање — особина која је погодна за компатибилност са старијим системима, али катастрофална за отпорност на нападе грубом силом и речничке нападе.

Zašto ga koristiti?

  • Проверите да ли се хеш извучен из Windows SAM базе, NTDS.dit дампа или Active Directory извоза поклапа са очекиваном вредношћу током овлашћеног безбедносног тестирања.
  • Потврдите своје разумевање алгоритма MS-NLMP, или проверите хеш који је произвео ваш сопствени код, у односу на познато исправну имплементацију.
  • Генеришите NTLM хешеве за hashcat (`-m 1000`) или тестирање речника у John the Ripper у лабораторији или CTF окружењу за чији напад имате овлашћење.
  • Унакрсно проверите излаз Mimikatz или других pentesting алата током легитимних red-team или ревизијских пројеката приступних података.
  • 100% локално: ваш унос никада не напушта прегледач, тако да је безбедно за коришћење чак и за осетљив материјал приступних података у овлашћеној процени.

Kako se koristi

  1. Унесите лозинку или ниску коју желите да хеширате у поље за унос.
  2. Кликните на „Generate NTLM Hash“.
  3. Прочитајте 32-знаковни хексадецимални NTLM хеш (излаз великим словима је подразумевано укључен, што одговара начину на који га приказују Windows и већина алата за разбијање — искључите поље за мала слова).
  4. Кликните на „Copy“ да бисте копирали хеш у клипборд.

Primer

Unos

password

Rezultat

8846F7EAEE8FB117AD06BDD830B7586C

Ово је добро познат, независно проверљив тест-вектор: NTLM хеш дословне ниске „password“ увек је 8846F7EAEE8FB117AD06BDD830B7586C. Излаз овог алата можете проверити у односу на било коју другу исправну NTLM имплементацију.

NTLM у поређењу са модерним хеширањем лозинки

Табела испод истиче зашто се NTLM сматра застарелим за заштиту нових система, иако остаје уграђен у старију Windows и Active Directory инфраструктуру.

ОсобинаNTLMbcrypt / scrypt / Argon2
Основни примитивЈедан пролаз MD4Наменски спор хеш са подесивим трошком
СољењеНема — идентичне лозинке се увек хеширају идентичноЈединствена насумична со по лозинки
Итерација / развлачењеНемаПодесив фактор рада, могуће повећање временом
Отпорност на грубу силуВрло слаба — милијарде погађања/с на модерним GPU-овимаНамерно скупо по покушају
Где се још увек налазиСтарија Windows аутентификација, Active Directory резерваНове апликације, тренутна најбоља пракса

Слични алати

Ако вам треба општенаменски криптографски хеш, а не NTLM-специфична конструкција MD4(UTF-16LE), ови алати могу бити боље решење.

Često postavljana pitanja

Шта тачно представља 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 током овлашћеног penetration теста или ревизије приступних података; провера да ли ваш сопствени алат или скрипта исправно имплементира MS-NLMP; генерисање тест хешева за hashcat (режим 1000) или провере компатибилности Mimikatz формата у лабораторији коју контролишете; и решавање CTF или тренинг вежби које изричито укључују NTLM. Коришћење овог алата за напад на налоге или системе које не поседујете или за чије тестирање немате писано овлашћење није легитимна употреба.

Да ли се моја лозинка или унос шаљу на сервер?

Не. Израчунавање MD4 се у потпуности одвија у JavaScript-у у вашем прегледачу — не постоји нативни API прегледача за MD4, тако да је имплементиран директно у клијентском коду ове странице, и ништа што унесете се нигде не преноси.