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

0
3905
views
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.

Pentist: Sızma Testleri ve Bilgi Güvenliği Danışmanlık Hizmetleri

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ı (SAM & NTDS.dit) 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) “systemroot\NTDS\” dizini altındaki Ntds.dit dosyasında bulunmaktadır.

 

0) Ön Bilgilendirme

Microsoft ortamında kimlik doğrulama aşamasında LM, NTLM, Kerberos gibi  protokoller / yöntemler kullanılır.

NTLM iki şekilde kullanılır

  • MS-NLMP (Challange / Response) kimlik doğrulama protokolünün parçası olarak kimlik doğrulama amaçlı
  • Parola depolama amaçlı

MS-NLMP kimlik doğrulama protokolünün parçası olarak;

  • LM: Parola depolama ve ağ üzerinden kimlik doğrulama amacı ile kullanılır. DES şifrelemeye benzer özetimsi (pseudo-hash) bir algoritmadır. Oldukça fazla zayıf bir yöntemdir.
  • NTLM v1: Parola depolama ve ağ üzerinden kimlik doğrulama amacı ile kullanılır. MD4 özetleme algoritması kullanılır. Çok zayıf bir yöntemdir.
  • NTLM v2: Ağ üzerinden kimlik doğrulama amacı ile kullanılır. MD5 özetleme algoritması kullanılır. Zayıf bir yöntemdir. Ancak diğerlerine göre daha güvenilirdir.

Geçmişe yönelik uyumluluk açısından NTLMv1 kullanımı ile karşılaşılabilmektedir.

Bunlara ek olarak NTLM’i destekleyen protokoller aşağıdaki gibi sıralanabilir.

  • LDAP
  • HTTP
  • SMB
  • SMTP
  • POP
  • IMAP

NTLM sürümleri ile ilgili detaylı bilgi için kaynaklardaki Siberportal bağlantısı incelenebilir.

 

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.

Örnek LM özet değeri aşağıdaki gibidir.

299BD128C1101FD6

Aşağıdaki gibi kırılabilir.

john –format=lm LMOzetDegeri.txt

hashcat -m 3000 -a 3 LMOzetDegeri.txt

 

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.
  • 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 (NT Hash)

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 özetleri de kimlik doğrulama amacı ile SAM & NTDS.dit içerinde saklanı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.

Örnek NTLM özet değeri aşağıdaki gibidir.

B4B9B02E6F09A9BD760F388B67351E2B

NTLM özeti şağıdaki gibi kırılabilir.

john –format=nt NTLMOzetDegeri.txt

hashcat -m 1000 -a 3 NTLMOzetDegeri.txt

 

2.1) Adımları

Kullanıcının parolası Little Endien UTF-16 formatına çevrildikten sonra MD4 özetleme algoritmasına göre özeti alınır.

NTLM özetleme algoritması özetle aşağıdaki gibidir.

MD4(UTF-16-LE(ParolaDegeri))

 

2.2) Özellikleri

  • LM gibi, NTLM özeti de SAM (veya NTDS.dit) dosyasında saklanır.
  • Karakterler büyük harfe çevrilmediği için LM özete göre daha fazla olasılık vardır.
  • Kullanıcı parolasının MD4 ile özetlenmiş hali saklanır. MD4 algoritması LM tarafından kullanılan DES algoritması gibi şifreleme değil özetleme algoritmasıdı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.
  • 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.

2.3) Zayıflıkları:

  • Parolanın özeti alınırken kullanılan MD4 zayıf bir özetleme algoritmadır.
  • 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.
  • Tuzlama kullanılmaz.

 

Kaynaklar:

https://www.siberportal.org/blue-team/securing-microsoft-domain-environment/microsoft-ortaminda-ntlmv1-ve-ntlmv2-protokolleri-ile-ag-uzerinde-kimlik-dogrulama/
https://medium.com/@petergombos/lm-ntlm-net-ntlmv2-oh-my-a9b235c58ed4

 

 

Pentist: Sızma Testleri ve Bilgi Güvenliği Danışmanlık Hizmetleri

CEVAP VER

Yorumunuzu giriniz
İsminizi giriniz

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.