Кіріспе
Аутентификация, тұтастығы және құпиялылығы үшін Microsoft қауіпсіздік протоколдарының жиынтығы. Windows желісінде NT (Жаңа Технология) LAN Менеджері (NTLM) – пайдаланушыларға аутентификация, тұтастығы және құпиялылығын қамтамасыз етуге арналған Microsoft қауіпсіздік протоколдарының жиынтығы. NTLM – Microsoft LAN Manager (LANMAN) аутентификация протоколының, Microsoft-тың ескі өнімінің, мұрагері. NTLM протоколы жиынтығы LAN Менеджерінің аутентификация протоколын, NTLMv1, NTLMv2 және NTLM2 сессия протоколдарын бір пакетке біріктіретін Қауіпсіздікті қолдау провайдерінде іске асырылады. Бұл протоколдар пайдаланылуы мүмкін немесе топтық саясат параметрлерімен басқарылатын жүйеде қолданылуы мүмкін, Windows-тың әртүрлі нұсқаларында әртүрлі әдепкі параметрлер бар. NTLM парольдері әлсіз саналады, өйткені оларды заманауи аппараттық құралдармен өте оңай бұзуға болады. Біріншіден, клиент серверге желілік жолды орнатады және өзінің мүмкіндіктерін жарнамалайтын NEGOTIATE MESSAGE жібереді. Сервер клиенттің жеке басын анықтау үшін қолданылатын CHALLENGE MESSAGE арқылы жауап береді. Соңында клиент шынайы хабар жібереді. NTLM протоколы екі хэштелген парольдің бірін немесе екеуін де пайдаланады, олардың екеуі де серверде (немесе доменді басқарушыда) сақталады және солталаудың болмауынан парольге тең болады, яғни егер сіз серверден хэш мәнін алсаңыз, нақты парольді білмей аутентификациялай аласыз. Екеуі – LM хэші (тіл үшін дәстүрлі 8 биттік PC таңбалар жиынтығына аударылған парольдің алғашқы 14 таңбасына қолданылатын DES негізделген функция) және NT хэші (UTF-16 Unicode парольдің кішкентай эндианның MD4). Екі хэш-маңыздың әрқайсысы 16 байт (128 бит) құрайды. NTLM протоколы NTLM нұсқасына байланысты екі біржолғы функциялардың біреуін пайдаланады; NT LanMan және NTLM 1-ші нұсқасы DES негізделген LanMan біржолғы функциясын (LMOWF) қолданады, ал NTLMv2 NT MD4 негізделген біржолғы функциясын (NTOWF) қолданады (және Windows 2000-де қолдау табады) – бұл аутентификация протоколы. Ол NTLMv1 шифрлауын күшейту үшін, көптеген қалжыңдау шабуылдарына қарсы протоколды қатайту арқылы NTLM қауіпсіздігін арттырып, сервердің клиентке аутентификациялау мүмкіндігін қосу арқылы жасалған. NTLMv2 8 байттық сервердің сұрауына екі жауап жібереді. Әрбір жауап сервердің 16 байттық HMAC MD5 хэшін, клиентке толық немесе ішінара кездейсоқ шығарылған хэшін және пайдаланушының паролі мен басқа да сәйкестендіру ақпаратын қамтиды. Екі жауап клиенттің сұранысының форматында әртүрлі. Қысқа жауап осы сынақ үшін 8 байт кездейсоқ мәнді қолданады. Жауапты тексеру үшін сервер жауаптың бір бөлігі ретінде клиенттің сұрауын алуы керек. Бұл қысқа жауап үшін 16 байт жауапқа қосылған 8 байт клиенттік талап 24 байт пакет жасайды, ол алдыңғы NTLMv1 протоколының 24 байт жауап форматына сәйкес келеді. Кейбір ресми емес құжаттамада (мысалы, DCE/RPC Over SMB, Leighton) бұл жауап LMv2 деп аталады. NTLMv2 жіберген екінші жауап (1) қазіргі уақыт NT Time форматында, (2) 8 байт кездейсоқ мән (төмендегі қоршауда CC2), (3) домендік атау және (4) кейбір стандартты форматтық деректерді қамтиды. Жауапқа осы клиенттің сұрауының көшірмесі қосылуы тиіс, сондықтан оның ұзындығы өзгеруі мүмкін. Бейресми құжаттамаларда бұл жауап NTv2 деп аталады. LMv2 және NTv2 клиенттік және серверлік сынақты пайдаланушының паролінің NT хэшімен және басқа да сәйкестендіру ақпаратымен бірге шешеді. Дәл формула – бұл SAM немесе AD-де сақталатын NT хэшінен бастау және HMAC MD5 пайдаланушы аты мен домен атын пайдалана отырып, хэштеуді жалғастыру. Төмендегі қоршауда X – пішімдеу өрісінің тұрақты мазмұнын білдіреді. SC = 8 байт серверлік сынақ, кездейсоқ; CC = 8 байт клиенттік сынақ, кездейсоқ; CC* = (X, уақыт, CC2, домен атауы); v2 Hash = HMAC MD5(NT Hash, пайдаланушының аты, домен атауы); LMv2 = HMAC MD5(v2 Hash, SC, CC); NTv2 = HMAC MD5(v2 Hash, SC, CC*); жауап = LMv2 | CC | NTv2 | CC*.
In a Windows network, NT (New Technology) LAN Manager (NTLM) is a suite of Microsoft security protocols intended to provide authentication, integrity, and confidentiality to users. NTLM is the successor to the authentication protocol in Microsoft LAN Manager (LANMAN), an older Microsoft product. The NTLM protocol suite is implemented in a Security Support Provider, which combines the LAN Manager authentication protocol, NTLMv1, NTLMv2 and NTLM2 Session protocols in a single package. Whether these protocols are used or can be used on a system which is governed by Group Policy settings, for which different versions of Windows have different default settings. NTLM passwords are considered weak because they can be brute forced very easily with modern hardware. First, the client establishes a network path to the server and sends a NEGOTIATE MESSAGE advertising its capabilities. Next, the server responds with CHALLENGE MESSAGE which is used to establish the identity of the client. Finally, the client responds to the challenge with an AUTHENTICATE MESSAGE. The NTLM protocol uses one or both of two hashed password values, both of which are also stored on the server (or domain controller), and which through a lack of salting are password equivalent, meaning that if you grab the hash value from the server, you can authenticate without knowing the actual password. The two are the LM hash (a DES based function applied to the first 14 characters of the password converted to the traditional 8 bit PC charset for the language), and the NT hash (MD4 of the little endian UTF 16 Unicode password). Both hash values are 16 bytes (128 bits) each. The NTLM protocol also uses one of two one way functions, depending on the NTLM version; NT LanMan and NTLM version 1 use the DES based LanMan one way function (LMOWF), while NTLMv2 uses the NT MD4 based one way function (NTOWF). (and natively supported in Windows 2000), is a challenge response authentication protocol. It is intended as a cryptographically strengthened replacement for NTLMv1, enhancing NTLM security by hardening the protocol against many spoofing attacks and adding the ability for a server to authenticate to the client. NTLMv2 sends two responses to an 8 byte server challenge. Each response contains a 16 byte HMAC MD5 hash of the server challenge, a fully/partially randomly generated client challenge, and an HMAC MD5 hash of the user's password and other identifying information. The two responses differ in the format of the client challenge. The shorter response uses an 8 byte random value for this challenge. In order to verify the response, the server must receive as part of the response the client challenge. For this shorter response, the 8 byte client challenge appended to the 16 byte response makes a 24 byte package which is consistent with the 24 byte response format of the previous NTLMv1 protocol. In certain non official documentation (e. g. DCE/RPC Over SMB, Leighton) this response is termed LMv2. The second response sent by NTLMv2 uses a variable length client challenge which includes (1) the current time in NT Time format, (2) an 8 byte random value (CC2 in the box below), (3) the domain name and (4) some standard format stuff. The response must include a copy of this client challenge, and is therefore variable length. In non official documentation, this response is termed NTv2. Both LMv2 and NTv2 hash the client and server challenge with the NT hash of the user's password and other identifying information. The exact formula is to begin with the NT hash, which is stored in the SAM or AD, and continue to hash in, using HMAC MD5, the username and domain name. In the box below, X stands for the fixed contents of a formatting field. SC = 8 byte server challenge, random
CC = 8 byte client challenge, random
CC* = (X, time, CC2, domain name)
v2 Hash = HMAC MD5(NT Hash, user name, domain name)
LMv2 = HMAC MD5(v2 Hash, SC, CC)
NTv2 = HMAC MD5(v2 Hash, SC, CC*)
response = LMv2 | CC | NTv2 | CC*
Протокол нұсқаларын пайдалану
Қолданбаны әзірлеуші немесе Negotiate SSP NTLM SSP аутентификация үшін қолданылатыны туралы шешім қабылдағаннан кейін, топтық саясат NTLM SSP іске асыратын әрбір протоколды пайдалану мүмкіндігін анықтайды. Аутентификацияның бес деңгейі бар. LM және NTLM жауаптарын жіберу: Клиенттер LM және NTLM аутентификациясын қолданады және ешқашан NTLMv2 сессиясының қауіпсіздігін қолданбайды; DC-лер LM, NTLM және NTLMv2 аутентификациясын қабылдайды. LM & NTLM жіберу, егер келісілген болса NTLMv2 сессиясының қауіпсіздігін қолдану: Клиенттер LM және NTLM аутентификациясын қолданады және сервер оны қолдайтын болса, NTLMv2 сессиясының қауіпсіздігін қолданады; DC LM, NTLM және NTLMv2 аутентификациясын қабылдайды. Тек NTLM жауабын жіберу: Клиенттер тек NTLM аутентификациясын қолданады және сервер оны қолдайтын болса, NTLMv2 сессиясының қауіпсіздігін қолданады; DC-лер LM, NTLM және NTLMv2 аутентификациясын қабылдайды. Тек NTLMv2 жауабын жіберу: Клиенттер тек NTLMv2 аутентификациясын қолданады және сервер оны қолдайтын болса, NTLMv2 сессиясының қауіпсіздігін қолданады; DC-лер LM, NTLM және NTLMv2 аутентификациясын қабылдайды. Тек NTLMv2 жауап жіберу\LM бас тарту: Клиенттер тек NTLMv2 аутентификациясын қолданады және сервер оны қолдайтын болса, NTLMv2 сессиясының қауіпсіздігін қолданады; DC LM-ден бас тартады (тек NTLM және NTLMv2 аутентификациясын қабылдайды). Тек NTLMv2 жауаптарын жіберу\LM & NTLM-дан бас тарту: Клиенттер тек NTLMv2 аутентификациясын қолданады және сервер оны қолдайтын болса, NTLMv2 сессиясының қауіпсіздігін қолданады; DC-лер LM және NTLM-ден бас тартады (тек NTLMv2 аутентификациясын қабылдайды). DC – Доменді басқарушы, бірақ бұл терминді қолдану шатастыру тудыруы мүмкін. Осы жағдайда сервер ретінде әрекет ететін және пайдаланушыны аутентификациялайтын кез келген компьютер DC рөлін орындайды, мысалы, желілік кіру кезінде қолданылатын әкімші сияқты жергілікті тіркелгісі бар Windows компьютері. Windows NT 4.0 Service Pack 4-тен бұрын SSP NTLMv1 келіссөздерін жүргізіп, егер басқа машина оны қолдамаса LM-ге қайта оралатын. Windows NT 4.0 Service Pack 4-тен бастап SSP клиент пен сервер оны қолдайтын жағдайда NTLMv2 сессиясын келіседі. Windows XP-ге дейін және оны қоса алғанда, АҚШ елінен тыс компьютерлерде 40 немесе 56 биттік шифрлау қолданылды, себебі сол кезде АҚШ шифрлау технологиясын экспорттауға қатаң шектеулер қойған. Windows XP SP3-тен бастап, 128 биттік шифрлауды жаңартуларды орнату арқылы қосуға болады, ал Windows 7-де 128 биттік шифрлау әдепкі параметр болады. Windows Vista және одан кейінгі нұсқаларында LM кіріс аутентификациясы үшін рұқсат етілмейді. Windows NT негізіндегі операциялық жүйелер, Windows Server 2003-ті қоса алғанда, екі пароль хэшін сақтайды: LAN Manager (LM) хэші және Windows NT хэші. Windows Vista-дан бастап, екеуін де сақтау мүмкіндігі бар, бірақ біреуі әдепкі бойынша өшірілген. Бұл Windows Vista жегілген компьютер сервер ретінде әрекет етсе, LM аутентификациясы жұмыс істемейді дегенді білдіреді. Windows-тың бұрынғы нұсқалары (Windows NT 4.0 Service Pack 4-ке дейін) осылай әрекет ету үшін конфигурациялануы мүмкін, бірақ бұл әдепкі параметр емес.
Әлсіздігі мен осал тұстары
NTLM хэш шабуылдарына қарсы осалдығын сақтайды, бұл Microsoft қауіпсіздік жаңартуы MS08-068-де түзетілген рефлексиялық шабуылдың бір түрі. Мысалы, Metasploit көп жағдайда бір машинадан тікелей деректерді алып, оның көмегімен басқа машинаны басқаруға болады. Squirtle құралдар жинағы веб-сайттардағы сайттар аралық скрипттерді пайдаланып, NTLM арқылы жақын маңдағы жүйелерге шабуыл жасауға мүмкіндік береді. 2010 жылдың ақпан айында Amplia Security Windows жүйесіндегі NTLM аутентификация механизмінің бірнеше кемшіліктерін анықтады, бұл протоколдың қауіпсіздігін бұзып, шабуылшыларға файлдарға оқу/жазу құқығын және қашықтан кодты орындауға мүмкіндік берді. Көрсетілген шабуылдардың бірі протоколмен жасалған псевдо-кездейсоқ сандар мен сұрақтар/жауаптарды болжау қабілетін қамтыды. Бұл кемшіліктер Windows-тың барлық нұсқаларында 17 жыл бойы сақталған. Осы мәселелерді түсіндіретін қауіпсіздік ескертуінде толыққанды жұмыс істейтін мысалдар келтірілген. Бұл кемшіліктердің бәрі MS10-012 жаңартуымен түзетілді. 2012 жылы 8 таңбалы NTLM парольдерінің барлық мүмкін комбинацияларын 6 сағаттан кем уақытта бұзуға болатыны көрсетілді. 2019 жылы заманауи жабдықтарды пайдалану арқасында бұл уақыт шамамен 2,5 сағатқа дейін азайтылды. Сонымен қатар, сегіз және тоғыз таңбалы NTLM парольдері үшін Rainbow кестелері қол жетімді. Ал қысқа парольдерді күш қолдану арқылы қалпына келтіруге болады. 2019 жылы EvilMog ntlmv1 multitool деп аталатын құралды жариялады, ол NTLMv1 сұрақтарына жауапты hashcat форматына сәйкес форматтауға мүмкіндік береді. Hashcat және жеткілікті GPU қуаты болғанда, NTLM хэшін hashcat режимі 14000 арқылы DES кілттерін бұзу арқылы белгілі бір мәтіндік шабуылды қолдану арқылы алуға болады, бұл hashcat форумында atom көрсеткендей. Хэш шабуылдары мен парольді бұзу кезінде қолданылатын парольге теңдестірілген хэштерді алдымен "ұрлау" қажет (мысалы, хэштерге қол жеткізуге жеткілікті құқықтары бар жүйеге шабуыл жасау арқылы). Сондай-ақ, бұл хэштер дәстүрлі NTLM аутентификациясы кезінде желі арқылы берілетін NTLMSSP AUTH "хэшінен" өзгеше.
Linux-пен үйлесімділік
Linux үшін NTLM-ді іске асырулар, Cntlm және winbind (Samba құрамында) Linux қолданбаларына NTLM проксилерін қолдануға мүмкіндік береді. FreeBSD сондай-ақ парольдерді Crypt (C) арқылы қауіпсіз емес NT Hash форматында сақтауды қолдайды.