Udostępnij za pośrednictwem


Uwierzytelnianie użytkowników NTLM

Ten artykuł zawiera kilka informacji na temat uwierzytelniania użytkowników NTLM.

Oryginalny numer KB: 102716

Podsumowanie

W tym artykule omówiono następujące aspekty uwierzytelniania użytkowników 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 zestawie znaków producenta oryginalnego sprzętu (OEM). To hasło nie uwzględnia wielkości liter i może zawierać maksymalnie 14 znaków. Wersja tego hasła OWF jest również znana jako wersja OWF lub ESTD programu LAN Manager. To hasło jest obliczane przy użyciu szyfrowania DES w celu zaszyfrowania 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 służy do komputera z drugim 8 bajtami hasła OWF programu LAN Manager.

Hasło systemu Windows jest oparte na zestawie znaków Unicode. W tym haśle jest rozróżniana wielkość liter i może zawierać maksymalnie 128 znaków. Wersja tego hasła OWF jest również znana jako hasło systemu Windows OWF. To hasło jest obliczane przy użyciu funkcji skrótu RSA MD4. Ta funkcja oblicza 16-bajtowy skrót ciągu o zmiennej długości bajtów haseł w postaci zwykłego tekstu.

Każde konto użytkownika może nie mieć hasła programu LAN Manager 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 programu LAN Manager UAS przy użyciu portuas lub jeśli hasło zostanie zmienione z klienta programu LAN Manager lub z klienta grupy roboczej systemu Windows, będzie istnieć tylko wersja programu LAN Manager hasła. Jeśli hasło jest ustawione lub zmienione na kliencie systemu Windows, a hasło nie ma reprezentacji programu LAN Manager, będzie istnieć tylko wersja systemu Windows hasła. (Hasło może nie zawierać reprezentacji programu LAN Manager, ponieważ hasło jest dłuższe niż 14 znaków lub nie może być reprezentowane w zestawie znaków producenta OEM).

Limity interfejsu użytkownika w systemie Windows nie zezwalają na przekraczanie 14 znaków haseł systemu Windows. Implikacje 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 programu LAN Manager hasła. Aby uzyskać więcej informacji, zapoznaj się z następującym numerem artykułu, aby wyświetlić artykuł w bazie wiedzy Microsoft Knowledge Base:

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

Uwaga 16.

Firma Microsoft nie obsługuje ręcznego ani programowego zmieniania bazy danych SAM.

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

System Windows używa interfejsu API LsaLogonUser dla 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 użycia usługi Netlogon. Pierwsza część pakietu uwierzytelniania MSV rozpoznaje, że wymagane jest uwierzytelnianie przekazywane, ponieważ przekazana nazwa domeny nie jest własną nazwą domeny. Jeśli wymagane jest uwierzytelnianie przekazywane, usługa 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 usługi i logowania sieciowe. W pakiecie uwierzytelniania MSV wszystkie formularze logowania przekazują nazwę konta użytkownika, nazwę domeny zawierającej konto użytkownika i niektóre funkcje hasła użytkownika. Różne rodzaje logowania reprezentują hasło inaczej po przekazaniu go do użytkownika LsaLogonUser.

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

Pierwsza część pakietu uwierzytelniania MSV konwertuje hasło w postaci 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 w postaci zwykłego tekstu do usługi NetLogon lub do drugiej części pakietu. Druga część następnie wysyła zapytanie do bazy danych SAM dla 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ł odpowiedź na żądanie 24 bajtów, szyfrując 16-bajtowe wyzwanie z hasłem OWF programu LAN Manager 16 bajtów. Następnie klient programu LAN Manager przekazuje ten komunikat "LAN Manager Challenge Response" do serwera. Jeśli klient jest klientem systemu Windows, odpowiedź na żądanie systemu Windows NT jest obliczana przy użyciu tego samego algorytmu. Jednak klient systemu Windows używa 16-bajtowych danych systemu Windows OWF zamiast danych OWF programu LAN Manager. Następnie klient systemu Windows przekazuje odpowiedzi na żądanie programu LAN Manager i odpowiedź na żądanie 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
  • Oryginalne wyzwanie
  • Odpowiedź na wyzwanie programu LAN Manager
  • Opcjonalna odpowiedź na żądanie systemu Windows NT

Pierwsza część pakietu uwierzytelniania MSV przekazuje te informacje bez zmian do drugiej części. Po pierwsze druga część wykonuje zapytanie 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 wyzwania, które zostało przekazane. Druga część następnie porównuje obliczoną odpowiedź wyzwania na odpowiedź na przekazane wyzwanie.

Uwaga 16.

NTLMv2 umożliwia również klientowi wysł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 brakuje żadnej wersji hasła. Ponadto w wywołaniu LsaLogonUser może brakować żadnej wersji hasła. Jeśli jest dostępna zarówno wersja hasła systemu Windows z bazy danych SAM, jak i wersja systemu Windows hasła z LsaLogonUser, są one używane. W przeciwnym razie do porównania jest używana wersja programu LAN Manager hasła. Ta reguła pomaga wymusić ważność wielkości liter, gdy logowania sieciowe występują 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 którego ma być przekazywane żądanie uwierzytelniania.
  • Wybiera serwer w domenie.
  • Przekazuje żądanie uwierzytelniania do wybranego serwera.

Wybór domeny jest prosty. Nazwa domeny jest przekazywana do użytkownika 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 z systemem 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 kont 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 elementu członkowskiego 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 połączonym z tak, jakby określona nazwa domeny była tą nazwą domeny. NetLogon nie rozróżnia nieistniejących domen, niezaufanej domeny i niepoprawnie wpisanej nazwy domeny.

NetLogon wybiera serwer w domenie przez proces nazywany odnajdywaniem. Stacja robocza z systemem 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ładnik, który wykonuje odnajdywanie, to lokalizator kontrolera domeny uruchamiany w usłudze Netlogon. Lokalizator kontrolerów domeny używa rozpoznawania nazw NETBIOS lub DNS do lokalizowania niezbędnych serwerów w zależności od typu domeny i zaufania, który jest skonfigurowany.