NTLM Kimlik Doğrulaması Nasıl Çalışır?
Bilgisayar ağları, doğru şekilde korunmadıkları sürece siber saldırılara açıktır. Ağlar, her bir kullanıcının paylaşılan veri ve hizmetlere erişmesine izin vermez, korunur. Bu şekilde, yalnızca belirlenmiş bir kullanıcı bir ağa erişebilir. Verilerin siber dünyada gizli kalması hedeflenmektedir.
Windows NT (Yeni Teknoloji) LAN Manager (NTLM), bir istemcinin Active Directory etki alanındaki bir kaynağa erişim de kimliğini doğrulamak için kullanılan doğrulama protokolüdür. NTLM Windows ağında kullanıcılara kimlik doğrulama, bütünlük ve gizlilik sağlamayı amaçlayan güvenlik protokolleri paketidir. Başlangıçta özel bir protokol olan NTLM, teknolojinin gelişimiyle birlikte, Windows kullanmayan sistemlerde de kullanılabilir hale geldi. NTLM paroloları, modern donanımlarla çok kolay bir şekilde Brute Force attack (Kaba Kuvvet saldırıları) ile zorlanıp etkilenme ihtimali yüksek olduğundan zayıf kabul edilir.
NTLM, kriptografik anlaşmayı içeren üç mesajın değiş tokuşu yoluyla kullanıcılara Active Directory (AD) etki alanında SSO (Tekli Oturum Açma) erişimi sağlar:
- Client’ın anlaşma mesajı (Negotiate_Message)
- Sunucunun sorgulama mesajı (Challenge_Message)
- Client’ın kimlik doğrulama mesajı (Authenticate_Message)
NTLM, parola karmasının parola eşdeğerliği ile ilgili güvenlik açıklarına sahip olduğundan dolayı, siber dünyada daha güvenli doğrulama protokolüne ihtiyaç doğdu. Protokol, Windows 2000’den sonra yerini Kerberos kimlik doğrulama protokolüne bırakmıştır. NTLM, Microsoft tarafından kullanımdan kaldırılmayıp ikincil doğrulama olarak hala eski sistemlerle uyumluluk içinde varlığını sürdürmektedir. NTLM’nin kriptografisi AES veya SHA-256 gibi daha yeni algoritmaların varlığından önce ortaya konulmuştur, günümüz donanımının kaba kuvvet saldırılarından etkilenmesinin asıl sebebi budur.
NTLM, bir ağ kullanıcısının özgünlüğünü kontrol etmek için bir sorgulama-yanıt protokolü kullanır. Bunu yapmak için istemci ve ana bilgisayar bir dizi adımdan geçer:
- İstemci, ana bilgisayara bir kullanıcı adı gönderir.
- Ev sahibi rastgele bir sayı ile yanıt verir (yani meydan okuma).
- İstemci daha sonra bu numaradan ve kullanıcının parolasından karma bir parola değeri oluşturur ve ardından bunu yanıt olarak geri gönderir.
- Ana bilgisayar, kullanıcının parolasını bilir ve daha sonra müşterinin yanıtıyla karşılaştıracak bir karma parola değeri oluşturur.
- Her iki değer de eşleşirse, istemcinin orijinalliği onaylanır ve ağ erişimi verilir. Değerler arasında eşleşme yoksa, istemcinin erişimi reddedilir.
NTLM Kimlik Doğrulaması AD Ortamında Nasıl Çalışır?
NTLM Kimlik Doğrulaması, uygulama sunucusunun istemci ile AD arasında aracı rolü oynamasına olanak tanır. Kimlik doğrulama süreci, bir sorgulama şeklinde Etki Alanı Denetleyicisine iletilir ve başarılı bir şekilde tamamlanırsa, uygulama sunucusu kullanıcının kimliğini doğrular. NTLM, bir sorgulama-yanıt mekanizması aracılığıyla kullanıcıların kimliğini doğrular. Bu süreç üç mesajdan oluşur:
- İstemci, sunucudan doğrulama ister. (NTLM_AUTHENTICATE).
- Sunucu rastgele bir karakter dizisiyle meydan okuma mesajı gönderir. (NTLMSSP_CHALLENGE)
- İstemci gizli anahtarını kullanarak sorgulamayı şifreler ve geri gönderir.
Kimlik doğrulama işlemi sırasında istemci, sorgulamayı şifrelemek için parolasının DES anahtarı (kullanımda olan NTLMv1 ise) olarak MD4 karmasını kullanır. Kimlik doğrulama işlemi sırasında hiçbir zaman düz metin parolası kullanılmaz. Kullanılan tek sürüm, düz metin parolasının basit bir karma değeri olan NT karma adı verilen karma bir sürümdür.
NTLM Kimlik Doğrulaması Süreci:
- Kullanıcı, kullanıcı adını, şifresini ve alan adını müşteri ile paylaşır.
- İstemci, parolanın veya karmanın şifreli halini geliştirir ve parolanın tamamını siler.
- İstemci, kullanıcı adının düz metin sürümünü ilgili uygulama sunucusuna iletir.
- Uygulama sunucusu, istemciye 16 baytlık rastgele bir sayı olan bir sorgulamayla yanıt verir.
- Bu duruma yanıt olarak istemci, kullanıcının parolasının karma değeriyle şifrelenmiş sorgulamayı gönderir.
- Uygulama sunucusu daha sonra sorgulamayı, yanıtı ve kullanıcı adını etki alanı denetleyicisine (DC) gönderir.
- DC, kullanıcının parolasını veritabanından alır ve bunu sorgulamayı şifrelemek için kullanır.
- DC daha sonra şifreli sorgulamayı ve istemci yanıtını karşılaştırır. Bu iki parça eşleşirse, kullanıcının kimliği doğrulanır ve erişim verilir.
NTLM Güvenlik Açıkları
NTLM, eski bir protokoldür ve saldırganlar tarafından kullanılabilecek birden çok güvenlik açığına sahiptir. Güvenlik açıkları hakkında:
- CVE 2019-1166, saldırganların NTLM kimlik doğrulamasında MIC (Mesaj Bütünlüğü Kodu) korumasını atlamasına ve imzalama gereksinimi de dahil olmak üzere NTLM mesaj akışındaki herhangi bir alanı değiştirmeye olanak tanır.
- CVE 2019-1338 – Microsoft Windows ’ta, bir istemci aynı zamanda LMv2 yanıtları gönderiyorsa, bir ortadaki adam saldırganı NTLMv2 korumasını başarıyla atlayabildiğinde, ‘güvenlik özelliği atlama’ güvenlik açığı bulunmaktadır.
- Araştırmacılara göre, (MitM) saldırganları bunu OWA ve ADFS gibi kritik sunucularda kimlik doğrulaması yapmak ve kullanıcı verilerini çalmak için kullanabilir.
- Hash saldırısı yöntemi kullanılarak sisteme erişim sağlanabilir. NTLM karmaları, risk altındaki bir makineye karmaları boşaltmak için Impacket içindeki “secretsdump.py” gibi araçlar kullanılarak elde edilebilir.
- NTLM, eski şifreleme kullanır bu sebeple şifrelemedeki en son gelişmelerden yararlanamaz. Hashcat gibi araçlar, yakalanan NTLMv2 karmalarını kırmak ve kullanılan parolaları almak gibi eylemlerde bulunabilir.
NTLM Neden Hala Kullanılıyor?
NTLM ’de var olan güvenlik açıkları ve eksiklikleri sebebiyle yerini Kerberos almış olmasına rağmen hala tüm Windows sistemlerde NTLM desteği bulunmaktadır. Bunun sebebi;
- Eski sistemlerle uyumun sağlanması gereklidir.
- NTLM kimlik doğrulaması, etki alanı olmayan denetleyicilerde, yerel oturum açma kimlik doğrulaması için kullanılır.
- Bir çalışma grubunun üyesi olarak yapılandırılmış sistemlerde Windows kimlik doğrulaması için kullanılmaktadır.