Autentificarea cu utilizatorul NTLM în Windows


Rezumat


Acest articol prezintă următoarele aspecte ale autentificării de utilizator NTLM în Windows:
  • Stocarea parolelor în baza de date a contului
  • Autentificarea utilizatorilor utilizând pachetul de autentificare MSV1_0
  • Autentificarea directă

Mai multe informații


Stocarea parolelor în baza de date a contului

Înregistrările de utilizator sunt stocate în baza de date Manager conturi de securitate (SAM) sau în baza de date Active Directory. Fiecare cont de utilizator este asociat cu două parole: parola compatibilă LAN Manager și parola Windows. Fiecare parolă este criptată și stocată în baza de date SAM sau în baza de date Active Directory. Parola compatibilă LAN Manager este compatibilă cu parola utilizată de LAN Manager. Această parolă se bazează pe setul de caractere original equipment Producator (OEM). Această parolă nu este sensibilă la litere mari și mici și poate avea până la 14 caractere lungime. Versiunea OWF a acestei parole este, de asemenea, cunoscută sub numele de OWF LAN Manager sau versiunea ESTD. Această parolă este calculată utilizând DES Encryption pentru a cripta o constantă cu parola de text limpede. Parola de OWF LAN Manager este de 16 octeți lungime. Primii 7 octeți din parola de text transparent sunt utilizați pentru a calcula primii 8 octeți din parola LAN Manager OWF. În al doilea rând, 7 octeți din parola de text limpede sunt utilizați pentru a-l utiliza pe al doilea 8 octeți din parola LAN Manager OWF. Parola Windows se bazează pe setul de caractere Unicode. Această parolă este sensibilă la litere mari și mici și poate avea o lungime de până la 128 de caractere. Versiunea OWF a acestei parole este cunoscută și sub numele de parola Windows OWF. Această parolă este calculată utilizând algoritmul de criptare RSA MD-4. Acest algoritm calculează o digestie de 16 octeți a unui șir de lungime variabilă de octeți de parole de text. Orice cont de utilizator poate avea o parolă LAN Manager sau parola Windows. Cu toate acestea, se fac toate încercările pentru a menține ambele versiuni ale parolei. De exemplu, dacă contul de utilizator este portat dintr-o bază de date din LAN Manager, utilizând PortUas sau dacă parola este schimbată de la un client LAN Manager sau de la un client Windows pentru grupuri de lucru, se va afla doar versiunea LAN Manager a parolei. Dacă parola este setată sau modificată pe un client Windows, iar parola nu are reprezentare LAN Manager, va exista doar versiunea Windows a parolei. (Parola poate avea nicio reprezentare LAN Manager, deoarece parola are mai mult de 14 caractere sau deoarece caracterele nu pot fi reprezentate în setul de caractere OEM.) Limitele interfeței de utilizator din Windows nu permit parolelor Windows să depășească 14 caractere. Implicațiile acestei limitări sunt discutate mai jos în acest articol. În Windows 2000 Service Pack 2 și în versiunile mai recente de Windows, este disponibilă o setare care vă permite să împiedicați Windows să stocheze un hash LAN Manager al parolei. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a vedea articolul în baza de cunoștințe Microsoft:
299656 Cum se împiedică Windows să stocheze un hash LAN Manager al parolei în Active Directory și bazele de date SAM locale
Notă Microsoft nu acceptă modificarea manuală sau programatic a bazei de date SAM.

Autentificarea utilizatorilor utilizând pachetul de autentificare MSV1_0

Windows utilizează API-ul LsaLogonUser pentru toate tipurile de autentificări de utilizator. API-ul LsaLogonUser autentifică utilizatorii apelând un pachet de autentificare. În mod implicit, LsaLogonUser apelează pachetul de autentificare MSV1_0 (MSV). Acest pachet este inclus în Windows NT. Pachetul de autentificare MSV stochează înregistrările utilizatorilor în baza de date SAM. Acest pachet acceptă autentificarea directă a utilizatorilor din alte domenii, utilizând Serviciul Netlogon. Pe plan intern, pachetul de autentificare MSV este împărțit în două părți. Prima parte a pachetului de autentificare MSV rulează pe computerul la care este conectat. A doua parte rulează pe computerul care conține contul de utilizator. Atunci când ambele părți rulează pe același computer, prima parte a pachetului de autentificare MSV apelează a doua parte fără a implica Serviciul Netlogon. Prima parte a pachetului de autentificare MSV recunoaște faptul că este necesară autentificarea prin parolă, deoarece numele de domeniu care este transmis nu este propriul nume de domeniu. Atunci când este necesară autentificarea prin parolă, MSV trece solicitarea către Serviciul Netlogon. Serviciul Netlogon direcționează apoi solicitarea către Serviciul Netlogon pe computerul destinație. La rândul său, Serviciul Netlogon trece solicitarea în cealaltă parte a pachetului de autentificare MSV de pe acel computer. LsaLogonUser acceptă conectări interactive, conectări la servicii și conectări la rețea. În pachetul de autentificare MSV, toate formele de logon trec numele contului de utilizator, numele domeniului care conține contul de utilizator și o funcție a parolei utilizatorului. Diferitele tipuri de logon reprezintă parola în mod diferit atunci când o transmit la LsaLogonUser. pentru conectările interactive, conectările la loturi și conectările la servicii, clientul de conectare se află pe computerul care rulează prima parte a pachetului de autentificare MSV. În acest caz, parola de text transparent este transmisă la LsaLogonUser și la prima parte a pachetului de autentificare MSV. Pentru conectările la servicii și conectările la loturi, Manager Control servicii și programatorul de activități oferă o modalitate mai sigură de a stoca acreditările contului. Prima parte a pachetului de autentificare MSV convertește parola de text transparent atât la o parolă OWF LAN Manager, cât și la o parolă Windows NT OWF. Apoi, prima parte a pachetului trece parola de text transparent fie la serviciul NetLogon, fie la a doua parte a pachetului. A doua parte interoghează baza de date SAM pentru parolele OWF și se asigură că acestea sunt identice. Pentru conectările la rețea, clientul care se conectează la computer a primit anterior o provocare de 16 octeți sau "nonce". În cazul în care clientul este un client LAN Manager, clientul a calculat un răspuns la o provocare de 24 de octeți prin criptarea celei de-a 16-byte Challenge cu parola de OWF LAN Manager de 16 octeți. Clientul LAN Manager trece apoi acest "răspuns LAN Manager Challenge" la server. Dacă clientul este un client Windows, se calculează un "răspuns Windows NT Challenge", utilizând același algoritm. Cu toate acestea, clientul Windows utilizează datele Windows OWF din 16 octeți în locul datelor de OWF LAN Manager. Clientul Windows trece apoi de răspunsul Challenge LAN Manager și de răspunsul Windows NT Challenge la server. În orice caz, serverul autentifică utilizatorul prin trecerea următoarelor acțiuni la API-ul LsaLogonUser:
  • Numele domeniului
  • Numele de utilizator
  • Provocarea inițială
  • Răspunsul Challenge LAN Manager
  • Răspunsul opțional Windows NT Challenge
Prima parte a pachetului de autentificare MSV transmite aceste informații nemodificate în a doua parte. Mai întâi, a doua parte interoghează parolele OWF din baza de date SAM sau din baza de date Active Directory. Apoi, a doua parte calculează răspunsul Challenge utilizând parola OWF din baza de date și provocarea care a fost transmisă. Cea de-a doua parte compară apoi răspunsul la provocarea calculată la răspunsul la Challenge transmis.Notă NTLMv2 permite, de asemenea, ca clientul să trimită o provocare împreună cu utilizarea tastelor de sesiune care contribuie la reducerea riscului de atacuri comune. Așa cum s-a menționat mai sus, este posibil ca o versiune a parolei să lipsească din baza de date SAM sau din baza de date Active Directory. De asemenea, este posibil ca oricare dintre versiunile parolei să lipsească din apelul către LsaLogonUser. Dacă sunt disponibile atât versiunea de parolă Windows din baza de date SAM, cât și versiunea Windows a parolei din LsaLogonUser, ambele sunt utilizate. Altfel, versiunea managerului LAN a parolei este utilizată pentru comparație. Această regulă ajută la aplicarea sensibilității cazurilor atunci când se produc conectări de rețea de la Windows la Windows. Această regulă permite, de asemenea, compatibilitatea inversă.

Autentificarea directă

Serviciul NetLogon implementează autentificarea directă. Efectuează următoarele funcții:
  • Selectează domeniul în care se trece solicitarea de autentificare.
  • Selectează serverul din domeniu.
  • Trece solicitarea de autentificare până la serverul selectat.
Selectarea domeniului este simplă. Numele domeniului este transmis LsaLogonUser. Numele domeniului este procesat după cum urmează:
  • Dacă numele domeniului se potrivește cu numele bazei de date SAM, autentificarea este procesată pe acel computer. Pe o stație de lucru Windows care face parte dintr-un domeniu, numele bazei de date SAM este considerat a fi numele computerului. Pe un controler de domeniu Active Directory, numele bazei de date cont este numele domeniului. Pe un computer care nu este membru al unui domeniu, toate solicitările de proces de Log on local.
  • Dacă numele de domeniu specificat este de încredere în acest domeniu, solicitarea de autentificare este transmisă domeniului de încredere. În controlerele de domeniu Active Directory, lista de domenii de încredere este disponibilă cu ușurință. Pe un membru al unui domeniu Windows, solicitarea este transmisă întotdeauna la domeniul principal al stației de lucru, permițând domeniului principal să afle dacă domeniul specificat este de încredere.
  • Dacă numele de domeniu specificat nu este de încredere în domeniu, solicitarea de autentificare este procesată pe computerul conectat la ca și cum numele domeniului specificat ar fi acel nume de domeniu. NetLogon nu face diferența între un domeniu inexistent, un domeniu care nu este de încredere și un nume de domeniu tastat incorect.
NetLogon selectează un server din domeniu printr-un proces denumit descoperire. O stație de lucru Windows descoperă numele unuia dintre controlerele de domeniu Windows Active Directory în domeniul său principal. Un controler de domeniu Active Directory descoperă numele unui controler de domeniu Active Directory în fiecare domeniu de încredere. Componenta care face descoperirea este locatorul DC care rulează în Serviciul Netlogon. LOCATORUL DC utilizează rezoluția NETBIOS sau DNS Name pentru a găsi serverele necesare, în funcție de tipul de domeniu și de încrederea care este configurată.