Lm ntlm şifreleme

Günlük kullanmış olduğumuz şifreler disk üzerinde özet olarak kayıt edilir. Bu özetler iki ayrı şekilde LM ve NTLM olarak tutulup birbiri ile entegre olarak işlem görür ve kimlik doğrulamasını gerçekleştirir. Windows işletim sisteminde ise kullanıcı hesapları ve parolaların şifrelemesinde kullanılan SYSKEY bilgisi SAM (Security Account Manager) dosyasında tutulur. İşletim sistemi çalışır durumunda bu dosyayı kontrolünde tutar, Admin dahi olunsa işletim sistemi içerisinden herhangi bir müdahaleye izin vermez. Windows İşletim sistemleri versiyonu doğrultusunda, kullanıcı parolalarını NTLM veya LM özeti fonksiyonuna sokarlar. Sonuç olarak SYSTEM dosyası içerisinde bulunan SYSKEY ile şifreler ve bu şekilde SAM dosyasına kayıt eder. Örnek olarak SAM dosyasında tutulan kullanıcı hesap bilgileri aşağıdaki gibidir. testuser1:"":0F20048EFC645D0A179B4D5D6690BDF3:1120ACB74670C7DD46F1D3F5038A5CE8::: Kullanıcı Adı İpucu LM(Lanman) Şifre Özeti NTLM(NT Lan Manager) şifre özeti testuser1 : "" : 0F20048EFC645D0A179B4D5D6690BDF3 : 1120ACB74670C7DD46F1D3F5038A5CE8 ::: == LM(Lanman) == === 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. küçükresim|Lm Özet alma Kriptosu Şekil 1- LM Şifrelemesinde Özet üretimi === LM Şifrelemesinde İzlenen Adımlar === # Parolada harf var ise büyük harflere çevrilir. # Parola 14 karakter ise ilk 14 karakteri alınır. 14 karakterden daha kısa ise eksik karakterler yerine boş (null) karakter eklenir. 14 karakterden uzun ise sonuna ‘0’ karakteri eklenir. # Elde edilen 14 karakterlik değer 7 karakterlik 2 parçaya bölünür ve her parça sabit bir katarı (string) DES şifreleme algoritmasıyla şifrelemek için anahtar olarak kullanılarak 2 adet özet değeri elde edilir. # Oluşturulan 8 byte özet değeri uç uca eklenir ve 16 byte uzunluğunda özet değeri elde edilir. küçükresim|Lm Özet Şekil 2- LM Özet === Zayıf Yönleri === * LM özeti alınırken büyük harfe çevrildiğinden büyük-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 kullanılmaktadır. LM özeti, DES ş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. * İ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. * 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. 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. == NTLM(NT Lan Manager) == === 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. Aynı zamanda Windows Server 2003 ailesi için varsayılan iletişim protokolüdür. LM protokolünün zayıflıklarından dolayı kullanılmaya başlanmış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. Şekil 3- NTLM Şifre özeti === NTLM Şifrelemesinde İzlenen Adımlar === # İstemci kullanıcı adını açık halde sunucuya göndererek bağlantı kurmak ister. # 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. # 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ğrultması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. Şekil-4 NTLM özeti adımları İşlem//en.wikipedia.org/wiki/NT_LAN_Manager C = 8-byte sunucunun rastgele sayısı(challenge) K1 | K2 | K3 = NT-Hash | 5-bytes-0 R1 = DES(K1,C) | DES(K2,C) |DES(K3,C) K1 | K2 | K3 = LM-Hash | 5-bytes-0 R2 = DES(K1,C) | DES(K2,C) |DES(K3,C) Cevap = R1 | R2 === Genel Özellikleri === * LM gibi, NTLM özeti de SAM dosyasında saklanır. * Önceden hesaplanmış sayı (challage) 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ğı saldırılarına veya brute force’a 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 destekler. === Zayıf Yönleri === * 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. == NTLMv2 == === NTLMv2 ile Kimlik Doğrulama === 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. 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. İşlem SC = 8-byte sunucunun rastgele sayısı(challenge) CC = 8-byte istemcinin rastgele sayısı (challenge) CC* = (X, time, CC2, Domain Adı) v2-Hash = HMAC-MD5(NT-Hash, Kullanıcı Adı, Domain Adı) LMv2 = HMAC-MD5(v2-Hash, SC, CC) NTv2 = HMAC-MD5(v2-Hash, SC, CC*) cevap = LMv2 | CC | NTv2 | CC* Not: Temelde SAM içerisinde olan NT özeti, kullanıcı adı ve etki alanı adı işlemden geçirerek gönderir. NTLMv2 NTLM 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. 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). === Kaba Kuvvet ile kırma yöntemi === Şifre kırma programları özet değerinden şifre elde etme işlemini sözlük ve kaba kuvvet atakları yaparak gerçeklemeye çalışırlar. Gerçekleştirdikleri işlem şu şekilde özetlenebilir: Öncelikle sözlük veya kaba kuvvet atağında kullanılan şifrenin özeti hesaplanır, daha sonra elde edilen özet SAM dosyasında yer alan şifre özetiyle karşılaştırılır. Özet değerleri birbirinden farklıysa yeni bir şifre denenir. MD5 ve SHA algoritmaları özet fonksiyonlarına örnek olarak verilebilir. == Kaynakça == 1 2008 T.Mataracıoğlu, LANMAN Şifre Özetinin Zayıflıkları 2 J. Johansson, The Most Misunderstood Windows Security Setting of All Time 3 2006 E. Glass, The NTLM Authentication Protocol and Security Support Provider 4 P. Dunstan, LM/NTLMv1 Challenge/Response Authentication Explained, 5 2012 S. Bowne, NTLM Hashes and a False Article from a SPAWAR Employee 6 NT LAN Manager == Dış bağlantılar ==