Uwierzytelnianie użytkownika NTLM

Ten artykuł zawiera niektóre informacje na temat uwierzytelniania użytkowników NTLM.

Dotyczy: Windows Server 2012 R2
Oryginalny numer KB: 102716

Podsumowanie

W tym artykule omówiono następujące aspekty uwierzytelniania użytkownika NTLM w systemie Windows:

  • Magazyn haseł w bazie danych kont
  • Uwierzytelnianie użytkowników przy użyciu pakietu uwierzytelniania MSV1_0
  • Uwierzytelnianie przekazywane

Więcej informacji

Magazyn haseł w bazie danych kont

Rekordy użytkowników są przechowywane w bazie danych menedżera kont zabezpieczeń (SAM) lub w bazie danych usługi Active Directory. Każde konto użytkownika jest skojarzone z dwoma hasłami: hasłem zgodnym z programem LAN Manager i hasłem systemu Windows. Każde hasło jest szyfrowane i przechowywane w bazie danych SAM lub w bazie danych usługi Active Directory.

Hasło zgodne z programem LAN Manager jest zgodne z hasłem używanym przez program LAN Manager. To hasło jest oparte na oryginalnym zestawie znaków producenta sprzętu (OEM). To hasło nie uwzględnia wielkości liter i może mieć długość do 14 znaków. Wersja OWF tego hasła jest również znana jako wersja OWF lub ESTD programu LAN Manager. To hasło jest obliczane przy użyciu szyfrowania DES w celu szyfrowania stałej przy użyciu hasła zwykłego tekstu. Hasło OWF programu LAN Manager ma długość 16 bajtów. Pierwsze 7 bajtów hasła zwykłego tekstu służy do obliczania pierwszych 8 bajtów hasła OWF programu LAN Manager. Drugie 7 bajtów hasła zwykłego tekstu jest używanych do komputera drugich 8 bajtów hasła OWF programu LAN Manager.

Hasło systemu Windows jest oparte na zestawie znaków Unicode. To hasło ma wielkość liter i może mieć długość do 128 znaków. Wersja OWF tego hasła jest również znana jako hasło OWF systemu Windows. To hasło jest obliczane przy użyciu funkcji skrótu RSA MD4. Ta funkcja oblicza 16-bajtowe podsumowanie ciągu o zmiennej długości z bajtami hasła w postaci zwykłego tekstu.

Dowolne konto użytkownika może nie mieć hasła menedżera SIECI LAN lub hasła systemu Windows. Jednak każda próba zachowania obu wersji hasła jest podejmowana.

Jeśli na przykład konto użytkownika jest portowane z bazy danych UAS programu LAN Manager przy użyciu portów PortUas lub jeśli hasło zostało zmienione z klienta programu LAN Manager lub klienta systemu Windows for Workgroups, będzie istnieć tylko wersja hasła programu LAN Manager. Jeśli hasło jest ustawione lub zmienione na kliencie systemu Windows, a hasło nie ma reprezentacji Menedżera SIECI LAN, będzie istnieć tylko wersja hasła systemu Windows. (Hasło może nie mieć reprezentacji menedżera SIECI LAN, ponieważ hasło jest dłuższe niż 14 znaków lub znaki nie mogą być reprezentowane w zestawie znaków OEM).

Limity interfejsu użytkownika w systemie Windows nie zezwalają na przekroczenie 14 znaków haseł systemu Windows. Konsekwencje tego ograniczenia zostały omówione w dalszej części tego artykułu.

W systemie Windows 2000 z dodatkiem Service Pack 2 i nowszych wersjach systemu Windows dostępne jest ustawienie, które uniemożliwia systemowi Windows przechowywanie skrótu hasła w menedżerze LAN. Aby uzyskać więcej informacji, sprawdź następujący numer artykułu, aby wyświetlić artykuł w bazie wiedzy Microsoft Knowledge Base:

299656 Jak uniemożliwić systemowi Windows przechowywanie skrótu hasła menedżera SIECI LAN w usłudze Active Directory i lokalnych bazach danych SAM

Uwaga

Firma Microsoft nie obsługuje ręcznej ani programowej zmiany bazy danych SAM.

Uwierzytelnianie użytkowników przy użyciu pakietu uwierzytelniania MSV1_0

System Windows używa interfejsu API LsaLogonUser do wszystkich rodzajów uwierzytelniania użytkowników. Interfejs API LsaLogonUser uwierzytelnia użytkowników przez wywołanie pakietu uwierzytelniania. Domyślnie LsaLogonUser wywołuje pakiet uwierzytelniania MSV1_0 (MSV). Ten pakiet jest dołączony do systemu Windows NT. Pakiet uwierzytelniania MSV przechowuje rekordy użytkowników w bazie danych SAM. Ten pakiet obsługuje uwierzytelnianie przekazywane użytkowników w innych domenach przy użyciu usługi Netlogon.

Wewnętrznie pakiet uwierzytelniania MSV jest podzielony na dwie części. Pierwsza część pakietu uwierzytelniania MSV jest uruchamiana na komputerze, z który jest połączony. Druga część jest uruchamiana na komputerze zawierającym konto użytkownika. Gdy obie części działają na tym samym komputerze, pierwsza część pakietu uwierzytelniania MSV wywołuje drugą część bez angażowania usługi Netlogon. Pierwsza część pakietu uwierzytelniania MSV rozpoznaje, że uwierzytelnianie przekazywane jest wymagane, ponieważ przekazana nazwa domeny nie jest jego własną nazwą domeny. Gdy wymagane jest uwierzytelnianie przekazywane, msv przekazuje żądanie do usługi Netlogon. Następnie usługa Netlogon kieruje żądanie do usługi Netlogon na komputerze docelowym. Z kolei usługa Netlogon przekazuje żądanie do innej części pakietu uwierzytelniania MSV na tym komputerze.

LsaLogonUser obsługuje logowania interakcyjne, logowania do usługi i logowania do sieci. W pakiecie uwierzytelniania MSV wszystkie formy logowania przekazują nazwę konta użytkownika, nazwę domeny zawierającej konto użytkownika i funkcję hasła użytkownika. Różne rodzaje logowania reprezentują hasło inaczej, gdy przekazują je do LsaLogonUser.

W przypadku logowania interakcyjnego, logowania wsadowego i logowania do usługi klient logowania znajduje się na komputerze z uruchomioną pierwszą częścią pakietu uwierzytelniania MSV. W takim przypadku hasło zwykłego tekstu jest przekazywane do LsaLogonUser i do pierwszej części pakietu uwierzytelniania MSV. W przypadku logowania do usługi i logowania wsadowego menedżer kontroli usługi i harmonogram zadań zapewniają bezpieczniejszy sposób przechowywania poświadczeń konta.

Pierwsza część pakietu uwierzytelniania MSV konwertuje hasło zwykłego tekstu zarówno na hasło OWF programu LAN Manager, jak i hasło systemu Windows NT OWF. Następnie pierwsza część pakietu przekazuje hasło zwykłego tekstu do usługi NetLogon lub do drugiej części pakietu. Następnie druga część wysyła zapytanie do bazy danych SAM pod kątem haseł OWF i upewnia się, że są identyczne.

W przypadku logowania do sieci klient, który łączy się z komputerem, otrzymał wcześniej 16-bajtowe wyzwanie lub "nonce". Jeśli klient jest klientem programu LAN Manager, klient obliczył 24-bajtową odpowiedź na wyzwanie, szyfrując 16-bajtowe wyzwanie przy użyciu 16-bajtowego hasła OWF menedżera LAN Manager. Następnie klient programu LAN Manager przekazuje tę odpowiedź "Lan Manager Challenge Response" na serwer. Jeśli klient jest klientem systemu Windows, "Odpowiedź na wyzwanie systemu Windows NT" jest obliczana przy użyciu tego samego algorytmu. Jednak klient systemu Windows używa 16-bajtowych danych OWF systemu Windows zamiast danych OWF menedżera LAN. Następnie klient systemu Windows przekazuje zarówno odpowiedź na wyzwanie menedżera LAN, jak i odpowiedź na wyzwanie systemu Windows NT do serwera. W obu przypadkach serwer uwierzytelnia użytkownika, przekazując wszystkie następujące elementy do interfejsu API LsaLogonUser:

  • Nazwa domeny
  • Nazwa użytkownika
  • Pierwotne wyzwanie
  • Odpowiedź na wyzwanie menedżera SIECI LAN
  • Opcjonalna odpowiedź na wyzwanie systemu Windows NT

Pierwsza część pakietu uwierzytelniania MSV przekazuje te informacje bez zmian do drugiej części. Najpierw druga część wykonuje zapytania dotyczące haseł OWF z bazy danych SAM lub z bazy danych usługi Active Directory. Następnie druga część oblicza odpowiedź na wyzwanie przy użyciu hasła OWF z bazy danych i przekazanego wyzwania. Druga część następnie porównuje obliczoną odpowiedź na wyzwanie z odpowiedzią na przekazane wyzwanie.

Uwaga

Protokół NTLMv2 umożliwia również klientowi wysyłanie wyzwania wraz z użyciem kluczy sesji, które pomagają zmniejszyć ryzyko typowych ataków.

Jak wspomniano wcześniej, w bazie danych SAM lub w bazie danych usługi Active Directory może brakować dowolnej wersji hasła. Ponadto w wywołaniu do LsaLogonUser może brakować dowolnej wersji hasła. Jeśli jest dostępna zarówno wersja hasła systemu Windows z bazy danych SAM, jak i wersja hasła systemu Windows z LsaLogonUser, są one używane. W przeciwnym razie do porównania używana jest wersja hasła programu LAN Manager. Ta reguła pomaga wymusić uwzględnianie wielkości liter w przypadku logowania sieciowego z systemu Windows do systemu Windows. Ta reguła umożliwia również zgodność z poprzednimi wersjami.

Uwierzytelnianie przekazywane

Usługa NetLogon implementuje uwierzytelnianie przekazywane. Wykonuje następujące funkcje:

  • Wybiera domenę do przekazania żądania uwierzytelniania.
  • Wybiera serwer w domenie.
  • Przekazuje żądanie uwierzytelniania do wybranego serwera.

Wybranie domeny jest proste. Nazwa domeny jest przekazywana do LsaLogonUser. Nazwa domeny jest przetwarzana w następujący sposób:

  • Jeśli nazwa domeny jest zgodna z nazwą bazy danych SAM, uwierzytelnianie jest przetwarzane na tym komputerze. Na stacji roboczej systemu Windows, która jest członkiem domeny, nazwa bazy danych SAM jest uważana za nazwę komputera. Na kontrolerze domeny usługi Active Directory nazwa bazy danych konta jest nazwą domeny. Na komputerze, który nie jest członkiem domeny, wszystkie logowania przetwarzają żądania lokalnie.
  • Jeśli określona nazwa domeny jest zaufana przez tę domenę, żądanie uwierzytelniania jest przekazywane do zaufanej domeny. Na kontrolerach domeny usługi Active Directory lista zaufanych domen jest łatwo dostępna. W przypadku członka domeny systemu Windows żądanie jest zawsze przekazywane do domeny podstawowej stacji roboczej, co pozwala domenie podstawowej określić, czy określona domena jest zaufana.
  • Jeśli określona nazwa domeny nie jest zaufana przez domenę, żądanie uwierzytelniania jest przetwarzane na komputerze, z który jest połączony, tak jakby określona nazwa domeny była tą nazwą domeny. Usługa NetLogon nie rozróżnia nieistniejącej domeny, niezaufanej domeny i nieprawidłowo wpisanej nazwy domeny.

Program NetLogon wybiera serwer w domenie w procesie nazywanym odnajdywaniem. Stacja robocza systemu Windows odnajduje nazwę jednego z kontrolerów domeny usługi Active Directory systemu Windows w swojej domenie podstawowej. Kontroler domeny usługi Active Directory odnajduje nazwę kontrolera domeny usługi Active Directory w każdej zaufanej domenie. Składnikiem, który wykonuje odnajdywanie, jest lokalizator kontrolera domeny, który działa w usłudze Netlogon. Lokalizator kontrolera domeny używa rozpoznawania nazw NETBIOS lub DNS do lokalizowania niezbędnych serwerów, w zależności od skonfigurowanego typu domeny i zaufania.