CodeKitHub
Kodavimo įrankiai

NTLM maišos generatorius

Paskutinį kartą atnaujinta:

NTLM maiša apskaičiuojama įvestį užkoduojant UTF-16LE formatu (2 baitai simboliui, little-endian tvarka), o tada apdorojant ją MD4 pranešimo santraukos algoritmu — ši vieno prasukimo, nesūdyta operacija yra visa NTLM maišos schema, kurią „Microsoft Windows“ naudoja nuo NT 4.0 slaptažodžių tikrintuvams saugoti. Šis įrankis atlieka lygiai tą patį skaičiavimą vietiniu būdu jūsų naršyklėje, visiškai JavaScript kalba, todėl niekas, ką įvedate, niekada nesiunčiama į serverį. Jis skirtas teisėtam saugumo darbui — patikrinti iš Active Directory eksportuotas maišas, patikrinti hashcat ar Mimikatz išvesties formatus arba spręsti CTF ir pentesting laboratorijų užduotis — o ne pulti paskyras, kurių nevaldote arba neturite leidimo testuoti.

NTLM Hash

Kas yra šis įrankis?

NTLM (NT LAN Manager) yra pasenęs „Microsoft“ iššūkio-atsako autentifikavimo protokolas, vis dar naudojamas šiandien vietinėms „Windows“ paskyrų prisijungimams ir kaip atsarginis variantas daugelyje Active Directory aplinkų. Jo slaptažodžio tikrintuvas — dažniausiai vadinamas „NTLM maiša“ — apibrėžtas „Microsoft“ MS-NLMP protokolo specifikacijoje kaip `MD4(UTF-16-LE(password))`: slaptažodis pirmiausia užkoduojamas UTF-16 little-endian formatu (taigi kiekvienas simbolis tampa 2 baitais, skirtingai nei UTF-8), o ta baitų seka tada vieną kartą apmaišoma MD4 algoritmu iš RFC 1320.

UTF-16LE žingsnis yra detalė, kurią dauguma žmonių supainioja iš naujo įgyvendindami NTLM: eilutės UTF-8 baitų maišymas vietoj jos UTF-16LE baitų sukuria visiškai kitokią, neteisingą santrauką, net jei matomas tekstas atrodo identiškas. Šis įrankis koduoja teisingai, todėl jo išvestis atitinka tai, ką pati „Windows“ saugo, ir tai, ko tikisi tokie įrankiai kaip hashcat (režimas 1000) ir Mimikatz.

Kadangi NTLM atsirado anksčiau nei šiuolaikinis slaptažodžių maišos dizainas, jis neturi jokių apsaugų, vėliau specialiai sukurtų sulėtinti nulaužimą: jokios sūdymo pagal vartotoją, jokio konfigūruojamo darbo koeficiento ir jokios tyčinės iteracijos. Tai vienas MD4 prasukimas, todėl jį apskaičiuoti itin greita — savybė, patogi suderinamumui su senomis sistemomis, bet katastrofiška atsparumui grubios jėgos ir žodyno atakoms.

Kodėl jį naudoti?

  • Patikrinti, ar iš „Windows“ SAM duomenų bazės, NTDS.dit išklotinės ar Active Directory eksporto ištraukta maiša atitinka tikėtiną reikšmę autorizuoto saugumo testavimo metu.
  • Patvirtinti savo MS-NLMP algoritmo supratimą arba patikrinti savo paties kodo sugeneruotą maišą su žinomai teisinga realizacija.
  • Generuoti NTLM maišas hashcat (`-m 1000`) arba John the Ripper žodyno testavimui laboratorijoje ar CTF aplinkoje, kurią esate įgalioti pulti.
  • Kryžmiškai patikrinti Mimikatz ar kitų pentesting įrankių išvestį teisėtų red-team ar prisijungimo duomenų audito užduočių metu.
  • 100% vietinis: jūsų įvestis niekada nepalieka naršyklės, todėl saugu naudoti net jautriai autentifikavimo medžiagai autorizuoto vertinimo metu.

Kaip naudoti

  1. Įveskite slaptažodį ar eilutę, kurią norite apmaišyti, į įvesties lauką.
  2. Spustelėkite „Generuoti NTLM maišą“.
  3. Perskaitykite 32 simbolių šešioliktainę NTLM maišą (didžiųjų raidžių išvestis įjungta pagal numatytuosius nustatymus, atitinkanti tai, kaip ją rodo „Windows“ ir dauguma nulaužimo įrankių — atžymėkite langelį, jei norite mažųjų raidžių).
  4. Spustelėkite „Kopijuoti“, kad nukopijuotumėte maišą į iškarpinę.

Pavyzdys

Įvestis

password

Išvestis

8846F7EAEE8FB117AD06BDD830B7586C

Tai gerai žinomas, nepriklausomai patikrinamas testinis vektorius: eilutės „password“ NTLM maiša visada yra 8846F7EAEE8FB117AD06BDD830B7586C. Galite palyginti šio įrankio išvestį su bet kuria kita teisinga NTLM realizacija.

NTLM prieš šiuolaikinį slaptažodžių maišymą

Toliau pateikta lentelė parodo, kodėl NTLM laikomas pasenusiu naujoms sistemoms apsaugoti, nors jis vis dar įtvirtintas senoje „Windows“ ir Active Directory infrastruktūroje.

SavybėNTLMbcrypt / scrypt / Argon2
Pagrindinė primityvaVienas MD4 prasukimasSpecialiai sukurta lėta maiša su derinama kaina
SūdymasNėra — identiški slaptažodžiai visada apmaišomi identiškaiUnikali atsitiktinė sūdymo reikšmė kiekvienam slaptažodžiui
Iteracija / tempimasNėraKonfigūruojamas darbo koeficientas, didinamas laikui bėgant
Atsparumas grubios jėgos atakomsLabai silpnas — milijardai spėjimų/sek. šiuolaikinėse GPUTyčia brangus kiekvienam spėjimui
Kur vis dar naudojamasSena „Windows“ autentifikacija, Active Directory atsarginis variantasNaujos programos, dabartinė geriausia praktika

Susiję įrankiai

Jei jums reikia bendros paskirties kriptografinės maišos, o ne NTLM specifinės MD4(UTF-16LE) konstrukcijos, šie įrankiai gali geriau tikti.

Kelių algoritmų maišos generatorius · MD5 generatorius · Slaptažodžių generatorius

Dažniausiai užduodami klausimai

Kas tiksliai yra NTLM maiša?

Tai slaptažodžio tikrintuvas, kurį „Windows“ apskaičiuoja ir saugo NT LAN Manager autentifikavimui, apibrėžtas „Microsoft“ MS-NLMP specifikacijoje kaip MD4(UTF-16LE(password)) — vienas MD4 prasukimas per slaptažodžio UTF-16 little-endian baitų koduotę. Ji visada yra 128 bitų, rodoma kaip 32 šešioliktainiai simboliai.

Kodėl būtent UTF-16LE, o ne UTF-8 ar ASCII?

„Windows“ tekstą viduje saugo UTF-16LE formatu nuo pat NT sukūrimo, todėl slaptažodžiai prieš maišymą taip pat koduojami šiuo būdu. Kiekvienas simbolis tampa 2 baitais (little-endian baitų tvarka), įskaitant paprastus ASCII simbolius, pavyzdžiui, 'a', kurie tampa 0x61 0x00 vietoj vien tik 0x61. Tos pačios eilutės UTF-8 baitų maišymas sukuria visiškai kitokį, neteisingą rezultatą — tai dažniausia klaida nuo nulio kuriamuose NTLM realizacijose.

Ar NTLM šiandien saugu naudoti?

Ne, ir pati „Microsoft“ rekomenduoja pereiti prie Kerberos ten, kur įmanoma. NTLM neturi sūdymo, todėl identiški slaptažodžiai visada sukuria identiškas maišas kiekvienam vartotojui ir kiekvienoje sistemoje, tai leidžia naudoti iš anksto apskaičiuotas vaivorykštės lentelių paieškas. Jis taip pat neturi iteracijos ar darbo koeficiento — vienas nesūdytas MD4 prasukimas — todėl šiuolaikinės GPU gali bandyti milijardus spėjimų per sekundę prieš pagautą maišą. Ji išlieka daugiausia dėl suderinamumo su senesnėmis „Windows“ sistemomis ir programomis.

Kuo NTLM skiriasi nuo šiuolaikinio slaptažodžių maišymo, tokio kaip bcrypt, scrypt ar Argon2?

Šiuolaikiniai slaptažodžių maišos įrankiai yra tyčia lėti ir sūdyti: bcrypt, scrypt ir Argon2 kiekvienas prideda unikalią atsitiktinę sūdymo reikšmę kiekvienam slaptažodžiui ir derinamą kainos koeficientą, kurį galima didinti laikui bėgant įrangai spartėjant, būtent tam, kad grubios jėgos atakos taptų brangios net dideliu mastu. NTLM nedaro nė vieno iš to — jis buvo sukurtas eroje prieš tai, kai neprisijungus vykdoma grubios jėgos ataka tapo praktine grėsmės modeliu, ir tai matosi. Būtent todėl NTLM niekada neturėtų būti naudojamas apsaugoti bet ką, kas kuriama šiandien; realūs šio įrankio naudojimo atvejai yra suderinamumas su esama „Windows“ infrastruktūra ir autorizuotas saugumo testavimas, o ne naujų sistemų kūrimas.

Kokie yra teisėti NTLM maišos generatoriaus naudojimo atvejai?

Patikrinti iš SAM duomenų bazės ar NTDS.dit ištrauktas maišas autorizuoto skverbties testo ar prisijungimo duomenų audito metu; patikrinti, ar jūsų pačių įrankiai ar scenarijai teisingai realizuoja MS-NLMP; generuoti testines maišas hashcat (režimas 1000) ar Mimikatz formato suderinamumo patikroms jūsų valdomoje laboratorijoje; ir spręsti CTF ar mokymo pratybas, kurios aiškiai susijusios su NTLM. Šio įrankio naudojimas pulti paskyras ar sistemas, kurių nevaldote arba neturite rašytinio leidimo testuoti, nėra teisėtas naudojimas.

Ar mano slaptažodis ar įvestis siunčiami į serverį?

Ne. MD4 skaičiavimas visiškai vykdomas JavaScript kalba jūsų naršyklėje — nėra jokios natyvios naršyklės API MD4, todėl jis realizuotas tiesiogiai šio puslapio kliento pusės kode, ir niekas, ką įvedate, niekur neperduodama.

Susiję įrankiai