Microsoft Ortamında Kerberos Ile Kimlik Doğrulama

0
3082
views
Kerberos ilk olarak Needham ve Shroeder tarafından 1978’de bulundu ve 1981’de Sytek Secure LocalNet tarafından geliştirilerek ticari ürün olarak gerçeklendi. Kerberos protokolü simetrik anahtarların bir anahtar sunucusu tarafından dağıtılması için kullanılır. Microsoft ortamında temel kimlik doğrulaması olarak Kerberos kullanılır. Bu yazıda Microsoft’un Kerberos implementasyonu incelenecektir.

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

Kerberos MIT tarafından ortaya atılmış, bir çok büyük kurum tarafından deskteklenmiştir. Microsoft, Kerberos ile kimlik doğrulama protokolünde bir takım özelleştirmelere gitmiş ve bu özel varyasyonunu kullanmaktadır. Microsoft tarafından kullanılan Kerberos protokolü, Windows Server 2000 ve sonrasında varsayılan olarak kullanılan oldukça güvenilir bir sistemdir. Kerberos’un kullanımda olan 2 sürümü vardır. Bunlar sürüm 4 ve sürüm 5’tir. Sürüm 4’ün açıklıklarından ötürü sürüm 5 tercih edilmektedir.

Kerberos’un temel olarak 3 tarafı vardır:

  • Hizmeti alacak olan istemci
  • Etki alanı deneleyicisi – KDC (Key Distribution Center)
  • Hizmet alınacak olan sistem/sunucu

 

Not: Kerberos, DNS olmayan ortamda çalışmaz. Yani DNS’e bağımlı bir yapısı vardır. Örneğin “\\PaylasimSunucusu.ornek.local\Dizin” veya “\\PaylasimSunucusu\Dizin” yerine “\\10.10.10.10\Dizin” şeklinde erişim denendiğinde, Kerberos kullanılamaz, NTLM’e düşürülür.

 

1) Kerberos ile Kimlik Doğrulamanın Adımları

Kerberos ile kimlik doğrulamada yapılan işlem özetle, istemcinin sunucuya erişmek için KDC’den bilet alması, bu bileti sunucuya yollaması ve sonrasında da sunucu bu bilete bakarak istemcinin kimliğinin doğruluğunu kabul etmesidir. Bu başlık altında, Microsoft ortamında Kerberos ile kimlik doğrulama adımları incelenecektir. DNS sorgulamasından sonra başlayan Kerberos kimlik doğrulamasının temel olarak 6 adımı bulunmaktadır. Bu adımlar aşağıdaki gibidir.

kerberos-authentication-on-microsoft-environments-01

  1. İstemci KDC’ye kendisini ispatlamaya çalışarak ön bilet ister. Bu amaçla; istemci, içerisinde zaman damgası olan Authenticator adı verilen bir paketi, kendi özel anahtarı (parolasının özeti) ile şifreler. Bu şifreli paketi, kullanıcı adını ve bağlı olduğu domain adını KDC’nin Authentication Service (AS) adlı servisine gönderir. Bu adıma AS_REQ denir. AS, istemcinin özel anahtarıyla Authenticator paketini deşifre ederek zaman damgasını (formatı: YYYYMMDDHHMMSSZ – Year/Month/Day/Hour/Minute/Second) kontrol eder. Ayrıca, DC üzerinde bulunan veritabanında (NTDS.dit) kullanıcı bilgilerini (hesap adı ve parola özeti gibi) kontrol ederek istemci bilgilerini doğrular.
  2. KDC kimliğini doğruladığı istemciye, ön bilet ve kendisi ile iletişimde kullanacağı bir oturum anahtarı (KDC_SK) gönderir. Bu amaçla, KDC’nin TGS (Ticket Granting Service) adlı servisi, ön bilet (TGT) ve oturum anahtarından (SK1) oluşan bir paketi kendi özel anahtarı (KRBTGT hesabına ait NTLM özeti) ile şifreler. Aynı oturum anahtarını içeren ikinci bir paketi istemcinin özel anahtarı (istemcinin parola özeti) ile şifreler. Bu iki şifreli paketi istemciye gönderir. Bu adıma AS_REP denir. İstemci ilk paketi açamaz, bu paketi sadece sonraki adımda kendisinin kimliğini daha önce doğrulattığını kanıtlamak için kullanacaktır. Bunun yanında, istemci ikinci paketi kendi özel anahtarı (parolasının özeti) ile açarak oturum anahtarını (SK1) elde edebilir ve KDC’nin TGS adlı servisi ile olan iletişiminde paketleri simetrik şifrelemeyle karşı tarafa göndermek için bu oturum anahtarını kullanabilir. Bu adımda kullanılan ön bilete TGT (Ticket Granting Ticket) adı verilir. Bu ön bilet içerisinde istemcinin etki alanındaki üzerindeki grupları, üyelikleri, güvenlik ilkeleri (security principles), bilet geçerlilik süresi gibi bazı bilgiler bulunmaktadır.
  3. İstemci bağlanmak istediği sunucuya kendisini ispatlamak için KDC’den noterlik (şahitlik) talep eder. Bu amaçla; istemci, içerisinde zaman damgası olan Authenticator adı verilen bir paketi, KDC’den aldığı oturum anahtarı (SK1) ile şifreler. Bu şifreli paketi, bağlanmak istediği sunucu adını (mail sunucu, web sunucu, dosya sunucusu gibi) ve sunucunun bağlı olduğu etki alanı adını, ayrıca bir önceki adımda KDC’den aldığı ön bilet (TGT) ve oturum anahtarının (SK1) KDC özel anahtarı (KRBTGT hesabına ait parola özeti) ile şifrelenmiş paketi TGS’a geri gönderir. Kısacası; istemci, AS_REP ile AS’dan aldığı paketi, açamadığı ve işlem yapamadığı için aynen geri göndermiş oldu. Bu adıma TGS_REQ denir. KDC; özel anahtarını (KRBTGT hesabına ait parola özeti) kullanarak, ön bilet (TGT) ve oturum anahtarının (SK1) bulunduğu paketi deşifre ederek; TGT verisini ve oturum oturum anahtarını elde eder. TGS, ön bileti kontrol eder ve istediği sunucuya erişim hakkının olup olmadığına karar verir. Eğer erişim izni varsa; paketin içerisinden çıkan oturum anahtarı (SK1) ile de Authenticator paketini deşifre ederek zaman damgasını kontrol eder. Eğer zaman damgası da uygun ise, istemcinin talebine karşılık verebileceğine karar verir.
  4. KDC onayladığı (şahit olduğu) istemciye, istemcinin sunucudaki izinleri için gerekli asıl bileti ve sunucu ile iletişimde kullanacağı bir oturum anahtarını (SRV_SK) gönderir. Bu amaçla, TGS, asıl bilet ve oturum anahtarından oluşan bir paketi sunucunun özel anahtarı ile şifreler. Aynı oturum anahtarını içeren ikinci bir paketi istemci ile ortak kullandığı oturum anahtarı (KDC_SK) ile şifreler. Bu iki şifreli paketi istemciye gönderir. Bu adıma TGS_REP denir. İstemci ilk paketi açamaz, bu paketi sadece sonraki adımda kendisinin KDC tarafından onaylandığını kanıtlamak için kullanacaktır. Bunun yanında, istemci ikinci paketi TGS ile ortak olarak kullandığı oturum anahtarı ile açarak, ikinci oturum anahtarını elde edebilir ve sunucu ile olan iletişiminde paketleri simetrik şifrelemeyle karşı tarafa göndermek için bu oturum anahtarını kullanabilir. Bu adımda kullanılan asıl bilet içerisinde istemcinin sunucu üzerindeki grupları, üyelikleri, güvenlik ilkeleri (security principles), bilet geçerlilik süresi gibi bazı bilgiler bulunmaktadır.
  5. İstemci, KDC’nin şahitliğinde, sunucuya kimliğini doğrulatılır. Bu amaçla, istemci, içerisinde zaman damgası olan Authenticator adı verilen bir paketi, KDC’den aldığı ikinci oturum anahtarı (SRV_SK) ile şifreler. Bu şifreli paketi, bir önceki adımda KDC’den aldığı asıl bilet ve ikinci oturum anahtarının sunucunun özel anahtarı ile şifrelenmiş paketi sunucuya gönderir. Bu adıma AP_REQ denir. Sunucu özel anahtarı ile asıl bilet ve ikinci oturum anahtarının bulunduğu paketi deşifre ederek ikinci oturum anahtarını elde eder. Asıl bileti kontrol etmekle beraber, paketin içerisinden çıkan oturum anahtarı ile de Authenticator paketini deşifre ederek zaman damgasını kontrol eder.
  6. Sunucu kimliğini doğruladığı istemciye geri bildirimde bulunur. Bu amaçla, sunucu, içerisinde zaman damgası olan Authenticator adı verilen bir paketi, istemci ile ortak kullandığı oturum anahtarı (SRV_SK) ile şifreler. Bu şifreli paketi istemciye gönderir. Bu adıma AP_REP denir. Bu adım Kerberos’un tamamlanması için zorunlu bir adım değildir.

Daha teknik Kerberos yaklaşımı için bağlantıdaki yazı incelenebilir. İlgili şema şu şekildedir:

kerberos-authentication-on-microsoft-environments-02

 

Not: Birinci (AS_REQ) aşamasında kullanlan şifreleme algoritmaları aşağıdaki gibi sıralanabilir.

  • DES-CBC-CRC (Vista/2008’den beri devre dışı)
  • DES-CBC-MD5 (Vista/2008’den beri devre dışı)
  • RC4-HMAC (XP & 2003’te varsayılan)
  • AES128-CTS-HMAC-SHA1-96 (Vista/2008’de tanıtılmıştır)
  • AES256-CTS-HMAC-SHA1-96 (Vista/2008 ve sonrasında varsayılan)

 

 

2) Güven İlişkilerinde Kerberos

Güven ilişkisinin olduğu ortamlarda da süreç benzerdir. Akış süreci aşağıdaki gibi ilerlemektedir.

 

3) Kerberos ile Kimlik Doğrulamanın Temel Güvenlik Unsurları

Microsoft ortamında Kerberos ile kimlik doğrulamanın temek güvenlik unsurları aşağıdaki gibidir.

  • Uzun Ömürlü Simetrik Anahtarlar” olarak da belirtilebilen sunucunun veya istemcinin özel anahtarları hiçbir zaman ağ üzerinden gönderilmemektedir. Özel anahtarlar; biletleri ve oturum anahtarlarını şifrelemekte kullanılır. Özel anahtarlar ilgili taraflarda olmakla beraber KDC üzerinde de saklanmaktadır.
  • Kısa Ömürlü / Kullan At Simetrik Anahtarlar” olarak da belirtilebilen oturum anahtarları ise KDC tarafından üretilmekte olup, oturum sonlandıktan sonra hafızadan silinmektedir.
  • Biletler varsayılan olarak 10 gün boyunca saklanır. Bu süre sonrasında bilet başkası tarafından ele geçirilmiş bile olsa kullanılamaz. Ayrıca şifre değişikliklerinden sonra da, yeni özel anahtar oluşacağı için eski bilet açılamaz ve bu sebeple bilet de değişir.
  • Kullanıcı sisteme 1. adımda şifresi ile giriş yapar. Onay alınırsa TGT’ı alır. Sonraki adımlarda elde ettiği TGT ile kaynaklara erişim sağlar. Böylece sistemde Single-Sign-On (SSO) sağlanır.
  • Tüm kimlik doğrulama işlemleri KDC üzerinde yapıldığından dolayı, istemciye hizmet verecek olan sunucularda istemci kimlik bilgileri bulunmaz. Ayrıca bir istemci veya sunucu tek bir merkezden (KDC) devre dışı bırakılabilir.
  • İletişimdeki paketlerin içerisinde zaman damgası da bulunduğundan, Kerberos tekrarlama saldırılarına karşı dirençlidir.
  • Eğer istenirse sunucu için de kimlik doğrulaması gerçekleştirilebilir. Nasıl ki istemci sunucuya kendini ispatlaması için bir bilet veriyorsa, istemci de sunucudan bir bilet isteyebilir.

 

4) Kerberos ile Kimlik Doğrulamanın Zayıf Noktaları

Kerberos’un bu özelliklerinin yanında, bazı zayıflıkları da bulunmaktadır. Bunlardan bazıları aşağıdaki gibidir:

  • Kerberos üzerindeki bir problemde NTLMv2 ile kimlik doğrulaması da gerçekleştirilebilmektedir. Ancak yine de ağ üzerinde birden fazla KDC kullanılmalıdır.
  • Kerberos için zaman damgası kullanılmaktadır. Varsayılan olarak 5 dakikalık bir zaman sapması olabilir (Bu değer politikalar kullanılarak değiştirilebilir). Yani DC ile 5 dakikadan daha uzun süre zaman farkı olmamalıdır. Ayrıca KDC gelen taleplere kısa sürede cevap vermelidir.
  • İstemcinin özel anahtarı, istemci bilgisayarında saklanması güvenlik zafiyetidir. Ancak diğer protokollerle karşılaştırıldığında Kerberos oldukça güvenilir sistemdir.
  • Benzer şekilde oturum anahtarı kullanıcı bilgisayarında deşifre edilir. Bilgisayarının önbelleğinde veya anahtar tablosunda (key table) saklanması güvenlik zafiyetidir.
  • Ağ üzerinde gönderilen biletlerde veya diğer paketlerde şifre tahmini yapılıp yapılmadığı anlaşılamaz. Ancak zaman kısıtından ötürü bu durum göz ardı edilebilir.
  • Simetrik anahtar açık metin olarak depolanır.

 

5) SESAME (Secure European System for Applications in a Multi-vendor Environment)

Kerberos’taki bir takım sorunların çözümü için kullanılan bir çözümdür.

  • SESAME, veri alışverişini korumak ve deneklerin kimliklerini doğrulamak için hem simetrik hem de asimetrik şifreleme kullanır. SESAME gizli (secret) anahtarların dağıtımı için PKI kullanır. Kerberos yalnızca gizli anahtar teknolojisini kullanır.
  • SESAME, her ana bilgisayarda güvenilir bir kimlik doğrulama sunucusu kullanır. Yani, SEMAME ile kimlik doğrulama ve gizlilik için farklı anahtarlar kullanılır. Biri kimlik doğrulama için, diğeri erişim ayrıcalıklarını tanımlayan iki sertifika veya bilet içerir.
  • Dijital olarak imzalanmış bir Privilege Attribute sertifikasında (PAC) bulunan ve bir Privilege Attribute Service (PAS) tarafından verilen kullanıcı ayrıcalık özelliklerini (privilege attribute) sunar. Bu, kullanıcıların Kerberos’un sağladığı basit bir “kullanıcı adı” yerine çeşitli kimlikleri ve ayrıcalıkları (gruplar, roller ve yerel olarak tanımlanmış öznitelik türleri) taşımalarına olanak tanır. Böylece, SESAME ile rol tabanlı erişim denetimi de sağlanmış olur.

 

Kaynaklar:

https://www.slideshare.net/rootedcon/carlos-garca-pentesting-active-directory

It’s All About Trust – Forging Kerberos Trust Tickets to Spoof Access across Active Directory Trusts

Kerberos 101 – From Zero to Hero

Kerberos Protokolü & Active Directory Login İşlemi


https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc773178(v=ws.10)
https://adsecurity.org/?p=1588

 

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.