Windows Kernel Exploitation 2 - HEVD Kurulumu
Öncelikli olarak bu Ashfaq Ansari adlı bir güvenlik araştırmacısı tarafından oluşturulmuştur. Özellikle Kernel seviyesinde çalışacak araştırmacıların öğrenmelerini ve kendilerini geliştirmeleri amaçlanmış. Kaynak kodlara göz gezdirdiğinizde Buffer Overflow’dan Use After Free
Windows Kernel Exploitation ile ilgili ilk yazımı uzun bir zaman önce kaleme almıştım. Açıkcası öğrenmeye başladığım zamanlarda hiç vakit kaybetmeden yazıya dökmüştüm. Aradan biraz fazla zaman geçti fakat son haftalar bu konularla ilgiliyim. Bu yazımda sürücü istismarından bir önceki adımı elimden geldiğince basit bir şekilde anlatmaya çalışacağım diyebilirim.
Not olarak şunu belirtmek isterim; ilk yazımdaki test ortamımla ilgili olarak bazı değişmeler meydana geldi. Şu an için main host olarak Mac OS ve Virtualbox üzerinde iki farklı VM kullanıyorum.
Ortam Gereksinimleri - Debugger VM
- Visual Studio - (2012 versiyonunu kurdum))
- Windows 10SDK (Windbg) - (İlk yazımda mevcut)
Ortam Gereksinimleri - Debugee VM
- Visual Studio - (2015 community versiyonunu kurdum)
- DebugView
- OSR Driver Loader
- HackSys Extreme Vulnerable Driver (HEVD) + Kaynak Kodlar
İkinci aşamaya başlamadan önce yukarıda yer alan gerekli paketleri her iki makinemize kuruyoruz.
HEVD Kurulumu ve Deneme
Öncelikli olarak bu Ashfaq Ansari adlı bir güvenlik araştırmacısı tarafından oluşturulmuştur. Özellikle Kernel seviyesinde çalışacak araştırmacıların öğrenmelerini ve kendilerini geliştirmeleri amaçlanmış. Kaynak kodlara göz gezdirdiğinizde Buffer Overflow’dan Use After Free gibi daha complex açığı bulunan sürücülerin mevcut olduğunu göreceksinizdir.
Bu kısımda HEVD’i yüklerken Debugger VM ve Debugee VM’de ayarlamaları nasıl yapılacağına değineceğiz. İlk olarak Debug Strings’i aktif etme daha sonrasında HEVD’s symbols’lerin yüklenmesi olacak
Debug Strings’lerin Aktif Edilmesi
Debugger VM: İlk olarak Windbg’yi çalıştırıp, Debugee VM ile aradaki bağlantıyı kuruyoruz. Daha sonrasında KD komutunu alabilmek için Debugee’yi durdurup, DebugStrings’i aşağıdaki komut ile aktif hale getiriyoruz :
ed nt!Kd\_DEFAULT\_MASK 8
ed nt!Kd\_IHVDRIVER\_MASK 8
Sonrasında aşağıdaki komut ile Debugee’nin daha fazla çalışmasına izin verebiliriz :
g
HEVD Sürücüleri Ayarlama - Debugee VM
Bu kısımdan sonra HEVD sürücüleri yükleme kısmına gelmiş bulunmaktayız. İlgili paketleri github sayfasından indirebiliriz. Bu kısımda ilgilendiğiniz mimari yapısıyla ilgili olan kısmı (x864 veya x86) seçebilirsiniz. Bunun yanında dosyaları indirdiğinizde secure/vulnerable
adlı iki farklı klasör göreceksiniz. Burada vulnerable adlı kısmı kullanacağız.
Bu sürücüleri yüklemek için aşağıda ekran görüntüsü yer alan OSRLoader adlı bir uygulamadan yararlanacağız. Bu uygulama ile sürücüleri sisteme yükleme işlemini sağlamış olacağız. Yukarıdaki işlemlerin tamamını Debugee VM üzerinde yapıyoruz.
DriverPath kısmından istismar edilebilecek HEVD.sys
adlı dosyamızın path yolunu belirtiyoruz. Service Start*
kısmınıda Automatic
olarak ayarlıyoruz. Son olarak Register Service
ve sonrasında da Start Service
butonlarını tıklayıp başlatmış oluyoruz.
Yazının başında belirttiğim DebugView adlı bir uygulama daha belirtmiştim. Uygulamayı dministrator haklarıyla
birlikte açtıktan sonra, Capture
kısmında Capture Kernel
kısmını seçmeniz gerekiyor. Tüm ayarlamaları yaptıktan sonra yukarıdaki görüntüyü almanız gerekiyor.
HEVD Sürücüleri Ayarlama - Debugger VM
Debugee ile olan işimiz bitmiştir. Bu kısımda ise Debugger VM’de HEVD paketleriyle birlikte gelen symbol dosyasını burada ayarlamamız gerekiyor. Bu yüzden Break işlemini yapıp, buradaki işlemlerimize devam edebiliriz.
Github’dan indirdiğimiz proje dosyasındaki vulnerable klasöründe HEVD adında bir dosya mevcut. Öncelikle bu dosyayı daha önce Windbg için yüklemiş olduğumuz Symbol dosyamızın içerisine kopyalıyoruz.
Daha sonrasında Windbg komut satırından hangi modüllerin yüklendiğine bakmak için
kd>lm
Fakat bu kısımda arama işlemimizi daha az indirgemek adında filtreler kullanabiliriz.
kd>lm m H
Buradan sonra çıktılarda HEVD adında bir dosya göreceksiniz. Tıkladıktan sonra ise yukarıdaki çıktıyı göreceksiniz. Browse all global symbols
‘a tıkladıktan sonra yüksek bir ihtimal bir hata alacaksınız.
Aldığınız hatada HEVD symbols’leriyle ilgili klasör ve path yolunun olmadığı belirtilecek. Bu yüzden hatada belirtilen klasör yapılanması oluşturup, daha önce symbols klasörüne kopyaladığımız dosyayı buraya da kopyalıyoruz.
Bu işlemi tamamladıktan sonra kd>lm m H*
aynı komut ile HEVD sürücüsünü tekrardan yüklemeyi deniyoruz. Tüm herşey doğru yapıldıktan sonra yukarıdaki gibi benzeri bir çıktı ile karşılaşmış olmamız gerekiyor.
Exploit Dosyası
Exploit’leri çalıştırabilmemiz için öncelikli olarak build etmemiz gerekiyor. Bu yüzden Debugee makinenize Visual Studio’nun kurulmuş olması gerekiyor. Sorunsuz şekilde build ettikten sonra gerekli exe dosyasının oluşturulduğunu göreceksiniz. Daha sonrasında cmd aracılığıyla çalıştırabilirsiniz.
Sürücü istismarlarına giriş bir sonraki yazıda olacaktır.