Windows

Windows 8 NtApphelpCacheControl Zafiyetini Meterpreter ile Sömürmek

Merhaba

Bu yazıda, geçtiğimiz haftalarda Google ekibi tarafından PoC kodu ile birlikte yayınlanan Windows 8 NtApphelpCacheControl yerel yetki yükseltme açıklığı ele alınacaktır. Bu açıklığı sömürecek metasploit modülü şu anda metasploit geliştiricileri tarafından hazırlanmakta. Henüz tamamlanmamış olan bu modülü erkenden analiz ederek lab ortamında test edeceğiz.

Açıkcası Google ekibi PoC’yi yayınladığı  gece bu yerel güvenlik açığını sömüren kodlar üzerinde modifiyeler gerçekleştirerek yetkili bir meterpreter oturumu elde etmeyi başarmış ve kendi güvenlik testlerimizde kullanıyordum. Şu anda Metasploit ekibi bu konuya el atmış durumda ve benim amatör çalışmamdan çok daha başarılı generic bir modül geliştirmekteler. Bu yazıda da hali hazırda geliştirilme sürecinde olan bu modülü inceleyeceğiz.

Ön Hazırlıklık

Hemen hemen bir çoğumuzun metasploiti Kali Linux içerisinde gelen ön kurulumu ile kullanmaktayız. Bu yazıda ele aldığımız metasploit modülü halen daha geliştirilmekte olduğu için sadece ve sadece metasploit github hesabındanki Pull Request içerisinde bulunmaktadır. Bu nedenle yazının geri kalanındaki adımları takip edecek arkadaşların https://www.mehmetince.net/metasploit-modulu-gelistirme-serisi-gelistirme-ortaminin-kurulmasi/ öncelikle bu yazıyı okumasını ve yazıda adımları tamamlaması gerekmektedir.

Sıkça konuşacağımız olan Pull Request kavramı Git‘in temelinde bulunan bir özellik değildir. Bu özellikle Github’in geliştiricilere sunduğu bir imkandır. Metasploit reposunu fork ettiğinizde mevcut Pull Request’ler sizin reponuza yansımayacaktır. Normal şartlarda herhangi bir modülün geliştirilmesi tamamlanıp metasploit master branch’ine merge edildiğinde bu modüle erişim git fetch [upstream] ile gerçekleştirilebilir.  Windows 8 NtApphelpCacheControl  zafiyetini sömürmek için geliştirilmekte olan modül henüz master branch’e merge edilmediği için git fetch upstream ile de erişmek mümkün değildir.

Yukarıda bahsettiğim durum nedeniyle bira kaç ufak değişiklikle upstream repo’da gerçekleştirilmiş olan tüm Pull Request’leri localimize indireceğiz.

metasploit klasörü içerisinde bulunan .git/config dosyanızı açtığınızda aşağıdaki sekmeyi göreceksinizdir. Bu sekmede aşağıda verilen son satır bulunmuyor vaziyettedir. Bu nedenle son satırı bu dosyaya eklemelisiniz.

Bu işlem tamamlandıktan sonra aşağıdaki komutu çalıştırarak Rapid7‘in metasploit reposuna gönderilen tüm Pull Request’leri yerelinize indirmiş olacaksınız. Bu işlem biraz uzun sürebilir, zira hali hazırda bekleyen onlarca pull request mevcuttur.

Yukarıda bir dizi komut çalıştırıldığını görmektesiniz. Bu komutlardan ilgili daha önce de belirttiğim gibi Upstream’e gönderilen tüm Pull Request’leri yerele indirmektedir. Ardından pull requestlerden bir tanesini ( Bu yazıda ele alacağımız modül 4562 numaralı pull request) ele almak için yerel master branch’den bir adet yeni branch oluşturuyoruz. Bu oluşturulan branch’e Win8local adını ben  keyfi olarak verdim. İstediğiniz bir adı verebilirsiniz. Ardından 4562 numaralı pull request’i bu branch’e merge ederek hali hazırda geliştirilmekte olan bir modülü kullanmaya hazır hale geldik.

Modül Kullanımı

Bu modül mevcut bulunan herhangi bir meterpreter oturumunun ID’sini alarak, bu oturumun ait olduğu makinada Windows 8 NtApphelpCacheControl  zafiyetini kullanmaya çalışacaktır. Bu nedenle öncelikle bir adet Windows 8.1 bilgisayara bağlı olan meterpreter oturumu elde etmeliyiz.

Bu bağlamda öncelikle bir adet meterpreter saldırı .exe’si oluşturacağız.

Mevcut windows kullanıcısı hakları ile meterpreter oturumu başlayacak olan exe’miz hazır. Bağlantının açılmasını sağlayacak multi handler’ı başlatalım.

ve .exe yi hedef windows makinada çalıştırarak oturumu elde edelim.

Gördüğünüz üzere session id değeri 1 olan bir meterpreter oturumu elde ettik. Şimdi sıra Windows 8 NtApphelpCacheControl zafiyetini sömürmeye geldi.

Fark ettiğiniz üzere ilk başta elde ettiğimiz oturum getsystem işleminde başarısız olmuştu. Metasploit modülü ile tetiklediğimiz  Windows 8 NtApphelpCacheControl yerel yetki arttırma zafiyeti ile hedef sistemde yetkili bir oturuma sahip olmayı başardık.