CodeKitHub
Alati za kodiranje

Generator NTLM raspršivanja

Zadnje ažurirano:

NTLM raspršivanje izračunava se kodiranjem unosa kao UTF-16LE (2 bajta po znaku, little-endian), a zatim prolaskom kroz algoritam sažetka poruke MD4 — ta jednoprolazna operacija bez soli cijela je NTLM shema raspršivanja koju Microsoft Windows koristi od NT-a 4.0 za pohranu provjera lozinki. Ovaj alat izvodi upravo taj izračun lokalno u vašem pregledniku, u potpunosti u JavaScriptu, tako da se ništa što upišete nikada ne šalje na poslužitelj. Postoji za legitiman sigurnosni rad — provjeru izvoza raspršivanja iz Active Directoryja, provjeru formata izlaza hashcata ili Mimikatza, ili rad na CTF i pentesting laboratorijskim izazovima — a ne za napade na račune koje ne posjedujete ili za čije testiranje nemate ovlaštenje.

NTLM Hash

Što je ovaj alat?

NTLM (NT LAN Manager) zastarjeli je Microsoftov protokol autentifikacije tipa izazov-odgovor, koji se i danas koristi za lokalne prijave na Windows račune i kao rezervna opcija u mnogim okruženjima Active Directoryja. Njegova provjera lozinke — obično nazvana „NTLM raspršivanje” — definirana je u Microsoftovoj vlastitoj specifikaciji protokola MS-NLMP kao `MD4(UTF-16-LE(password))`: lozinka se najprije kodira kao UTF-16 little-endian (tako da svaki znak postane 2 bajta, za razliku od UTF-8), a taj niz bajtova zatim se jednom raspršuje algoritmom MD4 iz RFC 1320.

Korak UTF-16LE detalj je koji većina ljudi pogriješi pri ponovnoj implementaciji NTLM-a: raspršivanje UTF-8 bajtova niza znakova umjesto njegovih UTF-16LE bajtova proizvodi potpuno drugačiji, netočan sažetak, čak i ako vidljivi tekst izgleda identično. Ovaj alat ispravno kodira, tako da njegov izlaz odgovara onome što sam Windows pohranjuje i onome što očekuju alati poput hashcata (način 1000) i Mimikatza.

Budući da NTLM prethodi modernom dizajnu raspršivanja lozinki, nema nijednu od zaštita koje su kasnije izgrađene posebno za usporavanje razbijanja: nema soli po korisniku, nema podesivog faktora rada i nema namjerne iteracije. Riječ je o jednom prolazu MD4, zbog čega je izračun izrazito brz — svojstvo koje je pogodno za kompatibilnost sa starijim sustavima, ali katastrofalno za otpornost na napade grubom silom i rječničke napade.

Zašto ga koristiti?

  • Provjera da raspršivanje izvučeno iz Windows SAM baze podataka, ispisa NTDS.dit ili izvoza iz Active Directoryja odgovara očekivanoj vrijednosti tijekom ovlaštenog sigurnosnog testiranja.
  • Potvrda razumijevanja MS-NLMP algoritma, ili provjera raspršivanja koje je proizveo vaš vlastiti kod, u odnosu na poznato ispravnu implementaciju.
  • Generiranje NTLM raspršivanja za hashcat (`-m 1000`) ili testiranje popisa riječi u John the Ripperu u laboratoriju ili CTF okruženju za čije napade imate ovlaštenje.
  • Unakrsna provjera izlaza Mimikatza ili drugih pentesting alata tijekom legitimnih red-team angažmana ili revizija vjerodajnica.
  • 100% lokalno: vaš unos nikada ne napušta preglednik, pa je siguran za korištenje čak i za osjetljivi materijal vjerodajnica u ovlaštenoj procjeni.

Kako ga koristiti

  1. Upišite lozinku ili niz znakova koji želite raspršiti u polje za unos.
  2. Kliknite „Generiraj NTLM raspršivanje”.
  3. Pročitajte 32-znakovno heksadecimalno NTLM raspršivanje (izlaz velikim slovima zadano je uključen, u skladu s prikazom u Windowsima i većini alata za razbijanje — odznačite okvir za mala slova).
  4. Kliknite „Kopiraj” za kopiranje raspršivanja u međuspremnik.

Primjer

Ulaz

password

Izlaz

8846F7EAEE8FB117AD06BDD830B7586C

Ovo je dobro poznat, neovisno provjerljiv testni vektor: NTLM raspršivanje doslovnog niza znakova „password” uvijek je 8846F7EAEE8FB117AD06BDD830B7586C. Izlaz ovog alata možete usporediti s bilo kojom drugom ispravnom NTLM implementacijom.

NTLM naspram modernog raspršivanja lozinki

Tablica u nastavku ističe zašto se NTLM smatra zastarjelim za zaštitu novih sustava, iako ostaje ugrađen u naslijeđenu Windows i Active Directory infrastrukturu.

SvojstvoNTLMbcrypt / scrypt / Argon2
Osnovna primitivaJedan prolaz MD4Namjenski izgrađeno sporo raspršivanje s podesivim troškom
SoljenjeNema — identične lozinke uvijek se raspršuju identičnoJedinstvena nasumična sol po lozinci
Iteracija / rastezanjeNemaPodesivi faktor rada, moguće povećanje tijekom vremena
Otpornost na grubu siluVrlo slaba — milijarde pogodaka/s na modernim GPU-ovimaNamjerno skupo po pogodu
Gdje se još nalaziNaslijeđena Windows autentifikacija, rezervna opcija Active DirectoryjaNove aplikacije, trenutna najbolja praksa

Povezani alati

Ako vam je potreban opći kriptografski hash umjesto NTLM-specifične konstrukcije MD4(UTF-16LE), ovi alati mogu bolje odgovarati.

Generator raspršivanja s više algoritama · Generator MD5 · Generator lozinki

Često postavljana pitanja

Što je točno NTLM raspršivanje?

To je provjera lozinke koju Windows izračunava i pohranjuje za NT LAN Manager autentifikaciju, definirana u Microsoftovoj MS-NLMP specifikaciji kao MD4(UTF-16LE(password)) — jedan prolaz MD4 preko UTF-16 little-endian bajtnog kodiranja lozinke. Uvijek ima 128 bita, prikazano kao 32 heksadecimalna znaka.

Zašto baš UTF-16LE, a ne UTF-8 ili ASCII?

Windows interno pohranjuje tekst kao UTF-16LE otkad je NT dizajniran, pa se i lozinke tako kodiraju prije raspršivanja. Svaki znak postaje 2 bajta (little-endian redoslijed bajtova), uključujući obične ASCII znakove poput 'a', koji postaju 0x61 0x00 umjesto samo 0x61. Raspršivanje UTF-8 bajtova istog niza znakova proizvodi potpuno drugačiji, pogrešan rezultat — ovo je najčešća greška u NTLM implementacijama izrađenima od nule.

Je li NTLM danas siguran za korištenje?

Ne, a i sam Microsoft preporučuje prelazak na Kerberos gdje god je to moguće. NTLM nema sol, pa identične lozinke uvijek proizvode identična raspršivanja kod svakog korisnika i svakog sustava, što omogućuje pretraživanje unaprijed izračunatih rainbow tablica. Također nema iteraciju ni faktor rada — jedan prolaz MD4 bez soli — pa moderni GPU-ovi mogu pokušati milijarde pogodaka u sekundi protiv uhvaćenog raspršivanja. Opstaje uglavnom zbog kompatibilnosti sa starijim Windows sustavima i aplikacijama.

Po čemu se NTLM razlikuje od modernog raspršivanja lozinki poput bcrypta, scrypta ili Argon2?

Moderni alati za raspršivanje lozinki namjerno su spori i soljeni: bcrypt, scrypt i Argon2 svaki dodaju jedinstvenu nasumičnu sol po lozinci i podesivi faktor troška koji se s vremenom može povećavati kako hardver postaje brži, upravo kako bi razbijanje grubom silom bilo skupo čak i u velikim razmjerima. NTLM ne čini nijedno od toga — dizajniran je u eri prije nego što je izvanmrežno razbijanje grubom silom postalo praktičan model prijetnje, i to se vidi. Upravo je zato NTLM nikada ne bi trebalo koristiti za zaštitu bilo čega osmišljenog danas; stvarni slučajevi korištenja ovog alata jesu kompatibilnost s postojećom Windows infrastrukturom i ovlašteno sigurnosno testiranje, a ne izgradnja novih sustava.

Koje su legitimne upotrebe generatora NTLM raspršivanja?

Provjera raspršivanja izvučenih iz SAM baze podataka ili NTDS.dit tijekom ovlaštenog penetracijskog testiranja ili revizije vjerodajnica; provjera implementira li vaš vlastiti alat ili skripta ispravno MS-NLMP; generiranje testnih raspršivanja za provjere kompatibilnosti s hashcatom (način 1000) ili Mimikatz formatom u laboratoriju koji kontrolirate; te rad na CTF ili obrazovnim vježbama koje izričito uključuju NTLM. Korištenje ovog alata za napad na račune ili sustave koje ne posjedujete ili za čije testiranje nemate pisano ovlaštenje nije legitimna upotreba.

Šalje li se moja lozinka ili unos na poslužitelj?

Ne. Izračun MD4 u potpunosti se izvodi u JavaScriptu u vašem pregledniku — ne postoji izvorni API preglednika za MD4, pa je implementiran izravno u klijentskom kodu ove stranice, i ništa što upišete nikamo se ne prenosi.

Povezani alati