Windows Üzerinde Yerel Kimlik Doğrulama Açısından SAM ve SYSTEM Dosyalarının Önemi ve LANMAN/NTLM Özetleme Algoritmalarının İncelenmesi

Windows işletim sisteminde, yerel kullanıcı hesaplarının kimlik doğrulaması SAM veritabanındaki kimlik bilgileri ile gerçekleşir. SAM dosyası, SYSTEM dosyasındaki SYSKEY adı verilen bir anahtar ile şifrelenmiştir. Şifrelenmiş SAM dosyasında yerel kullanıcı hesaplarının LM ve NTLM parola özetleri bulunmaktadır. Yerel kullanıcının girdiği parolanın LM ve NTLM özeti SAM dosyasındaki ile aynı ise, oturum açma işlemi (yetkilendirmesi de varsa) başarılı bir şekilde gerçekleşir. Bu yazıda, SAM ve SYSTEM dosyalarının kimlik doğrulama açısından önemi ve SAM veritabanında kullanılan LM ve NTLM özetleme algoritmaları incelenecektir.

Windows işletim sistemindeki kullanıcı hesaplarının parola özetleri disk üzerinde açık olarak tutulmaz, özet (hash) olarak tutulur. Özet fonksiyonları (MD5, SHA-1 gibi) tek yönlüdür. SAM dosyasında bir kullanıcıya ait parolanın iki farklı özeti tutulur. Bunlar LANMAN özet ve NTLM özetidir. LM özeti, Windows Vista sürümü öncesindeki Windows işletim sistemi versiyonlarına uyumluluk sağlanabilmesi için varsayılan ayarlarda (AAD3B435B51404EEAAD3B435B51404EE) oluşturulup kullanıcı hesapları veritabanında saklanmaktadır.

Windows işletim sisteminde yerel kullanıcı hesaplarına ait bilgilerin tutulduğu yer SAM (Security Account Manager) dosyasıdır. SAM dosyası %SystemRoot%\System32\Config klasörü altında bulunur ve işletim sistemi çalışır vaziyette iken bu dosyaya erişimi kontrolünde tutar. Bundan dolayı işletim sistemi çalışıyorken (çalışma anında – run time) SAM dosyası (ve aynı zamanda SYSTEM dosyası) üzerinde kullanıcılar herhangi bir işlem yapamazlar. SYSTEM dosyasında ise bir sistem ile ilgili bir çok verinin yanında SAM dosyasında tutulan kullanıcı parolalarının şifrelenmesinde kullanılan SYSKEY bilgisi de tutulur. SYSTEM dosyası da %SystemRoot%\System32\Config klasörü altında bulunur.

Güvenlik önlemi olarak SAM dosyası içerisinde kullanıcılara ait parola bilgileri açık şekilde tutulmaz. İşletim sistemi versiyonuna bağlı olarak kullanıcı parolalarını NTLM veya LM özeti fonksiyonuna sokarlar. Bu fonksiyonun sonucunu da SYSTEM dosyası içerisinde bulunan SYSKEY ile şifreler ve bu şekilde SAM dosyasında tutar. SAM dosyasında tutulan kullanıcı bilgileri formatı aşağıdaki gibidir.

testhesabi:””:0F20048EFC645D0A179B4D5D6690BDF3:1120ACB74670C7DD46F1D3F5038A5CE8:::

En başta kullanıcı adı (testhesabi), daha sonra bu kullanıcıya ait ipucu bilgisi (yukarıdaki örnekte “” olarak belirtilen kısım kullanıcının ipucu bilgisinin olmadığını gösterir). 0F200… ile başlayan ilk kısım kullanıcı parolasının sistemde tutulan LM özet değerini, 1120ACB… ile başlayan ikinci kısım da parolanın sistemde tutulan NTLM özet değerini gösterir.

Not: Etki alanındaki (Domain) kullanıcıların bilgisi ise, etki alanı denetleyicisindeki (Domain Controller – DC) NTDS.dit dosyasında bulunmaktadır.

 

1) LM Özeti

Microsoft işletim sistemleri, eski işletim sistemleri ile iletişim kurması gerekebilmektedir. Bu nedenle, eski sürümlerde olan bazı özellikler – yeni sürümler kendi arasında kullanmadığı halde – yeni versiyonlara eklenmektedir. LM özeti de, Windows NT ailesi işletim sistemleriyle, Windows 3.11/95/98/Millenium Edition işletim sistemlerinin kimlik doğrulamasında kullanılır. Dolayısıyla bu işletim sistemleri arasında sorunsuz olarak dosya ve yazıcı paylaşımına imkan sağlanmış olur. Ancak Windows NT ailesindeki (NT, 2000, 2003) işletim sistemleri kendi aralarında kimlik doğrulaması yaparken LM özeti kullanmazlar.

LM kimlik doğrulama için kullanılan LM özetleme metodu gökkuşağı saldırılarıyla birkaç saniyede, kaba kuvvet saldırılarıyla (brute force) ise birkaç saatte çözülebilir.

1.1) Adımları

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

  • Öncelikle parola büyük harflerden oluşacak şekilde düzenlenir.
  • Parolanın ilk 14 karakteri alınır. 14 karakterden daha kısa ise boş (null) karakter eklenir. 14 karakterden uzunsa sonuna “0” karakteri eklenir.
  • Parola 7 karakterlik 2 parçaya bölünür ve her parça sabit bir katarı (string –> “KGS!@#$%”) DES şifreleme algoritmasıyla şifrelemek için  anahtar olarak kullanılarak 2 adet özet değeri elde edilir. (Bu sebeple, LM özetleme algoritması, bir şifreleme algoritması olarak da görülebilir.)
  • Oluşturulan 8 byte özet değeri uç uca eklenir ve 16 byte uzunluğunda özet değeri elde edilir.

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

local-windows-authentication-via-sam-and-system-files-and-lm-ntlm-hashes-01

Şekil – 1: LM Özeti

 

1.2) Zayıflıkları

  • LM özetinde büyük harf-küçük harf duyarlılığı bulunmamaktadır.
  • Parolanın ilk 14 karakteri alınır. Daha kısa ise 14 karaktere kadar bilinen bir karakterle (‘0’) tamamlanır.
  • Parolası olmayan veya 14 karakterden daha uzun parolası olan bir kullanıcının LM özeti sabit ve bilinen bir sonuç (AAD3B435B51404EE-AAD3B435B51404EE) verir. Bu sebeple boş parola ile sisteme giriş yapılma teşebbüsünde bulunabilir, başarısız olunması durumunda ise, parolanın 14 karakterden daha uzun olduğu anlaşılır.
  • DES şifrelemede sabit bir katar (“KGS!@#$%”) kullanılmaktadır. LM özeti, DES adlı bir şifreleme metodu kullandığından, aslında bir özetleme yöntemi bile sayılmayabilir.
  • Tuzlama kullanılmaz. Şifreleri aynı olan kullanıcıların LM özetleri de aynı olur.
  • 8 karakterden daha kısa olan parolaların LM özetinin ikinci parçası AAD3B435B51404EE olur. Bu sebeple, LM özetine ait ikinci parçası AAD3B435B51404EE olan bir parolanın 7 veya daha az sayıda karaktere sahip olduğu şeklinde bir yorum yapılabilir.
  • İlk veya son 7 karakteri aynı olan kullanıcıların parolalarının LM özet değerlerinin de ilk veya son parçaları aynı olur. Parolası “Bb123456” olan bir kullanıcı ile parolası “bB12345” olan başka bir kullanıcının parolalarına ait LM özetlerinin ilk 16 byte’lık parçaları aynıdır.
  • Parolaların özet değerleri ağ üzerinden gönderilmektedir. Bu sebeple MITM saldırılarına açıktır.
  • Sistemde Windows 95, Windows 98 ve Windows ME işletim sistemine sahip bilgisayar yoksa veya bu işletim sistemine sahip bilgisayarlar, NT ailesindeki işletim sistemleriyle dosya paylaşımı yapmıyorlarsa Windows NT tabanlı işletim sistemlerinin LM özeti tutulma özelliği iptal edilmelidir.

 

2) NTLM Özeti

Ağ ortamındaki Windows NT 4.0 veya daha eski versiyonlarla iletişim kurulmasında kullanılan kimlik doğrulama protokolüdür. Windows Server 2003 ailesi için varsayılan iletişim protokolüdür. LM protokolünün zayıflıklarından dolayı ortaya atılmıştır.

NTLM hem depolama (SAM dosyasında) hem de iletişim protokolü (iki makine arasında) olarak kullanılır.

LM kimlik doğrulamada parolanın özeti bağlanılmak istenen her sunucuda bulunmak zorundaydı. Etki alanlarının oluşturulması ve merkezi bir yapının oluşturulması bu güvenlik riskini bir nebze de olsa etkisini azaltmıştır. Etki alanı kavramı ile NTLM kullanılmaya başlanmıştır. İstemcilerin parolalarının özeti sadece DC’lerde saklanmaya başlamıştır.

2.1) Adımları:

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

  • İstemci kullanıcı adını açık halde sunucuya göndererek erişim talebinde bulunur.
  • Sunucu istemciye kimliğini ispatlaması için 16 byte’lık rastgele bir sayı yollar. Bu sayıya “challenge” veya “nonce (number used once)” adı verilir.
  • İstemci özel anahtarı (parolasının özeti) ile bu sayının özetini alarak sunucuya cevap verir. (Bu adımın ayrıntıları aşağıda listelenmiştir.)
  • Sunucu etki alanı denetleyicisine kullanıcı ismini, bu şifreli sayıyı ve sayının 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.
  • İstemcinin özel anahtarına sahip olan etki alanı denetleyicisi, sayıyı (challange) istemcinin özel anahtarı ile özetleyerek daha önceden alınan özet sayı değeri ile karşılaştırır. Sonucu sunucuya gönderir.
  • Sunucu cevabı istemciye bildirir.

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

  • Kullanıcı parolasının MD4 ile özetlenmiş hali istemci özel anahtarı olur. Bu özet değerine NTLM özetidir.
  • Elde edilen 16 byte’lık değere 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 özetini alır.
  • Oluşan 8’er byte’lık değerler birleştirilerek 24 byte değer elde edilir. Bu değer sunucuya cevap değeridir.

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

Şekil -2: NTLM Özeti

Şekil -2: NTLM Özeti

 

2.2) Özellikleri

  • LM gibi, NTLM özeti de SAM dosyasında saklanır.
  • Ö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.
  • Karakterler büyük harfe çevrilmediği için LM özete göre daha fazla olasılık vardır.
  • LM’deki gibi, parolanın kendisi parçalara ayrılmaz. Özeti ayrılır.
  • LM ile çalışan sistemlerle uyumlu çalışır. Geçmişe uyumludur.
  • NTLM kimlik doğrulama, bütünlük ve gizlilik sağlar. Bütünlük için CRC (Cyclic redundancy check) ve özetleme algoritmaları (RFC1321) kullanır. Şifreleme için RC4 kullanır.
  • 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 parola makinede özeti alınarak SAM dosyasında saklanır.
  • İstemci parolası ağ üzerinden yollanmaz. Parolanın özetinin bir kısmı şifreli bir kanal üzerinden yollanır.
  • Sunucu sadece kimlik doğrulama sonucunu bilir. Kullanıcının özel anahtarını bilmez.
  • Challenge/Response tabanlı bir protokoldür.
  • SSO’u desktekler.

2.3) Zayıflıkları:

  • NTLM, şifreleme için AES, SHA-256 gibi modern teknikler kullanılmaz.
  • Parolanın özeti alınırken kullanılan MD4 zayıf bir algoritmadır.
  • Sayıyı ş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.
  • SAM dosyası bir şekilde elde edilebilir ve parolanın özeti de saldırganların eline geçebilir.
  • Özel anahtar parola kadar değerlidir. Bu sebeple, PTH saldırılarına karşı zayıftır.
  • Microsoft olmayan sistemlerle iletişimde problemler çıkar.
  • Tuzlama kullanılmaz.
  • 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.

2.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.

 

Kaynak:

https://www.bilgiguvenligi.gov.tr/microsoft-guvenligi/lanman-sifre-ozetinin-zayifliklari.html

 

 

Yazarın Bilgileri

Ertuğrul BAŞARANOĞLU
Ertuğrul BAŞARANOĞLU

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Kullanabileceğiniz HTLM etiketleri ve özellikleri: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Bu sayfada incelenen konulardan doğacak sorunlar kişinin kendi sorumluluğundadır.