CodeKitHub
Kódoló eszközök

NTLM Hash Generátor

Utolsó frissítés:

Az NTLM hash úgy számítódik ki, hogy a bemenetet UTF-16LE kódolással kódolják (2 bájt karakterenként, little-endian sorrendben), majd az MD4 üzenetkivonatoló algoritmuson futtatják át — ez az egylépéses, só nélküli művelet az egész NTLM hashelési séma, amelyet a Microsoft Windows az NT 4.0 óta használ a jelszó-ellenőrzők tárolására. Ez az eszköz pontosan ezt a számítást végzi el helyben, a böngészőjében, teljes egészében JavaScriptben, így semmi, amit beír, nem kerül soha szerverre. Legitim biztonsági munkára szolgál — Active Directory hash-exportok ellenőrzésére, hashcat vagy Mimikatz kimeneti formátumok vizsgálatára, vagy CTF és pentesztelési labor feladatok megoldására —, nem pedig olyan fiókok megtámadására, amelyek nem az önéi, vagy amelyek tesztelésére nincs felhatalmazása.

NTLM Hash

Mi ez az eszköz?

Az NTLM (NT LAN Manager) a Microsoft elavult kihívás-válasz alapú hitelesítési protokollja, amelyet ma is használnak a helyi Windows-fiókokba való bejelentkezéshez, és számos Active Directory környezetben tartalék megoldásként. Jelszó-ellenőrzőjét — köznapi nevén „NTLM hash” — a Microsoft saját MS-NLMP protokollspecifikációja `MD4(UTF-16-LE(password))`-ként határozza meg: a jelszót először UTF-16 little-endian formátumban kódolják (így minden karakter 2 bájt lesz, ellentétben az UTF-8-cal), majd ezt a bájtsorozatot egyszer hasheli az RFC 1320-ból származó MD4 algoritmus.

Az UTF-16LE lépés az a részlet, amit a legtöbben elrontanak az NTLM újraimplementálásakor: egy karakterlánc UTF-8 bájtjainak hashelése az UTF-16LE bájtok helyett teljesen más, hibás lenyomatot eredményez, még akkor is, ha a látható szöveg azonosnak tűnik. Ez az eszköz helyesen kódol, így a kimenete megegyezik azzal, amit maga a Windows tárol, és amit az olyan eszközök várnak, mint a hashcat (1000-es mód) és a Mimikatz.

Mivel az NTLM megelőzi a modern jelszó-hashelési tervezést, egyáltalán nem rendelkezik azokkal a védelmekkel, amelyeket később kifejezetten a feltörés lassítására építettek: nincs felhasználónkénti só, nincs konfigurálható munkatényező, és nincs szándékos iteráció. Egyetlen MD4 lépésről van szó, ami rendkívül gyorssá teszi a kiszámítását — ez a tulajdonság kényelmes a régi rendszerekkel való kompatibilitáshoz, de katasztrofális a brute-force és szótári támadásokkal szembeni ellenálláshoz.

Miért érdemes használni?

  • Ellenőrizze, hogy egy Windows SAM adatbázisból, NTDS.dit dumpból vagy Active Directory exportból kinyert hash megegyezik-e a várt értékkel egy engedélyezett biztonsági teszt során.
  • Erősítse meg az MS-NLMP algoritmus megértését, vagy ellenőrizze a saját kódja által generált hash-t egy ismerten helyes implementációval szemben.
  • Generáljon NTLM hash-eket a hashcat (`-m 1000`) vagy a John the Ripper szótáras teszteléséhez egy olyan labor- vagy CTF-környezetben, amelynek megtámadására fel van hatalmazva.
  • Végezzen kereszt-ellenőrzést a Mimikatz vagy más pentesztelő eszközök kimenetén legitim red-team vagy hitelesítő-adat auditáló megbízások során.
  • 100%-ban helyi: a bemenete soha nem hagyja el a böngészőt, így biztonságosan használható még érzékeny hitelesítő adatokhoz is egy engedélyezett felmérés keretében.

Használati útmutató

  1. Írja be a hashelni kívánt jelszót vagy karakterláncot a beviteli mezőbe.
  2. Kattintson az „NTLM hash generálása” gombra.
  3. Olvassa el a 32 karakteres hexadecimális NTLM hash-t (a nagybetűs kimenet alapértelmezés szerint be van kapcsolva, ami megfelel annak, ahogy a Windows és a legtöbb feltörő eszköz megjeleníti — vegye ki a jelölést a kisbetűs megjelenítéshez).
  4. Kattintson a „Másolás” gombra a hash vágólapra másolásához.

Példa

Bemenet

password

Kimenet

8846F7EAEE8FB117AD06BDD830B7586C

Ez egy jól ismert, függetlenül ellenőrizhető tesztvektor: a „password” szó szerinti karakterlánc NTLM hash-e mindig 8846F7EAEE8FB117AD06BDD830B7586C. Ellenőrizheti ennek az eszköznek a kimenetét bármely más helyes NTLM implementációval szemben.

NTLM vs. modern jelszó-hashelés

Az alábbi táblázat kiemeli, hogy az NTLM miért tekinthető elavultnak új rendszerek védelméhez, még akkor is, ha továbbra is beépülve marad a régi Windows és Active Directory infrastruktúrákba.

TulajdonságNTLMbcrypt / scrypt / Argon2
Alapvető primitívaEgyetlen MD4 lépésCélzottan lassúra tervezett hash állítható költséggel
SózásNincs — az azonos jelszavak mindig azonosan hashelődnekJelszavanként egyedi, véletlenszerű só
Iteráció / nyújtásNincsKonfigurálható munkatényező, idővel növelhető
Brute-force ellenállásNagyon gyenge — milliárd próbálkozás/mp modern GPU-konSzándékosan drága próbálkozásonként
Hol található mégRégi Windows hitelesítés, Active Directory tartalékÚj alkalmazások, jelenlegi legjobb gyakorlat

Kapcsolódó eszközök

Ha általános célú kriptográfiai hash-re van szüksége az NTLM-specifikus MD4(UTF-16LE) konstrukció helyett, ezek az eszközök jobban megfelelhetnek.

Több algoritmusos hash generátor · MD5 generátor · Jelszógenerátor

Gyakori kérdések

Pontosan mi az az NTLM hash?

Ez az a jelszó-ellenőrző, amelyet a Windows kiszámít és tárol az NT LAN Manager hitelesítéshez, a Microsoft MS-NLMP specifikációjában MD4(UTF-16LE(password))-ként meghatározva — egyetlen MD4 lépés a jelszó UTF-16 little-endian bájtkódolásán. Mindig 128 bites, 32 hexadecimális karakterként jelenik meg.

Miért pont UTF-16LE, és nem UTF-8 vagy ASCII?

A Windows a szöveget belsőleg UTF-16LE formátumban tárolja az NT tervezése óta, ezért a jelszavakat is így kódolják hashelés előtt. Minden karakter 2 bájt lesz (little-endian bájtsorrend), beleértve az egyszerű ASCII karaktereket, mint az 'a', amelyek 0x61 0x00-vá válnak, nem csupán 0x61-gyé. Ugyanannak a karakterláncnak az UTF-8 bájtjainak hashelése teljesen más, hibás eredményt ad — ez a leggyakoribb hiba a nulláról írt NTLM implementációkban.

Biztonságos-e ma az NTLM használata?

Nem, és maga a Microsoft is azt javasolja, hogy ahol lehetséges, térjenek át a Kerberosra. Az NTLM nem használ sót, így az azonos jelszavak mindig azonos hash-eket eredményeznek minden felhasználónál és rendszeren, ami lehetővé teszi az előre kiszámított rainbow tábla alapú kereséseket. Nincs iterációja vagy munkatényezője sem — egyetlen só nélküli MD4 lépésről van szó —, így a modern GPU-k másodpercenként milliárdnyi próbálkozást tudnak végezni egy megszerzett hash ellen. Elsősorban a régebbi Windows rendszerekkel és alkalmazásokkal való kompatibilitás miatt marad fenn.

Miben különbözik az NTLM a modern jelszó-hasheléstől, mint a bcrypt, scrypt vagy Argon2?

A modern jelszó-hashelő eszközök szándékosan lassúak és sózottak: a bcrypt, a scrypt és az Argon2 mindegyike jelszavanként egyedi, véletlenszerű sót és állítható költségtényezőt ad hozzá, amelyet idővel növelni lehet, ahogy a hardver gyorsabbá válik, kifejezetten azért, hogy a brute-force támadás nagy léptékben is drága legyen. Az NTLM egyiket sem teszi — abban a korban tervezték, mielőtt az offline brute-force gyakorlati fenyegetési modellé vált volna, és ez meg is látszik rajta. Pontosan ezért az NTLM-et soha nem szabad felhasználni bármi ma tervezett dolog védelmére; ennek az eszköznek a valódi felhasználási esetei a meglévő Windows infrastruktúrával való kompatibilitás és az engedélyezett biztonsági tesztelés, nem pedig új rendszerek építése.

Melyek az NTLM hash generátor legitim felhasználási módjai?

Egy SAM adatbázisból vagy NTDS.dit-ből kinyert hash-ek ellenőrzése egy engedélyezett penetrációs teszt vagy hitelesítő-adat audit során; annak ellenőrzése, hogy a saját eszközei vagy szkriptjei helyesen valósítják-e meg az MS-NLMP-t; teszt hash-ek generálása a hashcat (1000-es mód) vagy a Mimikatz formátumú kompatibilitás-ellenőrzésekhez egy Ön által irányított laborkörnyezetben; valamint CTF vagy oktatási gyakorlatok megoldása, amelyek kifejezetten NTLM-et érintenek. Ennek az eszköznek olyan fiókok vagy rendszerek megtámadására való felhasználása, amelyek nem az önéi, vagy amelyek tesztelésére nincs írásos felhatalmazása, nem tekinthető legitim felhasználásnak.

Elküldi a jelszavamat vagy a bemenetemet egy szerverre?

Nem. Az MD4 számítás teljes egészében JavaScriptben fut a böngészőjében — nincs natív böngésző API az MD4-hez, ezért közvetlenül ennek az oldalnak a kliensoldali kódjában van megvalósítva, és semmi, amit beír, nem kerül továbbításra sehova.

Kapcsolódó eszközök