Blog

LM-NTLM-NTLM2 ve Kerberos Nedir? Nasıl Çalışır? Ve Kerberos Geçiş Süreçleri

Active Directory, Microsoft tarafından geliştirilen bir dizin hizmetidir. Bir kuruluş içindeki tüm kullanıcılar, gruplar, bilgisayarlar ve diğer nesnelerin depolandığı merkezi bir konum olarak kullanılır. Bu nesnelerin doğrulanması, AD’nin doğrulama protokolleri kullanılarak yapılır.

  • LM, NTLM, NTLMv2 ve Kerberos, Microsoft Windows işletim sistemi ağ kimlik doğrulama protokolleridir. Bu protokoller, bir kullanıcının kimliğini doğrulamak ve ağ kaynaklarına erişim sağlamak için kullanılır. Bu protokoller arasındaki farklar, güvenlik seviyeleri, şifreleme yöntemleri ve çalışma prensipleri açısından önemlidir.
  • LM (Lan Manager) protokolü, Microsoft Windows işletim sistemi tarafından ilk olarak Windows NT öncesi sürümlerde kullanılmıştır. LM protokolü, kullanıcı şifrelerinin depolanması için DES (Data Encryption Standard) şifreleme yöntemini kullanır. Ancak, DES şifrelemesi artık güvenli değildir ve LM protokolü şifrelerin kolayca çözülebilmesine neden olabilir.
  • NTLM (Windows NT Lan Manager) protokolü, LM protokolünün yerini almak için geliştirilmiştir. NTLM, daha güvenli bir şifreleme yöntemi olan MD4 (Message Digest 4) şifreleme yöntemini kullanır. NTLM, LM protokolünden daha güvenli olsa da, hala bazı zayıf noktaları vardır ve saldırganların saldırı yapmasına izin verebilir.
  • NTLMv2, NTLM protokolünün güvenliğini artırmak için geliştirilmiştir. NTLMv2, daha güçlü bir şifreleme yöntemi olan HMAC-MD5 (Hash-based Message Authentication Code) şifreleme yöntemini kullanır. NTLMv2, NTLM protokolüne göre daha güvenlidir ve şifrelerin çözülmesini zorlaştırır.
  • Kerberos, Windows NT ve sonraki sürümlerinde kullanılan en güvenli ağ kimlik doğrulama protokolüdür. Kerberos, şifreleri doğrudan depolamak yerine, kullanıcının kimliğini doğrulamak için bir üçüncü taraf kimlik doğrulama sunucusu kullanır. Bu sunucu, kullanıcının kimliğini doğruladıktan sonra, kullanıcının ağ kaynaklarına erişim sağlamasına izin verir. Kerberos, AES (Advanced Encryption Standard) şifreleme yöntemini kullanır ve diğer protokollere göre daha güvenlidir.

LM ve NTLM protokollerinin kullanımı artık önerilmez ve mümkünse kullanılmamalıdır. NTLMv2, NTLM’ye göre daha güvenli olsa da, Kerberos’un daha güvenli olduğu kabul edilir. Kullanıcıların ağ kaynaklarına erişmek için mümkün olduğunca Kerberos protokolünü kullanmaları önerilir.

LM Nasıl Çalışır?

LM (Lan Manager) protokolü, Windows NT ve önceki sürümlerinde kullanılan eski bir kimlik doğrulama protokolüdür. LM protokolü, kullanıcının parolasını şifrelemek için DES (Data Encryption Standard) şifreleme yöntemini kullanır ve ağ güvenliği için güvenli değildir.

LM protokolü, kullanıcının parolasını şifrelemek için iki adımlı bir yöntem kullanır. İlk olarak, kullanıcının parolası büyük harflere dönüştürülür ve ardından 0 ile 7 arasında rastgele bir sayıya kadar dolgu karakterleri eklenir. Bu işlemin sonucu 14 baytlık bir şifreleme anahtarıdır.

Daha sonra, şifreleme anahtarı iki parçaya bölünür ve her bir parça ayrı ayrı şifrelenir. Şifreleme işlemi, DES şifreleme yöntemi kullanılarak gerçekleştirilir. Şifreleme işlemi sonunda, şifreleme anahtarı 16 baytlık bir şifre haline gelir.

LM protokolü, parolanın şifrelenmesinde zayıf bir yöntem kullanır ve saldırganlar tarafından kolayca kırılabilir. Bu nedenle, modern işletim sistemleri artık LM protokolünü kullanmamaktadır ve daha güvenli kimlik doğrulama protokolleri kullanmaktadır.

NTLM Nasıl Çalışır?

NTLM (NT Lan Manager) protokolü, Windows NT ve sonraki sürümlerinde kullanılan bir kimlik doğrulama protokolüdür. NTLM protokolü, LM protokolüne göre daha güvenli bir kimlik doğrulama yöntemi sunar, ancak Kerberos protokolüne göre daha zayıftır.

NTLM protokolü, kullanıcının parolasını şifrelemek için üç aşamalı bir yöntem kullanır. İlk aşamada, kullanıcının kimliği doğrulanır ve bir bilet isteği oluşturulur. İkinci aşamada, bilet isteği, sunucuya gönderilir ve sunucu, kullanıcının kimliğini doğrular ve kullanıcının şifresini şifrelemek için kullanılacak bir oturum anahtarı oluşturur.

Üçüncü aşamada, sunucu, oturum anahtarını kullanarak kullanıcının şifresini şifreler ve bunu kullanıcıya gönderir. Kullanıcı, şifrelenmiş parolayı sunucuya gönderir ve sunucu, şifrelenmiş parolanın doğru olup olmadığını kontrol eder.

NTLM protokolü, LM protokolünden daha güvenli bir yöntem kullanır ve şifreleme için daha güçlü bir yöntem olan MD5 (Message Digest 5) kullanır. Ancak, NTLM protokolü de bazı zayıflıklara sahiptir ve saldırganların saldırı yapmasına izin verebilir

NTLM2 Nasıl Çalışır?

NTLM2, NTLM protokolünün geliştirilmiş bir sürümüdür ve daha güvenli bir kimlik doğrulama yöntemi sunar. NTLM2 protokolü, Windows NT 4.0 Service Pack 4 ve sonraki sürümlerde kullanılmaktadır.

NTLM2 protokolü, üç aşamalı bir kimlik doğrulama yöntemi kullanır. İlk aşamada, istemci, sunucudan bir zorlama anahtarı (challenge key) alır. Zorlama anahtarı, sunucu tarafından oluşturulur ve istemciye gönderilir.

İkinci aşamada, istemci, kullanıcının parolasını şifrelemek için zorlama anahtarını kullanır. Şifreleme işlemi, NTLMv2 hashing algoritması kullanılarak gerçekleştirilir. Bu hashing algoritması, MD4 (Message Digest 4) hashing algoritmasını kullanır ve daha güçlü bir şifreleme yöntemi olarak kabul edilir.

Üçüncü aşamada, istemci, zorlama anahtarını ve kullanıcının şifrelenmiş parolasını sunucuya gönderir. Sunucu, istemcinin parolasını doğrular ve kimlik doğrulama işlemi tamamlanır.

NTLM2 protokolü, LM ve NTLM protokollerine göre daha güvenli bir yöntem kullanır ve daha güçlü bir şifreleme yöntemi olan NTLMv2 hashing algoritmasını kullanır. Ancak, NTLM2 protokolü de bazı zayıflıklara sahiptir ve saldırganların saldırı yapmasına izin verebilir. Bu nedenle, modern işletim sistemleri artık NTLM2 protokolü yerine Kerberos protokolünü kullanmaktadır.

Kerberos Nasıl Çalışır?

Kerberos protokolü, üç temel bileşenden oluşur: kimlik doğrulama sunucusu (Authentication Server – AS), bilet sunucusu (Ticket Granting Server – TGS) ve hizmet sunucularıdır.

Kerberos protokolü, kimlik doğrulama sürecini aşağıdaki adımlarla gerçekleştirir:

  1. Kullanıcı, kimlik doğrulama sunucusundan bir bilet almak için kimlik doğrulama isteği yapar. Bu istek, kullanıcının kimliğini ve şifresini içerir.
  2. Kimlik doğrulama sunucusu, kullanıcının kimliğini doğrular ve bilet sunucusundan kullanıcının kimliği için bir oturum anahtarı talep eder. Bu oturum anahtarı, kullanıcının kimliği için bir anahtar değeridir ve daha sonra şifreleme için kullanılacaktır.
  3. Bilet sunucusu, oturum anahtarını kimlik doğrulama sunucusuna gönderir.
  4. Kimlik doğrulama sunucusu, kullanıcının kimliğini ve oturum anahtarını kullanarak bir bilet oluşturur ve bu bileti kullanıcıya gönderir.
  5. Kullanıcı, hizmet sunucusuna erişmek istediğinde, önce bilet sunucusundan hizmet sunucusu için bir bilet alır.
  6. Bilet sunucusu, kullanıcının biletini doğrular ve kullanıcının kimliği için bir oturum anahtarı oluşturur.
  7. Kullanıcı, hizmet sunucusuna biletini ve oturum anahtarını gönderir.
  8. Hizmet sunucusu, kullanıcının biletini ve oturum anahtarını doğrular ve kullanıcının erişim talebini onaylar.

Kerberos protokolü, kullanıcıların kimliklerinin doğrulanmasını sağlamak için şifreleme ve kimlik doğrulama tekniklerini kullanır. Oturum anahtarı, biletler ve bilet sunucusu tarafından kullanılan anahtarlar, şifreleme için kullanılır ve saldırılara karşı daha güçlü bir koruma sağlamak için belirli aralıklarla değiştirilir.

LM, NTLM, NTLM2 ve Kerberos gibi kimlik doğrulama protokolleri, saldırılar için hedefler olabilir. Bu protokollere yönelik saldırılar, genellikle saldırganların kullanıcıların kimliklerini ele geçirmesini, ağa erişim elde etmesini veya diğer kötü amaçlı faaliyetler gerçekleştirmesini amaçlar.

Bu protokollere yönelik bazı yaygın saldırı yöntemleri:

  1. Brute Force Saldırıları: Saldırganlar, şifrelerin bir listesini oluşturur ve otomatik olarak protokolün kimlik doğrulama mekanizmasına giriş yaparak denemeler yapar. Bu yöntem, güçlü şifreler kullanıldığında bile zaman alıcı olabilir.
  2. Dictionary Attack: Bu saldırı türü, saldırganların yaygın olarak kullanılan şifreleri içeren bir sözlük oluşturmasını içerir. Saldırganlar, kimlik doğrulama protokolünün şifreleme algoritmasını çözmek için bu sözlüğü kullanarak şifreleri deneyebilirler.
  3. Pass-the-Hash Attack: Bu saldırı türü, bir saldırganın, kimlik doğrulama protokolü tarafından kullanılan şifreleme algoritmasını çözmesine gerek kalmadan, bir kullanıcının kimliği için bir oturum açmasına izin veren bir işlemi ifade eder. Saldırganlar, LM, NTLM veya NTLM2 kimlik doğrulama protokollerinden birini kullanarak oturum açıp, oturum açma isteğinde kullanılan kimlik doğrulama oturum anahtarını ele geçirirler. Daha sonra, bu oturum anahtarını kullanarak ağa erişirler.
  4. Pass-the-Ticket Attack: Bu saldırı türü, Kerberos kimlik doğrulama protokolünü hedef alır. Saldırganlar, kullanıcının kimliği için bir Kerberos biletini çalıp, bu biletin doğrulanmasında kullanılan oturum anahtarını ele geçirirler. Daha sonra, bu oturum anahtarını kullanarak ağa erişirler.

NTLM’den Kerberos geçiş süresi

NTLM’den Kerberos’a geçiş önemli olduğu kadarda zor ve dikkatli olunması gereken bir süreçtir. Özellikle büyük organizasyonlarda LM,NTLMv1 ve NTLMv2 kullanan çokca donanım bulunabilir. Bu üzden geçiş için aşağıdaki listeyi kontrol edebilirsiniz.

  1. Kerberos’un kullanılabilmesi için tüm bilgisayarların ve kullanıcı hesaplarının Active Directory ortamına dahil edilmiş olması gerekmektedir.
  2. Kerberos kullanımı, zaman senkronizasyonunun doğru bir şekilde yapılmış olmasına bağlıdır. Tüm bilgisayarların ve sunucuların zaman ayarları doğru şekilde yapılandırılmalıdır. Kerberos, zaman farkı belirli bir süreyi geçtiğinde kimlik doğrulama işlemini reddeder.
  3. Kerberos kimlik doğrulama protokolü, tek yönlü işlevler kullanır. Bu nedenle, Kerberos etkinleştirildiğinde, tüm sunucular ve istemciler için doğru yönlendirme ayarlarının yapıldığından emin olunmalıdır.
  4. Kerberos, hizmet hesapları için anahtarlar oluşturur ve bunları Active Directory’de saklar. Bu nedenle, Kerberos’un doğru şekilde çalışabilmesi için, hizmet hesaplarına sahip olan tüm sunucuların etki alanına üye olması ve hesaplarının Active Directory’de doğru şekilde yapılandırılması gerekmektedir.
  5. NTLM ve Kerberos protokollerinin bir arada kullanımı mümkündür. Ancak, güvenliğin artırılması için mümkün olan en kısa sürede tüm sistemlerin Kerberos’a geçiş yapması önerilir.
  6. Kerberos kullanımı, gizlilik ve bütünlük için şifreleme gerektirir. Bu nedenle, tüm sistemlerin doğru şekilde yapılandırılmış şifreleme algoritmalarını desteklemesi gerekmektedir.
  7. Group Policy’leri birden tüm sisteme uygulamadan bölüm bölüm OU’lara linklemeniz sistemlerin etkilenmemesi için size büyük fayda sağlayacaktır.

Bu adımların hepsi, NTLM’den Kerberos’a geçiş yaparken dikkate alınması gereken önemli noktalardır. Bu yönergeleri izleyerek, Kerberos kullanımı ile ilgili sorunları en aza indirgeyebilir ve güvenli bir ağ ortamı oluşturabilirsiniz.

Geçiş sürecibi 3 Faz’a ayırıdm, Adım adım minumum iş kaybı ile geçiş adımlarını inceleyeceğiz.

FAZ 1

NTLM protokolünü monitoring etmek

Bu adımların başında NTLM kullanan sistemleri monitoring etmek gelir. Aşağıdaki adımlar NTLM kullanımını Event Viewer’da görmenizi sağlayacaktır.

Yeni bir GPO oluşturuyorum.

Computer Configurations -> Policies -> Windows Settings -> Security Settings -> Local Policies -> Security Options

Network Security: Restrict NTLM: Audit NTLM authentication in this domain : Enable all

Network Security: Restrict NTLM: Audit Incoming NTLM Traffic : Enable auditing for domain accounts

Network security: Restrict NTLM: Outgoing NTLM traffic to remote servers : Audit all

Bu adımların sonunda Event Viewer altında “Application and Services Logs-> Microsoft -> Windows -> NTLM“‘de NTLM loginlerini görmelisiniz veya Microsoft-Windows-Security-Auditing with the Event ID 4624 ilede görüntüleyebilirsiniz.

Bu süreçte Kerberos desteklemeyen uygulamalarınız olabilir. Aşağıdaki seçenek ile Kerberos doğrulamadan hariç tutmak istediğiniz cihazlar buraya ekleyebilirsiniz. Buda riskinizi düşürmeye yardımcı olacaktır.

Computer Configurations -> Policies -> Windows Settings -> Security Settings -> Local Policies -> Security Options

Network security: Restrict NTLM: Add server exceptions for NTLM authentication in this domain

Oluşturduğum bu GPO ve içindeki ayarları Domain’nin entepesinden Linkliyorum. Bu adım sadece Audit olduğundan bir risk içermez. Son olarak ortamınızda SIEM yada benzeri bir log ürünü varsa o kaynaklardan da analiz etmeniz yararınıza olacaktır.

FAZ 2

FAZ 1 de sistemlerimizi analiz ettik, FAZ 2 de ise LM ve NTLMv1 protokollerini bloklama ile devam edebiliriz. Bunun için “Network Security: LAN Manager authentication level” seçeneğini kullanıyoruz. Burada bizi bir çok seçenek karşılıyor.

  • Send LM & NTLM responses;
  • Send LM & NTLM responses – use NTLMv2 session security if negotiated;
  • Send NTLM response only;
  • Send NTLMv2 response only;
  • Send NTLMv2 response only. Refuse LM;
  • Send NTLMv2 response only. Refuse LM& NTLM.

Biz Send NTLMv2 response only; diyerek NTLMv2 dışındaki bağlantıları blokluyoruz.Bu işlemlerin ardında artık ortamdaki cihazlarını NTLMv2 altında bir protokoller artık haberleşmeyecektir. Size önerim sistemlerini bir süre gözlemlemeniz sonrasında FAZ 3’e geçmeniz olacaktır. Bir not daha yine FAZ 2 adımını OU bazlı sırayla yapmanız ve her şey normal çalışıyorsa Domain geneline genişletmeniz.

FAZ 3

Artık Domain ortamımızdan NTLM tamamen kapatmak için hazır. Son olarak listemi kontrol ediyorum.

1 – Tüm sistemimim analiz ettim ve NTLM kullanan cihazları tespit ettim.

2 – Kerberos desteklemeyen cihazları hariç tuttum ve kerberos destekler hale getirdim.

3 – Tüm risk analizlerimi yaptım.

Network security: Restrict NTLM: Incoming NTLM traffic” seçeneğini “Deny all” olarak ayarlıyorum.

Network security: Restrict NTLM: Incoming NTLM traffic: “Deny all accounts

Network security: Restrict NTLM: Outgoing NTLM traffic to remote servers: “Deny all

Son olarak client bilgisayarda “klist sessions” komutu ile kerberos ile doğrulama yaptığını görüyoruz.

Kerberos geçiş süreçleri sancılı süreçlerdir, doğru analiz ve uzmanlık gerektirir. Bu nedenle böyle bir geçiş planınız varsa doğru bir planlanlama ile geçiş yapmanızı tavsiye ederim. Keyifli okumalar.

İlgili Makaleler

5 Yorum

  1. Cok guzel bir makale, elinize saglik.

    Faz 1 deki 4624 Event Id leri incelemek icin tek tek app sunucularini mi kontrol etmek gerekiyor?

  2. tesekkur ederim, o halde her 4624 Event icin ilgili DC de bir log olusacak. Eger merkezi bir SIEM cozumu yok ise asagidaki gibi script ile loglar bir paylasima aktarilip inceleme acisindan kolaylik olabilir

    # Set the event IDs to filter for
    $EventIDs = @(4624)

    # Define the time range to search for events
    $StartTime = (Get-Date).AddDays(-7)
    $EndTime = Get-Date

    # Get the events that match the specified IDs and time range
    $Events = Get-WinEvent -FilterHashtable @{ LogName = ‘Security’; ID = $EventIDs; StartTime = $StartTime; EndTime = $EndTime } -ErrorAction SilentlyContinue

    # Measure the time it takes to execute the script
    $timer = Measure-Command {
    # Loop through the events and export them to a CSV file
    foreach ($event in $Events) {
    # Your event processing code here
    # …

    # Calculate the estimated time to complete
    $remainingEvents = $Events.Count – $event.Index
    $remainingTime = $remainingEvents * $timePerEvent
    $estimatedEndTime = (Get-Date).AddMilliseconds($remainingTime)

    # Display progress and estimated time
    Write-Progress -Activity “Exporting Security events” -PercentComplete (($event.Index / $Events.Count) * 100) -Status “Event $($event.Index) of $($Events.Count)” -SecondsRemaining [Math]::Max(0, ($estimatedEndTime – (Get-Date)).TotalSeconds)
    }
    }

    # Calculate the average time per event
    $timePerEvent = $timer.TotalMilliseconds / $Events.Count

    # Export the events to a CSV file with a unique name
    $DCName = $env:COMPUTERNAME
    $TimeInfo = (Get-Date -Format “yyyyMMdd-HHmmss”)
    $OutputPath = “Paths\SecurityEvents_${DCName}_${TimeInfo}.csv”
    $Events | Export-Csv -Path $OutputPath -NoTypeInformation

    # Display the elapsed time and output path
    Write-Host “Export completed in $($timer.TotalSeconds) seconds.”
    Write-Host “Output file: $OutputPath”

  3. Hocam faz 1 Dc dahil tüm ou lara uyguluyoruz demi? Faz 2 ilk senaryo nasıl?

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu