PrintNightmare zafiyeti, Çinli araştırmacılar tarafından yanlışlıkla ifşa edilen bir Windows Yazdırma Biriktiricisi güvenlik açığı olarak karşımıza çıktı. Zafiyet tüm Windows sürümlerinde uzaktan kod yürütmeye neden olan yeni bir Zero-Day güvenlik açığı olarak tanımlanıyor. Bu noktada Windows Yazdırma Biriktiricisi hizmetinde ortaya çıkan kritik bir hata sebebi ile Windows işletim sistemleri tehlike altında olduğunu görmekteyiz.
Sangfor’daki araştırmacılar, POC yayınladıklarında bir hata ya da başka bir sebeple POC ortamındaki kod genele açıldı. Kısa bir süre yayına kalsa da test kodu elbette ki birçok kişi tarafından kopyalanmış oldu.
Araştırmacılar bu ayın sonlarında düzenlenen yıllık Black Hat güvenlik konferansında Windows Yazdırma Biriktiricisi hizmetindeki birden çok Zero Day güvenlik açığını detaylandırmayı planlıyorlardı. Ancak bu hatadan sonra kodlar herkese yayılmış oldu.
Tehdit aktörleri, bu zafiyeti kullanarak kurum ağını kolayca ele geçirebilirler. Windows etki alanı sunucusunu ele geçirerek tüm sistemde kontrol sahibi olabilmeleri elbette ki sorunun ne kadar kritik olduğunu gösteriyor. CVE-2021-34527 kodu ile yayınlanan PrintNightmare zafiyeti (Zero Day) saldırganların Windows’ta uzaktan kod yürütmesine olanak tanımakta ve yaması bulunmamaktadır. Bu sebeple kritik bir zafiyet olarak nitelendiriliyor.
Güvenlik açığı, saldırganların uzaktan kod yürütmeyi kullanmasına olanak tanıyor, böylece kötü aktörler potansiyel olarak kötü amaçlı uygulamalar yükleyebilir, verileri değiştirebilir ve tam yönetici haklarına sahip yeni hesaplar oluşturabilirler. Hatta ağınızdaki bir Active Directory makinesini ele geçirebilirler.
PrintNightmare Zafiyeti Tespit Aracı
PrintNightmare zafiyetine ait exploit kodu halka açıldıktan sonra Privia Security Siber Güvenlik Ekibi tarafından, kurumsal müşterilerimiz için bir tespit aracı geliştirildi. Geliştirmiş olduğumuz bu araç sayesinde printer hizmetlerinin kullanımının zorunlu olduğu sistemlerde, olası bir saldırı girişiminin tespit edilmesi halinde saldırının tespitini sağlamaktadır.
Uygulama ve Kaynak Kodları: https://github.com/Privia-Security/PrintNightmareDetectionTool
Windows Server 2016 işletim sisteminde PrintService/Operational event log’ları varsayılanda devre dışı olarak gelmektedir. Araç ilk çalıştırıldığında “PrintService/Operational” event loglarını aktif hale getirerek, saldırının tespit edilmesini sağlamaktadır.
Uygulamayı yönetici ayrıcalıklarıyla başlattıktan sonra, uygulamanın çalıştığı dizinde “enableSpoolerLog.ps1” adında bir powershell script’i oluşturacaktır. Ardından çalışma dizininde oluşturulan bu script dosyası powershell aracılığıyla çalıştırılacak ve “PrintService/Operational” isimli log aktif hale getirilecektir.
Varsayılanda script 2056 KB boyutunda loglama yapılmasına olanak vermektedir. Eğer çok işlem yapılan bir yazıcı kuyruklama hizmeti kullanıyorsanız dosya boyutunu mutlaka arttırmanızı öneririz.
Uygulama yönetici haklarıyla çalıştırılıp, Spooler servisine ait loglama aktif hale getirildikten sonra “StartEventLogHook” isimli metod tetiklenmektedir.
StartEventLogHook metodu ise aşağıda görüleceği üzere EventLogWatcher sınıfını çağırarak, belirtilen log dosyasını izlemeye başyalacaktır. Sistemde yeni bir log oluşması durumunda ise “OnEntryWritten” isimli metoda çağrı yapılacaktır.
OnEntryWritten isimli metodun çağrıldıktan sonra uygulama arabiriminde bulunan datagrid’e veri gönderilerek ekranda görülmesi ve uyarı mekanizmasının tetiklenmesi sağlanmaktadır.
OnEntryWritten isimli metod, detectionGrid isimli datagrid’e veriyi gönderdikten sonra “SearchAttackInLog” isimli metod ile Event ID’ler arasında bir arama gerçekleştirerek, saldırıya ait “316” ID’li olayı tespit etmektedir.
316 Event ID’li olay günlüğün oluşmasıyla saldırı tespit edilecek ve bu saldırıya ait detaylar, uygulamanın çalıştığı dizine log dosyası olarak kaydedilecektir.
PrintNightmare Zafiyetinden Korunmak
Güvenlik açığı, saldırganların uzaktan kod yürütmeyi kullanmasına olanak tanıyor, böylece kötü aktörler potansiyel olarak kötü amaçlı uygulamalar yükleyebilir, verileri değiştirebilir ve tam yönetici haklarına sahip yeni hesaplar oluşturabilirler. Hatta ağınızdaki bir Active Directory makinesini rahatlıkla ele geçirebilirler. Uzaktan Kod Yürütmesine izin veren sıfırıncı gün zafiyeti PrintNightmare kritik bir Windows hatasıdır. Hem uç noktalar hem de sunucular dahil olmak üzere tüm Windows sürümlerini etkiliyor.
Microsoft, “güvenlik açığını içeren kodun tüm Windows sürümlerinde bulunduğunu” kabul ediyor. Yazdırma Biriktiricisi hizmeti, işletim sisteminin istemci sürümleri, Etki Alanı Denetleyicileri ve birçok Windows Sunucu örneği de dahil olmak üzere varsayılan olarak Windows’ta çalıştığı belirtiliyor.
Birinci Yöntem; Mümkün olan her yerde Yazdırma Biriktiricisi hizmetini kapatın ve kapatamayacağınız sistemler için Yazdırma Biriktiricisi hizmetlerine erişimi sınırlayın!
İkinci Yöntem; Grup ilkesi ile uzaktan gelebilecek yazdırma işlevlerini devre dışı bırakabilirsiniz;
PrintNightmare Zafiyeti Tespit Aracı ve kaynak kodlarına Github adresimizden ulaşabilirsiniz.
https://github.com/Privia-Security/PrintNightmareDetectionTool