Zerologon Zafiyeti Nedir?

2020 yılının Ağustos ayında, Secura B.V.’de Siber Güvenlik Uzmanı olan Tom TERVOORT tarafından CVE-2020-1472 yani namı diğer Zerologon zafiyeti yayımlandı. Windows Server ve Active Directory’deki MS-NRPC(Netlogon Remote Protocol) protokolünü hedef alan zafiyet, kötü amaçlı saldırganın hiçbir kimliğe ya da yetkiye sahip olmadan sadece ağda bir TCP bağlantısına sahip olmasıyla bütün Domain Controller yetkilerini eline geçirmesine sebep oluyor.

Zafiyet, MS-NRPC’de bulunan ComputeNetlogonCredential fonksiyonundaki AES-CFB8 şifrelemesinin ve oturum anahtarı için anahtar türetme fonksiyonunun (KeyDerivationFunction) yanlış yapılandırılmasından dolayı ortaya çıkıyor. Bu yapılandırılmanın sömürülmesi, MS-NRPC’nin yetkilendirme protokolünde oluşturduğu oturum anahtarını 0 değerleri ile oluşturmasıyla saldırganın Domain Controller’ın parolasını sıfırlamasına sebep oluyor. Bu nedenle zafiyetin ismi “Zerologon” olarak adlandırılıyor.

MS-NRPC

Netlogon protokolü Windows Domain Controller’larda bulunan, uzaktan yordam çağrısı (Remote Procedure Call) yapabilen bir protokol. Genellikle istemcilerin sunuculara bağlanmasında yetkilendirme, istemcilerin parolalarını güncelleme işlemlerinde kullanılıyor. Zafiyette öne çıkan taraf ise yetkilendirme şemasının diğer RPC’lerden farklı olması.

Netlogon’da yetkilendirme gerçekleşmesi için, istemci ve sunucu kendi aralarında 8 baytlık nonce (Number Once) takasını gerçekleştiriyor. Takas gerçekleştikten sonra ikisinin de bildiği bir secret üzerinden (istemcinin şifresi) KDF fonksiyonuyla oturum anahtarı oluşuyor ve bundan sonra istemci yapacağı her işlemi oturum anahtarıyla yapıyor.

Kaynak: TrendMicro

AES-CFB8’in yanlış yapılandırılmasından yararlanmak için, saldırganın 8 baytlık 0’lardan oluşan oturum anahtarını oluşturması ve sadece 256 deneme yapması gerekiyor. Buradaki yetkilendirme denemeleri Active Directory’e değil de makineye olarak kabul edildiği için bu bruteforce saldırısına karşı hesaplar ya da girişler kilitlenmiyor. Saldırganın bu anahtarı oluşturma süresi ise pratikte 3 saniye sürüyor.

Kaynak: TrendMicro

Oturum anahtarında sağlanan 8 baytlık 0 değeri AES-CFB8 şifrelemesine girmesi için 16 bayta tamamlanması gerekir. CFB8 şifrelemesinde bunu tamamlamak için rastgele bir başlangıç vektörü (Initialization Vector) verilir. Vektörün başındaki bayt şifrelenmiş ilk bayt ile XOR’lanarak 8 bayt tamamlanır.

Kaynak: TrendMicro

Eğer başlangıç vektörü ve şifrelenmiş mesajın tamamı 0’lara eşit olursa ikisinin XOR’lanmasından ötürü oluşan cevap yine 0 olur. (0 xor 0 = 0)

Bu sebeple Zerologon zafiyeti çalışır ve yetkilendirme servisi bypass edilerek Domain Controller’ın parolası sıfırlanır.

Sıfırlanma sadece makinede oluştuğu için bu olay Active Directory’nin bütünlüğünü bozar ve bazı servisleri kullanılamaz hale getirir. Yine de elimizde Domain Controller kimliği “boş parolaymış” gibi davranarak Domainde kullanılan hashlere ulaşıp Golden Ticket, Kerberoasting, Pass the Hash/Pass the Password saldırıları gerçekleştirilebilir.

Zerologon Kontrolü Nasıl Yapılır?

Secura B.V.’nin yayınladığı zerologon_tester.py scripti sayesinde eğer sistemimizde zafiyet hala mevcutsa hiçbir şeyi riske atmadan, parolayı sıfırlamadan kontrol edebiliyoruz.

git clone https://github.com/SecuraBV/CVE-2020-1472

cd CVE-2020-1472

pip install -r requirements.txt

python3 zerologon_tester.py <DC-ISMI> <IP>

Zerologon’dan Ağımızı Nasıl Koruruz?

9 Şubat 2021’den itibaren Microsoft tüm Domain Controllerlara Netlogon Secure Channel kullanan “Enforcement Mode”’u zorunlu kıldı ancak Netlogon protokolü yalnızca Windows üzerinde çalışmadığından dolayı protokolü çalıştıran diğer işletim sistemi cihazları bu durumu desteklemedikleri takdirde düzgün çalışmayacaklardır.

Düzgün çalışmaları için, manuel olarak bu cihazların kapsam dışı tutulması gerekir. Bu yüzden MS-NRPC isteklerine MFA denetlenmesi getirilebilir.

SIEM ve Yeni Nesil Güvenlik Duvarları ile Netlogon zafiyetini barındıran bağlantılar engellenebilir.

Eğer ağımızda Zerologon exploitine müsait bir cihaz var ise izlememiz gereken adımlar aşağıdaki gibi sayılabilir:

  • Domain Controllerları Eylül 2020’den sonra gelen güncellemeye yükseltmek.
  • Domain Controllerlar için Enforcement Mode’u açmak
  • Enforcement Mode’un desteklemediği DC’leri tespit etmek.
  • Olursa tüm DC’leri; olmazsa EM desteklemeyen DC’leri MFA kontrolüne tabi tutmak.
  • Yeni Nesil Güvenlik Duvarları ve SIEM teknolojilerinden Zerologon isteklerini takip edip aksiyon almak.

Yazar: A. Sencer Kılıç