CodeKitHub
Kódovací nástroje

Generátor NTLM hashů

Naposledy aktualizováno:

NTLM hash se vypočítá zakódováním vstupu jako UTF-16LE (2 bajty na znak, little-endian) a jeho následným zpracováním algoritmem message-digest MD4 — tato jednoprůchodová operace bez soli je celé schéma NTLM hashování, které Microsoft Windows používá od NT 4.0 k ukládání ověřovacích hodnot hesel. Tento nástroj provádí přesně tento výpočet lokálně ve vašem prohlížeči, zcela v JavaScriptu, takže nic z toho, co napíšete, není nikdy odesláno na server. Existuje pro legitimní bezpečnostní práci — ověřování exportů hashů z Active Directory, kontrolu výstupních formátů hashcat nebo Mimikatz, nebo řešení CTF a pentestingových laboratorních úloh — nikoli pro útoky na účty, které nevlastníte nebo k jejichž testování nemáte oprávnění.

NTLM Hash

Co je tento nástroj?

NTLM (NT LAN Manager) je zastaralý autentizační protokol Microsoftu typu výzva-odpověď, který se dodnes používá pro lokální přihlašování k účtům Windows a jako záložní řešení v mnoha prostředích Active Directory. Jeho ověřovací hodnota hesla — běžně nazývaná „NTLM hash“ — je definována ve vlastní specifikaci protokolu Microsoftu MS-NLMP jako `MD4(UTF-16-LE(password))`: heslo je nejprve zakódováno jako UTF-16 little-endian (takže se každý znak stane 2 bajty, na rozdíl od UTF-8), a tato bajtová sekvence je poté jednou zahashována algoritmem MD4 z RFC 1320.

Krok UTF-16LE je detail, který většina lidí při opětovné implementaci NTLM pokazí: hashování UTF-8 bajtů řetězce místo jeho UTF-16LE bajtů vytvoří zcela odlišný, nesprávný otisk, i když viditelný text vypadá identicky. Tento nástroj kóduje správně, takže jeho výstup odpovídá tomu, co skutečně ukládá Windows, a tomu, co očekávají nástroje jako hashcat (režim 1000) a Mimikatz.

Protože NTLM předchází moderní návrh hashování hesel, postrádá veškerou ochranu, která byla později vytvořena speciálně pro zpomalení prolamování: žádnou sůl pro jednotlivé uživatele, žádný konfigurovatelný pracovní faktor a žádnou záměrnou iteraci. Jde o jediný průchod MD4, díky čemuž je výpočet extrémně rychlý — vlastnost, která je výhodná pro zpětnou kompatibilitu, ale katastrofální z hlediska odolnosti proti útokům hrubou silou a slovníkovým útokům.

Proč ho používat?

  • Ověření, že hash extrahovaný z databáze Windows SAM, dumpu NTDS.dit nebo exportu z Active Directory odpovídá očekávané hodnotě během autorizovaného bezpečnostního testování.
  • Potvrzení vašeho porozumění algoritmu MS-NLMP nebo kontrola hashe vygenerovaného vlastním kódem oproti známě správné implementaci.
  • Generování NTLM hashů pro hashcat (`-m 1000`) nebo testování slovníků John the Ripper v laboratoři nebo prostředí CTF, k jehož útoku máte oprávnění.
  • Křížová kontrola výstupu Mimikatz nebo jiných pentestingových nástrojů během legitimních red-team akcí nebo auditů přihlašovacích údajů.
  • 100% lokálně: váš vstup nikdy neopustí prohlížeč, takže je bezpečné jej použít i pro citlivé přihlašovací údaje v rámci autorizovaného hodnocení.

Jak se používá

  1. Zadejte heslo nebo řetězec, který chcete zahashovat, do vstupního pole.
  2. Klikněte na „Vygenerovat NTLM hash“.
  3. Přečtěte si 32znakový hexadecimální NTLM hash (výstup velkými písmeny je ve výchozím nastavení zapnutý, což odpovídá tomu, jak jej zobrazuje Windows a většina crackovacích nástrojů — pro malá písmena zaškrtnutí zrušte).
  4. Klikněte na „Kopírovat“ pro zkopírování hashe do schránky.

Příklad

Vstup

password

Výstup

8846F7EAEE8FB117AD06BDD830B7586C

Toto je dobře známý, nezávisle ověřitelný testovací vektor: NTLM hash doslovného řetězce „password“ je vždy 8846F7EAEE8FB117AD06BDD830B7586C. Výstup tohoto nástroje můžete porovnat s jakoukoli jinou správnou implementací NTLM.

NTLM vs. moderní hashování hesel

Tabulka níže zdůrazňuje, proč je NTLM považován za zastaralý pro ochranu nových systémů, ačkoli zůstává zakotven v zastaralé infrastruktuře Windows a Active Directory.

VlastnostNTLMbcrypt / scrypt / Argon2
Základní primitivaJediný průchod MD4Účelově navržený pomalý hash s nastavitelnou cenou
SoleníŽádné — identická hesla se vždy hashují stejněJedinečná náhodná sůl pro každé heslo
Iterace / protahováníŽádnéKonfigurovatelný pracovní faktor, zvyšitelný v čase
Odolnost proti hrubé síleVelmi slabá — miliardy pokusů/s na moderních GPUZáměrně nákladné pro každý pokus
Kde se stále vyskytujeZastaralá autentizace Windows, záložní řešení Active DirectoryNové aplikace, aktuální osvědčené postupy

Související nástroje

Pokud potřebujete obecný kryptografický hash namísto specifické konstrukce NTLM MD4(UTF-16LE), mohou vám lépe vyhovovat tyto nástroje.

Generátor hashů s více algoritmy · Generátor MD5 · Generátor hesel

Časté dotazy

Co přesně je NTLM hash?

Je to ověřovací hodnota hesla, kterou Windows počítá a ukládá pro autentizaci NT LAN Manager, definovaná ve specifikaci Microsoftu MS-NLMP jako MD4(UTF-16LE(password)) — jediný průchod MD4 přes UTF-16 little-endian bajtové kódování hesla. Vždy má 128 bitů a zobrazuje se jako 32 hexadecimálních znaků.

Proč konkrétně UTF-16LE, a ne UTF-8 nebo ASCII?

Windows interně ukládá text jako UTF-16LE od doby, kdy byl navržen NT, takže i hesla jsou takto kódována před hashováním. Každý znak se stane 2 bajty (pořadí bajtů little-endian), včetně obyčejných znaků ASCII jako 'a', které se stanou 0x61 0x00 místo pouhého 0x61. Hashování UTF-8 bajtů stejného řetězce vytváří zcela odlišný, chybný výsledek — to je nejčastější chyba v NTLM implementacích psaných od základu.

Je NTLM dnes bezpečné používat?

Ne, a sám Microsoft doporučuje, kde je to možné, přejít na Kerberos. NTLM nemá sůl, takže identická hesla vždy vytvoří identické hashe napříč všemi uživateli a systémy, což umožňuje vyhledávání pomocí předpočítaných rainbow tabulek. Nemá také žádnou iteraci ani pracovní faktor — jde o jediný nesolený průchod MD4 — takže moderní GPU dokážou proti zachycenému hashi vyzkoušet miliardy pokusů za sekundu. Přežívá především kvůli zpětné kompatibilitě se staršími systémy a aplikacemi Windows.

Jak se NTLM liší od moderního hashování hesel jako bcrypt, scrypt nebo Argon2?

Moderní nástroje pro hashování hesel jsou záměrně pomalé a solené: bcrypt, scrypt i Argon2 přidávají ke každému heslu jedinečnou náhodnou sůl a nastavitelný nákladový faktor, který lze postupem času zvyšovat s rychlejším hardwarem, konkrétně proto, aby bylo prolamování hrubou silou nákladné i ve velkém měřítku. NTLM nedělá ani jedno z toho — byl navržen v éře před tím, než se offline útoky hrubou silou staly reálným modelem hrozby, a je to na něm znát. Přesně proto by NTLM nikdy neměl být použit k ochraně čehokoli navrhovaného dnes; skutečné případy použití tohoto nástroje jsou kompatibilita se stávající infrastrukturou Windows a autorizované bezpečnostní testování, nikoli budování nových systémů.

Jaké je legitimní použití generátoru NTLM hashů?

Ověřování hashů získaných z databáze SAM nebo NTDS.dit během autorizovaného penetračního testu nebo auditu přihlašovacích údajů; kontrola, zda vaše vlastní nástroje nebo skripty správně implementují MS-NLMP; generování testovacích hashů pro kontrolu kompatibility s hashcat (režim 1000) nebo formátem Mimikatz v laboratoři, kterou ovládáte; a řešení cvičení CTF nebo školicích úloh, které výslovně zahrnují NTLM. Použití tohoto nástroje k útoku na účty nebo systémy, které nevlastníte nebo k jejichž testování nemáte písemné oprávnění, není legitimní použití.

Je moje heslo nebo vstup odesíláno na server?

Ne. Výpočet MD4 probíhá zcela v JavaScriptu ve vašem prohlížeči — pro MD4 neexistuje žádné nativní rozhraní API prohlížeče, takže je implementováno přímo v klientském kódu této stránky, a nic, co napíšete, se nikam nepřenáší.

Související nástroje