CVE-2022-33679 ve CVE-2022-33647 Kerberos Güvenlik Açıklarının Teknik Analizi

Ana Sayfa » Blog » CVE-2022-33679 ve CVE-2022-33647 Kerberos Güvenlik Açıklarının Teknik Analizi

Yoav Iellin ve Dor Segal tarafından yazıldı, Araştırmacılar Silverfort

Microsoft'un Eylül 2022 Salı Yaması, Kerberos'ta Google Project Zero tarafından keşfedilen iki yüksek riskli ayrıcalık yükselmesi güvenlik açığı içeriyordu. İki güvenlik açığı, Kerberos'u kodlamasını varsayılan AES şifrelemesinden eski MD4-RC4'e düşürmeye zorlama yeteneğinden yararlanır. Şifreleme düşürüldüğünde, iki güvenlik açığı devreye girer ve bir saldırganın MD4-RC4 şifrelemesindeki zayıflıkları kötüye kullanmasına olanak tanır.

İlki olan CVE-2022-33679, bir saldırganın kurban adına kimliği doğrulanmış bir oturum elde etmesine olanak tanır ve bu, rastgele kod yürütülmesine yol açabilir. İkincisi, CVE-2022-33647, Ortadaki Adam saldırısı gerçekleştirmeyi başarmış bir saldırganın hedef kullanıcı adına herhangi bir Kerberos hizmet bileti düzenlemesine ve böylece kullanıcıyla aynı ayrıcalıkları kazanmasına olanak tanır.

Her iki güvenlik açığı da eski MD4-RC4 şifrelemesindeki zayıflıkları hedeflerken, her birinin farklı bir zayıflığı kötüye kullandığını ve farklı önkoşullar ve saldırı senaryolarıyla sonuçlandığını unutmamak önemlidir.

Bu makale, hem CVE-2022-33679 hem de CVE-2022-33647 hakkında ayrıntılı bir teknik analiz ve açıklama içermektedir.

CVE-2022-33679 – Güvenlik Açığı Analizi

Güvenlik açığı CVE-2022-33679, yakın zamanda bir kavram kanıtı olan serbest, Kerberos'un oturum anahtarını nasıl şifrelediğine bağlıdır ve Kerberos'un eski şifreleme türü RC4-MD4'ü kullanması sayesinde mümkün hale gelir. Saldırı iki bölümden oluşur A) RC4-MD4 tipini kullanarak yeni TGT bileti talep etme ve ardından B) anahtar akışını bayt bayt kırma.

Sömürü süreci:

  1. AS-REQ paketini KDC sunucusuna göndererek TGT biletini alın. istek, RC4-MD4 şifreleme türünü sormalıdır. Saldırının başarılı olması için aşağıdaki iki gereksinimin karşılanması gerekir:
    1. Açıkça Kerberos şifrelemesini daha zayıf olan RC4-MD4'ün varsayılan AES'sinden düşürün. Bu, saldırıyı mümkün kılar çünkü anahtarı IV veya tuz içermeyen yalnızca 8 bayttır.  
    2. Kullanıcının nesnesi "Kerberos ön kimlik doğrulamasına gerek yok" bayrağı etkinleştirildi. Bu, kullanıcının şifresini bilmeye gerek kalmadan şifrelenmiş oturum anahtarına sahip bir TGT elde edilmesini sağlar. Ön kimlik doğrulama istemcinin geçerli zaman damgasını girilen parolayla şifrelediği ve bunu, bir oturum anahtarı ve TGT oluşturmadan önce parolanın bütünlüğünü doğruladığı KDC'ye gönderdiği bir mekanizmadır. “Kerberos ön kimlik doğrulamasına gerek yok” işareti nedeniyle KDC doğrudan hedeflenebilir ve Man In The Middle gibi herhangi bir özel saldırı tekniği gerektirmez.
  2. Saldırgan başarılı bir şekilde şifrelenmiş bileti aldıktan sonra AS-REP paketi, 40 bit uzunluğunda şifrelenmiş bir TGT oturum anahtarından oluşur. Saldırgan, eski RC4-MD4 şifreleme türünü kullanarak, anahtar akışının 45 baytını çıkarmak için şifrelenmiş paketin sabit başlangıcı hakkındaki bilgisinden yararlanabilir.
  3. Saldırgan artık bu anahtar akışını yeniden şifrelemek ve anahtar akışının doğru olup olmadığını doğrulamak ve sonraki 40 bit TGT oturum anahtarının geri kalanını kırmak için kullanılacak özel yapım bir ön kimlik doğrulama ile KDC'den bir TGT bileti talep etmek için kullanabilir. bayt bayt. Bu, saldırganın kimlik doğrulama öncesi alan boyutu üzerindeki sınırlı denetiminden yararlanmak için Kerberos kodlaması için kullanılan ASN.1 protokolündeki iki zayıflığın kötüye kullanılmasıyla yapılır:
    1. KDC ayrıştırıcısı, nesnenin sonunda NUL ile sonlandırılmış dizeleri yok sayar. Bu, KerberosTime nesnesinin sonuna bir NUL karakteri eklememizi sağlar. Bu, tek bir baytlık tahmin için işe yarayacaktır, ancak yine de ek dört tane tahmin etmemiz gerekiyor.
    2. KDC ayrıştırıcısı, kodlanmış uzunlukların uzunluğunu doğrulamaz. ASN.1 dize uzunlukları 1-4 bayt ile temsil edilir ve KDC ASN.1 ayrıştırıcısı en kısa yolu zorlamaz. Bu nedenle, zaman damgası dizimizi 1-4 bayt boyutunda istediğimiz gibi temsil edebiliriz. Bu, düz metnin uzunluğunu daha da büyütebileceğimiz ve NUL baytını bir sonraki konuma itebileceğimiz ve anahtar dizinin bir sonraki baytını tahmin edebileceğimiz anlamına gelir.
  4. Son olarak, saldırgan zaman damgasını yeniden şifreleyebilir ve şifrelenmiş ön kimlik doğrulaması ile bir AS-REQ göndererek her tahmini doğrulayabilir ve şifreli ön doğrulama tarihi yanlışsa bir hata alır. Ön kimlik doğrulamanın başarılı olması durumunda, her bayt için 256 adede kadar tahmin seçeneği olduğundan, saldırgan anahtar akışından başka bir bayt keşfedebilir. Bu işlemin tekrarlanması, orijinal bilette saklanan oturum anahtarının şifresini çözmek için gerekli tüm anahtar akışı baytlarının elde edilmesini sağlar.

Elde edilen oturum anahtarı, saldırgana, hedeflenen kullanıcı adına herhangi bir SPN'ye bilet talep etme yeteneği verir.

AS-REQ oturum anahtarının ilk baytını CVE-2022-33679 kullanarak kırma akışı. Ardından kalan baytlar gelmelidir
Devam eden saldırı akışı, son baytı kırma ve bozulan oturum anahtarını kullanarak yeni TGT elde etme
Kredi: James Forshaw'dan POC ve GhostPack'ten Rubeus

CVE-2022-33647 Teknik Analiz

Saldırganın şansına CVE-2022-33647 güvenlik açığı, CVE-2022-33679'dan farklı olarak ön kimlik doğrulama ile çalışır. Bu önemlidir, çünkü ön kimlik doğrulama varsayılan olarak her oluşturulan nesne için etkindir. Active Directory. Bu saldırı için en önemli gereksinim, istemci ile etki alanı denetleyicisi arasında bir Ortadaki Adam'dır (Bu saldırı türü yaygındır ve DNS yanıltma, ARP Zehirleme vb. gibi bunu başarmanın birçok yolu vardır). MITM, istemciyi şifrelemeyi MD4-RC4'e düşürmeye zorlamak için kullanılır.

Sömürü akışı

İstemciden ilk AS isteği gönderildiğinde, KDC 'pre-auth is gerekli' mesajı ile yanıt verir. Ancak saldırgan, KDC'nin yanıtını değiştirebilir çünkü kimlik doğrulamanın bu aşamasında doğrulama yoktur. KDC tarafından desteklenen şifrelemeyi şekilde gösterildiği gibi RC4-MD4 olarak değiştireceğiz. Sonuç olarak (RC4 etkinleştirilmişse), istemci MD4-RC4 algoritmasını kullanarak ön kimlik doğrulamalı bir AS_REQ gönderecektir.

Bu noktadan itibaren saldırganın iki seçeneği vardır:

  1. O kadar verimli olmayabilecek ve uzun zaman alabilecek 5 baytlık oturum anahtarını kaba kuvvetle çalıştırın.
  2. Diğer seçenek, düz metin verilerinin bilgisinden yararlanmaktır - ön kimlik doğrulama. Kebreros'ta, MITM düşmanı, AS isteğinde müşteri tarafından oluşturulan düz metin kimlik doğrulama öncesi zaman damgasının doğru bir tahminine sahip olabilir. Şifreleme mekanizmasında bir başlatma vektörü veya nonce yoktur ve anahtar kullanım değerini yok sayar. Sonuç olarak, kimlik doğrulama alışverişinin farklı bölümlerinde aynı anahtar dizisi kullanılır. Bu nedenle, anahtar akışının çoğu aynı RC4 anahtar akışını kullanır. Ön kimlik doğrulama, şifrelenmiş bir zaman damgası içerir, bu nedenle saldırgan, geçerli zamana ilişkin bilgimizi kullanarak anahtar akışının bir bölümünü keşfedebilir. Saldırganın şansı varsa, AS yanıtındaki 4 baytlık TGT Oturum anahtarının şifresini çözmek için aynı anahtar akışı kullanılacaktır. Son bayt, zaman damgasının saldırgan tarafından bilinmeyen mikrosaniyeleri temsil eden en küçük baytı ile çakışıyor. Son bayt, aşağıda ana hatlarıyla belirtildiği gibi kurbanın elde edilen bir TGS isteğine yönelik bir kaba kuvvet saldırısında kırılacaktır.

ASN.1 Serileştirme Yakınlaştır

ASN.1 DER kodlaması, her öğe için bir etiket, uzunluk, değer kodlama sistemidir. Ön kimlik doğrulama zaman damgası bu yöntem kullanılarak kodlanır. Kodlanmış zaman damgasının yapısı, iki elemanlı bir diziden oluşur. İlki, Zulu biçiminde bir GeneralizedTime nesnesi (KerberosTime). İkinci eleman, Mikrosaniyeleri temsil eden bir tamsayıdır.

Her öğenin kendi etiketi ve değeri izleyen uzunluğu vardır. Bu nedenle, tüm etiketleri ve uzunlukları temsil eden 10 sabit bayt belirleyebiliriz.

  • 30 -> Sıra etiketi
  • 1A – (int) 26 (tüm yapının uzunluğu)
  • A0 – 1. eleman etiketi
  • 11 – eleman uzunluğu
  • 18 – Zaman etiketini genelleştirin
  • 0F – (int) değer uzunluğu (15)
  • A1 – 2. eleman etiketi
  • 05 – (int) eleman uzunluğu
  • 02 – INTEGER tip etiketi
  • 03 – (int) değer uzunluğu

Toplam sabit bayt miktarı 10'dur, zaman damgasını tahmin etmek için 15 bayt daha ekleyeceğiz. Son üç bayt, tahmin edilmesi verimli olmayan mikrosaniye öğesidir. Son olarak, şifrelenmiş kısımdan önceki 24 baytlık ek sıfırlar, 49 baytlık bir anahtar akışı verecektir. TGT oturum anahtarı, AS yanıtının 46 ila 50 baytı arasında bulunur. Son eksik anahtar akışı baytı, kurbanın ele geçirilen bir hizmet biletine kaba kuvvetle uygulanabilir.

Patch

Bu güvenlik açıkları Microsoft tarafından Eylül güvenlik güncellemesinde kapatılmıştır. Güncelleme, RC4-HMAC-OLD (-4) şifreleme türünün yanı sıra RC128-MD4 (-133) şifreleme türünü devre dışı bıraktı. Yama uygulandıktan sonra, bu iki şifreleme türünden birini kullanan gelecekte AS-REQ/TGS-REQ "Desteklenmeyen şifreleme türü" hatası alacaktır.

https://msrc.microsoft.com/update-guide/vulnerability/CVE-2022-33679

Ek Bilgi

https://bugs.chromium.org/p/project-zero/issues/detail?id=2310&q=label%3ACVE-2022-33647 – James Forshaw tarafından yapılan analiz

Kimlik Tehditlerini Hemen Durdurun