Windows Kernel Exploitation - Lab ortamını kurma ve ilk erişim
Debugge’i olarak kullanacağımız sanal makineyi dışarıdan kontrol edebilmek için etkinleştirmemiz gerekiyor. Bunu yaptığımızda makine boot edilirken karşımıza Debugger Enabled seçeneğinide beraberinde gelecek. Bunu yaparken ise bcdedit aracını kullanacağız.
Bir yandan malware analizleriyle uğraşırken, bu aralar ayrıca Windows Kernel Exploitation konularına yoğunlaşmış –daha doğrusu başlamış- durumundayım. Haliyle böyle olunca başlangıçtaki çıkan problemlerle uğraşmak biraz zaman alıyor. Yazı içerisinde edindiğim deneyimler yer alacak desem yeridir.
İlk deneme Vmware Fusion’da
Malware analizleri için genellikle tercih ettiğim yazılım Vmware Fusion oluyordu ki bu lab içinde bunu kullandım. Açıkcası gerekli ISO dosyalarını kurmak pek zahmetli değildi. Gerekli sanal sürücüleri kurduktan sonra Serial Ports ayarlarını yapmaya gelmişti. Açıkcası benim takıldığım nokta da buydu. Takip ettiğim kaynakta Mac Osx içerisinde yer alan /private/tmp/
yolunu sanal sürücüler üzerinde göstermek zorundaydım. Fakat bu dosyayı Vmware üzerinden ne yaptıysam gösteremedim ki takip ettiğim kaynakta bunu nasıl yaptığını belirtmiyordu.
İkinci Deneme VirtualBox
İkinci deneyimim VirtualBox’ta oldu. İlkinde olduğu gibi iki farklı Windows kurdum ve sıra geldi Serial Ports kısmına. Vmware’e göre Virtualbox’ta Serial Ports
kısmını ayarlamak daha kolaydı ki öylede oldu. Debbugger olarak kullandığım Windows10Prox64
sanal sürücümde yüklü olan Windbg’yi açtığımda ummadık bir hata aldım. Çok fazla araştırmama rağmen Windbg’ye çözüm bulamadım ve sanal sürücümü silip tekrardan yüklemek zorunda kaldım.
Daha sonra ise iki sanal makineminde Windows7Prox86
olmasında karar kıldım. Gerekli yüklemeleri yapıp Serial Ports kısmını ayarlamaya geldim. Burada Debugger’daki path yolunu /tmp/pipe
olarak belirttikten sonra aynı şeyi hedef makine içinde ayarladım. Hedef makinedeki tek farklı şey ise Connect to existing pipe/Socket
seçeneğinin işaretli olmuş olmasıydı. Debugger olarak seçtiğim sanal sürücüm sıkıntısız olarak başlıyordu. Hedef olarak kullandığım diğer sanal sürücüyü başlatmayı denediğimde ise NS_ERROR_FAILURE
hatasını aldım. Her nekadar Stackoverflow ve VirtualBox’da konu açıp çözüm bulmaya çalışsam da çabalarım sonuçsuz kaldı.
Üçüncü deneme VirtualBox’ta tek bir fark ile
Soruma cevap beklerken bu süre zarfında farklı iki şey denedim. Birincisi ana host olarak Ubuntu yüklü bir makine oluşturup içerisine VirtualBox kurdum. İki farklı makine oluşturdum fakat sanal sürücüleri başlattığım zaman VT-x hardware acceleration hatası aldım. Bunun için araştırmalar yapmama rağmen sonuç çıkmadı.
İkinci olarak denemem Kali Linux’ta oldu. İlk olarak elimde hazır bulunan ISO dosyasını kullandım ki keşke kullanmasaydım. Güncellemeleri yüklemek hem uzundu hemde yüklerken hatalar aldım. Sonra ISO dosyasının yeni versiyonunu indirip kurdum VB’yi kurmaya çalıştım ama bir türlü olmadı. Yine hüsran yine hüsran!!
Son deneme Vmware Fusion’da
Artık sıkılmıştım gerçekten ki bu sefer çalıştı. Fakat biraz dolaylı bir yoldan oldu. Şimdi nasıl oluşturduğum kısmına geçebiliriz. Bu kısımda:
- Ana host olarak Mac Osx üzerinde yüklü olarak bulunan Vmware Fuson içerisinde
Windows7Prox86
sanal makinesi oluşturdum. - Oluşturduğum sanal makineye Virtualbox kurup buradada
Windows7Prox86
yüklü iki sanal makine oluşturdum. - Debugger sanal sürücüsüne
Windows 10 SDK
yi yükledim.
Debugger’ı hazır hale getirmek
Debugger olarak belirlediğimiz makineye içerisinde Windbg’ninde yer aldığı Windows 10 SDK’yi yüklüyoruz. Kurulum esnasında kullandığınız makineye göre bazı ek güncelleştirme yada yazılımlar yükleyebiliyorsunuz.
Windbg’yi yükledikten sonra ek olarak Symbols’ı path olarak eklememiz gerekecektir. Normalde aşağıdaki videoda yer aldığı şekilde yaptığımızda Windbg otomatik olarak algılayacaktır.
Variable Name: _NT_SYMBOL_PATH
Variable Value: SRV*C:\Symbols*https://msdl.microsoft.com/download/symbols
Debugee’ı hazır hale getirmek
Debugge’i olarak kullanacağımız sanal makineyi dışarıdan kontrol edebilmek için etkinleştirmemiz gerekiyor. Bunu yaptığımızda makine boot edilirken karşımıza Debugger Enabled seçeneğinide beraberinde gelecek. Bunu yaparken ise bcdedit aracını kullanacağız. İlgili detaylar video da yer almaktadır. Kullandığım komutlar sırasıyla aşağıdadır.
Bcdedit
bcdedit /copy {current} /d “Debug”
bcdedit /debug {MY_GUID} on
bcdedit /dbgsettings
Debugger ve Debuggee arasında bağlantı kurma
Gerekli ayarlamaları yaptıktan sonra iki taraf arasında bağlantı kurmamız gerekiyor. Bu yüzden Virtualbox’a gidip sanal makinelerimizde Serial Ports
ayarlarını yapıyoruz. Gerekli ayarları yapıp çalıştırdıktan sonra Debugger pipe oluşturuyor ve debugee’de var olana bağlanıyor. Videoda kullandığım komut aşağıdadır.
\\.\pipe\bu kısma herhangi bir isim yazabilirsiniz
Linux host kullananlar ise aşağıdaki komutu kullanmalıdır:
/tmp/bu kısma herhangi bir isim
VMware Fusion'da Serial Port Ayarlama: https://yhan.dev/vmware-fusionserial-port-ayarlama/
Test etme ve Çalıştırma
Tüm ayarları başarıyla gerçekleştirdik ve son olarak çalışıp-çalışmadığını kontrol etmemiz gerekiyor. Debugger makinemizi çalıştırıp, Windbg uygulamasını açıyoruz. Sonraki adımda: File > Kernel Debug
Karşımıza gelen sekmeden COM
kısmını açıyoruz. Daha sonra tüm ayarların düzgün olduğunu gördükten sonra Ok basıp, çalıştırıyoruz. Pipe
bağlantısını görene kadar bekliyoruz, gördükten sonra ise Break işlemini yapacağız.
Gerekli bağlantının olduğunu gördükten sonra şimdi Break işlemini yapabiliriz.
Bu işlemin tamamlanması iki-üç dakika arasında değişebilir. KD komut istemini gördüğümüz zaman, debugee kontrol edebiliyoruz.
İlgili serimizin ilk yazısını burada sonlandırıyorum.