Locked History Actions

NT LAN Manager

NT LAN Manager

NTLM

NT tinklo tvarkytojas


Apibrėžimas

NTLM tai Microsoft saugumo protokolų rinkinys, atsakingas už vartotojų autentifikaciją, veikiantis Windows tinkle. NTLM pakeitė iki jo naudotą, kitą Microsoft autentifikacijos protokolą LAN Manager (LANMAN), bet šio protokolo palaikymas išliko. Antroji NTLM versija NTLMv2, pirmą kartą pristatyta Windows NT 4.0 SP4, pagerino NTLM savybes, sustiprinant atsparumą prieš apgaulingas atakas ir pridėjo galimybę serveriui autentifikuotis su klientu. Nepaisant to, šiuo metu Microsoft nesiūlo naudoti NTLM protokolą, nes jis nepalaiko šiuolaikinių kriptografijos metodų, tokių kaip AES arba SHA-256.
Rekomenduojamas autentifikacijos protokolas yra Kerberos. Bet ne visada jį galima panaudoti. Pavyzdžiui, NTLM naudojamas kai:

  • klientas autentifikuojasi su serveriu naudodamas IP adresą;
  • klientas autentifikuojasi su serveriu, kuris priklauso kitam aktyvaus katalogo miškui (angl. Active Directory forest), kuriame naudojamas NTLM protokolas;
  • klientas autentifikuojasi su serveriu, kuris nepriklauso domenui;
  • ugniasienė blokuoja Kerberos naudojamus prievadus.

Windows Vista ir naujesnėse Windows versijose, nei LM, nei NTLM nenaudojami pagal nutylėjimą. NTLM palaikomas tik įeinantiems susijungimams, o išeinantiems susijungimams naudojamas NTLMv2.

NTLM yra iššūkio-atsako autentifikacijos protokolas, kuris naudoja tris žinutes kliento autentifikacijai į susijungimą orientuotoje aplinkoje. Gali būti panaudotos keturios papildomos žinutės, esant integralumo būtinybei. Iš pradžių klientas siunčia serveriui NEGOTIATE_MESSANGE žinutę pranešdamas savo galimybes. Po to serveris atsako CHALLENGE_MESSAGE žinute, kuri naudojama nustatyti kliento tapatumą. Galiausiai klientas atsako žinute AUTHENTICATE_MESSAGE.
NTLM protokolas naudoja vieną iš dviejų ar iškart abi hash‘uotas slaptažodžio vertes, saugomas serveryje. Kadangi šios vertės yra slaptažodžių ekvivalentai, gavus hash reikšmę iš serverio galima prisijungti nežinant tikrojo slaptažodžio. Pirmoji reikšmė yra LM Hash, antroji NT Hash. Abi reikšmės susideda iš 16 baitų.

NTLMv1
Serveris autentifikuoja klientą siųsdamas 8 baitų (64 bitų) atsitiktinį skaičių – iššūkį. Klientas atlieka skaičiavimus, panaudodamas gautą iššūkį ir vieną iš aukščiau paminėtų slaptažodžio hash‘uotų reikšmių. Skaičiavimų rezultatus, kurie yra 24 baitų ilgio, klientas grąžina serveriui. Skaičiavimui klientas taip pat gali atlikti panaudodamas dvi hash‘uotas reikšmes. Tokiu atveju serveriui siunčiami abu rezultatai po 24 baitus. Serveris tikrina gautas skaičiavimų reikšmes ir sprendžia ar klientas turi slaptažodį ar ne.
Prie kiekvienos hash 16 baitų reikšmės pridedami 5 baitai nulių. Taip gaunamas 21 baitas, kuris dalinamasi į 3 dalis po 7 baitus (58 bitai). Kiekviena 56 bitų reikšmė naudojama kaip raktas užšifruoti 64 bitų iššūkį naudojant DES šifravimą. Tris užšifruotos iššūkio reikšmės suvienijamos, taip sudarant 24 baitų atsaką.

NTLMv2
NTLMv2 atveju siunčiami du 16 baitų atsakai į 8 baitų serverio iššūkį. Atsakas yra serverio iššūkio HMAC MD5 hash vertė, atsitiktinai sugeneruotas kliento iššūkis ir vartotojo slaptažodžio ir kitos identifikacijai reikalingos informacijos HMAC-MD5 hash vertė. Du atsakai skiraisi kliento iššūkio formatu.
Trumpesniame atsake kliento iššūkiui naudojama atsitiktinė 8 baitų reikšmė. Tam, kad serveris patikrintų atsaką, serveris turi gauti kliento iššūkį, kaip atsako dalį. Šiuo atveju kliento 8 baitų iššūkis pridedamas prie 16 baitų atsako ir gaunamas 24 baitų paketas, kuris sutampa su NTLMv1 atsako formatu. Neoficialiai šisi atsakas vadinamas LMv2.
Kitame atsake naudojamas kintamo ilgio kliento iššūkis, kuris susideda iš dabartinio laiko (NT Time formatu), atsitiktinės 8 baitų vertės, domeno vardo, kitos standartinės formato informacijos. Atsake privalo būti kopija šio iššūkio, todėl antras atsakas, kaip ir iššūkis yra kintamo ilgio. Neoficialiai šis atsakas vadinamas NTv2.


Naudota literatūra

  1. http://en.wikipedia.org/wiki/NTLM

  2. http://msdn.microsoft.com/en-us/library/aa378749(VS.85).aspx