Microsoft Ortamında NTLMv1 ve NTLMv2 Protokolleri İle Ağ Üzerinde Kimlik Doğrulama

0
179
views
Microsoft ortamında kimlik doğrulaması için kullanılan yöntemlerden ikisi NTLMv1 ve NTLMv2 ile kimlik doğrulamadır. Bu yazıda Microsoft ortamında ağ üzerinden NTLMv1 ve NTLMv2 ile kimlik doğrulama konusu incelenecektir.

1) NTLMv1 Protokolü (Net-NTLMv1)

Ağ üzerinde iletişim protokolüdür. İstemci ve sunucu arasında LM ve NTLM kullanılarak Challange/Reponse tekniğine göre kimlik doğrulaması sağlanır.

Örnek NTLMv1 protokol cevabı aşağıdaki gibidir.

u4-netntlm::kNS:338d08f8e26de93300000000000000000000000000000000:9526fb8c23a90751cdd619b6cea564742e1e4bf33006ba41:cb8086049ec4736c

NTLMv1 protokolünün cevabı aşağıdaki gibi kırılabilir.

john –format=netntlm NTLMv1ProtokolCevabi.txt

hashcat -m 5500 -a 3 NTLMv1ProtokolCevabi.txt

 

1.1) Adımları:

NTLMv1 özetleme algoritmasının adımları şu şekildedir:

  1. İstemci kullanıcı adını açık halde sunucuya göndererek erişim talebinde bulunur.
  2. Sunucu istemciye kimliğini ispatlaması için 16 byte’lık rastgele bir değer yollar. Bu değere “challenge” veya “nonce (number used once)” adı verilir.
  3. İstemci 16 byte’lık özel anahtarı (parolanın NTLM özeti) ile bu sayıyı şifreleyerek sunucuya cevap verir. (Bu adımın ayrıntıları aşağıda listelenmiştir.)
  4. Sunucu etki alanı denetleyicisine kullanıcı ismini, bu şifrelenmiş değeri ve bu değerin orijinal halini yollayarak etki alanı denetleyicisinin istemci kimliğini doğrulatmasını talep eder. Eğer ortamda bir DC yok ise, bu adım ve bir sonraki (5.) adım olarak sunucu üzerinde gerçekleşir.
  5. İstemcinin özel anahtarına sahip olan etki alanı denetleyicisi, rastgele değeri (challange) istemcinin özel anahtarı ile (3. adımdaki gibi) şifreleyerek daha önceden alınan şifreli değer ile karşılaştırır. Sonucu (Doğru / Yanlış) sunucuya gönderir.
  6. Sunucu cevabı istemciye bildirir.

3. Adımda gerçekleşen cevaplama işlemi şu şekilde olmaktadır:

  • Elde edilen 16 byte’lık değere (parolanın NTLM özeti) 5 adet ‘0’ eklenerek 21 byte’a tamamlanır.
  • Bu değer 7’şer byte’tan oluşan 3 parçaya ayrılır.
  • Bu 3 değer DES anahtarı olarak kullanılır ve challenge adı verilen rastgele sayının şifrelenmesinde kullanılır.
  • Oluşan 8’er byte’lık değerler birleştirilerek 24 byte değer elde edilir. Bu değer sunucuya cevap (response) değeridir.

NTLM özetinin elde edilişi ile ilgili aşağıdaki şekil incelenebilir.

Şekil -2: NTLM Özeti
Şekil -2: NTLM Özeti

 

NTLMv1 protokolü özetle aşağıdaki gibidir.

C = 8-byte server challenge, random
K1 | K2 | K3 = LM/NT-hash | 5-bytes-0
response = DES(K1,C) | DES(K2,C) | DES(K3,C)

 

1.2) Özellikleri

  • Önceden hesaplanmış sayı (challange) sayesinde LM’e göre daha güvenilirdir. Aynı sayı kullanılmadıkça tekrar saldırılarına karşı biraz daha direnç sağlar.
  • LM özetleme tekniğine göre daha güvenilir olan NTLM özeti, gökkuşağı veya kaba kuvvet saldırılarına karşı LM özetleme tekniğine göre biraz daha dirençlidir.
  • İİstemci parolası ağ üzerinden yollanmaz.
  • Sunucu sadece kimlik doğrulama sonucunu bilir. Kullanıcının özel anahtarını bilmez.
  • Challenge/Response tabanlı bir protokoldür.
  • SSO’u desktekler.

 

1.3) Zayıflıkları:

  • NTLM, şifreleme için AES, SHA-256 gibi modern teknikler kullanılmaz.
  • Sunucu tarafından gönderilen değeri şifrelemekte kullanılan DES zayıf bir algoritmadır. Brute-force ile parola elde edilebilir. Bu amaçla Cain&Abel gibi araçlar kullanılabilir.
  • Microsoft olmayan sistemlerle iletişimde problemler çıkar.
  • MITM saldırılarına karşı açıktır. Aktif saldırganlar istemciye bilinen sayılar yollayarak cevap bekleyebilir. Böylece sözlük saldırılarıyla kullanıcının parolası elde edilebilir.

 

1.4) Notlar:

  • Günümüzde MS tarafından desteklenmemektedir. Windows Vista ve sonraki sürümlerde LM ve NTLM varsayılan olarak kullanılmamaktadır. Bunun yanında dahili kimlik doğrulama için NTLM, harici kimlik doğrulama içinse NTLMv2 hala kullanılmaktadır.
  • NTLM güvenilirliğini sağlamak için iletişim şifreli bir ağ üzerinden yapılmalıdır.

 

2) NTLMv2 Protokolü (Net-NTLMv2)

NTLMv2 protokolü NTLMv1 üzerinde sıkılaştırma uygulayarak daha güvenli şekilde kimlik doğrulama işleminin gerçekleştirilmesi için geliştirilmiştir.

Örnek NTLMv2 protokol cevabı aşağıdaki gibidir.

admin::N46iSNekpT:08ca45b7d7ea58ee:88dcbe4446168966a153a0064958dac6:5c7830315c7830310000000000000b45c67103d07d7b95acd12ffa11230e0000000052920b85f78d013c31cdb3b92f5d765c783030

 

NTLMv2 protokolüne ait cevabın formatı aşağıdaki gibidir.

<KullaniciAdi>::<EtkiAlaniAdi>:<SunucuRastgeleDegeri>:<IstemciRastgeleDegeri>:<NTLMCevabi>

NTLMv2 protokolünün cevabı aşağıdaki gibi kırılabilir.

john –format=netntlmv2 NTLMv2ProtokolCevabi.txt

hashcat -m 5600 -a 3 NTLMv2ProtokolCevabi.txt

 

Kaba kuvvet saldırısı ile parola özetini kırmanın yanında, NTLMv2 parola özeti kullanılarak SMB Relay saldırıları da gerçekleştirilebilir.

 

2.1) Adımları

Temel olarak sunucunun gönderdiği 8 byte’lık challenge değerine karşın 2 tane 16 byte’lık cevap (response) döndürür. Cevaplardan biri HMAC-MD5 ile özetlenmiş Server Challenge (SC), rastgele olarak üretilen Client Challenge (CC), ve kullanıcı parola bilgisinin yine HMAC-MD5 ile özetlenmiş halini içerir. Kısa olan cevap (response) üretilen 16 byte’lık değere 8 byte’lık SC (Server challenge) değerini de ekleyerek 24 byte’lık bir cevap elde eder ve bunu sunucuya gönderir. Bu cevap değerine LMv2 de denilir.

Diğer cevap ise sabit uzunlukta olmayan bir CC (Client Challenge) kullanılır. Zaman damgası (imestamp), 8 byte’lık rastgele değer, etki alanı adı ve bazı standart bigliler kullanır. Bu cevap mutlaka bu sabit uzunlukta olmayan CC değerinin bir kopyasını barındırmalıdır. Ve bundan dolayı bu response uzunluğu değişkendir. Bu cevap değerine NTv2 adı verilir.

Not: Temelde SAM içerisinde olan NT özeti, kullanıcı adı ve etki alanı adı işlemden geçirerek gönderir.

NTLMv2 protokolü özetle aşağıdaki gibidir.

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*

 

Güven ilişkisinin olduğu ortamlarda da süreç benzerdir. Akış süreci aşağıdaki gibi ilerlemektedir.

 

2.2) Özellikleri

NTLMv2 protokolü, NTLMv1 protokolünden çok daha güvenlidir, bunun başlıca sebepleri;

  • NTLM protokolü istemciye ait sayı (Client Challenge) kullanmazken NLTMv2 protokolünün istemciye ait sayı kullanması
  • Tekrarlama saldırılarından korunmayı güçlendirmek için zaman bilgisinin (time stamp) işlenmesi ve gönderilmesi.
  • HMAC-MD5 algoritması ile özetleme işlemlerinin yapılması.
  • NTLM protokolünde LM özeti ve NT özeti kullanılırken, NTLMv2 protokolünde yalnızca NT özeti kullanılmasıdır.

 

3) Yapılandırma

LM ve NTLM protokolleri güvenli olamadıklarından dolayı Windows Vista ve Windows Server 2008’den itibaren işletim sisteminde varsayılan olarak kullanılmayacak şekilde ayarlanırlar. Buna rağmen içeri doğru yapılan (inbound) yetkilendirmelerde NTLM hala kullanılır fakat dışa doğru olan (outbound) yetkilendirmede NTLM özetinden daha güvenilir olan NTLMv2 varsayılan olarak kullanılır. NLTMv2 ile ilgili yapılandırma ayarları grup ilkelerinden (Group policy) Local Policies\Security Options altında “Network security: LAN Manager authentication level” kısmında güncellenebilir. Ayrıca kayıt defterinden (registry) “LMCompatibilityLevel” anahtarından da bu ayar kontrol edilebilir. Windows Vista ve Windows Server 2008’de “LMCompatibilityLevel” değeri varsayılan olarak 3’tür. (NTLMv2 Response Only).

 

 

Kaynaklar:

https://www.bilgiguvenligi.gov.tr/microsoft-guvenligi/lanman-sifre-ozetinin-zayifliklari.html
https://medium.com/@petergombos/lm-ntlm-net-ntlmv2-oh-my-a9b235c58ed4
https://www.slideshare.net/rootedcon/carlos-garca-pentesting-active-directory

 

 

CEVAP VER

Yorumunuzu giriniz
İsminizi giriniz