CodeKitHub
Kódovacie nástroje

Generátor NTLM hashov

Naposledy aktualizované:

NTLM hash sa vypočíta zakódovaním vášho vstupu do UTF-16LE (2 bajty na znak, little-endian) a následným spracovaním pomocou hashovacieho algoritmu MD4 — táto jednopriechodová operácia bez soľi je celá schéma NTLM hashovania, ktorú Microsoft Windows používa od NT 4.0 na ukladanie overovačov hesiel. Tento nástroj vykonáva presne tento výpočet lokálne vo vašom prehliadači, celé v JavaScripte, takže nič, čo napíšete, sa nikdy neodošle na server. Existuje pre legitímnu bezpečnostnú prácu — overovanie exportov NTLM hashov z Active Directory, kontrolu výstupných formátov hashcat alebo Mimikatz, alebo riešenie CTF a pentestingových laboratórnych úloh — nie na útoky na účty, ktoré nevlastníte alebo na testovanie ktorých nemáte oprávnenie.

NTLM Hash

Čo je tento nástroj?

NTLM (NT LAN Manager) je zastaraný autentifikačný protokol typu výzva-odpoveď od spoločnosti Microsoft, ktorý sa dodnes používa pre lokálne prihlásenie do Windows a ako záložné riešenie v mnohých prostrediach Active Directory. Jeho overovač hesla — bežne nazývaný „NTLM hash“ — je definovaný v samotnej technickej špecifikácii protokolu MS-NLMP od spoločnosti Microsoft ako `MD4(UTF-16-LE(password))`: heslo sa najprv zakóduje ako UTF-16 little-endian (takže každý znak sa stane 2 bajtmi, na rozdiel od UTF-8), a táto sekvencia bajtov sa potom raz zahashuje algoritmom MD4 z RFC 1320.

Krok UTF-16LE je detail, ktorý ľudia najčastejšie pokazia pri opätovnej implementácii NTLM: hashovanie UTF-8 bajtov reťazca namiesto jeho UTF-16LE bajtov vytvorí úplne odlišný, nesprávny digest, hoci viditeľný text vyzerá identicky. Tento nástroj kóduje správne, takže jeho výstup zodpovedá tomu, čo ukladajú samotné Windows, a čo očakávajú nástroje ako hashcat (mód 1000) a Mimikatz.

Keďže NTLM predchádza modernému návrhu hashovania hesiel, nemá žiadnu z ochrán, ktoré boli neskôr vytvorené špecificky na spomalenie lámania: žiadnu soľ pre jednotlivých používateľov, žiadny nastaviteľný pracovný faktor a žiadnu úmyselnú iteráciu. Je to jeden priechod MD4, čo ho robí extrémne rýchlym na výpočet — vlastnosť, ktorá je výhodná pre spätnú kompatibilitu, ale katastrofálna pri odolávaní útokom hrubou silou a slovníkovým útokom.

Prečo ho používať?

  • Overte, či hash extrahovaný z databázy Windows SAM, výpisu NTDS.dit alebo exportu Active Directory zodpovedá očakávanej hodnote počas autorizovaného bezpečnostného testovania.
  • Overte si svoje pochopenie algoritmu MS-NLMP, alebo skontrolujte hash vygenerovaný vaším vlastným kódom oproti overenej správnej implementácii.
  • Generujte NTLM hashe pre hashcat (`-m 1000`) alebo testovanie slovníkov v John the Ripper v laboratóriu alebo CTF prostredí, na napadnutie ktorého máte oprávnenie.
  • Skrížene overte výstup Mimikatz alebo iných pentestingových nástrojov počas legitímnych red-team alebo credential-audit projektov.
  • 100 % lokálne: váš vstup nikdy neopustí prehliadač, takže je bezpečné ho používať aj pre citlivý materiál poverení v rámci autorizovaného hodnotenia.

Ako sa používa

  1. Zadajte heslo alebo reťazec, ktorý chcete zahashovať, do vstupného poľa.
  2. Kliknite na „Generate NTLM Hash“.
  3. Prečítajte si 32-znakový hexadecimálny NTLM hash (výstup veľkými písmenami je predvolene zapnutý, čo zodpovedá spôsobu, akým ho zobrazujú Windows a väčšina lámacích nástrojov — pre malé písmená zrušte začiarknutie políčka).
  4. Kliknutím na „Copy“ skopírujete hash do schránky.

Príklad

Vstup

password

Výstup

8846F7EAEE8FB117AD06BDD830B7586C

Toto je dobre známy, nezávisle overiteľný testovací vektor: NTLM hash reťazca „password“ je vždy 8846F7EAEE8FB117AD06BDD830B7586C. Výstup tohto nástroja môžete porovnať s ľubovoľnou inou správnou implementáciou NTLM.

NTLM vs. moderné hashovanie hesiel

Tabuľka nižšie zdôrazňuje, prečo sa NTLM považuje za zastarané na ochranu nových systémov, hoci zostáva zabudovaný do staršej infraštruktúry Windows a Active Directory.

VlastnosťNTLMbcrypt / scrypt / Argon2
Základný primitívumJeden priechod MD4Účelovo navrhnutý pomalý hash s nastaviteľnou cenou
SoľŽiadna — identické heslá vždy hashujú rovnakoJedinečná náhodná soľ pre každé heslo
Iterácia / naťahovanieŽiadneNastaviteľný pracovný faktor, časom zvyšiteľný
Odolnosť voči hrubej sileVeľmi slabá — miliardy pokusov/s na moderných GPUZámerne nákladné pre každý pokus
Kde sa ešte nachádzaStaršia autentifikácia Windows, záložné riešenie Active DirectoryNové aplikácie, súčasná najlepšia prax

Súvisiace nástroje

Ak potrebujete univerzálny kryptografický hash namiesto konštrukcie MD4(UTF-16LE) špecifickej pre NTLM, tieto nástroje môžu byť vhodnejšie.

Generátor hashov s viacerými algoritmami · Generátor MD5 · Generátor hesiel

Časté otázky

Čo presne je NTLM hash?

Je to overovač hesla, ktorý Windows vypočíta a uloží pre autentifikáciu NT LAN Manager, definovaný v špecifikácii MS-NLMP od spoločnosti Microsoft ako MD4(UTF-16LE(password)) — jeden priechod MD4 nad UTF-16 little-endian bajtovým kódovaním hesla. Vždy má 128 bitov, zobrazovaných ako 32 hexadecimálnych znakov.

Prečo konkrétne UTF-16LE, a nie UTF-8 alebo ASCII?

Windows ukladajú text interne v UTF-16LE od čias návrhu NT, takže heslá sa pred hashovaním kódujú rovnakým spôsobom. Každý znak sa stane 2 bajtmi (v poradí bajtov little-endian), vrátane obyčajných ASCII znakov ako 'a', ktoré sa stanú 0x61 0x00 namiesto len 0x61. Hashovanie UTF-8 bajtov toho istého reťazca vytvorí úplne odlišný, nesprávny výsledok — toto je najčastejšia chyba pri implementáciách NTLM písaných od začiatku.

Je NTLM dnes bezpečné používať?

Nie, a samotný Microsoft odporúča prejsť od neho k Kerberos, kde je to možné. NTLM nemá soľ, takže identické heslá vždy produkujú identické hashe naprieč všetkými používateľmi a systémami, čo umožňuje vyhľadávanie pomocou vopred vypočítaných rainbow tabuliek. Nemá ani iteráciu či pracovný faktor — jeden priechod MD4 bez soli — takže moderné GPU dokážu vyskúšať miliardy uhádnutí za sekundu proti zachytenému hashu. Prežíva najmä kvôli spätnej kompatibilite so staršími systémami a aplikáciami Windows.

Ako sa NTLM líši od moderného hashovania hesiel ako bcrypt, scrypt alebo Argon2?

Moderné nástroje na hashovanie hesiel sú zámerne pomalé a solené: bcrypt, scrypt a Argon2 pridávajú jedinečnú náhodnú soľ pre každé heslo a nastaviteľný nákladový faktor, ktorý sa dá časom zvyšovať, ako sa hardvér zrýchľuje, špeciálne s cieľom urobiť útok hrubou silou nákladným aj vo veľkom meradle. NTLM nerobí ani jedno — bol navrhnutý v ére pred tým, ako sa offline útoky hrubou silou stali praktickou hrozbou, a je to na ňom vidno. Presne preto by sa NTLM nikdy nemal používať na ochranu čohokoľvek navrhovaného dnes; skutočné prípady použitia tohto nástroja sú kompatibilita s existujúcou infraštruktúrou Windows a autorizované bezpečnostné testovanie, nie budovanie nových systémov.

Aké sú legitímne spôsoby použitia generátora NTLM hashov?

Overovanie hashov získaných z databázy SAM alebo NTDS.dit počas autorizovaného penetračného testu alebo auditu poverení; kontrola, či váš vlastný nástroj alebo skript správne implementuje MS-NLMP; generovanie testovacích hashov pre hashcat (mód 1000) alebo kontrolu kompatibility formátu Mimikatz v laboratóriu, ktoré ovládate; a riešenie CTF alebo tréningových cvičení, ktoré výslovne zahŕňajú NTLM. Použitie tohto nástroja na útok na účty alebo systémy, ktoré nevlastníte alebo na testovanie ktorých nemáte písomné oprávnenie, nie je legitímne použitie.

Odosiela sa moje heslo alebo vstup na server?

Nie. Výpočet MD4 prebieha úplne v JavaScripte vo vašom prehliadači — pre MD4 neexistuje žiadne natívne API prehliadača, takže je implementovaný priamo v klientskom kóde tejto stránky, a nič, čo napíšete, sa nikam neprenáša.

Súvisiace nástroje