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::: 
 
## 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.

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

Ş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
```
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](http://technet.microsoft.com/tr-tr/magazine/2006.08.securitywatch(en-us).aspx) 

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 

## Dış bağlantılar