Kaj je to orodje?
NTLM (NT LAN Manager) je Microsoftov starejši protokol za avtentikacijo tipa izziv-odziv, ki se še danes uporablja za lokalne prijave v Windows in kot rezervna možnost v številnih okoljih Active Directory. Njegov preveritvenik gesla — običajno imenovan „NTLM zgoščena vrednost“ — je opredeljen v Microsoftovi lastni specifikaciji protokola MS-NLMP kot `MD4(UTF-16-LE(password))`: geslo je najprej kodirano kot UTF-16 little-endian (tako da vsak znak postane 2 bajta, za razliko od UTF-8), to zaporedje bajtov pa se nato enkrat zgosti z algoritmom MD4 iz RFC 1320.
Korak UTF-16LE je podrobnost, ki jo večina ljudi napačno izvede pri ponovnem implementiranju NTLM: zgoščevanje UTF-8 bajtov niza namesto njegovih UTF-16LE bajtov ustvari popolnoma drugačen, napačen povzetek, čeprav je viden besedilo videti enako. To orodje kodira pravilno, zato se njegov izhod ujema s tem, kar shranjuje sam Windows in kar pričakujejo orodja, kot sta hashcat (način 1000) in Mimikatz.
Ker je NTLM starejši od sodobnega oblikovanja zgoščevanja gesel, nima nobene od zaščit, ki so bile pozneje zgrajene posebej za upočasnitev razbijanja: brez soli za posameznega uporabnika, brez nastavljivega delovnega faktorja in brez namernega ponavljanja. Gre za en sam prehod MD4, zaradi česar je izračun izjemno hiter — lastnost, ki je priročna za zagotavljanje združljivosti s starejšimi sistemi, a katastrofalna za odpornost proti napadom s surovo silo in slovarskim napadom.
Zakaj ga uporabiti?
- Preverite, ali se zgoščena vrednost, pridobljena iz zbirke podatkov Windows SAM, izpisa NTDS.dit ali izvoza Active Directory, ujema s pričakovano vrednostjo med pooblaščenim varnostnim testiranjem.
- Potrdite svoje razumevanje algoritma MS-NLMP ali preverite zgoščeno vrednost, ki jo je ustvarila vaša lastna koda, glede na znano pravilno implementacijo.
- Ustvarite NTLM zgoščene vrednosti za hashcat (`-m 1000`) ali testiranje s seznami besed v John the Ripper v laboratoriju ali okolju CTF, za napad na katerega ste pooblaščeni.
- Navzkrižno preverite izhod Mimikatz ali drugih pentesting orodij med legitimnimi red-team ali revizijskimi projekti poverilnic.
- 100 % lokalno: vaš vnos nikoli ne zapusti brskalnika, zato je varen za uporabo tudi za občutljivo gradivo poverilnic pri pooblaščeni oceni.
Kako ga uporabljati
- Vnesite geslo ali niz, ki ga želite zgostiti, v vnosno polje.
- Kliknite „Generate NTLM Hash“.
- Preberite 32-mestno šestnajstiško NTLM zgoščeno vrednost (izhod z velikimi črkami je privzeto vklopljen, kar ustreza načinu prikaza v Windows in večini orodij za razbijanje — odkljukajte polje za male črke).
- Kliknite „Copy“, da kopirate zgoščeno vrednost v odložišče.
Primer
Vnos
passwordRezultat
8846F7EAEE8FB117AD06BDD830B7586CTo je dobro znan, neodvisno preverljiv testni vektor: NTLM zgoščena vrednost dobesednega niza „password“ je vedno 8846F7EAEE8FB117AD06BDD830B7586C. Izhod tega orodja lahko preverite glede na katero koli drugo pravilno implementacijo NTLM.
NTLM v primerjavi s sodobnim zgoščevanjem gesel
Spodnja tabela poudarja, zakaj velja NTLM za zastarelega za zaščito novih sistemov, čeprav ostaja vgrajen v starejšo infrastrukturo Windows in Active Directory.
| Lastnost | NTLM | bcrypt / scrypt / Argon2 |
|---|---|---|
| Osnovni primitiv | En prehod MD4 | Namensko zasnovana počasna zgoščena vrednost z nastavljivim stroškom |
| Soljenje | Brez — enaka gesla se vedno enako zgostijo | Edinstvena naključna sol za vsako geslo |
| Ponavljanje / raztezanje | Brez | Nastavljiv delovni faktor, ki se lahko sčasoma poveča |
| Odpornost proti surovi sili | Zelo šibka — milijarde poskusov/s na sodobnih GPE | Namerno drago za vsak poskus |
| Kje se še vedno pojavlja | Starejša avtentikacija Windows, rezervna možnost Active Directory | Nove aplikacije, trenutna najboljša praksa |
Sorodna orodja
Če potrebujete splošno kriptografsko zgoščeno vrednost namesto konstrukcije MD4(UTF-16LE), specifične za NTLM, so ta orodja morda boljša izbira.
→ Generator zgoščenih vrednosti z več algoritmi · Generator MD5 · Generator gesel
Pogosta vprašanja
Kaj natančno je NTLM zgoščena vrednost?
To je preveritvenik gesla, ki ga Windows izračuna in shrani za avtentikacijo NT LAN Manager, opredeljen v Microsoftovi specifikaciji MS-NLMP kot MD4(UTF-16LE(password)) — en prehod MD4 čez bajtno kodiranje gesla v UTF-16 little-endian. Vedno je dolga 128 bitov, prikazana kot 32 šestnajstiških znakov.
Zakaj ravno UTF-16LE, ne pa UTF-8 ali ASCII?
Windows interno shranjuje besedilo v UTF-16LE že od zasnove NT, zato se tudi gesla pred zgoščevanjem kodirajo na ta način. Vsak znak postane 2 bajta (vrstni red bajtov little-endian), vključno z navadnimi znaki ASCII, kot je 'a', ki postane 0x61 0x00 namesto zgolj 0x61. Zgoščevanje UTF-8 bajtov istega niza ustvari popolnoma drugačen, napačen rezultat — to je najpogostejša napaka pri implementacijah NTLM, napisanih od začetka.
Ali je NTLM danes varno uporabljati?
Ne, in tudi Microsoft sam priporoča prehod z njega na Kerberos, kjer je to mogoče. NTLM nima soli, zato enaka gesla vedno ustvarijo enake zgoščene vrednosti pri vseh uporabnikih in sistemih, kar omogoča iskanje z vnaprej izračunanimi mavričnimi tabelami. Prav tako nima ponavljanja ali delovnega faktorja — en sam nesoljen prehod MD4 — zato lahko sodobne grafične kartice preizkusijo milijarde ugibanj na sekundo proti prestreženi zgoščeni vrednosti. Preživi predvsem zaradi združljivosti s starejšimi sistemi in aplikacijami Windows.
Kako se NTLM razlikuje od sodobnega zgoščevanja gesel, kot so bcrypt, scrypt ali Argon2?
Sodobni sistemi za zgoščevanje gesel so namerno počasni in soljeni: bcrypt, scrypt in Argon2 vsak dodajo edinstveno naključno sol za vsako geslo in nastavljiv faktor stroška, ki ga je mogoče sčasoma povečati, ko se strojna oprema pospešuje, prav zato, da bi napad s surovo silo podražili tudi v velikem obsegu. NTLM ne stori nobenega od tega — zasnovan je bil v času, preden je bilo offline razbijanje s surovo silo praktična grožnja, in to je opazno. Zato NTLM nikoli ne bi smel biti uporabljen za zaščito česar koli, kar se zasnuje danes; resnični primeri uporabe tega orodja so združljivost z obstoječo infrastrukturo Windows in pooblaščeno varnostno testiranje, ne gradnja novih sistemov.
Kakšne so legitimne uporabe generatorja NTLM zgoščenih vrednosti?
Preverjanje zgoščenih vrednosti, pridobljenih iz zbirke podatkov SAM ali NTDS.dit med pooblaščenim penetracijskim testom ali revizijo poverilnic; preverjanje, ali vaše lastno orodje ali skripta pravilno izvaja MS-NLMP; ustvarjanje testnih zgoščenih vrednosti za hashcat (način 1000) ali preverjanje združljivosti s formatom Mimikatz v laboratoriju, ki ga nadzorujete; ter reševanje CTF ali usposabljalnih vaj, ki izrecno vključujejo NTLM. Uporaba tega orodja za napad na račune ali sisteme, ki jih ne posedujete ali za katere nimate pisnega pooblastila za testiranje, ni legitimna uporaba.
Ali je moje geslo ali vnos poslan na strežnik?
Ne. Izračun MD4 poteka v celoti v JavaScriptu v vašem brskalniku — za MD4 ne obstaja noben vgrajen API brskalnika, zato je implementiran neposredno v odjemalski kodi te strani, in ničesar, kar vnesete, se nikamor ne prenaša.