NTLM () – rodzina protokołów uwierzytelniania opracowana przez firmę Microsoft, stosowana w sieciach Windows. NTLM działa na zasadzie wyzwanie-odpowiedź, dzięki czemu klient dowodzi znajomości hasła, nie przesyłając go przez sieć. Serwer wysyła klientowi losowe wyzwanie (), a klient odsyła odpowiedź obliczoną na podstawie skrótu hasła użytkownika i tego wyzwania. Protokół powstał jako następca starszego LAN Managera (LM) i był domyślnym sposobem uwierzytelniania w systemach Windows NT. W Active Directory zastąpił go Kerberos, a NTLM pozostał mechanizmem awaryjnym.

Wersje Powstały dwie wersje protokołu, różniące się sposobem obliczania odpowiedzi na wyzwanie. W wersji NTLMv1 odpowiedź oblicza się z użyciem algorytmu DES na podstawie skrótu hasła i wyzwania serwera. W wersji NTLMv2, wprowadzonej w Windows NT 4.0, odpowiedź oblicza się funkcją HMAC-MD5, a do wyzwania serwera dochodzi wyzwanie generowane przez klienta oraz znacznik czasu, co utrudnia ataki z użyciem wcześniej przygotowanych tablic i powtórzenie przechwyconej odpowiedzi. Wersji uwierzytelniania nie uzgadnia sam protokół, musi ona być skonfigurowana po stronie klienta i serwera.

Skrót NTLM a odpowiedź sieciowa W kontekście NTLM funkcjonują dwa różne rodzaje danych wyprowadzanych z hasła, które bywają mylone i potocznie nazywane „hashem NTLM”.

Skrót NTLM (skrót NT) to skrót hasła użytkownika obliczany funkcją MD4 i przechowywany lokalnie, m.in. w bazie SAM lub w Active Directory. W uwierzytelnianiu NTLM pełni rolę klucza, dlatego samo jego zdobycie pozwala uwierzytelnić się jako dany użytkownik bez znajomości hasła w postaci jawnej, w ataku pass-the-hash.

Odpowiedź na wyzwanie serwera przesyłaną przez sieć określa się terminem NetNTLM (dla NTLMv1) lub NetNTLMv2 (dla NTLMv2, także zapisywane „Net-NTLMv2”). Nie jest ona tym samym co skrót NTLM. NetNTLMv2 to struktura, którą Microsoft nazywa NTLMv2_RESPONSE, zawierająca wynik funkcji HMAC-MD5 (tzw. NTProofStr) obliczony ze skrótu NTLM, wyzwania serwera i wyzwania klienta, wraz z tym wyzwaniem klienta. Ponieważ zależy od wyzwań, jest inna przy każdym uwierzytelnianiu, więc nie da się jej użyć w ataku pass-the-hash. Przechwyconą odpowiedź NetNTLMv2 (np. narzędziem Responder, które zatruwa odpowiedzi protokołów rozwiązywania nazw, takich jak LLMNR) można natomiast próbować złamać metodą siłową w trybie offline, aby odtworzyć hasło, albo przekazać do innego serwera w ataku relay. Rozróżnienie to jest istotne, bo obu rodzajów danych dotyczą inne ataki.

Bezpieczeństwo NTLM jest podatny na kilka rodzajów ataków. W ataku przekazania () atakujący przechwytuje uwierzytelnianie NTLM i przekazuje je do innego serwera, aby uzyskać do niego dostęp. Technika ta jest opisana w bazie MITRE ATT&CK jako T1557.001. W ataku pass-the-hash atakujący, który zdobył skrót hasła, uwierzytelnia się nim bez znajomości hasła w postaci jawnej, w bazie MITRE ATT&CK opisany jako T1550.002. W odróżnieniu od Kerberosa NTLM nie zapewnia wzajemnego uwierzytelnienia, czyli klient nie weryfikuje tożsamości serwera.

Z powodu tych słabości Microsoft w 2024 roku uznał wszystkie wersje NTLM za przestarzałe () i zaleca korzystanie z Kerberosa lub z mechanizmu Negotiate, który najpierw próbuje uwierzytelnienia Kerberosem, a do NTLM sięga tylko w razie potrzeby.

Zobacz też Kerberos LDAP

Przypisy

Kategoria:Protokoły sieciowe Kategoria:Protokoły kryptograficzne Kategoria:Microsoft Corporation